src/HOL/Tools/Transfer/transfer_bnf.ML
changeset 63352 4eaf35781b23
parent 63170 eae6549dbea2
child 63859 dca6fabd8060
equal deleted inserted replaced
63347:e344dc82f6c2 63352:4eaf35781b23
   131   end
   131   end
   132 
   132 
   133 (* relator_eq *)
   133 (* relator_eq *)
   134 
   134 
   135 fun relator_eq bnf =
   135 fun relator_eq bnf =
   136   [((Binding.empty, []), [([rel_eq_of_bnf bnf], @{attributes [relator_eq]})])]
   136   [(Binding.empty_atts, [([rel_eq_of_bnf bnf], @{attributes [relator_eq]})])]
   137 
   137 
   138 (* transfer rules *)
   138 (* transfer rules *)
   139 
   139 
   140 fun bnf_transfer_rules bnf =
   140 fun bnf_transfer_rules bnf =
   141   let
   141   let
   142     val transfer_rules = map_transfer_of_bnf bnf :: pred_transfer_of_bnf bnf
   142     val transfer_rules = map_transfer_of_bnf bnf :: pred_transfer_of_bnf bnf
   143       :: rel_transfer_of_bnf bnf :: set_transfer_of_bnf bnf
   143       :: rel_transfer_of_bnf bnf :: set_transfer_of_bnf bnf
   144     val transfer_attr = @{attributes [transfer_rule]}
   144     val transfer_attr = @{attributes [transfer_rule]}
   145   in
   145   in
   146     map (fn thm => ((Binding.empty,[]),[([thm],transfer_attr)])) transfer_rules
   146     map (fn thm => (Binding.empty_atts, [([thm],transfer_attr)])) transfer_rules
   147   end
   147   end
   148 
   148 
   149 (* Domainp theorem for predicator *)
   149 (* Domainp theorem for predicator *)
   150 
   150 
   151 fun Domainp_tac bnf pred_def ctxt =
   151 fun Domainp_tac bnf pred_def ctxt =
   249     val transfer_rules = #ctr_transfers fp_ctr_sugar @ #case_transfers fp_ctr_sugar
   249     val transfer_rules = #ctr_transfers fp_ctr_sugar @ #case_transfers fp_ctr_sugar
   250       @ #disc_transfers fp_ctr_sugar @ #sel_transfers fp_ctr_sugar
   250       @ #disc_transfers fp_ctr_sugar @ #sel_transfers fp_ctr_sugar
   251       @ (#co_rec_transfers o #fp_co_induct_sugar) fp_sugar
   251       @ (#co_rec_transfers o #fp_co_induct_sugar) fp_sugar
   252     val transfer_attr = @{attributes [transfer_rule]}
   252     val transfer_attr = @{attributes [transfer_rule]}
   253   in
   253   in
   254     map (fn thm => ((Binding.empty, []), [([thm], transfer_attr)])) transfer_rules
   254     map (fn thm => (Binding.empty_atts, [([thm], transfer_attr)])) transfer_rules
   255   end
   255   end
   256 
   256 
   257 fun register_pred_injects fp_sugar lthy =
   257 fun register_pred_injects fp_sugar lthy =
   258   let
   258   let
   259     val pred_injects = #pred_injects (#fp_bnf_sugar fp_sugar)
   259     val pred_injects = #pred_injects (#fp_bnf_sugar fp_sugar)