equal
deleted
inserted
replaced
6 structure NominalInduct: |
6 structure NominalInduct: |
7 sig |
7 sig |
8 val nominal_induct_tac: Proof.context -> (binding option * term) option list list -> |
8 val nominal_induct_tac: Proof.context -> (binding option * term) option list list -> |
9 (string * typ) list -> (string * typ) list list -> thm list -> |
9 (string * typ) list -> (string * typ) list list -> thm list -> |
10 thm list -> int -> RuleCases.cases_tactic |
10 thm list -> int -> RuleCases.cases_tactic |
11 val nominal_induct_method: Method.src -> Proof.context -> Method.method |
11 val nominal_induct_method: Method.src -> Proof.context -> Proof.method |
12 end = |
12 end = |
13 struct |
13 struct |
14 |
14 |
15 (* proper tuples -- nested left *) |
15 (* proper tuples -- nested left *) |
16 |
16 |
155 fun nominal_induct_method src = |
155 fun nominal_induct_method src = |
156 Method.syntax |
156 Method.syntax |
157 (P.and_list' (Scan.repeat (unless_more_args def_inst)) -- |
157 (P.and_list' (Scan.repeat (unless_more_args def_inst)) -- |
158 avoiding -- fixing -- rule_spec) src |
158 avoiding -- fixing -- rule_spec) src |
159 #> (fn ((((x, y), z), w), ctxt) => |
159 #> (fn ((((x, y), z), w), ctxt) => |
160 Method.RAW_METHOD_CASES (fn facts => |
160 RAW_METHOD_CASES (fn facts => |
161 HEADGOAL (nominal_induct_tac ctxt x y z w facts))); |
161 HEADGOAL (nominal_induct_tac ctxt x y z w facts))); |
162 |
162 |
163 end; |
163 end; |
164 |
164 |
165 end; |
165 end; |