STRIP_ASSUME_TAC : thm_tactic
A ?- t ====================== STRIP_ASSUME_TAC (A' |- v1 /\ ... /\ vn) A u {v1,...,vn} ?- t A ?- t ================================= STRIP_ASSUME_TAC (A' |- v1 \/ ... \/ vn) A u {v1} ?- t ... A u {vn} ?- t A ?- t ==================== STRIP_ASSUME_TAC (A' |- ?x.v) A u {v[x'/x]} ?- t
If the conclusion of th is not a conjunction, a disjunction or an existentially quantified term, the whole theorem th is added to the assumptions.
As assumptions are generated, they are examined to see if they solve the goal (either by being alpha-equivalent to the conclusion of the goal or by deriving a contradiction).
The assumptions of the theorem being split are not added to the assumptions of the goal(s), but they are recorded in the proof. This means that if A' is not a subset of the assumptions A of the goal (up to alpha-conversion), STRIP_ASSUME_TAC (A'|-v) results in an invalid tactic.
?- m = 0 + m
{m + (SUC n) = SUC(m + n), (SUC m) + n = SUC(m + n), m + 0 = m, 0 + m = m, m = 0 + m} ?- m = 0 + m
?- 0 + m = m