|
|
import NNG.Metadata
|
|
|
import NNG.MyNat.Addition
|
|
|
|
|
|
Game "NNG"
|
|
|
World "AdvProposition"
|
|
|
Level 7
|
|
|
Title "`or_symm`"
|
|
|
|
|
|
open MyNat
|
|
|
|
|
|
Introduction
|
|
|
"
|
|
|
Proving that $(P\\lor Q)\\implies(Q\\lor P)$ involves an element of danger.
|
|
|
"
|
|
|
|
|
|
Statement --or_symm
|
|
|
"If $P$ and $Q$ are true/false statements, then
|
|
|
$$P\\lor Q\\implies Q\\lor P.$$ "
|
|
|
(P Q : Prop) : P ∨ Q → Q ∨ P := by
|
|
|
Hint "`intro h` is the obvious start."
|
|
|
intro h
|
|
|
Branch
|
|
|
left
|
|
|
Hint "This is a dead end that is not provable anymore. Hit \"undo\"."
|
|
|
Branch
|
|
|
right
|
|
|
Hint "This is a dead end that is not provable anymore. Hit \"undo\"."
|
|
|
Hint "But now, even though the goal is an `∨` statement, both `left` and `right` put
|
|
|
you in a situation with an impossible goal. Fortunately,
|
|
|
you can do `rcases h with p | q`. (that is a normal vertical slash)
|
|
|
"
|
|
|
rcases h with p | q
|
|
|
Hint " Something new just happened: because
|
|
|
there are two ways to prove the assumption `P ∨ Q` (namely, proving `P` or proving `Q`),
|
|
|
the `rcases` tactic turns one goal into two, one for each case.
|
|
|
|
|
|
So now you proof the goal under the assumption that `P` is true, and waiting under \"Other Goals\"
|
|
|
there is the same goal but under the assumption that `Q` is true.
|
|
|
|
|
|
You should be able to make it home from there. "
|
|
|
right
|
|
|
exact p
|
|
|
Hint "Note how now you finished the first goal and jumped to the one, where you assume `Q`."
|
|
|
left
|
|
|
exact q
|
|
|
|
|
|
Conclusion
|
|
|
"
|
|
|
Well done! Note that the syntax for `rcases` is different whether it's an \"or\" or an \"and\".
|
|
|
|
|
|
* `rcases h with ⟨p, q⟩` splits an \"and\" in the assumptions into two parts. You get two assumptions
|
|
|
but still only one goal.
|
|
|
* `rcases h with p | q` splits an \"or\" in the assumptions. You get **two goals** which have different
|
|
|
assumptions, once assumping the lefthand-side of the dismantled \"or\"-assumption, once the righthand-side.
|
|
|
"
|