diff -r 313be214e40a -r 698de142f6f9 src/HOL/IMP/Abs_State.thy --- a/src/HOL/IMP/Abs_State.thy Thu Dec 29 14:44:44 2011 +0100 +++ b/src/HOL/IMP/Abs_State.thy Thu Dec 29 17:43:40 2011 +0100 @@ -30,7 +30,7 @@ lemma lookup_update: "lookup (update S x y) = (lookup S)(x:=y)" by(rule ext)(auto simp: lookup_def update_def) -definition "rep_st rep F = {f. \x. f x \ rep(lookup F x)}" +definition "\_st \ F = {f. \x. f x \ \(lookup F x)}" instantiation st :: (SL_top) SL_top begin @@ -61,35 +61,36 @@ context Val_abs begin -abbreviation rep_f :: "'a st \ state set" ("\\<^isub>f") -where "\\<^isub>f == rep_st rep" +abbreviation \\<^isub>f :: "'a st \ state set" +where "\\<^isub>f == \_st \" -abbreviation rep_u :: "'a st option \ state set" ("\\<^isub>u") -where "\\<^isub>u == rep_option \\<^isub>f" +abbreviation \\<^isub>o :: "'a st option \ state set" +where "\\<^isub>o == \_option \\<^isub>f" -abbreviation rep_c :: "'a st option acom \ state set acom" ("\\<^isub>c") -where "\\<^isub>c == map_acom \\<^isub>u" +abbreviation \\<^isub>c :: "'a st option acom \ state set acom" +where "\\<^isub>c == map_acom \\<^isub>o" -lemma rep_f_Top[simp]: "rep_f Top = UNIV" -by(auto simp: Top_st_def rep_st_def lookup_def) +lemma gamma_f_Top[simp]: "\\<^isub>f Top = UNIV" +by(auto simp: Top_st_def \_st_def lookup_def) -lemma rep_u_Top[simp]: "rep_u Top = UNIV" +lemma gamma_o_Top[simp]: "\\<^isub>o Top = UNIV" by (simp add: Top_option_def) (* FIXME (maybe also le \ sqle?) *) -lemma mono_rep_f: "f \ g \ \\<^isub>f f \ \\<^isub>f g" -apply(simp add:rep_st_def subset_iff lookup_def le_st_def split: if_splits) -by (metis UNIV_I mono_rep rep_Top subsetD) +lemma mono_gamma_f: "f \ g \ \\<^isub>f f \ \\<^isub>f g" +apply(simp add:\_st_def subset_iff lookup_def le_st_def split: if_splits) +by (metis UNIV_I mono_gamma gamma_Top subsetD) -lemma mono_rep_u: - "sa \ sa' \ \\<^isub>u sa \ \\<^isub>u sa'" -by(induction sa sa' rule: le_option.induct)(simp_all add: mono_rep_f) +lemma mono_gamma_o: + "sa \ sa' \ \\<^isub>o sa \ \\<^isub>o sa'" +by(induction sa sa' rule: le_option.induct)(simp_all add: mono_gamma_f) -lemma mono_rep_c: "ca \ ca' \ \\<^isub>c ca \ \\<^isub>c ca'" -by (induction ca ca' rule: le_acom.induct) (simp_all add:mono_rep_u) +lemma mono_gamma_c: "ca \ ca' \ \\<^isub>c ca \ \\<^isub>c ca'" +by (induction ca ca' rule: le_acom.induct) (simp_all add:mono_gamma_o) -lemma in_rep_up_iff: "x : rep_option r u \ (\u'. u = Some u' \ x : r u')" +lemma in_gamma_option_iff: + "x : \_option r u \ (\u'. u = Some u' \ x : r u')" by (cases u) auto end