  Choreographic Programming is a programming paradigm for building concurrent
programs that are deadlock-free by construction, as a result of programming
communications declaratively and then synthesising process implementations
automatically. Despite strong interest on choreographies, a foundational model
that explains which computations can be performed with the hallmark constructs
of choreographies is still missing.
  In this work, we introduce Core Choreographies (CC), a model that includes
only the core primitives of choreographic programming. Every computable
function can be implemented as a choreography in CC, from which we can
synthesise a process implementation where independent computations run in
parallel. We discuss the design of CC and argue that it constitutes a canonical
model for choreographic programming.
