Semantic Embedding of Hoare Logic

This directory contains a sugared shallow semantic embedding of Hoare logic for a while language. The implementation closely follows

Mike Gordon. Mechanizing Programming Logics in Higher Order Logic.
University of Cambridge, Computer Laboratory, TR 145, 1988.

published as

Mike Gordon. Mechanizing Programming Logics in Higher Order Logic.
In Current Trends in Hardware Verification and Automated Theorem Proving ,
edited by G. Birtwistle and P.A. Subrahmanyam, Springer-Verlag, 1989.

At the top level, it provides a tactic hoare_tac, which transforms a goal

{P} prog {Q}
into a set of HOL-level verification conditions.
Syntax:
the letters a-z are interpreted as program variables, all other identifiers as mathematical variables.

The pre/post conditions can be arbitrary HOL formulae including program variables. The program text should only refer to program variables.

Note: Program variables are typed in the same way as HOL variables. Although you can write programs over arbitrary types, all program variables in a particular program must be of the same type!