A Frame Stack Semantics for Sequential Core Erlang
P\'eter Bereczky, D\'aniel Horp\'acsi, Simon Thompson

TL;DR
This paper introduces a small-step semantics for sequential Core Erlang, incorporating exceptions and data types, with machine-checked proofs and applications to program equivalence and refactoring correctness.
Contribution
It provides a novel small-step, frame stack semantics for Core Erlang with exceptions, data types, and formal proofs, enabling rigorous reasoning about program equivalence.
Findings
Semantics includes exceptions and data types.
Proves equivalence of multiple program equivalence notions.
Establishes correctness criteria for refactorings.
Abstract
We present a small-step, frame stack style, semantics for sequential Core Erlang, a dynamically typed, impure functional programming language. The semantics and the properties that we prove are machine-checked with the Coq proof assistant. We improve on previous work by including exceptions and exception handling, as well as built-in data types and functions. Based on the semantics, we define multiple concepts of program equivalence (contextual, CIU equivalence, and equivalence based on logical relations) and prove that the definitions are all equivalent. Using this we are able to give a correctness criterion for refactorings by means of contextually equivalent symbolic expression pairs, which is one of the main motivations of this work.
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.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Security and Verification in Computing
