  Distributed systems can be subject to various kinds of partial failures,
therefore building fault-tolerance or failure mitigation mechanisms for
distributed systems remains an important domain of research. In this paper, we
present a calculus to formally model distributed systems subject to crash
failures with recovery. The recovery model considered in the paper is weak, in
the sense that it makes no assumption on the exact state in which a failed node
resumes its execution, only its identity has to be distinguishable from past
incarnations of itself. Our calculus is inspired in part by the Erlang
programming language and in part by the distributed $\pi$-calculus with nodes
and link failures (D$\pi$F) introduced by Francalanza and Hennessy. In order to
reason about distributed systems with failures and recovery we develop a
behavioral theory for our calculus, in the form of a contextual equivalence,
and of a fully abstract coinductive characterization of this equivalence by
means of a labelled transition system semantics and its associated weak
bisimilarity. This result is valuable for it provides a compositional proof
technique for proving or disproving contextual equivalence between systems.
