Zulip Chat Archive

Stream: Is there code for X?

Topic: Smallness inequality


Nir Paz (Sep 17 2024 at 11:07):

Do we have something like this?

example {α} ( : Small.{u} α) (h : Small.{v + 1} (Type u)) : Small.{v} α := by
  sorry

apply apparantly ignores universes, so it suggests wrong things.
If we don't, any tips would be nice (:

Daniel Weber (Sep 17 2024 at 12:37):

There's a fair chance that this is independent of Lean's axioms

Daniel Weber (Sep 17 2024 at 12:41):

This is equivalent to

example (h : Small.{v + 1} (Type u)) : UnivLE.{u, v} := sorry

Daniel Weber (Sep 17 2024 at 12:42):

And I believe that's equivalent to

example : UnivLE.{u, v}  UnivLE.{v + 1, u} := sorry

although I haven't proved that

Mario Carneiro (Sep 17 2024 at 12:50):

Yes, this is definitely independent. There is no axiom saying that universes are linearly ordered

Daniel Weber (Sep 17 2024 at 12:58):

Mario Carneiro said:

Yes, this is definitely independent. There is no axiom saying that universes are linearly ordered

(deleted)

EDIT: nvm, this is just docs#univLE_total

Daniel Weber (Sep 17 2024 at 14:19):

The main thing you can't prove is u < v + 1 → u ≤ v, right?

Mario Carneiro (Sep 17 2024 at 17:07):

I see, univLE_total makes it clear that this is not really a statement about universes, but rather about the size of the sets those universes produce, which is of course a total order because we have the axiom of choice

Mario Carneiro (Sep 17 2024 at 17:11):

This is arguably not a faithful translation of the <= relation on universes (meaning that max u v = v), and in fact there isn't even a clear notion of < on universes, since lean, being non-cumulative, only has the relation u <: v defined as "Type u : Type v typechecks", which basically only holds when v = u+1 in the syntactical theory

Nir Paz (Sep 17 2024 at 18:44):

The problem is that v + 1 doesn't have to be the next universe after v. If the claim is wrong, then univ.{v} < univ.{u} < univ.{v + 1}:

open Cardinal

example {α} ( : Small.{u} α) (h : Small.{v + 1} (Type u)) (h' : ¬Small.{v} α) :
    univ.{v, u + 1} < univ.{u, v + 1}  univ.{u, v + 2} < univ.{v + 1, u + 1} := by
  constructor
  · by_contra! hu
    rw [ univLE_iff_cardinal_le] at hu
    rcases .equiv_small with β, ⟩⟩
    specialize hu β
    refine h' ?_
    rw [small_iff]
    rcases hu with γ, ⟩⟩
    exact γ, .trans ⟩⟩
  · by_contra! hu
    rw [ univLE_iff_cardinal_le] at hu
    rcases h.equiv_small with β, ⟩⟩
    rcases hu β with γ, ⟩⟩
    apply not_small_type.{u, u}
    rw [small_iff]
    exact γ, .trans ⟩⟩

Last updated: May 02 2025 at 03:31 UTC