equal
deleted
inserted
replaced
68 by simp |
68 by simp |
69 |
69 |
70 lemma DefE2: "\<lbrakk>x = Def s; x = \<bottom>\<rbrakk> \<Longrightarrow> R" |
70 lemma DefE2: "\<lbrakk>x = Def s; x = \<bottom>\<rbrakk> \<Longrightarrow> R" |
71 by simp |
71 by simp |
72 |
72 |
73 lemma Def_inject_less_eq: "Def x \<sqsubseteq> Def y \<longleftrightarrow> x = y" |
73 lemma Def_below_Def: "Def x \<sqsubseteq> Def y \<longleftrightarrow> x = y" |
74 by (simp add: less_lift_def Def_def Abs_lift_inverse lift_def) |
74 by (simp add: below_lift_def Def_def Abs_lift_inverse lift_def) |
75 |
75 |
76 lemma Def_less_is_eq [simp]: "Def x \<sqsubseteq> y \<longleftrightarrow> Def x = y" |
76 lemma Def_below_iff [simp]: "Def x \<sqsubseteq> y \<longleftrightarrow> Def x = y" |
77 by (induct y, simp, simp add: Def_inject_less_eq) |
77 by (induct y, simp, simp add: Def_below_Def) |
78 |
78 |
79 |
79 |
80 subsection {* Lift is flat *} |
80 subsection {* Lift is flat *} |
81 |
81 |
82 instance lift :: (type) flat |
82 instance lift :: (type) flat |
132 |
132 |
133 lemma FLIFT_mono: |
133 lemma FLIFT_mono: |
134 "(\<And>x. f x \<sqsubseteq> g x) \<Longrightarrow> (FLIFT x. f x) \<sqsubseteq> (FLIFT x. g x)" |
134 "(\<And>x. f x \<sqsubseteq> g x) \<Longrightarrow> (FLIFT x. f x) \<sqsubseteq> (FLIFT x. g x)" |
135 apply (rule monofunE [where f=flift1]) |
135 apply (rule monofunE [where f=flift1]) |
136 apply (rule cont2mono [OF cont_flift1]) |
136 apply (rule cont2mono [OF cont_flift1]) |
137 apply (simp add: less_fun_ext) |
137 apply (simp add: below_fun_ext) |
138 done |
138 done |
139 |
139 |
140 lemma cont2cont_flift1 [simp]: |
140 lemma cont2cont_flift1 [simp]: |
141 "\<lbrakk>\<And>y. cont (\<lambda>x. f x y)\<rbrakk> \<Longrightarrow> cont (\<lambda>x. FLIFT y. f x y)" |
141 "\<lbrakk>\<And>y. cont (\<lambda>x. f x y)\<rbrakk> \<Longrightarrow> cont (\<lambda>x. FLIFT y. f x y)" |
142 apply (rule cont_flift1 [THEN cont2cont_app3]) |
142 apply (rule cont_flift1 [THEN cont2cont_app3]) |
214 apply (cases x, simp) |
214 apply (cases x, simp) |
215 apply (rule thelubI) |
215 apply (rule thelubI) |
216 apply (rule is_lubI) |
216 apply (rule is_lubI) |
217 apply (rule ub_rangeI, simp) |
217 apply (rule ub_rangeI, simp) |
218 apply (drule ub_rangeD) |
218 apply (drule ub_rangeD) |
219 apply (erule rev_trans_less) |
219 apply (erule rev_below_trans) |
220 apply simp |
220 apply simp |
221 apply (rule lessI) |
221 apply (rule lessI) |
222 done |
222 done |
223 next |
223 next |
224 fix i :: nat and x :: "'a lift" |
224 fix i :: nat and x :: "'a lift" |