ABSTRACT
A theory of partial correctness proofs is formulated in Scott's logic computable junctions. This theory allows mechanical construction of verification condition solely on the basis of a denotational language definition. Extensionally these conditions, the resulting proofs, and the required program augmentation are similar to those of Hoare style proofs; conventional input, output, and invariant assertions in a first order assertion language are required. The theory applies to almost any sequential language defined by a continuation semantics; for example, there are no restrictions on aliasing or side-effects. Aspects of "static semantics",such as type and declaration constraints, which are expressed in the denotational definition are validated as part of the verification condition generation process.
- {Cl77} Clarke, E. M.: Program Invariants as Fixed Points; Dept. of Computer Science, Duke University, CS---1977---5Google Scholar
- {Di76} Dijkstra, E. W.: A Discipline of Programming; Prentice Hall, 1976 Google ScholarDigital Library
- {Do76} Donshue, J. E.: Complementary Definitions, of Programming Language Semantics; Lecture Notes in Computer Science 42, Springer, 1976 Google ScholarDigital Library
- {Fl67} Floyd, R. W.: Assigning Meaning to Programs; Proceedings of Symp. in Applied Mathematics 19 (1967)Google Scholar
- {GM77} Gordon, M., Milner, R., Wadsworth, C.: Edinburgh LCF; Internal report, CSR-11-77, University of EdinburghGoogle Scholar
- {Ho69} Hoare, C. A. R.: An Axiomatic Basis of Computer Programming; CACM 12, Oct, pp 576-580 (1969) Google ScholarDigital Library
- {HL74} Hoare, C. A. R., Lauer, P. E: Consistent and Complementary Formal Theories of the Semantics of Programming Languages; Acta Informatica 3, pp135-154, (1974)Google ScholarDigital Library
- {IL75} Igarashi, S., London, R. L., Luckham, D. C.: Automatic Program Verification 1: Logical Basis and Its Implementation; Acta Informatica, Vol 4, pp 145-182 (1975)Google Scholar
- {Li75} Ligler, G.: Surface Properties of Programming Language Constructs; in Proving and improving programs, G. Huet, G. Kahn (ed.), Arc-et,-Senans, 1975Google Scholar
- {Ma71} Masurkiewics, A.: Proving Algorithms by Tail Functions; Information and Control, 18 (1971), pp220-226Google ScholarCross Ref
- {MS76} Milne, R., Strachey, C.: A theory of programming language semantics; Chapman and Hall, London 1976 Google ScholarDigital Library
- {Mi77} Milne, R.: Transforming Predicate Transformers; IFIP working conference on formal description of programming concepts, Saint Andrews, 1977Google Scholar
- {OC78} Oppen, D. C., Cartwright, R: Reasoning about recursively defined data structures; Proc. fifth ACM Symp. on Principles of Programming languages, 1978 Google ScholarDigital Library
- {Pl76} Plotkin G.: A powerdomain construction.; SIAM Journal of Computing 5, 1976, 452-487.Google ScholarCross Ref
- {Pl78} Plotkin, G.: Tω as a Universal Domain; Journal of computer and system sciences 17, pp 209-236 (1978)Google Scholar
- {Re74} Reynolds, J. C.: On the Relation between Direct and Continuation Semantics; Proc. 2nd Coll. on Automata, Languages and Programming, Saarbrücken, pp. 157 - 168, 1974 Google ScholarDigital Library
- {Sc78} Schwarts, R. L.: An Axiomatics Semantic Definition of ALGOL 68; CS Dept, UCLA, UCLA-34-P214-75, Aug. 78Google Scholar
- {Sc72} Scott, D.: Lattice Theory, Data Types, and Semantics; NYU Symp. on Formal Semantics, Prentice-Hall, New York (1972)Google Scholar
- {SS71} Scott, D., Strachey, C.: Toward a Mathematical Semantics for Computer Languages; Tech. Monograph PRG-6, Programming Research Group, University of Oxford (1971)Google Scholar
- {Sm78} Smyth M. B.: Power domains.; Journal of Computer and System Sciences 16, 1978, 23-36.Google ScholarCross Ref
- {St77} Stoy, J.: Denotational Semantics, --- The Scott-Strachey Approach to Language Theory; MIT Press, Cambridge (1977) Google ScholarDigital Library
- {SW74} Strachey, C., Wadsworth, C. P.: Continuations, a Mathematical Semantics for Handling Full Jumps; Technical Monograph PRG-11, Oxford University, 1974Google Scholar
- {Te76} Tennent, R. D.: The Denotational Semantics of Programming Languages; CACM, 19 (1976) pp437-453 Google ScholarDigital Library
- {Te77} Tennent, R. D.: A Denotational Definition of the Programming Language Pascal; Tech. Report 77-47, Queen's University, Kingston, Ontario (1977), revised 1978Google Scholar
- Program verification based on denotation semantics
Recommendations
Semantics-based generation of verification conditions by program specialization
PPDP '15: Proceedings of the 17th International Symposium on Principles and Practice of Declarative ProgrammingWe present a method for automatically generating verification conditions for a class of imperative programs and safety properties. Our method is parametric with respect to the semantics of the imperative programming language, as it specializes, by using ...
Semantics-based program verifiers for all languages
OOPSLA '16We present a language-independent verification framework that can be instantiated with an operational semantics to automatically generate a program verifier. The framework treats both the operational semantics and the program correctness specifications ...
Axiomatic semantics for compiler verification
CPP 2016: Proceedings of the 5th ACM SIGPLAN Conference on Certified Programs and ProofsBased on constructive type theory, we study two idealized imperative languages GC and IC and verify the correctness of a compiler from GC to IC. GC is a guarded command language with underspecified execution order defined with an axiomatic semantics. ...
Comments