proof attempt by case
dc(f)
dc(v,E)
with:
This command enables the starting up of a proof by cases.
If the goal to be proved is G and the parameter supplied to dc is X:
The proof performed depends on the form of the expression v,E:
Let us consider the following situation:
Hypothesis xx: 1..10 & yy: 1..10 & zz: 1..100 & xx: 1..5 => yy = 10 & xx: 6..10 => yy = 1 & yy*xx<=100 & xx*yy<=100 or (yy*yy<=100 & yy*yy<=100) Goal xx+yy-1: 1..100
|
Due to the presence of the two hypotheses xx : 1..5 => yy = 10 and xx : 6..10 => yy = 1, the user decides to start a proof by case , for the predicate xx : 1..5.
PRI> dc(xx: 1..5)
|
The first goal processed is thus:
Goal xx: 1..5 => xx+yy-1: 1..100
|
The prover will therefore attempt to prove the current goal, first under the hypothesis xx : 1..5. To do this, the user applies the command pr (see chapter 4.38 page §).
PRI> pr
|
The goal is proved by the automatic prover. The other case to be processed is thus not(xx : 1..5).
Goal not(xx: 1..5) => xx+yy-1: 1..100
|
The user starts the automatic prover again.
PRI> pr
|
The PO is proved and its command line is:
Force(0) & dd & dc(xx: 1..5) & pr & pr & Next
|
We will now consider proof by case, for an enumerated set.
Given the following situation:
Hypothesis ENS = {e1,e2,e3,e4,e5} & ENS: FIN(NATURAL*{ENS.enum}) & not(ENS = {}) & xx: ENS & xx: {e1,e2,e3,e4} Goal not(xx = e5)
|
The user starts a proof by cases for every value of xx, which belongs to enumerated set ENS.
PRI> dc(xx,ENS) Do Cases on Enumerated: {5}\/{4}\/{3}\/{2}\/{1}
|
the interactive prover will thus launch 5 successive proofs:
Goal xx = e5 => not(xx = e5) Goal xx = e4 => not(xx = e5) Goal xx = e3 => not(xx = e5) Goal xx = e2 => not(xx = e5) Goal xx = e1 => not(xx = e5)
|