src/HOL/Tools/Transfer/transfer_bnf.ML
changeset 63003 bf5fcc65586b
parent 62531 b5d656bf0441
child 63170 eae6549dbea2
equal deleted inserted replaced
63002:56cf1249ee20 63003:bf5fcc65586b
   117 
   117 
   118 fun prove_relation_constraints bnf lthy =
   118 fun prove_relation_constraints bnf lthy =
   119   let
   119   let
   120     val transfer_attr = @{attributes [transfer_rule]}
   120     val transfer_attr = @{attributes [transfer_rule]}
   121     val Tname = base_name_of_bnf bnf
   121     val Tname = base_name_of_bnf bnf
   122     fun qualify suffix = Binding.qualified true suffix Tname
       
   123 
   122 
   124     val defs = map (apsnd (prove_relation_side_constraint lthy bnf)) defs
   123     val defs = map (apsnd (prove_relation_side_constraint lthy bnf)) defs
   125     val bi_total = prove_relation_bi_constraint lthy bnf @{thm bi_total_alt_def}
   124     val bi_total = prove_relation_bi_constraint lthy bnf @{thm bi_total_alt_def}
   126       [snd (nth defs 0), snd (nth defs 1)]
   125       [snd (nth defs 0), snd (nth defs 1)]
   127     val bi_unique = prove_relation_bi_constraint lthy bnf @{thm bi_unique_alt_def}
   126     val bi_unique = prove_relation_bi_constraint lthy bnf @{thm bi_unique_alt_def}
   128       [snd (nth defs 2), snd (nth defs 3)]
   127       [snd (nth defs 2), snd (nth defs 3)]
   129     val defs = ("bi_total_rel", bi_total) :: ("bi_unique_rel", bi_unique) :: defs
   128     val defs = ("bi_total_rel", bi_total) :: ("bi_unique_rel", bi_unique) :: defs
   130     val notes = maps (fn (name, thm) => [((qualify name, []), [([thm], transfer_attr)])]) defs
   129   in
   131   in
   130     maps (fn (a, thm) => [((Binding.qualify_name true Tname a, []), [([thm], transfer_attr)])]) defs
   132     notes
       
   133   end
   131   end
   134 
   132 
   135 (* relator_eq *)
   133 (* relator_eq *)
   136 
   134 
   137 fun relator_eq bnf =
   135 fun relator_eq bnf =
   201 fun predicator bnf lthy =
   199 fun predicator bnf lthy =
   202   let
   200   let
   203     val pred_def = pred_set_of_bnf bnf
   201     val pred_def = pred_set_of_bnf bnf
   204     val Domainp_rel = prove_Domainp_rel lthy bnf pred_def
   202     val Domainp_rel = prove_Domainp_rel lthy bnf pred_def
   205     val rel_eq_onp = rel_eq_onp_of_bnf bnf
   203     val rel_eq_onp = rel_eq_onp_of_bnf bnf
   206     fun qualify defname suffix = Binding.qualified true suffix defname
   204     val Domainp_rel_thm_name = Binding.qualify_name true (base_name_of_bnf bnf) "Domainp_rel"
   207     val Domainp_rel_thm_name = qualify (base_name_of_bnf bnf) "Domainp_rel"
       
   208     val pred_data = Transfer.mk_pred_data pred_def rel_eq_onp []
   205     val pred_data = Transfer.mk_pred_data pred_def rel_eq_onp []
   209     val type_name = type_name_of_bnf bnf
   206     val type_name = type_name_of_bnf bnf
   210     val relator_domain_attr = @{attributes [relator_domain]}
   207     val relator_domain_attr = @{attributes [relator_domain]}
   211     val notes = [((Domainp_rel_thm_name, []), [([Domainp_rel], relator_domain_attr)])]
   208     val notes = [((Domainp_rel_thm_name, []), [([Domainp_rel], relator_domain_attr)])]
   212   in
   209   in