src/HOL/Isar_Examples/Hoare.thy
changeset 63669 256fc20716f2
parent 63585 f4a308fdf664
child 63680 6e1e8b5abbfa
equal deleted inserted replaced
63668:5efaa884ac6c 63669:256fc20716f2
    14 
    14 
    15 text \<open>
    15 text \<open>
    16   The following abstract syntax and semantics of Hoare Logic over \<^verbatim>\<open>WHILE\<close>
    16   The following abstract syntax and semantics of Hoare Logic over \<^verbatim>\<open>WHILE\<close>
    17   programs closely follows the existing tradition in Isabelle/HOL of
    17   programs closely follows the existing tradition in Isabelle/HOL of
    18   formalizing the presentation given in @{cite \<open>\S6\<close> "Winskel:1993"}. See also
    18   formalizing the presentation given in @{cite \<open>\S6\<close> "Winskel:1993"}. See also
    19   @{file "~~/src/HOL/Hoare"} and @{cite "Nipkow:1998:Winskel"}.
    19   @{dir "~~/src/HOL/Hoare"} and @{cite "Nipkow:1998:Winskel"}.
    20 \<close>
    20 \<close>
    21 
    21 
    22 type_synonym 'a bexp = "'a set"
    22 type_synonym 'a bexp = "'a set"
    23 type_synonym 'a assn = "'a set"
    23 type_synonym 'a assn = "'a set"
    24 
    24 
   356 
   356 
   357 subsection \<open>Verification conditions \label{sec:hoare-vcg}\<close>
   357 subsection \<open>Verification conditions \label{sec:hoare-vcg}\<close>
   358 
   358 
   359 text \<open>
   359 text \<open>
   360   We now load the \<^emph>\<open>original\<close> ML file for proof scripts and tactic definition
   360   We now load the \<^emph>\<open>original\<close> ML file for proof scripts and tactic definition
   361   for the Hoare Verification Condition Generator (see @{file
   361   for the Hoare Verification Condition Generator (see @{dir
   362   "~~/src/HOL/Hoare/"}). As far as we are concerned here, the result is a
   362   "~~/src/HOL/Hoare/"}). As far as we are concerned here, the result is a
   363   proof method \<open>hoare\<close>, which may be applied to a Hoare Logic assertion to
   363   proof method \<open>hoare\<close>, which may be applied to a Hoare Logic assertion to
   364   extract purely logical verification conditions. It is important to note that
   364   extract purely logical verification conditions. It is important to note that
   365   the method requires \<^verbatim>\<open>WHILE\<close> loops to be fully annotated with invariants
   365   the method requires \<^verbatim>\<open>WHILE\<close> loops to be fully annotated with invariants
   366   beforehand. Furthermore, only \<^emph>\<open>concrete\<close> pieces of code are handled --- the
   366   beforehand. Furthermore, only \<^emph>\<open>concrete\<close> pieces of code are handled --- the