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.
A type is Small.{w}
if there exists an equivalence to some S : Type w
.
If a type is
Small.{w}
, then there exists an equivalence with someS : Type w
Instances
- Cardinal.small_Icc
- Cardinal.small_Ico
- Cardinal.small_Iic
- Cardinal.small_Iio
- Cardinal.small_Ioc
- Cardinal.small_Ioo
- Countable.toSmall
- Ordinal.small_Icc
- Ordinal.small_Ico
- Ordinal.small_Iic
- Ordinal.small_Iio
- Ordinal.small_Ioc
- Ordinal.small_Ioo
- smallList
- smallVector
- small_Pi
- small_biInter'
- small_biUnion
- small_diff
- small_iInter'
- small_iUnion
- small_image
- small_image2
- small_insert
- small_inter_of_left
- small_inter_of_right
- small_powerset
- small_prod
- small_range
- small_sInter'
- small_sUnion
- small_self
- small_sep
- small_set
- small_setPi
- small_setProd
- small_sigma
- small_subsingleton
- small_subtype
- small_succ
- small_sum
- small_ulift
- small_union
- small_univ
- small_zero
- univLE_of_max
An arbitrarily chosen model in Type w
for a w
-small type.
Equations
Instances For
- Equiv.instAddCommGroupShrink
- Equiv.instAddCommMonoidShrink
- Equiv.instAddCommSemigroupShrink
- Equiv.instAddGroupShrink
- Equiv.instAddGroupWithOneShrink
- Equiv.instAddMonoidShrink
- Equiv.instAddMonoidWithOneShrink
- Equiv.instAddSemigroupShrink
- Equiv.instAddShrink
- Equiv.instAddZeroClassShrink
- Equiv.instAlgebraShrink
- Equiv.instCommGroupShrink
- Equiv.instCommMonoidShrink
- Equiv.instCommRingShrink
- Equiv.instCommSemigroupShrink
- Equiv.instCommSemiringShrink
- Equiv.instDistribMulActionShrink
- Equiv.instDivShrink
- Equiv.instDivisionRingShrink
- Equiv.instFieldShrink
- Equiv.instGroupShrink
- Equiv.instInvShrink
- Equiv.instIsDomainShrink
- Equiv.instModuleShrink
- Equiv.instMonoidShrink
- Equiv.instMulActionShrink
- Equiv.instMulOneClassShrink
- Equiv.instMulShrink
- Equiv.instMulZeroClassShrink
- Equiv.instMulZeroOneClassShrink
- Equiv.instNegShrink
- Equiv.instNonAssocRingShrink
- Equiv.instNonAssocSemiringShrink
- Equiv.instNonUnitalCommRingShrink
- Equiv.instNonUnitalCommSemiringShrink
- Equiv.instNonUnitalNonAssocRingShrink
- Equiv.instNonUnitalNonAssocSemiringShrink
- Equiv.instNonUnitalRingShrink
- Equiv.instNonUnitalSemiringShrink
- Equiv.instNontrivialShrink
- Equiv.instOneShrink
- Equiv.instPowShrink
- Equiv.instRingShrink
- Equiv.instSMulShrink
- Equiv.instSemigroupShrink
- Equiv.instSemigroupWithZeroShrink
- Equiv.instSemiringShrink
- Equiv.instSubShrink
- Equiv.instZeroShrink
- Shrink.instNNRatCast
- Shrink.instRatCast
The noncomputable equivalence between a w
-small type and a model.
Equations
- equivShrink α = ⋯.some
theorem
Shrink.ext
{α : Type v}
[Small.{w, v} α]
{x y : Shrink.{w, v} α}
(w : (equivShrink α).symm x = (equivShrink α).symm 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 = ⋯ ▸ h ((equivShrink α).symm X)
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_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)