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} β.
An arbitrarily chosen model in Type w for a w-small type.
Equations
- Shrink α = Classical.choose (_ : ∃ S, Nonempty (α ≃ S))
Instances For
The noncomputable equivalence between a w-small type and a model.
Equations
- equivShrink α = Nonempty.some (_ : Nonempty (α ≃ Classical.choose (_ : ∃ S, Nonempty (α ≃ S))))
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
- Shrink.rec h X = (_ : ↑(equivShrink α) (↑(equivShrink α).symm X) = X) ▸ h (↑(equivShrink α).symm X)
Instances For
Equations
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]
 :
Small.{u, v}    ↑t
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_prod
{α : Type u_1}
{β : Type u_2}
[Small.{w, u_1}      α]
[Small.{w, u_2}      β]
 :
Small.{w, max u_2 u_1}              (α × β)
Equations
instance
small_sum
{α : Type u_1}
{β : Type u_2}
[Small.{w, u_1}      α]
[Small.{w, u_2}      β]
 :
Small.{w, max u_2 u_1}              (α ⊕ β)
Equations
Equations
instance
small_range
{α : Type v}
{β : Type w}
(f : α → β)
[Small.{u, v}    α]
 :
Small.{u, w}    ↑(Set.range f)
Equations
instance
small_image
{α : Type v}
{β : Type w}
(f : α → β)
(S : Set α)
[Small.{u, v}    ↑S]
 :
Small.{u, w}    ↑(f '' S)