src/HOL/Tools/Ctr_Sugar/ctr_sugar.ML
changeset 55471 198498f861ee
parent 55470 46e6e1d91056
child 55480 59cc4a8bc28a
equal deleted inserted replaced
55470:46e6e1d91056 55471:198498f861ee
   939            sel_split_asms = sel_split_asm_thms, case_eq_ifs = case_eq_if_thms};
   939            sel_split_asms = sel_split_asm_thms, case_eq_ifs = case_eq_if_thms};
   940       in
   940       in
   941         (ctr_sugar,
   941         (ctr_sugar,
   942          lthy
   942          lthy
   943          |> Spec_Rules.add Spec_Rules.Equational ([casex], case_thms)
   943          |> Spec_Rules.add Spec_Rules.Equational ([casex], case_thms)
   944          |> Spec_Rules.add Spec_Rules.Equational (flat selss, all_sel_thms)
   944          |> fold (Spec_Rules.add Spec_Rules.Equational)
   945          |> fold (Spec_Rules.add Spec_Rules.Equational) (map single discs ~~ nontriv_disc_eq_thmss)
   945            (AList.group (eq_list (op aconv)) (map (`lhs_heads_of) all_sel_thms))
       
   946          |> fold (Spec_Rules.add Spec_Rules.Equational)
       
   947            (filter_out (null o snd) (map single discs ~~ nontriv_disc_eq_thmss))
   946          |> Local_Theory.declaration {syntax = false, pervasive = true}
   948          |> Local_Theory.declaration {syntax = false, pervasive = true}
   947               (fn phi => Case_Translation.register
   949               (fn phi => Case_Translation.register
   948                  (Morphism.term phi casex) (map (Morphism.term phi) ctrs))
   950                  (Morphism.term phi casex) (map (Morphism.term phi) ctrs))
   949          |> Local_Theory.background_theory (fold (fold Code.del_eqn) [disc_defs, sel_defs])
   951          |> Local_Theory.background_theory (fold (fold Code.del_eqn) [disc_defs, sel_defs])
   950          |> not no_code ?
   952          |> not no_code ?