Formal Small-step Verification of a Call-by-value Lambda Calculus Machine

06/08/2018
by   Fabian Kunze, et al.
0

We formally verify an abstract machine for a call-by-value lambda-calculus with de Bruijn terms, simple substitution, and small-step semantics. We follow a stepwise refinement approach starting with a naive stack machine with substitution. We then refine to a machine with closures, and finally to a machine with a heap providing structure sharing for closures. We prove the correctness of the three refinement steps with compositional small-step bottom-up simulations. There is an accompanying Coq development verifying all results.

READ FULL TEXT
research
08/10/2018

Proof Nets and the Linear Substitution Calculus

Since the very beginning of the theory of linear logic it is known how t...
research
06/20/2016

Introducing a Calculus of Effects and Handlers for Natural Language Semantics

In compositional model-theoretic semantics, researchers assemble truth-c...
research
12/31/2020

Verifying a Cruise Control System using Simulink and SpaceEx

This article aims to provide a simple step-by-step guide highlighting th...
research
08/05/2022

Covariant-Contravariant Refinement Modal μ-calculus

The notion of covariant-contravariant refinement (CC-refinement, for sho...
research
08/31/2020

Can determinism and compositionality coexist in RML?

Runtime verification (RV) consists in dynamically verifying that the eve...
research
09/15/2020

An Abstract Machine for Strong Call by Value

We present an abstract machine that implements a full-reducing (a.k.a. s...
research
06/24/2019

Automatic verification of heap-manipulating programs

Theoretical foundations of compositional reasoning about heaps in impera...

Please sign up or login with your details

Forgot password? Click here to reset