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*
17 lines
460 B
Text
17 lines
460 B
Text
section
|
|
variables a b c : nat
|
|
variable H1 : a = b
|
|
variable H2 : a + b + a + b = 0
|
|
|
|
example : b + b + a + b = 0 :=
|
|
@eq.rec_on _ _ (λ x, x + b + a + b = 0) _ H1 H2
|
|
end
|
|
|
|
section
|
|
variables (f : Π {T : Type} {a : T} {P : T → Prop}, P a → Π {b : T} {Q : T → Prop}, Q b → Prop)
|
|
variables (T : Type) (a : T) (P : T → Prop) (pa : P a)
|
|
variables (b : T) (Q : T → Prop) (qb : Q b)
|
|
|
|
check @f T a P pa b Q qb -- Prop
|
|
check f pa qb -- Prop
|
|
end
|