Coinductive big-step operational semantics
Xavier Leroy (INRIA Rocquencourt), Herv\'e Grall (INRIA Rennes, LINA)

TL;DR
This paper introduces coinductive big-step operational semantics for call-by-value languages, enabling the formal description of diverging evaluations and establishing their equivalence with small-step semantics, all formalized in Coq.
Contribution
It presents a novel coinductive approach to big-step semantics, formalized in Coq, that captures divergence and connects with small-step semantics.
Findings
Coinductive big-step semantics can describe diverging evaluations.
Formal proofs of equivalence between big-step and small-step semantics.
Application of coinductive semantics to proofs of type soundness.
Abstract
Using a call-by-value functional language as an example, this article illustrates the use of coinductive definitions and proofs in big-step operational semantics, enabling it to describe diverging evaluations in addition to terminating evaluations. We formalize the connections between the coinductive big-step semantics and the standard small-step semantics, proving that both semantics are equivalent. We then study the use of coinductive big-step semantics in proofs of type soundness and proofs of semantic preservation for compilers. A methodological originality of this paper is that all results have been proved using the Coq proof assistant. We explain the proof-theoretic presentation of coinductive definitions and proofs offered by Coq, and show that it facilitates the discovery and the presentation of the results.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Model-Driven Software Engineering Techniques
