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.
An arbitrarily chosen model in Type w
for a w
-small type.
Equations
- Shrink.{w, v} α = Classical.choose (_ : ∃ (S : Type w), Nonempty (α ≃ S))
Instances For
The noncomputable equivalence between a w
-small type and a model.
Equations
- equivShrink α = Nonempty.some (_ : Nonempty (α ≃ Classical.choose (_ : ∃ (S : Type w), Nonempty (α ≃ S))))
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
- Shrink.rec h X = (_ : (equivShrink α) ((equivShrink α).symm X) = X) ▸ h ((equivShrink α).symm X)
Instances For
Equations
- (_ : Small.{v, v} α) = (_ : Small.{v, v} α)
Equations
- (_ : Small.{w, 0} α) = (_ : Small.{w, 0} α)
Equations
- (_ : Small.{v + 1, v} α) = (_ : Small.{v + 1, v} α)
Equations
- (_ : Small.{v, max w u} (ULift.{w, u} α)) = (_ : Small.{v, max u w} (ULift.{w, u} α))
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
- (_ : Small.{w, max u_1 u_2} ((a : α) × β a)) = (_ : Small.{w, max u_1 u_2} ((a : α) × β a))