src/HOLCF/UpperPD.thy
changeset 40494 db8a09daba7b
parent 40491 6de5839e2fb3
child 40497 d2e876d6da8c
equal deleted inserted replaced
40493:c45a3f8a86ea 40494:db8a09daba7b
   446   "cast\<cdot>(upper_defl\<cdot>A) =
   446   "cast\<cdot>(upper_defl\<cdot>A) =
   447     udom_emb upper_approx oo upper_map\<cdot>(cast\<cdot>A) oo udom_prj upper_approx"
   447     udom_emb upper_approx oo upper_map\<cdot>(cast\<cdot>A) oo udom_prj upper_approx"
   448 using upper_approx finite_deflation_upper_map
   448 using upper_approx finite_deflation_upper_map
   449 unfolding upper_defl_def by (rule cast_defl_fun1)
   449 unfolding upper_defl_def by (rule cast_defl_fun1)
   450 
   450 
   451 instantiation upper_pd :: (bifinite) bifinite
   451 instantiation upper_pd :: (bifinite) liftdomain
   452 begin
   452 begin
   453 
   453 
   454 definition
   454 definition
   455   "emb = udom_emb upper_approx oo upper_map\<cdot>emb"
   455   "emb = udom_emb upper_approx oo upper_map\<cdot>emb"
   456 
   456 
   469 definition
   469 definition
   470   "liftdefl (t::'a upper_pd itself) = u_defl\<cdot>DEFL('a upper_pd)"
   470   "liftdefl (t::'a upper_pd itself) = u_defl\<cdot>DEFL('a upper_pd)"
   471 
   471 
   472 instance
   472 instance
   473 using liftemb_upper_pd_def liftprj_upper_pd_def liftdefl_upper_pd_def
   473 using liftemb_upper_pd_def liftprj_upper_pd_def liftdefl_upper_pd_def
   474 proof (rule bifinite_class_intro)
   474 proof (rule liftdomain_class_intro)
   475   show "ep_pair emb (prj :: udom \<rightarrow> 'a upper_pd)"
   475   show "ep_pair emb (prj :: udom \<rightarrow> 'a upper_pd)"
   476     unfolding emb_upper_pd_def prj_upper_pd_def
   476     unfolding emb_upper_pd_def prj_upper_pd_def
   477     using ep_pair_udom [OF upper_approx]
   477     using ep_pair_udom [OF upper_approx]
   478     by (intro ep_pair_comp ep_pair_upper_map ep_pair_emb_prj)
   478     by (intro ep_pair_comp ep_pair_upper_map ep_pair_emb_prj)
   479 next
   479 next