Abstract

We propose a higher-order logical framework for declarative programming as an extension to the setting of the simply typed lambda calculus of a first-order rewriting logic, where programs are now presented by conditional pattern rewrite systems on lambda abstractions. We use this new logical framework to obtain a natural model-theoretic semantics from traditional theories in higher-order declarative (functional and logic) programming, and we provide a fixpoint semantics that matches the pattern model of a program as the least fixpoint of an operator defined over pattern algebras. We use this higher-order semantic framework as a basis for the verification of declarative programs and the development of efficient algorithmic debugging techniques. Our debugging approach proceeds by exploring an abridged computational tree built on a higher-order proof calculus with lambda abstractions that provides a purely declarative view of the computation, in order to detect a function rule that is incorrect in the intended model of the program's semantics. For verification purposes, our higher-order logical framework can be mapped into higher-order logic programming, and we can use this translation as a starting point to explore how to prove properties valid in the least pattern model of a program by means of different existing interactive proof assistants, as the Isabelle theorem prover.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call