A Refinement Calculus for Logic Programs
Ian Hayes, Robert Colvin, David Hemer, Paul Strooper, Ray Nickson

TL;DR
This paper introduces a refinement calculus for logic programs that integrates executable and specification constructs, providing a formal framework for stepwise development and correctness assurance.
Contribution
It develops a wide-spectrum logic programming language with a declarative semantics and refinement laws, enabling systematic derivation of logic programs from specifications.
Findings
Defines a declarative semantics based on executions
Introduces correctness-preserving refinement laws
Illustrates the calculus with example derivations
Abstract
Existing refinement calculi provide frameworks for the stepwise development of imperative programs from specifications. This paper presents a refinement calculus for deriving logic programs. The calculus contains a wide-spectrum logic programming language, including executable constructs such as sequential conjunction, disjunction, and existential quantification, as well as specification constructs such as general predicates, assumptions and universal quantification. A declarative semantics is defined for this wide-spectrum language based on executions. Executions are partial functions from states to states, where a state is represented as a set of bindings. The semantics is used to define the meaning of programs and specifications, including parameters and recursion. To complete the calculus, a notion of correctness-preserving refinement over programs in the wide-spectrum language is…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Logic, Reasoning, and Knowledge
