compiling and tutorial world approx finished
This commit is contained in:
@@ -5,16 +5,19 @@ namespace MyNat
|
||||
open MyNat
|
||||
|
||||
def add : MyNat → MyNat → MyNat
|
||||
| a, 0 => a
|
||||
| a, zero => a
|
||||
| a, MyNat.succ b => MyNat.succ (MyNat.add a b)
|
||||
|
||||
instance : Add MyNat where
|
||||
instance instAdd : Add MyNat where
|
||||
add := MyNat.add
|
||||
|
||||
/--
|
||||
This theorem proves that if you add zero to a MyNat you get back the same number.
|
||||
`add_zero a` is a proof of `a + 0 = a`.
|
||||
|
||||
`add_zero` is a `simp` lemma, because if you see `a + 0`
|
||||
you usually want to simplify it to `a`.
|
||||
-/
|
||||
theorem add_zero (a : MyNat) : a + 0 = a := by rfl
|
||||
@[simp] theorem add_zero (a : MyNat) : a + 0 = a := by rfl
|
||||
|
||||
/--
|
||||
This theorem proves that (a + (d + 1)) = ((a + d) + 1) for a,d in MyNat.
|
||||
|
||||
@@ -7,6 +7,6 @@ example (a b : ℕ) (h : (succ a) = b) : succ (succ a) = succ b := by
|
||||
simp
|
||||
sorry
|
||||
|
||||
axiom succ_inj {a b : ℕ} : succ a = succ b → a = b
|
||||
--axiom succ_inj {a b : ℕ} : succ a = succ b → a = b
|
||||
|
||||
axiom zero_ne_succ (a : ℕ) : 0 ≠ succ a
|
||||
--axiom zero_ne_succ (a : ℕ) : 0 ≠ succ a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import Game.Levels.Tutorial.L02rw-- makes simps work?
|
||||
import Game.MyNat.Addition-- makes simps work?
|
||||
import Mathlib.Tactic
|
||||
namespace MyNat
|
||||
|
||||
@@ -51,7 +51,7 @@ We need to learn how to deal wiht a goal of the form `P → Q`
|
||||
|
||||
-/
|
||||
|
||||
theorem succ_inj (a b : ℕ) (h : succ a = succ b) : a = b := by
|
||||
theorem succ_inj {a b : ℕ} (h : succ a = succ b) : a = b := by
|
||||
apply_fun pred at h
|
||||
simpa
|
||||
|
||||
@@ -90,7 +90,7 @@ congrArg pred
|
||||
-/
|
||||
@[simp] theorem succ_eq_succ_iff : succ a = succ b ↔ a = b := by
|
||||
constructor
|
||||
· exact succ_inj a b
|
||||
· exact succ_inj
|
||||
· simp
|
||||
|
||||
/-
|
||||
|
||||
Reference in New Issue
Block a user