fix(tests): to reflect recent changes in the standard library
This commit is contained in:
parent
0828ca775c
commit
7e0844a9e6
15 changed files with 28 additions and 13 deletions
|
@ -753,6 +753,7 @@ of two even numbers is an even number.
|
||||||
import data.nat
|
import data.nat
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
|
namespace hide
|
||||||
definition even (a : nat) := ∃ b, a = 2*b
|
definition even (a : nat) := ∃ b, a = 2*b
|
||||||
theorem EvenPlusEven {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
theorem EvenPlusEven {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
||||||
exists.elim H1 (fun (w1 : nat) (Hw1 : a = 2*w1),
|
exists.elim H1 (fun (w1 : nat) (Hw1 : a = 2*w1),
|
||||||
|
@ -761,7 +762,7 @@ of two even numbers is an even number.
|
||||||
(calc a + b = 2*w1 + b : {Hw1}
|
(calc a + b = 2*w1 + b : {Hw1}
|
||||||
... = 2*w1 + 2*w2 : {Hw2}
|
... = 2*w1 + 2*w2 : {Hw2}
|
||||||
... = 2*(w1 + w2) : eq.symm !mul.left_distrib)))
|
... = 2*(w1 + w2) : eq.symm !mul.left_distrib)))
|
||||||
|
end hide
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
The example above also uses [[./calc.org][calculational proofs]] to show that =a + b = 2*(w1 + w2)=.
|
The example above also uses [[./calc.org][calculational proofs]] to show that =a + b = 2*(w1 + w2)=.
|
||||||
|
@ -773,6 +774,8 @@ With this macro we can write the example above in a more natural way
|
||||||
#+BEGIN_SRC lean
|
#+BEGIN_SRC lean
|
||||||
import data.nat
|
import data.nat
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
|
namespace hide
|
||||||
definition even (a : nat) := ∃ b, a = 2*b
|
definition even (a : nat) := ∃ b, a = 2*b
|
||||||
theorem EvenPlusEven {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
theorem EvenPlusEven {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
||||||
obtain (w1 : nat) (Hw1 : a = 2*w1), from H1,
|
obtain (w1 : nat) (Hw1 : a = 2*w1), from H1,
|
||||||
|
@ -781,4 +784,5 @@ With this macro we can write the example above in a more natural way
|
||||||
(calc a + b = 2*w1 + b : {Hw1}
|
(calc a + b = 2*w1 + b : {Hw1}
|
||||||
... = 2*w1 + 2*w2 : {Hw2}
|
... = 2*w1 + 2*w2 : {Hw2}
|
||||||
... = 2*(w1 + w2) : eq.symm !mul.left_distrib)
|
... = 2*(w1 + w2) : eq.symm !mul.left_distrib)
|
||||||
|
end hide
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import algebra.function
|
--
|
||||||
|
|
||||||
open function
|
open function
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
bool.bor_tt|∀ (a : bool), eq (bool.bor a bool.tt) bool.tt
|
bool.bor_tt|∀ (a : bool), eq (bool.bor a bool.tt) bool.tt
|
||||||
bool.band_tt|∀ (a : bool), eq (bool.band a bool.tt) a
|
bool.band_tt|∀ (a : bool), eq (bool.band a bool.tt) a
|
||||||
bool.tt|bool
|
bool.tt|bool
|
||||||
|
bool.eq_tt_of_bnot_eq_ff|eq (bool.bnot ?a) bool.ff → eq ?a bool.tt
|
||||||
|
bool.eq_ff_of_bnot_eq_tt|eq (bool.bnot ?a) bool.tt → eq ?a bool.ff
|
||||||
tactic.lettac|tactic.identifier → tactic.expr → tactic
|
tactic.lettac|tactic.identifier → tactic.expr → tactic
|
||||||
bool.absurd_of_eq_ff_of_eq_tt|eq ?a bool.ff → eq ?a bool.tt → ?B
|
bool.absurd_of_eq_ff_of_eq_tt|eq ?a bool.ff → eq ?a bool.tt → ?B
|
||||||
bool.eq_tt_of_ne_ff|ne ?a bool.ff → eq ?a bool.tt
|
bool.eq_tt_of_ne_ff|ne ?a bool.ff → eq ?a bool.tt
|
||||||
|
@ -23,6 +25,8 @@ tt_bor|∀ (a : bool), eq (bor tt a) tt
|
||||||
tt_band|∀ (a : bool), eq (band tt a) a
|
tt_band|∀ (a : bool), eq (band tt a) a
|
||||||
bor_tt|∀ (a : bool), eq (bor a tt) tt
|
bor_tt|∀ (a : bool), eq (bor a tt) tt
|
||||||
band_tt|∀ (a : bool), eq (band a tt) a
|
band_tt|∀ (a : bool), eq (band a tt) a
|
||||||
|
eq_tt_of_bnot_eq_ff|eq (bnot ?a) ff → eq ?a tt
|
||||||
|
eq_ff_of_bnot_eq_tt|eq (bnot ?a) tt → eq ?a ff
|
||||||
tactic.lettac|tactic.identifier → tactic.expr → tactic
|
tactic.lettac|tactic.identifier → tactic.expr → tactic
|
||||||
absurd_of_eq_ff_of_eq_tt|eq ?a ff → eq ?a tt → ?B
|
absurd_of_eq_ff_of_eq_tt|eq ?a ff → eq ?a tt → ?B
|
||||||
eq_tt_of_ne_ff|ne ?a ff → eq ?a tt
|
eq_tt_of_ne_ff|ne ?a ff → eq ?a tt
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
--- Released under Apache 2.0 license as described in the file LICENSE.
|
--- Released under Apache 2.0 license as described in the file LICENSE.
|
||||||
--- Author: Jeremy Avigad
|
--- Author: Jeremy Avigad
|
||||||
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
||||||
import algebra.function
|
|
||||||
open function
|
open function
|
||||||
|
|
||||||
namespace congr
|
namespace congr
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
--- Author: Jeremy Avigad
|
--- Author: Jeremy Avigad
|
||||||
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
import logic algebra.function
|
import logic
|
||||||
open eq
|
open eq
|
||||||
open function
|
open function
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import logic algebra.function
|
import logic
|
||||||
open function bool
|
open function bool
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
import logic.eq
|
import logic.eq
|
||||||
import data.unit data.sigma data.prod
|
import data.unit data.sigma data.prod
|
||||||
import algebra.function algebra.binary
|
import algebra.binary
|
||||||
|
|
||||||
open eq
|
open eq
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
import logic.eq
|
import logic.eq
|
||||||
import data.unit data.sigma data.prod
|
import data.unit data.sigma data.prod
|
||||||
import algebra.function algebra.binary
|
import algebra.binary
|
||||||
|
|
||||||
open eq
|
open eq
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
import logic.eq
|
import logic.eq
|
||||||
import data.unit data.sigma data.prod
|
import data.unit data.sigma data.prod
|
||||||
import algebra.function algebra.binary
|
import algebra.binary
|
||||||
|
|
||||||
open eq
|
open eq
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.fintype algebra.function
|
import data.fintype
|
||||||
open function
|
open function
|
||||||
|
|
||||||
section test
|
section test
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import algebra.function
|
|
||||||
open bool nat
|
open bool nat
|
||||||
open function
|
open function
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ obtain x y [[pxy qxy] qyx], from ex,
|
||||||
|
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
|
namespace hidden
|
||||||
definition even (a : nat) := ∃ x, a = 2*x
|
definition even (a : nat) := ∃ x, a = 2*x
|
||||||
|
|
||||||
example (a b : nat) (H₁ : even a) (H₂ : even b) : even (a+b) :=
|
example (a b : nat) (H₁ : even a) (H₂ : even b) : even (a+b) :=
|
||||||
|
@ -72,3 +73,4 @@ have aux : m * (c₁ - c₂) = n₂, from calc
|
||||||
... = n₁ + n₂ - n₁ : Hc₂
|
... = n₁ + n₂ - n₁ : Hc₂
|
||||||
... = n₂ : add_sub_cancel_left,
|
... = n₂ : add_sub_cancel_left,
|
||||||
dvd.intro aux
|
dvd.intro aux
|
||||||
|
end hidden
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import data.nat
|
import data.nat
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
|
namespace foo
|
||||||
|
|
||||||
inductive Parity : nat → Type :=
|
inductive Parity : nat → Type :=
|
||||||
| even : ∀ n : nat, Parity (2 * n)
|
| even : ∀ n : nat, Parity (2 * n)
|
||||||
| odd : ∀ n : nat, Parity (2 * n + 1)
|
| odd : ∀ n : nat, Parity (2 * n + 1)
|
||||||
|
@ -14,12 +16,12 @@ definition parity : Π (n : nat), Parity n
|
||||||
have aux : Parity n, from parity n,
|
have aux : Parity n, from parity n,
|
||||||
cases aux with [k, k],
|
cases aux with [k, k],
|
||||||
begin
|
begin
|
||||||
apply (odd k)
|
apply (Parity.odd k)
|
||||||
end,
|
end,
|
||||||
begin
|
begin
|
||||||
change (Parity (2*k + 2*1)),
|
change (Parity (2*k + 2*1)),
|
||||||
rewrite -mul.left_distrib,
|
rewrite -mul.left_distrib,
|
||||||
apply (even (k+1))
|
apply (Parity.even (k+1))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -30,3 +32,5 @@ match ⟨n, parity n⟩ with
|
||||||
| ⟨⌞2 * k⌟, even k⟩ := k
|
| ⟨⌞2 * k⌟, even k⟩ := k
|
||||||
| ⟨⌞2 * k + 1⌟, odd k⟩ := k
|
| ⟨⌞2 * k + 1⌟, odd k⟩ := k
|
||||||
end
|
end
|
||||||
|
|
||||||
|
end foo
|
||||||
|
|
|
@ -11,6 +11,7 @@ end
|
||||||
example (x y : ℕ) : (x + y) * (x + y) = x * x + y * x + x * y + y * y :=
|
example (x y : ℕ) : (x + y) * (x + y) = x * x + y * x + x * y + y * y :=
|
||||||
by rewrite [*mul.left_distrib, *mul.right_distrib, -add.assoc]
|
by rewrite [*mul.left_distrib, *mul.right_distrib, -add.assoc]
|
||||||
|
|
||||||
|
namespace tst
|
||||||
definition even (a : nat) := ∃b, a = 2*b
|
definition even (a : nat) := ∃b, a = 2*b
|
||||||
|
|
||||||
theorem even_plus_even {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
theorem even_plus_even {a b : nat} (H1 : even a) (H2 : even b) : even (a + b) :=
|
||||||
|
@ -25,3 +26,5 @@ theorem T2 (a b c : nat) (H1 : a = b) (H2 : b = c + 1) : a ≠ 0 :=
|
||||||
calc
|
calc
|
||||||
a = succ c : by rewrite [H1, H2, add_one]
|
a = succ c : by rewrite [H1, H2, add_one]
|
||||||
... ≠ 0 : succ_ne_zero c
|
... ≠ 0 : succ_ne_zero c
|
||||||
|
|
||||||
|
end tst
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import algebra.function
|
--
|
||||||
|
|
||||||
open function
|
open function
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue