In this paper, we focus on three classic (and extensively studied) distributed
tasks, defined over a finite connected undirected graph
\(G = (V, E)\) .
In the first task, called asynchronous unison (AU)
[1]} (a.k.a. distributed pulse
[2]}), each node in \(V\)  outputs a clock value
taken from an (additive) cyclic group \(K\) .
The task is then defined by the following two conditions:
The safety condition requires that if two neighboring nodes output
clock values
\(\kappa \in K\) 
and
\(\kappa ^{\prime } \in K\) ,
then
\(\kappa ^{\prime } \in \lbrace  \kappa - 1, \kappa , \kappa + 1 \rbrace \) ,
where the \(+1\)  and \(-1\)  operations are with respect to \(K\) .
The liveness condition requires that for every (post stabilization)
time \(t\)  and for every
\(i \in \mathbb {Z}_{> 0}\) ,
each node updates its clock value at least \(i\)  times during the time interval
\([t, \varrho ^{\operatorname{diam}(G) + i}(t))\) ,
where \(\operatorname{diam}(G)\)  denotes the diameter of \(G\) ;
these updates are performed by and only by applying the \(+1\)  operation of
\(K\) .
