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> |