We describe a simple but expressive calculus of sequential processes, represented as coroutines. We show that this calculus can be used to express a variety of programming language features including procedure calls, labelled jumps, integer references and stacks. We describe the operational properties of the calculus using reduction rules and equational axioms.

We describe a notion of categorical model for our calculus, and give a simple example of such a model based on a category of games and strategies. We prove full abstraction results showing that equivalence in the categorical model corresponds to observational equivalence in the calculus, and also to equivalence of \emph{evaluation trees}, which are infinitary normal forms for the calculus.

We show that our categorical model can be used to interpret the untyped lambda-calculus and use this fact to extract a sound translation of the latter into our calculus of coroutines.

  • Full text (.pdf)
  • Extended abstract (.pdf) (from ICALP '04).
  • Slides (.pdf) from the conference presentation.
  • Bibtex entry
    > @article{CClong,
    author = "J. Laird",
    title = "A Calculus of Coroutines",
    journal = "Theoretical Computer Science (ICALP '04 special issue)",
    volume = 350,
    pages = "275--291",
    year = 2006}