equal
deleted
inserted
replaced
123 by (simp add: type_definition.Rep_inverse [OF type]) |
123 by (simp add: type_definition.Rep_inverse [OF type]) |
124 have emb_prj: "\<And>y. emb\<cdot>(prj\<cdot>y :: 'a) = cast\<cdot>t\<cdot>y" |
124 have emb_prj: "\<And>y. emb\<cdot>(prj\<cdot>y :: 'a) = cast\<cdot>t\<cdot>y" |
125 unfolding prj_beta emb_beta |
125 unfolding prj_beta emb_beta |
126 by (simp add: type_definition.Abs_inverse [OF type]) |
126 by (simp add: type_definition.Abs_inverse [OF type]) |
127 show "ep_pair (emb :: 'a \<rightarrow> udom) prj" |
127 show "ep_pair (emb :: 'a \<rightarrow> udom) prj" |
128 apply default |
128 apply standard |
129 apply (simp add: prj_emb) |
129 apply (simp add: prj_emb) |
130 apply (simp add: emb_prj cast.below) |
130 apply (simp add: emb_prj cast.below) |
131 done |
131 done |
132 show "cast\<cdot>DEFL('a) = emb oo (prj :: udom \<rightarrow> 'a)" |
132 show "cast\<cdot>DEFL('a) = emb oo (prj :: udom \<rightarrow> 'a)" |
133 by (rule cfun_eqI, simp add: defl emb_prj) |
133 by (rule cfun_eqI, simp add: defl emb_prj) |