arXiv · cs/0202002
A Refinement Calculus for Logic Programs
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 defined and refinement laws for developing programs are introduced. The refinement calculus is illustrated using example derivations and prototype tool support is discussed.
Explore related subjects
Keep this discovery
Ian Hayes, Robert Colvin, David Hemer, Paul Strooper, Ray Nickson. 2002-02-04. A Refinement Calculus for Logic Programs. https://arxiv.org/abs/cs/0202002
Cite the original work for its findings. Save a collection to share your selection of sources.