equal
deleted
inserted
replaced
27 (bool*thm)list -> (int*(bool*thm)) Net.net * (int*(bool*thm)) Net.net |
27 (bool*thm)list -> (int*(bool*thm)) Net.net * (int*(bool*thm)) Net.net |
28 val compose_inst_tac : (string*string)list -> (bool*thm*int) -> |
28 val compose_inst_tac : (string*string)list -> (bool*thm*int) -> |
29 int -> tactic |
29 int -> tactic |
30 val compose_tac : (bool * thm * int) -> int -> tactic |
30 val compose_tac : (bool * thm * int) -> int -> tactic |
31 val cut_facts_tac : thm list -> int -> tactic |
31 val cut_facts_tac : thm list -> int -> tactic |
|
32 val cut_rules_tac : thm list -> int -> tactic |
32 val cut_inst_tac : (string*string)list -> thm -> int -> tactic |
33 val cut_inst_tac : (string*string)list -> thm -> int -> tactic |
33 val datac : thm -> int -> int -> tactic |
34 val datac : thm -> int -> int -> tactic |
34 val defer_tac : int -> tactic |
35 val defer_tac : int -> tactic |
35 val distinct_subgoals_tac : tactic |
36 val distinct_subgoals_tac : tactic |
36 val dmatch_tac : thm list -> int -> tactic |
37 val dmatch_tac : thm list -> int -> tactic |
344 (*Recognizes theorems that are not rules, but simple propositions*) |
345 (*Recognizes theorems that are not rules, but simple propositions*) |
345 fun is_fact rl = |
346 fun is_fact rl = |
346 case prems_of rl of |
347 case prems_of rl of |
347 [] => true | _::_ => false; |
348 [] => true | _::_ => false; |
348 |
349 |
349 (*"Cut" all facts from theorem list into the goal as assumptions. *) |
350 (*"Cut" a list of rules into the goal. Their premises will become new |
350 fun cut_facts_tac ths i = |
351 subgoals.*) |
351 EVERY (map (fn th => metacut_tac th i) (filter is_fact ths)); |
352 fun cut_rules_tac ths i = EVERY (map (fn th => metacut_tac th i) ths); |
|
353 |
|
354 (*As above, but inserts only facts (unconditional theorems); |
|
355 generates no additional subgoals. *) |
|
356 fun cut_facts_tac ths = cut_rules_tac (filter is_fact ths); |
352 |
357 |
353 (*Introduce the given proposition as a lemma and subgoal*) |
358 (*Introduce the given proposition as a lemma and subgoal*) |
354 fun subgoal_tac sprop = |
359 fun subgoal_tac sprop = |
355 DETERM o res_inst_tac [("psi", sprop)] cut_rl THEN' SUBGOAL (fn (prop, _) => |
360 DETERM o res_inst_tac [("psi", sprop)] cut_rl THEN' SUBGOAL (fn (prop, _) => |
356 let val concl' = Logic.strip_assums_concl prop in |
361 let val concl' = Logic.strip_assums_concl prop in |