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