\begin{definition} We assume a synchronous DenyList (\DL) object as in~\cite{frey:disc23} with the following properties. The DenyList object type supports three operations: $\APPEND$, $\PROVE$, and $\READ$. These operations appear as if executed in a sequence $\Seq$ such that: \begin{itemize} \item \textbf{Termination.} A $\PROVE$, an $\APPEND$, or a $\READ$ operation invoked by a correct process always returns. \item \textbf{APPEND Validity.} The invocation of $\APPEND(x)$ by a process $p$ is valid if: \begin{itemize} \item $p \in \Pi_M \subseteq \Pi$; \textbf{and} \item $x \in S$, where $S$ is a predefined set. \end{itemize} Otherwise, the operation is invalid. \item \textbf{PROVE Validity.} If the invocation of a $op = \PROVE(x)$ by a correct process $p$ is not valid, then: \begin{itemize} \item $p \not\in \Pi_V \subseteq \Pi$; \textbf{or} \item A valid $\APPEND(x)$ appears before $op$ in $\Seq$. \end{itemize} Otherwise, the operation is valid. \item \textbf{PROVE Anti-Flickering.} If the invocation of a operation $op = \PROVE(x)$ by a correct process $p \in \Pi_V$ is invalid, then any $\PROVE(x)$ operation that appears after $op$ in $\Seq$ is invalid. \item \textbf{READ Validity.} The invocation of $op = \READ()$ by a process $p \in \pi_V$ returns the list of valid invocations of $\PROVE$ that appears before $op$ in $\Seq$ along with the names of the processes that invoked each operation. item \textbf{Anonymity.} Let us assume the process $p$ invokes a $\PROVE(v)$ operation. If the process $p'$ invokes a $\READ()$ operation, then $p'$ cannot learn the value $v$ unless $p$ leaks additional information. \end{itemize} We assume that $\Pi_M = \Pi_V = \Pi$ (all processes can invoke \APPEND and \PROVE). \end{definition} \begin{lemma}[From DenyList to Group Election]\label{lem:dl-to-ge} For any fixed value $r \in S$, one DenyList object can be used to wait-free implement a Group Election object $\GE[r]$. \end{lemma} \begin{proof} We implement the operations of $\GE[r]$ using the operations of the DenyList as follows. \begin{algorithmic} \begin{algorithm}[H] \caption{Group Election implementation using DenyList} \Function{CANDIDATE}{$r$} \State $\PROVE(r)$ \EndFunction \vspace{1em} \Function{CLOSE}{$r$} \State $\APPEND(r)$ \EndFunction \vspace{1em} \Function{READGE}{$r$} \State $P \gets \READ()$ \State \Return $\{ j : (j,\PROVEtrace(r)) \in P \}$ \EndFunction \end{algorithm} \end{algorithmic} \paragraph{Termination.} Termination follows from the Termination property of DenyList operations. Consider now a fixed sequential history $\mathsf{Seq}$ of the DenyList. \paragraph{Prefix Inclusion.} Let $\APPEND(r)^\star$ denote the first valid $\APPEND(r)$ in $\mathsf{Seq}$, if it exists. From the PROVE Validity and anti-flickering properties of the DenyList, a process $p_j$ has a valid $\PROVE(r)$ in $\mathsf{Seq}$ if and only if its $\PROVE(r)$ invocation appears before $\APPEND(r)^\star$ in $\mathsf{Seq}$. Hence, by construction, $p_j \in \Winners_r$ iff $p_j$ invokes $\CANDIDATE(r)$ and its $\CANDIDATE(r)$ is linearized before $\CLOSE(r)^\star$ where we identify $\CLOSE(r)^\star$ with $\APPEND(r)^\star$. This is exactly the Prefix inclusion property. \paragraph{Stability.} Moreover, after $\APPEND(r)^\star$, no new $\PROVE(r)$ can become valid (anti-flickering), so every subsequent $\READ^\star()$ returns the same set of valid $\PROVE(r)$ invocations. Consequently, every $\READGE(r)$ linearized after $\CLOSE(r)^\star$ returns the same set $\Winners_r$, which proves Stability. \paragraph{Election.} Finally, if some process invokes $\CANDIDATE(r)$ before $\CLOSE(r)^\star$, its proof is valid and thus appears in the set returned by $\READ^\star()$. Hence $\Winners_r \neq \emptyset$, which proves Election. \paragraph{Validity.} Validity is immediate from the construction of $\Winners_r$: a process belongs to $\Winners_r$ only if it invoked $\PROVE(r)$, i.e., only if it invoked $\CANDIDATE(r)$. Thus the constructed object satisfies all properties of a Group Election object. \end{proof} \begin{lemma}[From Group Election to DenyList]\label{lem:ge-to-dl} Fix a value $r \in S$. A Group Election object $\GE[r]$ can be used to wait-free implement an DenyList. \end{lemma} \begin{proof} We implement the DenyList for value $r$ as follows. We use one Group Election object $\GE[r]$. The operations are implemented as follows. \begin{algorithm}[H] \begin{algorithmic} \caption{Group Election implementation using DenyList} \Function{APPEND}{$r$} \State $\CLOSE(r)$ \EndFunction \vspace{1em} \Function{PROVE}{$r$} \State $\CANDIDATE(r)$ \State $W_r \gets \READGE(r)$ \If{$p \in W_r$} \State \Return \texttt{True} \Else \State \Return \texttt{False} \EndIf \EndFunction \vspace{1em} \Function{READ}{$ $} \State $W \gets \bigcup_{\forall r \in S}\READGE(r)$ \State \Return $\{(p,r) \mid p \in W_r\}$ \EndFunction \end{algorithmic} \end{algorithm} \paragraph{Termination.} Termination follows from the Termination property of Group Election operations. Consider now a fixed sequential history $\mathsf{Seq}$ of the Group Election. \paragraph{APPEND Validity.} By construction, any process invoking $\APPEND(r)$ invokes $\CLOSE(r)$. By definition of Group Election, $\CLOSE(r)$ is always valid. \paragraph{PROVE Validity.} By definition $\Pi_V = \Pi$, so any process invoking $\PROVE(r)$ is in $\Pi_V$. So the case $p \not\in \Pi_V$ cannot happen. Now, if some process invokes $\APPEND(r)$ before the invocation of $\PROVE(r)$ in $\mathsf{Seq}$, then by the Prefix Inclusion property of Group Election, the set $\Winners_r$ is already fixed and any subsequent $\CANDIDATE(r)$ cannot be in $\Winners_r$. Hence the invocation of $\PROVE(r)$ is invalid. Conversely, if no $\APPEND(r)$ appears before $\PROVE(r)$ in $\mathsf{Seq}$, then by the Election property of Group Election, if some correct process invoked $\CANDIDATE(r)$ before any $\CLOSE(r)$, then $\Winners_r \neq \emptyset$ and hence the invoking process belongs to $\Winners_r$. Thus its invocation of $\PROVE(r)$ is valid. This proves PROVE Validity. \paragraph{PROVE Anti-Flickering.} If some invocation of $\PROVE(r)$ is invalid, then some $\APPEND(r)$ must have appeared before it in $\mathsf{Seq}$. By the Prefix Inclusion property of Group Election, the set $\Winners_r$ is fixed after the first $\CLOSE(r)$, so any subsequent $\CANDIDATE(r)$ cannot be in $\Winners_r$. Hence any subsequent invocation of $\PROVE(r)$ is also invalid. This proves PROVE Anti-Flickering. \paragraph{READ Validity.} Finally, by construction, the invocation of $\READ()$ returns the list of valid invocations of $\PROVE$ that appear before it in $\mathsf{Seq}$ along with the names of the processes that invoked each operation. This proves READ Validity. \end{proof} \begin{theorem}[Consensus number of Group Election]\label{thm:ge-consensus} Let $|\Pi_V| = k$. The Group Election object type with verifier set $\Pi_V$ has consensus number $k$. In particular, when $\Pi_V = \Pi$, the consensus number of Group Election is $|\Pi|$. \end{theorem} \begin{proof} We first recall that, for a DenyList object with $|\Pi_V| = k$ (a $k$-DenyList), the consensus number is exactly $k$. \paragraph{Lower bound.} By Lemma~\ref{lem:dl-to-ge}, for any fixed value $r \in S$, one $k$-DenyList object can be used to wait-free implement a Group Election object $\GE[r]$ over the same set of processes. Since the k-DenyList has consensus number $k$, it follows that the Group Election type has consensus number at least $k$. \paragraph{Upper bound.} Conversely, by Lemma~\ref{lem:ge-to-dl}, one Group Election object can be used to wait-free implement a DenyList object restricted to value $r$. This restricted DenyList satisfies the same specification as the original k-DenyList on value $r$, and in particular it has consensus number $k$. Therefore, the consensus number of the Group Election type cannot exceed $k$. \medskip Combining the two bounds, we obtain that the consensus number of the Group Election object type is exactly $k = |\Pi_V|$. When we instantiate $\Pi_V = \Pi$, we get that the consensus number of Group Election is $|\Pi|$. \end{proof}