+ ===================================================================== + | | | LIBRARY : prog_logic88 | | | | DESCRIPTION : Experimental tools to support programming logics as | | described in the paper "Mechanizing Programming | | Logics in Higher Order Logic", M.J.C. Gordon, in | | "Current Trends in Hardware Verification and | | Automated Theorem Proving" edited by | | P.A. Subrahmanyam and Graham Birtwistle, | | Springer-Verlag, 1989. | | | | AUTHOR : M. Gordon | | DATE : 23 March 89 | + ===================================================================== + + --------------------------------------------------------------------- + | | | FILES: | | | + --------------------------------------------------------------------- + prog_logic88.ml loads the library into hol mk_semantics.ml defines the semantice of the programming language mk_hoare_thms.ml derives theorems validating the axioms and rules of Hoare logic mk_halts.ml build a theory to support a program termination predicate mk_halts_thms.ml derives theorems validating the axioms and rules of Hoare logic for total correctness mk_halts_logic.ml makes a theory with hoare_thms and halts_thms as parents mk_dijkstra.ml creates a theory with definitions and properties of weakest preconditions and weakest liberal preconditions mk_dynamic_logic.ml creates a theory defining dynamic logic operators (Box and Diamond) with theorems relating them to weakest preconditions and Hoare sentences mk_prog_logic88.ml creates a theory with the following theories as parents: semantics, hoare_thms, halts, halts_thms, halts_logic, dijkstra and dynamic_logic autoload.ml sets up the autoloading of definitions and theorems syntax_functions.ml auxiliary syntactic functions for processing terms representing programs hol_match.ml some special purpose higher-order matching routines hoare_logic.ml definition of derived rules to support forward proof in Hoare logic vc_gen.ml defined tactics to support goal oriented proof in Hoare logic via verification conditions halts_logic.ml definition of derived rules to support forward proof in a version of Hoare logic for total correctness halts_vc_gen.ml defined tactics to support goal oriented proof in total correctness Hoare logic via verification conditions examples.ml some examples to show the use of Hoare logic in HOL parse_hacks.l Lisp hacks to support the parsing of Hoare sentences print_hacks.l Lisp hacks to support the printing of Hoare sentences. N.B. There are some bugs in this code (see examples.ml for examples) llmac.o \ F-macro.o | Object files containing system macros needed to F-ol-rec.o | compile the parser and printer hacks genmacs.o / + --------------------------------------------------------------------- + | | | TO REBUILD THE LIBRARY: | | | + --------------------------------------------------------------------- + 1) edit the pathnames in the Makefile (if necessary) 2) type "make clean" 3) type "make all" + --------------------------------------------------------------------- + | | | TO USE THE LIBRARY: | | | + --------------------------------------------------------------------- + load_library `prog_logic88` loads everything. The file examples.ml contains some examples that can be used to exercise the various tools. Working through these would be a good way to learn about them. Please note that the contents of this library was produced to test out the ideas reported in the paper "Mechanizing Programming Logics in Higher Order Logic"; they DO NOT provide a robust tool for verifying programs. The library is included here primarily to help readers of the paper who want more details. Eventually, it is hoped to implement (using the ideas here) practical tools to support reasoning about imperative programs.