equal
deleted
inserted
replaced
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 ? |