src/HOL/Isar_Examples/Hoare.thy
changeset 40880 be44a567ed28
parent 37671 fa53d267dab3
child 41818 6d4c3ee8219d
equal deleted inserted replaced
40879:ca132ef44944 40880:be44a567ed28
    14 subsection {* Abstract syntax and semantics *}
    14 subsection {* Abstract syntax and semantics *}
    15 
    15 
    16 text {* The following abstract syntax and semantics of Hoare Logic
    16 text {* The following abstract syntax and semantics of Hoare Logic
    17   over \texttt{WHILE} programs closely follows the existing tradition
    17   over \texttt{WHILE} programs closely follows the existing tradition
    18   in Isabelle/HOL of formalizing the presentation given in
    18   in Isabelle/HOL of formalizing the presentation given in
    19   \cite[\S6]{Winskel:1993}.  See also
    19   \cite[\S6]{Winskel:1993}.  See also @{file "~~/src/HOL/Hoare"} and
    20   \url{http://isabelle.in.tum.de/library/Hoare/} and
       
    21   \cite{Nipkow:1998:Winskel}. *}
    20   \cite{Nipkow:1998:Winskel}. *}
    22 
    21 
    23 types
    22 types
    24   'a bexp = "'a set"
    23   'a bexp = "'a set"
    25   'a assn = "'a set"
    24   'a assn = "'a set"
   362 
   361 
   363 subsection {* Verification conditions \label{sec:hoare-vcg} *}
   362 subsection {* Verification conditions \label{sec:hoare-vcg} *}
   364 
   363 
   365 text {* We now load the \emph{original} ML file for proof scripts and
   364 text {* We now load the \emph{original} ML file for proof scripts and
   366   tactic definition for the Hoare Verification Condition Generator
   365   tactic definition for the Hoare Verification Condition Generator
   367   (see \url{http://isabelle.in.tum.de/library/Hoare/}).  As far as we
   366   (see @{file "~~/src/HOL/Hoare/"}).  As far as we
   368   are concerned here, the result is a proof method \name{hoare}, which
   367   are concerned here, the result is a proof method \name{hoare}, which
   369   may be applied to a Hoare Logic assertion to extract purely logical
   368   may be applied to a Hoare Logic assertion to extract purely logical
   370   verification conditions.  It is important to note that the method
   369   verification conditions.  It is important to note that the method
   371   requires \texttt{WHILE} loops to be fully annotated with invariants
   370   requires \texttt{WHILE} loops to be fully annotated with invariants
   372   beforehand.  Furthermore, only \emph{concrete} pieces of code are
   371   beforehand.  Furthermore, only \emph{concrete} pieces of code are