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 RuleInsts.res_inst_tac ctxt [(xi, s)] rule i st end |
47 in res_inst_tac ctxt [(xi, 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 |
98 val _ = Method.trace ctxt [rule]; |
98 val _ = Method.trace ctxt [rule]; |
99 |
99 |
100 val concls = HOLogic.dest_concls (Thm.concl_of rule); |
100 val concls = HOLogic.dest_concls (Thm.concl_of rule); |
101 val insts = maps prep_inst (concls ~~ varss) handle Library.UnequalLengths => |
101 val insts = maps prep_inst (concls ~~ varss) handle Library.UnequalLengths => |
102 error "Induction rule has different numbers of variables"; |
102 error "Induction rule has different numbers of variables"; |
103 in RuleInsts.res_inst_tac ctxt insts rule i st end |
103 in res_inst_tac ctxt insts rule i st end |
104 handle THM _ => Seq.empty; |
104 handle THM _ => Seq.empty; |
105 |
105 |
106 end; |
106 end; |
107 |
107 |
108 fun induct_tac ctxt args = gen_induct_tac ctxt (args, NONE); |
108 fun induct_tac ctxt args = gen_induct_tac ctxt (args, NONE); |