src/HOL/HOLCF/Domain.thy
changeset 61169 4de9ff3ea29a
parent 60753 80ca4a065a48
child 62175 8ffc4d0e652d
equal deleted inserted replaced
61168:dcdfb6355a05 61169:4de9ff3ea29a
   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)