src/HOL/Hoare/Hoare_Logic_Abort.thy
changeset 72984 8e99246f89c0
parent 72806 4fa08e083865
child 72985 9cc431444435
equal deleted inserted replaced
72983:a8050df4f58f 72984:8e99246f89c0
    19 | Abort
    19 | Abort
    20 | Seq "'a com" "'a com"               ("(_;/ _)"      [61,60] 60)
    20 | Seq "'a com" "'a com"               ("(_;/ _)"      [61,60] 60)
    21 | Cond "'a bexp" "'a com" "'a com"    ("(1IF _/ THEN _ / ELSE _/ FI)"  [0,0,0] 61)
    21 | Cond "'a bexp" "'a com" "'a com"    ("(1IF _/ THEN _ / ELSE _/ FI)"  [0,0,0] 61)
    22 | While "'a bexp" "'a assn" "'a var" "'a com"  ("(1WHILE _/ INV {_} / VAR {_} //DO _ /OD)"  [0,0,0,0] 61)
    22 | While "'a bexp" "'a assn" "'a var" "'a com"  ("(1WHILE _/ INV {_} / VAR {_} //DO _ /OD)"  [0,0,0,0] 61)
    23 
    23 
    24 syntax (xsymbols)
    24 syntax
    25   "_whilePC" :: "'a bexp \<Rightarrow> 'a assn \<Rightarrow> 'a com \<Rightarrow> 'a com"  ("(1WHILE _/ INV {_} //DO _ /OD)"  [0,0,0] 61)
    25   "_whilePC" :: "'a bexp \<Rightarrow> 'a assn \<Rightarrow> 'a com \<Rightarrow> 'a com"  ("(1WHILE _/ INV {_} //DO _ /OD)"  [0,0,0] 61)
    26 
       
    27 translations
    26 translations
    28   "WHILE b INV {x} DO c OD" => "WHILE b INV {x} VAR {0} DO c OD"
    27   "WHILE b INV {x} DO c OD" \<rightharpoonup> "WHILE b INV {x} VAR {0} DO c OD"
    29 
    28 
    30 abbreviation annskip ("SKIP") where "SKIP == Basic id"
    29 abbreviation annskip ("SKIP") where "SKIP == Basic id"
    31 
    30 
    32 type_synonym 'a sem = "'a option => 'a option => bool"
    31 type_synonym 'a sem = "'a option => 'a option => bool"
    33 
    32 
    78   "_assign" :: "idt => 'b => 'a com"  ("(2_ :=/ _)" [70, 65] 61)
    77   "_assign" :: "idt => 'b => 'a com"  ("(2_ :=/ _)" [70, 65] 61)
    79 
    78 
    80 syntax
    79 syntax
    81   "_hoare_abort_vars" :: "[idts, 'a assn,'a com,'a assn] => bool"
    80   "_hoare_abort_vars" :: "[idts, 'a assn,'a com,'a assn] => bool"
    82                  ("VARS _// {_} // _ // {_}" [0,0,55,0] 50)
    81                  ("VARS _// {_} // _ // {_}" [0,0,55,0] 50)
    83 syntax ("" output)
    82 syntax (output)
    84   "_hoare_abort"      :: "['a assn,'a com,'a assn] => bool"
    83   "_hoare_abort"      :: "['a assn,'a com,'a assn] => bool"
    85                  ("{_} // _ // {_}" [0,55,0] 50)
    84                  ("{_} // _ // {_}" [0,55,0] 50)
    86 
    85 
    87 ML_file \<open>hoare_syntax.ML\<close>
    86 ML_file \<open>hoare_syntax.ML\<close>
    88 parse_translation \<open>[(\<^syntax_const>\<open>_hoare_abort_vars\<close>, K Hoare_Syntax.hoare_vars_tr)]\<close>
    87 parse_translation \<open>[(\<^syntax_const>\<open>_hoare_abort_vars\<close>, K Hoare_Syntax.hoare_vars_tr)]\<close>
    89 print_translation \<open>[(\<^const_syntax>\<open>Valid\<close>, K (Hoare_Syntax.spec_tr' \<^syntax_const>\<open>_hoare_abort\<close>))]\<close>
    88 print_translation \<open>[(\<^const_syntax>\<open>Valid\<close>, K (Hoare_Syntax.spec_tr' \<^syntax_const>\<open>_hoare_abort\<close>))]\<close>
    90 
    89 
    91 syntax
    90 syntax
    92  "_hoare_abort_tc_vars" :: "[idts, 'a assn,'a com,'a assn] => bool"
    91  "_hoare_abort_tc_vars" :: "[idts, 'a assn,'a com,'a assn] => bool"
    93                           ("VARS _// [_] // _ // [_]" [0,0,55,0] 50)
    92                           ("VARS _// [_] // _ // [_]" [0,0,55,0] 50)
    94 syntax ("" output)
    93 syntax (output)
    95  "_hoare_abort_tc"      :: "['a assn,'a com,'a assn] => bool"
    94  "_hoare_abort_tc"      :: "['a assn,'a com,'a assn] => bool"
    96                           ("[_] // _ // [_]" [0,55,0] 50)
    95                           ("[_] // _ // [_]" [0,55,0] 50)
    97 
    96 
    98 parse_translation \<open>[(\<^syntax_const>\<open>_hoare_abort_tc_vars\<close>, K Hoare_Syntax.hoare_tc_vars_tr)]\<close>
    97 parse_translation \<open>[(\<^syntax_const>\<open>_hoare_abort_tc_vars\<close>, K Hoare_Syntax.hoare_tc_vars_tr)]\<close>
    99 print_translation \<open>[(\<^const_syntax>\<open>ValidTC\<close>, K (Hoare_Syntax.spec_tr' \<^syntax_const>\<open>_hoare_abort_tc\<close>))]\<close>
    98 print_translation \<open>[(\<^const_syntax>\<open>ValidTC\<close>, K (Hoare_Syntax.spec_tr' \<^syntax_const>\<open>_hoare_abort_tc\<close>))]\<close>