diff -r 1a884605a08b -r da12452c9be2 src/HOL/Imperative_HOL/Overview.thy --- a/src/HOL/Imperative_HOL/Overview.thy Tue May 19 09:33:16 2020 +0200 +++ b/src/HOL/Imperative_HOL/Overview.thy Wed May 20 08:33:53 2020 +0200 @@ -18,7 +18,7 @@ (*>*) text \ - \Imperative HOL\ is a leightweight framework for reasoning + \Imperative HOL\ is a lightweight framework for reasoning about imperative data structures in \Isabelle/HOL\ @{cite "Nipkow-et-al:2002:tutorial"}. Its basic ideas are described in @{cite "Bulwahn-et-al:2008:imp_HOL"}. However their concrete @@ -33,8 +33,9 @@ section \A polymorphic heap inside a monad\ text \ - Heaps (\<^type>\heap\) can be populated by values of class \<^class>\heap\; HOL's default types are already instantiated to class \<^class>\heap\. Class \<^class>\heap\ is a subclass of \<^class>\countable\; see - theory \Countable\ for ways to instantiate types as \<^class>\countable\. + Heaps (\<^type>\heap\) can be populated by values of class \<^class>\heap\; HOL's default types are + already instantiated to class \<^class>\heap\. Class \<^class>\heap\ is a subclass of \<^class>\countable\; + see theory \Countable\ for ways to instantiate types as \<^class>\countable\. The heap is wrapped up in a monad \<^typ>\'a Heap\ by means of the following specification: @@ -69,7 +70,8 @@ \<^term_type>\raise\ \end{quote} - This is also associated with nice monad do-syntax. The \<^typ>\string\ argument to \<^const>\raise\ is just a codified comment. + This is also associated with nice monad do-syntax. The \<^typ>\string\ argument to \<^const>\raise\ is + just a codified comment. Among a couple of generic combinators the following is helpful for establishing invariants: @@ -90,8 +92,8 @@ \<^term_type>\effect\ \end{quote} - provides a simple relational calculus. Primitive rules are \effectI\ and \effectE\, rules appropriate for reasoning about - imperative operations are available in the \effect_intros\ and + provides a simple relational calculus. Primitive rules are \effectI\ and \effectE\, rules + appropriate for reasoning about imperative operations are available in the \effect_intros\ and \effect_elims\ fact collections. Often non-failure of imperative computations does not depend @@ -105,7 +107,8 @@ \success_intro\ fact collection. \<^const>\execute\, \<^const>\effect\, \<^const>\success\ and \<^const>\bind\ - are related by rules \execute_bind_success\, \success_bind_executeI\, \success_bind_effectI\, \effect_bindI\, \effect_bindE\ and \execute_bind_eq_SomeI\. + are related by rules \execute_bind_success\, \success_bind_executeI\, \success_bind_effectI\, + \effect_bindI\, \effect_bindE\ and \execute_bind_eq_SomeI\. \ @@ -225,7 +228,7 @@ collection \execute_simps\ or relational reasoning (fact collections \effect_intros\ and \effect_elims\) depends on the problems to solve. For complex expressions or - expressions involving binders, the relation style usually is + expressions involving binders, the relation style is usually superior but requires more proof text. \item Note that you can extend the fact collections of Imperative