COND_CASES_TAC : tactic
A ?- t
======================================================= COND_CASES_TAC
A u {p} ?- t[u/(p=>u|v)] A u {~p} ?- t[v/(p=>u|v)]]
where p is not a constant, and the term p=>u|v is free in t.
Note that it both enriches the assumptions and inserts the assumed value into
the conditional.
COND_CASES_TAC ([], "x = (P y => z1 | z2)");; ([(["P y"], "x = z1"); (["~P y"], "x = z2")], -) : subgoalsbut it fails, for example, if "y" is not free in the term part of the goal:
COND_CASES_TAC ([], "!y. x = (P y => z1 | z2)");; evaluation failed COND_CASES_TACIn contrast, ASM_CASES_TAC does not perform the replacement:
ASM_CASES_TAC "P y" ([], "x = (P y => z1 | z2)");;
([(["P y"], "x = (P y => z1 | z2)"); (["~P y"], "x = (P y => z1 | z2)")],
-)
: subgoals