equal
deleted
inserted
replaced
90 | NONE => |
90 | NONE => |
91 (case map_filter (Rule_Cases.mutual_rule ctxt) (Induct.get_inductT ctxt argss) of |
91 (case map_filter (Rule_Cases.mutual_rule ctxt) (Induct.get_inductT ctxt argss) of |
92 (_, rule) :: _ => rule |
92 (_, rule) :: _ => rule |
93 | [] => raise THM ("No induction rules", 0, []))); |
93 | [] => raise THM ("No induction rules", 0, []))); |
94 |
94 |
95 val rule' = rule |> Conv.fconv_rule (Conv.concl_conv ~1 ObjectLogic.atomize); |
95 val rule' = rule |> Conv.fconv_rule (Conv.concl_conv ~1 Object_Logic.atomize); |
96 val _ = Method.trace ctxt [rule']; |
96 val _ = Method.trace ctxt [rule']; |
97 |
97 |
98 val concls = Logic.dest_conjunctions (Thm.concl_of rule); |
98 val concls = Logic.dest_conjunctions (Thm.concl_of rule); |
99 val insts = maps prep_inst (concls ~~ varss) handle Library.UnequalLengths => |
99 val insts = maps prep_inst (concls ~~ varss) handle Library.UnequalLengths => |
100 error "Induction rule has different numbers of variables"; |
100 error "Induction rule has different numbers of variables"; |