Documentation

Mathlib.Logic.Small.Basic

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} β.

theorem Small_iff (α : Type v) :
Small.{w, v} α S, Nonempty (α S)
class Small (α : Type v) :
  • equiv_small : S, Nonempty (α S)

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

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

Instances
    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} α] :
      α Shrink α

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

      Equations
      Instances For
        theorem Shrink.ext {α : Type v} [Small.{w, v} α] {x : Shrink α} {y : Shrink α} (w : (equivShrink α).symm x = (equivShrink α).symm y) :
        x = y
        noncomputable def Shrink.rec {α : Type u_1} [Small.{w, u_1} α] {F : Shrink αSort v} (h : (X : α) → F (↑(equivShrink α) X)) (X : Shrink α) :
        F X
        Equations
        Instances For
          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_congr {α : Type u_1} {β : Type u_2} (e : α β) :
          instance small_subtype (α : Type v) [Small.{w, v} α] (P : αProp) :
          Small.{w, v} { x // P x }
          Equations
          theorem small_of_injective {α : Type v} {β : Type w} [Small.{u, w} β] {f : αβ} (hf : Function.Injective f) :
          theorem small_of_surjective {α : Type v} {β : Type w} [Small.{u, v} α] {f : αβ} (hf : Function.Surjective f) :
          theorem small_subset {α : Type v} {s : Set α} {t : Set α} (hts : t s) [Small.{u, v} s] :
          theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u, v} α] (f : αγ) {g : βγ} (hg : Function.Injective g) (h : ∀ (b : β), a, f a = g b) :

          This can be seen as a version of small_of_surjective in which the function f doesn't actually land in β but in some larger type γ related to β via an injective function g.

          We don't define small_of_fintype or small_of_countable in this file, to keep imports to logic to a minimum.

          instance small_Pi {α : 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
          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
          instance small_range {α : Type v} {β : Type w} (f : αβ) [Small.{u, v} α] :
          Equations
          instance small_image {α : Type v} {β : Type w} (f : αβ) (S : Set α) [Small.{u, v} S] :
          Small.{u, w} ↑(f '' S)
          Equations