src/Tools/induct_tacs.ML
changeset 35625 9c818cab0dd0
parent 33957 e9afca2118d4
child 36960 01594f816e3a
equal deleted inserted replaced
35624:c4e29a0bb8c1 35625:9c818cab0dd0
    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";