Operational Semantics Using the Partiality Monad

Operational Semantics Using the Partiality Monad
Talk given at Shonan Meeting 026: Coinduction for computation structures and programming languages, Shonan Village Center, 2013-10-08. [pdf]


The operational semantics of a partial, functional language is often given as a relation rather than as a function. The latter approach is arguably more natural: if the language is functional, why not take advantage of this when defining the semantics? One can immediately see that a functional semantics is deterministic and, in a constructive setting, computable.

In the talk I will show how one can use the coinductive partiality monad to define big-step or small-step operational semantics for lambda-calculi and virtual machines as total, computable functions (total definitional interpreters). To demonstrate that the resulting semantics are useful I have proved type soundness and compiler correctness results.

(The results discussed in the talk have previously appeared in "Operational Semantics Using the Partiality Monad", ICFP'12, Proceedings of the 17th ACM SIGPLAN international conference on Functional programming, doi:10.1145/2364527.2364546.)

Nils Anders Danielsson
Last updated Fri Oct 18 11:42:51 UTC 2013.