equal
deleted
inserted
replaced
68 val metacut_tac : thm -> int -> tactic |
68 val metacut_tac : thm -> int -> tactic |
69 val net_bimatch_tac : (bool*thm) list -> int -> tactic |
69 val net_bimatch_tac : (bool*thm) list -> int -> tactic |
70 val net_biresolve_tac : (bool*thm) list -> int -> tactic |
70 val net_biresolve_tac : (bool*thm) list -> int -> tactic |
71 val net_match_tac : thm list -> int -> tactic |
71 val net_match_tac : thm list -> int -> tactic |
72 val net_resolve_tac : thm list -> int -> tactic |
72 val net_resolve_tac : thm list -> int -> tactic |
|
73 val norm_hhf_plain : thm -> thm |
73 val norm_hhf_rule : thm -> thm |
74 val norm_hhf_rule : thm -> thm |
74 val norm_hhf_tac : int -> tactic |
75 val norm_hhf_tac : int -> tactic |
75 val prune_params_tac : tactic |
76 val prune_params_tac : tactic |
76 val rename_params_tac : string list -> int -> tactic |
77 val rename_params_tac : string list -> int -> tactic |
77 val rename_tac : string -> int -> tactic |
78 val rename_tac : string -> int -> tactic |
530 |
531 |
531 (*Rewrite subgoals only, not main goal. *) |
532 (*Rewrite subgoals only, not main goal. *) |
532 fun rewrite_goals_tac defs = PRIMITIVE (rewrite_goals_rule defs); |
533 fun rewrite_goals_tac defs = PRIMITIVE (rewrite_goals_rule defs); |
533 fun rewtac def = rewrite_goals_tac [def]; |
534 fun rewtac def = rewrite_goals_tac [def]; |
534 |
535 |
|
536 fun norm_hhf_plain th = |
|
537 if Drule.is_norm_hhf (prop_of th) then th |
|
538 else rewrite_rule [Drule.norm_hhf_eq] th; |
|
539 |
535 fun norm_hhf_rule th = |
540 fun norm_hhf_rule th = |
536 (if Drule.is_norm_hhf (prop_of th) then th |
541 th |> norm_hhf_plain |> Drule.gen_all; |
537 else rewrite_rule [Drule.norm_hhf_eq] th) |> Drule.gen_all; |
|
538 |
542 |
539 val norm_hhf_tac = |
543 val norm_hhf_tac = |
540 rtac Drule.asm_rl (*cheap approximation -- thanks to builtin Logic.flatten_params*) |
544 rtac Drule.asm_rl (*cheap approximation -- thanks to builtin Logic.flatten_params*) |
541 THEN' SUBGOAL (fn (t, i) => |
545 THEN' SUBGOAL (fn (t, i) => |
542 if Drule.is_norm_hhf t then all_tac |
546 if Drule.is_norm_hhf t then all_tac |