  In distributed computing, multiple processes interact to solve a problem
together. The main model of interaction is the message-passing model, where
processes communicate by exchanging messages. Nevertheless, there are several
models varying along important dimensions: degree of synchrony, kinds of
faults, number of faults... This variety is compounded by the lack of a general
formalism in which to abstract these models. One way to bring order is to
constrain these models to communicate in rounds. This is the setting of the
Heard-Of model, which captures many models through predicates on the messages
sent in a round and received on time. Yet, it is not easy to define the
predicate that captures a given operational model. The question is even harder
for the asynchronous case, as unbounded message delay means the implementation
of rounds must depend on details of the model. This paper shows that
characterising asynchronous models by heard-of predicates is indeed meaningful.
This characterization relies on delivered predicates, an intermediate
abstraction between the informal operational model and the heard-of predicates.
Our approach splits the problem into two steps: first extract the delivered
model capturing the informal model, and then characterize the heard-of
predicates that are generated by this delivered model. For the first part, we
provide examples of delivered predicates, and an approach to derive more. It
uses the intuition that complex models are a composition of simpler models. We
define operations like union, succession or repetition that make it easier to
derive complex delivered predicates from simple ones while retaining
expressivity. For the second part, we formalize and study strategies for when
to change rounds. Intuitively, the characterizing predicate of a model is the
one generated by a strategy that waits for as much messages as possible,
without blocking forever.
