696 map (hd o snd); |
696 map (hd o snd); |
697 val (((_, elims'), (_, [induct'])), ctxt2) = |
697 val (((_, elims'), (_, [induct'])), ctxt2) = |
698 ctxt1 |> |
698 ctxt1 |> |
699 LocalTheory.note kind ((rec_qualified (Binding.name "intros"), []), intrs') ||>> |
699 LocalTheory.note kind ((rec_qualified (Binding.name "intros"), []), intrs') ||>> |
700 fold_map (fn (name, (elim, cases)) => |
700 fold_map (fn (name, (elim, cases)) => |
701 LocalTheory.note kind ((Binding.name (NameSpace.qualified (NameSpace.base_name name) "cases"), |
701 LocalTheory.note kind ((Binding.name (Long_Name.qualify (Long_Name.base_name name) "cases"), |
702 [Attrib.internal (K (RuleCases.case_names cases)), |
702 [Attrib.internal (K (RuleCases.case_names cases)), |
703 Attrib.internal (K (RuleCases.consumes 1)), |
703 Attrib.internal (K (RuleCases.consumes 1)), |
704 Attrib.internal (K (Induct.cases_pred name)), |
704 Attrib.internal (K (Induct.cases_pred name)), |
705 Attrib.internal (K (ContextRules.elim_query NONE))]), [elim]) #> |
705 Attrib.internal (K (ContextRules.elim_query NONE))]), [elim]) #> |
706 apfst (hd o snd)) (if null elims then [] else cnames ~~ elims) ||>> |
706 apfst (hd o snd)) (if null elims then [] else cnames ~~ elims) ||>> |