equal
deleted
inserted
replaced
69 val resolve_tac: thm list -> int -> tactic |
69 val resolve_tac: thm list -> int -> tactic |
70 val res_inst_tac: (string*string)list -> thm -> int -> tactic |
70 val res_inst_tac: (string*string)list -> thm -> int -> tactic |
71 val rewrite_goals_tac: thm list -> tactic |
71 val rewrite_goals_tac: thm list -> tactic |
72 val rewrite_tac: thm list -> tactic |
72 val rewrite_tac: thm list -> tactic |
73 val rewtac: thm -> tactic |
73 val rewtac: thm -> tactic |
|
74 val rotate_tac: int -> int -> tactic |
74 val rtac: thm -> int -> tactic |
75 val rtac: thm -> int -> tactic |
75 val rule_by_tactic: tactic -> thm -> thm |
76 val rule_by_tactic: tactic -> thm -> thm |
76 val subgoal_tac: string -> int -> tactic |
77 val subgoal_tac: string -> int -> tactic |
77 val subgoals_tac: string list -> int -> tactic |
78 val subgoals_tac: string list -> int -> tactic |
78 val subgoals_of_brl: bool * thm -> int |
79 val subgoals_of_brl: bool * thm -> int |
467 end; |
468 end; |
468 |
469 |
469 (*Prunes all redundant parameters from the proof state by rewriting*) |
470 (*Prunes all redundant parameters from the proof state by rewriting*) |
470 val prune_params_tac = rewrite_tac [triv_forall_equality]; |
471 val prune_params_tac = rewrite_tac [triv_forall_equality]; |
471 |
472 |
|
473 (* rotate_tac n i: rotate the assumptions of subgoal i by n positions, from |
|
474 * right to left if n is positive, and from left to right if n is negative. |
|
475 *) |
|
476 fun rotate_tac n = |
|
477 let fun rot(n) = EVERY'(replicate n (dtac asm_rl)); |
|
478 in if n >= 0 then rot n |
|
479 else SUBGOAL (fn (t,i) => rot(length(Logic.strip_assums_hyp t)+n) i) |
|
480 end; |
|
481 |
472 end; |
482 end; |
473 end; |
483 end; |