src/HOL/IMP/Natural.thy
changeset 37085 b2073920448f
parent 34055 fdf294ee08b2
child 37736 2bf3a2cb5e58
equal deleted inserted replaced
37084:665a3dfe8632 37085:b2073920448f
    23   "update = fun_upd"
    23   "update = fun_upd"
    24 
    24 
    25 notation (xsymbols)
    25 notation (xsymbols)
    26   update  ("_/[_ \<mapsto> /_]" [900,0,0] 900)
    26   update  ("_/[_ \<mapsto> /_]" [900,0,0] 900)
    27 
    27 
       
    28 text {* Disable conflicting syntax from HOL Map theory. *}
       
    29 
       
    30 no_syntax
       
    31   "_maplet"  :: "['a, 'a] => maplet"             ("_ /|->/ _")
       
    32   "_maplets" :: "['a, 'a] => maplet"             ("_ /[|->]/ _")
       
    33   ""         :: "maplet => maplets"             ("_")
       
    34   "_Maplets" :: "[maplet, maplets] => maplets" ("_,/ _")
       
    35   "_MapUpd"  :: "['a ~=> 'b, maplets] => 'a ~=> 'b" ("_/'(_')" [900,0]900)
       
    36   "_Map"     :: "maplets => 'a ~=> 'b"            ("(1[_])")
       
    37 
    28 text {*
    38 text {*
    29   The big-step execution relation @{text evalc} is defined inductively:
    39   The big-step execution relation @{text evalc} is defined inductively:
    30 *}
    40 *}
    31 inductive
    41 inductive
    32   evalc :: "[com,state,state] \<Rightarrow> bool" ("\<langle>_,_\<rangle>/ \<longrightarrow>\<^sub>c _" [0,0,60] 60)
    42   evalc :: "[com,state,state] \<Rightarrow> bool" ("\<langle>_,_\<rangle>/ \<longrightarrow>\<^sub>c _" [0,0,60] 60)
   109   big-step semantics when \emph{@{text c} started in @{text s} terminates
   119   big-step semantics when \emph{@{text c} started in @{text s} terminates
   110   in @{text s'} iff @{text c'} started in the same @{text s} also terminates
   120   in @{text s'} iff @{text c'} started in the same @{text s} also terminates
   111   in the same @{text s'}}. Formally:
   121   in the same @{text s'}}. Formally:
   112 *}
   122 *}
   113 definition
   123 definition
   114   equiv_c :: "com \<Rightarrow> com \<Rightarrow> bool" ("_ \<sim> _") where
   124   equiv_c :: "com \<Rightarrow> com \<Rightarrow> bool" ("_ \<sim> _" [56, 56] 55) where
   115   "c \<sim> c' = (\<forall>s s'. \<langle>c, s\<rangle> \<longrightarrow>\<^sub>c s' = \<langle>c', s\<rangle> \<longrightarrow>\<^sub>c s')"
   125   "c \<sim> c' = (\<forall>s s'. \<langle>c, s\<rangle> \<longrightarrow>\<^sub>c s' = \<langle>c', s\<rangle> \<longrightarrow>\<^sub>c s')"
   116 
   126 
   117 text {*
   127 text {*
   118   Proof rules telling Isabelle to unfold the definition
   128   Proof rules telling Isabelle to unfold the definition
   119   if there is something to be proved about equivalent
   129   if there is something to be proved about equivalent