equal
deleted
inserted
replaced
18 end; |
18 end; |
19 |
19 |
20 signature INDUCT_METHOD = |
20 signature INDUCT_METHOD = |
21 sig |
21 sig |
22 val fix_tac: Proof.context -> int -> (string * typ) list -> int -> tactic |
22 val fix_tac: Proof.context -> int -> (string * typ) list -> int -> tactic |
|
23 val add_defs: (string option * term) option list -> Proof.context -> |
|
24 (term option list * thm list) * Proof.context |
23 val atomize_term: theory -> term -> term |
25 val atomize_term: theory -> term -> term |
24 val atomize_tac: int -> tactic |
26 val atomize_tac: int -> tactic |
25 val rulified_term: thm -> theory * term |
27 val rulified_term: thm -> theory * term |
26 val rulify_tac: int -> tactic |
28 val rulify_tac: int -> tactic |
27 val guess_instance: thm -> int -> thm -> thm Seq.seq |
29 val guess_instance: thm -> int -> thm -> thm Seq.seq |
38 struct |
40 struct |
39 |
41 |
40 |
42 |
41 (** misc utils **) |
43 (** misc utils **) |
42 |
44 |
43 (* lists *) |
45 (* alignment *) |
44 |
|
45 fun nth_list xss i = nth xss i handle Subscript => []; |
|
46 |
46 |
47 fun align_left msg xs ys = |
47 fun align_left msg xs ys = |
48 let val m = length xs and n = length ys |
48 let val m = length xs and n = length ys |
49 in if m < n then raise ERROR_MESSAGE msg else (Library.take (n, xs) ~~ ys) end; |
49 in if m < n then raise ERROR_MESSAGE msg else (Library.take (n, xs) ~~ ys) end; |
50 |
50 |