A Comparison of Big-step Semantics Definition Styles
P\'eter Bereczky, D\'aniel Horp\'acsi, Simon Thompson

TL;DR
This paper compares different styles of big-step semantics for programming languages, evaluating their executability, proof complexity, and expressiveness using a Core Erlang subset as a case study.
Contribution
It provides a systematic comparison of various big-step semantics approaches, including functional, pretty-big-step, and natural semantics, with practical insights from a Core Erlang example.
Findings
Functional semantics are more executable but less concise.
Natural semantics offer clearer proofs but are more complex.
Coinductive semantics enable reasoning about divergence.
Abstract
Formal semantics provides rigorous, mathematically precise definitions of programming languages, with which we can argue about program behaviour and program equivalence by formal means; in particular, we can describe and verify our arguments with a proof assistant. There are various approaches to giving formal semantics to programming languages, at different abstraction levels and applying different mathematical machinery: the reason for using the semantics determines which approach to choose. In this paper we investigate some of the approaches that share their roots with traditional relational big-step semantics, such as (a) functional big-step semantics (or, equivalently, a definitional interpreter), (b) pretty-big-step semantics and (c) traditional natural semantics. We compare these approaches with respect to the following criteria: executability of the semantics definition, proof…
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 · Semantic Web and Ontologies · Advanced Database Systems and Queries
