lean4-htt/tests/lean/run/basic.lean
2017-03-09 18:41:19 -08:00

79 lines
1.8 KiB
Text

prelude
constant {l1 l2} A : Type l1 → Type l2
#check A
definition {l} tst (A : Type*) (B : Type*) (C : Type l) : Type* := A → B → C
#check tst
constant {l} group : Type (l+1)
constant {l} carrier : group.{l} → Type l
noncomputable definition to_carrier (g : group) := carrier g
#check to_carrier.{1}
section
variable A : Type*
#check A
definition B := A → A
end
constant N : Type 1
#check B N
constant f : B N
#check f
constant a : N
#check f a
section
variable T1 : Type*
variable T2 : Type*
variable f : T1 → T2 → T2
definition double (a : T1) (b : T2) := f a (f a b)
end
#check double
#check double.{1 2}
definition Prop := Type 0
constant Eq : Π {A : Type*}, A → A → Prop
infix `=`:50 := Eq
#check Eq.{1}
section
universe variable l
universe variable u
variable {T1 : Type l}
variable {T2 : Type l}
variable {T3 : Type u}
variable f : T1 → T2 → T2
noncomputable definition is_proj2 := ∀ x y, f x y = y
noncomputable definition is_proj3 (f : T1 → T2 → T3 → T3) := ∀ x y z, f x y z = z
end
#check @is_proj2.{1}
#check @is_proj3.{1 2}
namespace foo
section
universe variables u v
variables {T1 T2 : Type u}
variable {T3 : Type v}
variable f : T1 → T2 → T2
noncomputable definition is_proj2 := ∀ x y, f x y = y
noncomputable definition is_proj3 (f : T1 → T2 → T3 → T3) := ∀ x y z, f x y z = z
end
#check @foo.is_proj2.{1}
#check @foo.is_proj3.{1 2}
end foo
namespace bla
section
variable {T1 : Type*}
variable {T2 : Type*}
variable {T3 : Type*}
variable f : T1 → T2 → T2
noncomputable definition is_proj2 := ∀ x y, f x y = y
noncomputable definition is_proj3 (f : T1 → T2 → T3 → T3) := ∀ x y z, f x y z = z
end
#check @bla.is_proj2.{1 2}
#check @bla.is_proj3.{1 2 3}
end bla