|
|
import NNG.Metadata
|
|
|
import NNG.MyNat.LE
|
|
|
import Mathlib.Tactic.Use
|
|
|
--import Mathlib.Tactic.Ring
|
|
|
|
|
|
Game "NNG"
|
|
|
World "Inequality"
|
|
|
Level 1
|
|
|
Title "the `use` tactic"
|
|
|
|
|
|
open MyNat
|
|
|
|
|
|
Introduction
|
|
|
"
|
|
|
The goal below is to prove $x\\le 1+x$ for any natural number $x$.
|
|
|
First let's turn the goal explicitly into an existence problem with
|
|
|
|
|
|
`rw le_iff_exists_add,`
|
|
|
|
|
|
and now the goal has become `∃ c : mynat, 1 + x = x + c`. Clearly
|
|
|
this statement is true, and the proof is that $c=1$ will work (we also
|
|
|
need the fact that addition is commutative, but we proved that a long
|
|
|
time ago). How do we make progress with this goal?
|
|
|
|
|
|
The `use` tactic can be used on goals of the form `∃ c, ...`. The idea
|
|
|
is that we choose which natural number we want to use, and then we use it.
|
|
|
So try
|
|
|
|
|
|
`use 1,`
|
|
|
|
|
|
and now the goal becomes `⊢ 1 + x = x + 1`. You can solve this by
|
|
|
`exact add_comm 1 x`, or if you are lazy you can just use the `ring` tactic,
|
|
|
which is a powerful AI which will solve any equality in algebra which can
|
|
|
be proved using the standard rules of addition and multiplication. Now
|
|
|
look at your proof. We're going to remove a line.
|
|
|
|
|
|
## Important
|
|
|
|
|
|
An important time-saver here is to note that because `a ≤ b` is *defined*
|
|
|
as `∃ c : mynat, b = a + c`, you *do not need to write* `rw le_iff_exists_add`.
|
|
|
The `use` tactic will work directly on a goal of the form `a ≤ b`. Just
|
|
|
use the difference `b - a` (note that we have not defined subtraction so
|
|
|
this does not formally make sense, but you can do the calculation in your head).
|
|
|
If you have written `rw le_iff_exists_add` below, then just put two minus signs `--`
|
|
|
before it and comment it out. See that the proof still compiles.
|
|
|
"
|
|
|
|
|
|
axiom add_comm (a b : ℕ) : a + b = b + a
|
|
|
|
|
|
Statement --one_add_le_self
|
|
|
"If $x$ is a natural number, then $x\\le 1+x$.
|
|
|
"
|
|
|
(x : ℕ) : x ≤ 1 + x := by
|
|
|
rw [le_iff_exists_add]
|
|
|
use 1
|
|
|
rw [add_comm]
|
|
|
rfl
|
|
|
|
|
|
Conclusion
|
|
|
"
|
|
|
|
|
|
"
|