equal
deleted
inserted
replaced
42 |
42 |
43 val xi = |
43 val xi = |
44 (case Induct.vars_of (Thm.term_of (Thm.cprem_of rule 1)) of |
44 (case Induct.vars_of (Thm.term_of (Thm.cprem_of rule 1)) of |
45 Var (xi, _) :: _ => xi |
45 Var (xi, _) :: _ => xi |
46 | _ => raise THM ("Malformed cases rule", 0, [rule])); |
46 | _ => raise THM ("Malformed cases rule", 0, [rule])); |
47 in res_inst_tac ctxt [((xi, Position.none), s)] rule i st end |
47 in Rule_Insts.res_inst_tac ctxt [((xi, Position.none), s)] rule i st end |
48 handle THM _ => Seq.empty; |
48 handle THM _ => Seq.empty; |
49 |
49 |
50 fun case_tac ctxt s = gen_case_tac ctxt s NONE; |
50 fun case_tac ctxt s = gen_case_tac ctxt s NONE; |
51 fun case_rule_tac ctxt s rule = gen_case_tac ctxt s (SOME rule); |
51 fun case_rule_tac ctxt s rule = gen_case_tac ctxt s (SOME rule); |
52 |
52 |
102 val _ = Method.trace ctxt [rule']; |
102 val _ = Method.trace ctxt [rule']; |
103 |
103 |
104 val concls = Logic.dest_conjunctions (Thm.concl_of rule); |
104 val concls = Logic.dest_conjunctions (Thm.concl_of rule); |
105 val insts = maps prep_inst (concls ~~ varss) handle ListPair.UnequalLengths => |
105 val insts = maps prep_inst (concls ~~ varss) handle ListPair.UnequalLengths => |
106 error "Induction rule has different numbers of variables"; |
106 error "Induction rule has different numbers of variables"; |
107 in res_inst_tac ctxt insts rule' i st end |
107 in Rule_Insts.res_inst_tac ctxt insts rule' i st end |
108 handle THM _ => Seq.empty; |
108 handle THM _ => Seq.empty; |
109 |
109 |
110 end; |
110 end; |
111 |
111 |
112 fun induct_tac ctxt args = gen_induct_tac ctxt args NONE; |
112 fun induct_tac ctxt args = gen_induct_tac ctxt args NONE; |