Log In Sign Up

Program Equivalence in an Untyped, Call-by-value Lambda Calculus with Uncurried Recursive Functions

by   Dániel Horpácsi, et al.

We aim to reason about the correctness of behaviour-preserving transformations of Erlang programs. Behaviour preservation is characterised by semantic equivalence. Based upon our existing formal semantics for Core Erlang, we investigate potential definitions of suitable equivalence relations. In particular we adapt a number of existing approaches of expression equivalence to a simple functional programming language that carries the main features of sequential Core Erlang; we then examine the properties of the equivalence relations and formally establish connections between them. The results presented in this paper, including all theorems and their proofs, have been machine checked using the Coq proof assistant.


page 1

page 2

page 3

page 4


A Comparison of Big-step Semantics Definition Styles

Formal semantics provides rigorous, mathematically precise definitions o...

Representation theorems for extended contact algebras based on equivalence relations

The aim of this paper is to give new representation theorems for extende...

A Proof Assistant Based Formalisation of Core Erlang

Our research is part of a wider project that aims to investigate and rea...

Proving Equivalence Between Imperative and MapReduce Implementations Using Program Transformations

Distributed programs are often formulated in popular functional framewor...

Semantic preservation for a type directed translation scheme of Featherweight Go

Featherweight Go (FG) is a minimal core calculus that includes essential...

Space Improvements and Equivalences in a Functional Core Language

We explore space improvements in LRP, a polymorphically typed call-by-ne...