Logical Refinement of Imperative Programs: generating code from verified conditions
Logical Refinement of Imperative Programs: generating code from verified conditions
Most program development methods rely on a combination of programming and logical notations. Correctness is verified using refinement laws which often have logical side conditions. Checking these conditions involves a separate proof, breaking up the linear flow of the program derivation. This paper explores a variant of the refinement calculus in which only logical notation is used and the program under development is inferred from formulas which are, in effect, the verification conditions that would arise in a traditional derivation. It is preferable that these are verified first, in which case they should be called verified conditions. A polynomial algorithm exists for extracting the refinement argument, and hence the implementation, from these conditions. A prototype code generation system has been implemented in Prolog. The benefits and weaknesses of the approach are compared to those of more conventional refinement calculi.
2-16
Gravell, Andrew M
f3a261c5-f057-4b5f-b6ac-c1ca37d72749
Gupta, Gopal
fa2dd158-f0af-4663-b304-a32f7f31dab0
Ramakrishnan, I.V.
3bac229c-0468-47d4-90d7-8e12f0e0cfae
July 2000
Gravell, Andrew M
f3a261c5-f057-4b5f-b6ac-c1ca37d72749
Gupta, Gopal
fa2dd158-f0af-4663-b304-a32f7f31dab0
Ramakrishnan, I.V.
3bac229c-0468-47d4-90d7-8e12f0e0cfae
Gravell, Andrew M
(2000)
Logical Refinement of Imperative Programs: generating code from verified conditions.
Gupta, Gopal and Ramakrishnan, I.V.
(eds.)
Workshop on (Constraint) Logic Programming and Software Engineering LPSE2000.
.
Record type:
Conference or Workshop Item
(Other)
Abstract
Most program development methods rely on a combination of programming and logical notations. Correctness is verified using refinement laws which often have logical side conditions. Checking these conditions involves a separate proof, breaking up the linear flow of the program derivation. This paper explores a variant of the refinement calculus in which only logical notation is used and the program under development is inferred from formulas which are, in effect, the verification conditions that would arise in a traditional derivation. It is preferable that these are verified first, in which case they should be called verified conditions. A polynomial algorithm exists for extracting the refinement argument, and hence the implementation, from these conditions. A prototype code generation system has been implemented in Prolog. The benefits and weaknesses of the approach are compared to those of more conventional refinement calculi.
This record has no associated files available for download.
More information
Published date: July 2000
Additional Information:
Address: London
Venue - Dates:
Workshop on (Constraint) Logic Programming and Software Engineering LPSE2000, 2000-06-30
Organisations:
Electronic & Software Systems
Identifiers
Local EPrints ID: 253716
URI: http://eprints.soton.ac.uk/id/eprint/253716
PURE UUID: b10d0e80-32d6-4254-9970-70a74d531c07
Catalogue record
Date deposited: 29 May 2001
Last modified: 10 Dec 2021 20:34
Export record
Contributors
Author:
Andrew M Gravell
Editor:
Gopal Gupta
Editor:
I.V. Ramakrishnan
Download statistics
Downloads from ePrints over the past year. Other digital versions may also be available to download e.g. from the publisher's website.
View more statistics