src/HOL/Tools/BNF/bnf_fp_def_sugar.ML
changeset 56978 0c1b4987e6b2
parent 56956 7425fa3763ff
child 56991 8e9ca31e9b8e
equal deleted inserted replaced
56977:a33fe940a557 56978:0c1b4987e6b2
  1144               val cyIns = map2 (mk_cIn (Term.map_types B_ify ctor)) ks yss;
  1144               val cyIns = map2 (mk_cIn (Term.map_types B_ify ctor)) ks yss;
  1145 
  1145 
  1146               fun mk_map_thm ctr_def' cxIn =
  1146               fun mk_map_thm ctr_def' cxIn =
  1147                 fold_thms lthy [ctr_def']
  1147                 fold_thms lthy [ctr_def']
  1148                   (unfold_thms lthy (o_apply :: pre_map_def ::
  1148                   (unfold_thms lthy (o_apply :: pre_map_def ::
  1149                        (if fp = Least_FP then [] else [ctor_dtor, dtor_ctor]) @ sumprod_thms_map @
  1149                        (if fp = Least_FP then [] else [dtor_ctor]) @ sumprod_thms_map @
  1150                        abs_inverses)
  1150                        abs_inverses)
  1151                      (cterm_instantiate_pos (nones @ [SOME cxIn])
  1151                      (cterm_instantiate_pos (nones @ [SOME cxIn])
  1152                         (if fp = Least_FP then fp_map_thm else fp_map_thm RS ctor_cong)))
  1152                         (if fp = Least_FP then fp_map_thm
       
  1153                          else fp_map_thm RS ctor_cong RS (ctor_dtor RS sym RS trans))))
  1153                 |> singleton (Proof_Context.export names_lthy no_defs_lthy);
  1154                 |> singleton (Proof_Context.export names_lthy no_defs_lthy);
  1154 
  1155 
  1155               fun mk_set_thm fp_set_thm ctr_def' cxIn =
  1156               fun mk_set_thm fp_set_thm ctr_def' cxIn =
  1156                 fold_thms lthy [ctr_def']
  1157                 fold_thms lthy [ctr_def']
  1157                   (unfold_thms lthy (pre_set_defs @ nested_set_maps @ nesting_set_maps @
  1158                   (unfold_thms lthy (pre_set_defs @ nested_set_maps @ nesting_set_maps @