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. © 2008 Elsevier Inc. All rights reserved.
Leroy, X., & Grall, H. (2009). Coinductive big-step operational semantics. In Information and Computation (Vol. 207, pp. 284–304). Elsevier Inc. https://doi.org/10.1016/j.ic.2007.12.004