Documentation

Mathlib.Logic.Small.Defs

Small types #

A type is w-small if there exists an equivalence to some S : Type w.

We provide a noncomputable model Shrink α : Type w, and equivShrink α : α ≃ Shrink α.

A subsingleton type is w-small for any w.

If α ≃ β, then Small.{w} α ↔ Small.{w} β.

See Mathlib.Logic.Small.Basic for further instances and theorems.

class Small (α : Type v) :

A type is Small.{w} if there exists an equivalence to some S : Type w.

  • equiv_small : ∃ (S : Type w), Nonempty (α S)

    If a type is Small.{w}, then there exists an equivalence with some S : Type w

Instances
    theorem small_iff (α : Type v) :
    Small.{w, v} α ∃ (S : Type w), Nonempty (α S)
    theorem Small.equiv_small {α : Type v} [self : Small.{w, v} α] :
    ∃ (S : Type w), Nonempty (α S)

    If a type is Small.{w}, then there exists an equivalence with some S : Type w

    theorem Small.mk' {α : Type v} {S : Type w} (e : α S) :

    Constructor for Small α from an explicit witness type and equivalence.

    def Shrink (α : Type v) [Small.{w, v} α] :

    An arbitrarily chosen model in Type w for a w-small type.

    Equations
    Instances For
      noncomputable def equivShrink (α : Type v) [Small.{w, v} α] :

      The noncomputable equivalence between a w-small type and a model.

      Equations
      Instances For
        theorem Shrink.ext {α : Type v} [Small.{w, v} α] {x : Shrink.{w, v} α} {y : Shrink.{w, v} α} (w : (equivShrink α).symm x = (equivShrink α).symm y) :
        x = y
        noncomputable def Shrink.rec {α : Type u_1} [Small.{w, u_1} α] {F : Shrink.{w, u_1} αSort v} (h : (X : α) → F ((equivShrink α) X)) (X : Shrink.{w, u_1} α) :
        F X
        Equations
        Instances For
          @[instance 101]
          instance small_self (α : Type v) :
          Equations
          • =
          theorem small_map {α : Type u_1} {β : Type u_2} [hβ : Small.{w, u_2} β] (e : α β) :
          theorem small_lift (α : Type u) [hα : Small.{v, u} α] :
          theorem small_max (α : Type v) :

          Due to https://github.com/leanprover/lean4/issues/2297, this is useless as an instance.

          See however Logic.UnivLE, whose API is able to indirectly provide this instance.

          instance small_zero (α : Type) :
          Equations
          • =
          @[instance 100]
          instance small_succ (α : Type v) :
          Equations
          • =
          Equations
          • =
          theorem small_congr {α : Type u_1} {β : Type u_2} (e : α β) :
          instance small_sigma {α : Type u_2} (β : αType u_1) [Small.{w, u_2} α] [∀ (a : α), Small.{w, u_1} (β a)] :
          Small.{w, max u_1 u_2} ((a : α) × β a)
          Equations
          • =