Reflective subuniverses
Content created by Fredrik Bakke, Egbert Rijke and Jonathan Prieto-Cubides.
Created on 2023-03-09.
Last modified on 2024-11-19.
module orthogonal-factorization-systems.reflective-subuniverses where
Imports
open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.function-extensionality open import foundation.function-types open import foundation.identity-types open import foundation.propositions open import foundation.retractions open import foundation.subuniverses open import foundation.universe-levels open import orthogonal-factorization-systems.localizations-at-subuniverses open import orthogonal-factorization-systems.modal-induction open import orthogonal-factorization-systems.modal-operators open import orthogonal-factorization-systems.modal-subuniverse-induction open import orthogonal-factorization-systems.types-local-at-maps
Idea
A
reflective subuniverse¶,
or
localization¶,
is a subuniverse 𝒫
together with a reflecting
operator on the universe L : 𝒰 → 𝒰
that takes
values in 𝒫
, and a family of unit maps η : A → LA
for all types A
in 𝒰
,
with the property that the types in 𝒫
are
local at the unit for
every A
. Hence the local types with respect to L
are precisely the types in
the reflective subuniverse.
Definitions
The predicate on subuniverses of being reflective
is-reflective-subuniverse : {l1 l2 : Level} (𝒫 : subuniverse l1 l2) → UU (lsuc l1 ⊔ l2) is-reflective-subuniverse {l1} 𝒫 = Σ ( operator-modality l1 l1) ( λ L → Σ ( unit-modality L) ( λ η → ( (X : UU l1) → is-in-subuniverse 𝒫 (L X)) × ( (X Y : UU l1) → is-in-subuniverse 𝒫 X → is-local (η {Y}) X)))
module _ {l1 l2 : Level} (𝒫 : subuniverse l1 l2) (is-reflective-𝒫 : is-reflective-subuniverse 𝒫) where operator-is-reflective-subuniverse : operator-modality l1 l1 operator-is-reflective-subuniverse = pr1 is-reflective-𝒫 unit-is-reflective-subuniverse : unit-modality (operator-is-reflective-subuniverse) unit-is-reflective-subuniverse = pr1 (pr2 is-reflective-𝒫) is-in-subuniverse-operator-type-is-reflective-subuniverse : (X : UU l1) → is-in-subuniverse 𝒫 (operator-is-reflective-subuniverse X) is-in-subuniverse-operator-type-is-reflective-subuniverse = pr1 (pr2 (pr2 is-reflective-𝒫)) is-local-is-in-subuniverse-is-reflective-subuniverse : (X Y : UU l1) → is-in-subuniverse 𝒫 X → is-local (unit-is-reflective-subuniverse {Y}) X is-local-is-in-subuniverse-is-reflective-subuniverse = pr2 (pr2 (pr2 is-reflective-𝒫))
The type of reflective subuniverses
reflective-subuniverse : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) reflective-subuniverse l1 l2 = Σ (subuniverse l1 l2) (is-reflective-subuniverse)
module _ {l1 l2 : Level} (𝒫 : reflective-subuniverse l1 l2) where subuniverse-reflective-subuniverse : subuniverse l1 l2 subuniverse-reflective-subuniverse = pr1 𝒫 is-in-reflective-subuniverse : UU l1 → UU l2 is-in-reflective-subuniverse = is-in-subuniverse subuniverse-reflective-subuniverse inclusion-reflective-subuniverse : type-subuniverse (subuniverse-reflective-subuniverse) → UU l1 inclusion-reflective-subuniverse = inclusion-subuniverse subuniverse-reflective-subuniverse is-reflective-subuniverse-reflective-subuniverse : is-reflective-subuniverse (subuniverse-reflective-subuniverse) is-reflective-subuniverse-reflective-subuniverse = pr2 𝒫 operator-reflective-subuniverse : operator-modality l1 l1 operator-reflective-subuniverse = operator-is-reflective-subuniverse ( subuniverse-reflective-subuniverse) ( is-reflective-subuniverse-reflective-subuniverse) unit-reflective-subuniverse : unit-modality (operator-reflective-subuniverse) unit-reflective-subuniverse = unit-is-reflective-subuniverse ( subuniverse-reflective-subuniverse) ( is-reflective-subuniverse-reflective-subuniverse) is-in-subuniverse-operator-type-reflective-subuniverse : ( X : UU l1) → is-in-subuniverse ( subuniverse-reflective-subuniverse) ( operator-reflective-subuniverse X) is-in-subuniverse-operator-type-reflective-subuniverse = is-in-subuniverse-operator-type-is-reflective-subuniverse ( subuniverse-reflective-subuniverse) ( is-reflective-subuniverse-reflective-subuniverse) is-local-is-in-subuniverse-reflective-subuniverse : ( X Y : UU l1) → is-in-subuniverse subuniverse-reflective-subuniverse X → is-local (unit-reflective-subuniverse {Y}) X is-local-is-in-subuniverse-reflective-subuniverse = is-local-is-in-subuniverse-is-reflective-subuniverse ( subuniverse-reflective-subuniverse) ( is-reflective-subuniverse-reflective-subuniverse)
Properties
Reflective subuniverses are subuniverses that have all localizations
module _ {l1 l2 : Level} (𝒫 : subuniverse l1 l2) (is-reflective-𝒫 : is-reflective-subuniverse 𝒫) where has-all-localizations-is-reflective-subuniverse : (A : UU l1) → subuniverse-localization 𝒫 A pr1 (has-all-localizations-is-reflective-subuniverse A) = operator-is-reflective-subuniverse 𝒫 is-reflective-𝒫 A pr1 (pr2 (has-all-localizations-is-reflective-subuniverse A)) = is-in-subuniverse-operator-type-is-reflective-subuniverse 𝒫 is-reflective-𝒫 A pr1 (pr2 (pr2 (has-all-localizations-is-reflective-subuniverse A))) = unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫 pr2 (pr2 (pr2 (has-all-localizations-is-reflective-subuniverse A))) X is-in-subuniverse-X = is-local-is-in-subuniverse-is-reflective-subuniverse 𝒫 is-reflective-𝒫 X A is-in-subuniverse-X module _ {l1 l2 : Level} (𝒫 : subuniverse l1 l2) (L : (A : UU l1) → subuniverse-localization 𝒫 A) where is-reflective-has-all-localizations-subuniverse : is-reflective-subuniverse 𝒫 pr1 is-reflective-has-all-localizations-subuniverse A = type-subuniverse-localization 𝒫 (L A) pr1 (pr2 is-reflective-has-all-localizations-subuniverse) {A} = unit-subuniverse-localization 𝒫 (L A) pr1 (pr2 (pr2 is-reflective-has-all-localizations-subuniverse)) A = is-in-subuniverse-subuniverse-localization 𝒫 (L A) pr2 (pr2 (pr2 is-reflective-has-all-localizations-subuniverse)) A B is-in-subuniverse-A = is-local-at-unit-is-in-subuniverse-subuniverse-localization 𝒫 (L B) A is-in-subuniverse-A
Recursion for reflective subuniverses
module _ {l1 l2 : Level} (𝒫 : subuniverse l1 l2) (is-reflective-𝒫 : is-reflective-subuniverse 𝒫) where rec-modality-is-reflective-subuniverse : rec-modality (unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) rec-modality-is-reflective-subuniverse {X} {Y} = map-inv-is-equiv ( is-local-is-in-subuniverse-is-reflective-subuniverse ( 𝒫) ( is-reflective-𝒫) ( operator-is-reflective-subuniverse 𝒫 is-reflective-𝒫 Y) ( X) ( is-in-subuniverse-operator-type-is-reflective-subuniverse ( 𝒫) ( is-reflective-𝒫) ( Y))) map-is-reflective-subuniverse : {X Y : UU l1} → (X → Y) → operator-is-reflective-subuniverse 𝒫 is-reflective-𝒫 X → operator-is-reflective-subuniverse 𝒫 is-reflective-𝒫 Y map-is-reflective-subuniverse = ap-map-rec-modality ( unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) ( rec-modality-is-reflective-subuniverse) strong-rec-subuniverse-is-reflective-subuniverse : strong-rec-subuniverse-modality ( unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) strong-rec-subuniverse-is-reflective-subuniverse = strong-rec-subuniverse-rec-modality ( unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) ( rec-modality-is-reflective-subuniverse) rec-subuniverse-is-reflective-subuniverse : rec-subuniverse-modality (unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) rec-subuniverse-is-reflective-subuniverse = rec-subuniverse-rec-modality ( unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫) ( rec-modality-is-reflective-subuniverse)
See also
References
- [Rij19]
- Egbert Rijke. Classifying Types. PhD thesis, Carnegie Mellon University, 06 2019. arXiv:1906.09435.
- [RSS20]
- Egbert Rijke, Michael Shulman, and Bas Spitters. Modalities in homotopy type theory. Logical Methods in Computer Science, 01 2020. URL: https://lmcs.episciences.org/6015, arXiv:1706.07526, doi:10.23638/LMCS-16(1:2)2020.
- [UF13]
- The Univalent Foundations Program. Homotopy Type Theory: Univalent Foundations of Mathematics. Institute for Advanced Study, 2013. URL: https://homotopytypetheory.org/book/, arXiv:1308.0729.
Recent changes
- 2024-11-19. Fredrik Bakke. Renamings and rewordings OFS (#1188).
- 2024-11-05. Fredrik Bakke and Egbert Rijke. Continuation modalities and Lawvere–Tierney topologies (#1157).
- 2024-03-20. Fredrik Bakke. Janitorial work on equivalences and embeddings (#1085).
- 2024-03-12. Fredrik Bakke. Bibliographies (#1058).
- 2023-11-24. Fredrik Bakke. Modal type theory (#701).