## Section: Overall Objectives

### Computability and efficiency of distributed systems

A very relevant challenge (maybe a Holy Grail) lies in the definition of a computation model appropriate to dynamic systems. This is a fundamental question. As an example there are a lot of peer-to-peer protocols but none of them is formally defined with respect to an underlying computing model. Similarly to the work of Lamport on "static" systems, a model has to be defined for dynamic systems. This theoretical research is a necessary condition if one wants to understand the behavior of these systems. As the aim of a theory is to codify knowledge in order it can be transmitted, the definition of a realistic model for dynamic systems is inescapable whatever the aim we have in mind, be it teaching, research or engineering.

**Distributed computability**:
Among the fundamental theoretical results of distributed computing,
there is a list of problems (e.g., consensus or non-blocking atomic
commit) that have been proved to have no deterministic solution in
asynchronous distributed computing systems prone to failures.
In order such a problem to become solvable in an asynchronous
distributed system, that system has to be enriched with an appropriate
oracle (also called failure detector). We have
been deeply involved in this research and designed optimal consensus
algorithms suited to different kind of oracles.
This line of research paves the way to rank the distributed computing
problems according to the "power" of the additional oracle they required
(think of "additional oracle" as "additional assumptions"). The
ultimate goal would be the statement of a distributed computing
hierarchy, according to the minimal assumptions needed to solve
distributed computing problems (similarly to the
Chomsky's hierarchy that ranks problems/languages according to the
type of automaton they need to be solved).

**Distributed computing abstractions**: Major advances in
sequential computing came from machine-independent data abstractions
such as sets, records, etc., control abstractions such as while, if,
etc., and modular constructs such as functions and procedures. Today,
we can no longer envisage not to use these abstractions. In the
"static" distributed computing field, some abstractions have been
promoted and proved to be useful. Reliable broadcast, consensus,
interactive consistency are some examples of such abstractions.
These abstractions have well-defined specifications. There are both
a lot of theoretical results on them (mainly decidability and lower
bounds), and numerous implementations. There is no such equivalent
for dynamic distributed systems, i.e. for systems characterized by
nodes that may join and leave, or that may change their
characteristics at runtime. Our goal is to define such novel
abstractions, thereby extending the theory of distributed systems to
the dynamic case.