  The framework of psi-calculi extends the pi-calculus with nominal datatypes
for data structures and for logical assertions and conditions. These can be
transmitted between processes and their names can be statically scoped as in
the standard pi-calculus. Psi-calculi can capture the same phenomena as other
proposed extensions of the pi-calculus such as the applied pi-calculus, the
spi-calculus, the fusion calculus, the concurrent constraint pi-calculus, and
calculi with polyadic communication channels or pattern matching. Psi-calculi
can be even more general, for example by allowing structured channels,
higher-order formalisms such as the lambda calculus for data structures, and
predicate logic for assertions. We provide ample comparisons to related calculi
and discuss a few significant applications. Our labelled operational semantics
and definition of bisimulation is straightforward, without a structural
congruence. We establish minimal requirements on the nominal data and logic in
order to prove general algebraic properties of psi-calculi, all of which have
been checked in the interactive theorem prover Isabelle. Expressiveness of
psi-calculi significantly exceeds that of other formalisms, while the purity of
the semantics is on par with the original pi-calculus.
