Zulip Chat Archive
Stream: maths
Topic: equiv and universes
Kevin Buzzard (Apr 29 2018 at 00:56):
I am interested in beefing up equiv but I am only now coming to terms with how universes work and do not yet really understand how they affect the picture if at all
Kevin Buzzard (Apr 29 2018 at 00:57):
import data.equiv universes u v y z def αu (X Y : Type u) := X → Y def αuv (X : Type u) (Y : Type v) := X → Y def αv (X Y : Type v) := X → Y definition u_v {X : Type z} {Y : Type z} : equiv (αu X Y) (αv X Y) := { to_fun := λ f,f, inv_fun := λ f,f, left_inv := λ x,rfl, right_inv := λ x,rfl, } definition u_uv {X : Type z} {Y : Type z} : equiv (αu X Y) (αuv X Y) := { to_fun := λ f,f, inv_fun := λ f,f, left_inv := λ x,rfl, right_inv := λ x,rfl, } definition u_uv {X : Type u} {Y : Type v} : equiv (αu X Y) (\auv X Y) := sorry
Kevin Buzzard (Apr 29 2018 at 00:57):
the last one isn't a puzzle
Kevin Buzzard (Apr 29 2018 at 00:57):
it unfortunately doesn't typecheck because of universe issues
Kevin Buzzard (Apr 29 2018 at 00:58):
Is there any way of somehow forcing it to typecheck with universe coercion or something? And then would equiv still fail?
Reid Barton (Apr 29 2018 at 01:49):
I guess the zeroth thing to know about universes is that universe u
doesn't mean "Fix a universe $U$"; it just makes u
a legal thing to put somewhere that a universe is expected.
In other words, the u
and v
s in \au
, \auv
, \av
are unrelated, and definitions \au
and \av
are exactly the same.
Reid Barton (Apr 29 2018 at 01:55):
You can think of Lean universes as corresponding to Grothendieck universes except that Lean universes are not cumulative, so that a type belongs to Type u
for just one u
.
Reid Barton (Apr 29 2018 at 02:05):
To "move" a type from one universe to a bigger one, use ulift
. The new type is equiv
to the old one (equiv.ulift
).
Last updated: Dec 20 2023 at 11:08 UTC