In the standard library, we should use explicit universe variables for universe polymorphic definitions. Users that want to declare universe polymorphic definitions but do not want to provide universe level parameters should use Type _ or Type*
25 lines
1.7 KiB
Text
25 lines
1.7 KiB
Text
(1, 2) : ℕ × ℕ
|
||
and.intro trivial trivial : true ∧ true
|
||
sigma.mk 1 sorry : Σ (x : ℕ), x > 0
|
||
show true, from true.intro : true
|
||
Exists.intro 1 (λ (a : 1 = 0), nat.no_confusion a) : ∃ (x : ℕ), 1 ≠ 0
|
||
λ (A B C : Prop) (Ha : A) (Hb : B) (Hc : C), show B ∧ A, from and.intro Hb Ha :
|
||
∀ (A B C : Prop), A → B → C → B ∧ A
|
||
λ (A B C : Prop) (Ha : A) (Hb : B) (Hc : C),
|
||
show B ∧ A ∧ C ∧ A, from and.intro Hb (and.intro Ha (and.intro Hc Ha)) :
|
||
∀ (A B C : Prop), A → B → C → B ∧ A ∧ C ∧ A
|
||
λ (A B C : Prop) (Ha : A) (Hb : B) (Hc : C),
|
||
show B ∧ A ∧ C ∧ A, from and.intro Hb (and.intro Ha (and.intro Hc Ha)) :
|
||
∀ (A B C : Prop), A → B → C → B ∧ A ∧ C ∧ A
|
||
λ (A B C : Prop) (Ha : A) (Hb : B) (Hc : C),
|
||
show ((B ∧ true) ∧ A) ∧ C ∧ A, from and.intro (and.intro (and.intro Hb true.intro) Ha) (and.intro Hc Ha) :
|
||
∀ (A B C : Prop), A → B → C → ((B ∧ true) ∧ A) ∧ C ∧ A
|
||
λ (A : Type u) (P Q : A → Prop) (a : A) (H1 : P a) (H2 : Q a),
|
||
show ∃ (x : A), P x ∧ Q x, from Exists.intro a (and.intro H1 H2) :
|
||
∀ (A : Type u) (P Q : A → Prop) (a : A), P a → Q a → (∃ (x : A), P x ∧ Q x)
|
||
λ (A : Type u) (P Q : A → Prop) (a b : A) (H1 : P a) (H2 : Q b),
|
||
show ∃ (x y : A), P x ∧ Q y, from Exists.intro a (Exists.intro b (and.intro H1 H2)) :
|
||
∀ (A : Type u) (P Q : A → Prop) (a b : A), P a → Q b → (∃ (x y : A), P x ∧ Q y)
|
||
λ (A : Type u) (P Q : A → Prop) (a b : A) (H1 : P a) (H2 : Q b),
|
||
show ∃ (x y : A), P x ∧ Q y, from Exists.intro a (Exists.intro b (and.intro H1 H2)) :
|
||
∀ (A : Type u) (P Q : A → Prop) (a b : A), P a → Q b → (∃ (x y : A), P x ∧ Q y)
|