Automating the Diagram Method to Prove Correctness of Program Transformations

@article{Sabel2018AutomatingTD,
  title={Automating the Diagram Method to Prove Correctness of Program Transformations},
  author={David Sabel},
  journal={ArXiv},
  year={2018},
  volume={abs/1902.08420},
  pages={17-33}
}
  • David Sabel
  • Published 9 August 2018
  • Computer Science
  • ArXiv
Our recently developed LRSX Tool implements a technique to automatically prove the correctness of program transformations in higher-order program calculi which may permit recursive let-bindings. The focused notion of correctness for program transformations is invariance with respect to the observational semantics of programs. The so-called diagram method is automated by combining unification, matching, and reasoning on alpha-renamings on the higher-order meta-language, and automating induction… 

Figures and Tables from this paper

Contextual Equivalence in a Probabilistic Call-by-Need Lambda-Calculus

A lambda-calculus with a fair binary probabilistic choice that chooses between its arguments with equal probability is introduced and techniques to prove equivalences are developed including a context lemma, two derived criteria to show equivalences and a syntactic diagram-based method.

A Probabilistic Call-by-Need Lambda-Calculus - Extended Version

A lambda-calculus with a fair binary probabilistic choice that chooses between its arguments with equal probability is introduced and techniques to prove equivalences are developed including a context lemma, two derived criteria to show equivalences and a syntactic diagram-based method.

References

SHOWING 1-10 OF 22 REFERENCES

Correctness of Program Transformations as a Termination Problem

The termination problem of forking diagrams as rewrite rules can be encoded into the termination problem for conditional integer term rewriting systems, which can be solved by automated termination provers.

Proving Termination of Programs Automatically with AProVE

An AProVE plug-in for the popular Eclipse software development environment is presented for use in software construction and a wide range of techniques is employed to prove termination and to infer complexity bounds for the resulting TRSs.

Alpha-renaming of higher-order meta-expressions

This work proposes a formalism to symbolically represent α-renamings for meta-expressions which is an extension of higher-order meta-syntax which allows one toα-rename all valid ground instances of a meta-expression to fulfill the distinct variable convention.

A Syntactic Approach to Type Soundness

A new approach to proving type soundness for Hindley/Milner-style polymorphic type systems by an adaptation of subject reduction theorems from combinatory logic to programming languages and the use of rewriting techniques for the specification of the language semantics is presented.

Fachbereich Informatik und Mathematik Rewriting of Higher-Order-Meta-Expressions with Recursive Bindings

This work introduces rewriting of meta-expressions which stem from a meta-language that uses higher-order abstract syntax augmented by meta-notation for recursive let, contexts, sets of bindings, and chain variables and provides a matching algorithm to solve it.

Certification of Termination Proofs Using CeTA

This paper uses the theorem prover Isabelle/HOL to automatically certify termination proofs and formalized the required theory of term rewriting including three major termination criteria: dependency pairs, dependency graphs, and reduction pairs.

A contextual semantics for concurrent Haskell with futures

The semantics of a higher-order functional language with concurrent threads, monadic IO and synchronizing variables as in Concurrent Haskell is analyzed and it is shown that call-by-need and call- by-name evaluation are equivalent in CHF, since they induce the same program equivalence.

A call-by-need lambda calculus

This paper derives an equational characterization of call-by-need and proves it correct with respect to the original lambda calculus and is a strictly smaller theory than the lambda calculus.

Safety of Nöcker's strictness analysis

The correctness proof is based on a functional core language and a contextual semantics, thus proving a wider range of strictness-based optimizations as correct, and the method fully considers the cycle detection rules, which contribute to the strength of Nöcker's strictness analysis.

Unification of program expressions with recursive bindings

This paper presents an algorithm for unification of meta-expressions of higher-order lambda calculi with recursive bindings that runs in polynomial time provided certain restrictions on the number of occurrences of unification variables hold.