Proof by cases attempt on a disjunctive formula
dcs(A
or
B)
with:
This command enables the proof by cases starting up.
If the goal to prove is B and the parameter supplied to dcs is X:
For example if X is A ∨ not(B) ∨ C and the goal is Goal, the new goals become:
Let us consider the proof by cases, in the case of a disjunctive predicate.
Given the following situation:
Hypothesis xx: INTEGER & 0<=xx & xx = 1 or xx = 10 or xx = 4 & btrue & 0<=20 & 20: INTEGER Goal xx<=20
|
The user launches a proof by cases to fully use the hypothesis
xx = 1 or xx = 10 or xx = 4.
PRI> dcs(xx = 1 or xx = 10 or xx = 4) Starting Do Cases
|
As the disjunctive predicate comes from the hypothesis, it is not necessary to check it. The prover starts three successives proofs:
Goal xx = 4 & not(xx = 10) & not(xx = 1) => xx<=20 Goal xx = 10 & not(xx = 4) & not(xx = 1) => xx<=20 Goal xx = 1 & not(xx = 4) & not(xx = 10) => xx<=20
|
Each of these goals is easily discharged by the pr command (see chapter 4.38 page §).