Calculating modules in contextual logic program refinement
Robert Colvin, Ian J. Hayes, Paul Strooper

TL;DR
This paper extends the refinement calculus for logic programs by developing methods to calculate implementation modules from specification modules, incorporating contextual and module refinement in a unified framework.
Contribution
It introduces a generalized approach for module refinement and provides a method to derive implementation modules from specifications within the refinement calculus.
Findings
Extended and unified framework for contextual and module refinement
Method for calculating implementation modules from specification modules
Generalization of earlier refinement techniques
Abstract
The refinement calculus for logic programs is a framework for deriving logic programs from specifications. It is based on a wide-spectrum language that can express both specifications and code, and a refinement relation that models the notion of correct implementation. In this paper we extend and generalise earlier work on contextual refinement. Contextual refinement simplifies the refinement process by abstractly capturing the context of a subcomponent of a program, which typically includes information about the values of the free variables. This paper also extends and generalises module refinement. A module is a collection of procedures that operate on a common data type; module refinement between a specification module A and an implementation module C allows calls to the procedures of A to be systematically replaced with calls to the corresponding procedures of C. Based on the…
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
