diff --git a/src/foundation-core/contractible-types.lagda.md b/src/foundation-core/contractible-types.lagda.md index 8b303ff4dd..d86bdea803 100644 --- a/src/foundation-core/contractible-types.lagda.md +++ b/src/foundation-core/contractible-types.lagda.md @@ -92,8 +92,8 @@ module _ is-contr-retract-of B (f , retraction-is-equiv is-equiv-f) abstract - is-contr-equiv : (e : A ≃ B) → is-contr B → is-contr A - is-contr-equiv (pair e is-equiv-e) is-contr-B = + is-contr-equiv : A ≃ B → is-contr B → is-contr A + is-contr-equiv (e , is-equiv-e) is-contr-B = is-contr-is-equiv e is-equiv-e is-contr-B module _ @@ -133,24 +133,6 @@ module _ is-equiv-is-contr _ is-contr-A is-contr-B ``` -### Contractibility of the base of a contractible dependent sum - -Given a type `A` and a type family over it `B`, then if the dependent sum -`Σ A B` is contractible, it follows that if there is a section `(x : A) → B x` -then `A` is contractible. - -```agda -module _ - {l1 l2 : Level} (A : UU l1) (B : A → UU l2) - where - - abstract - is-contr-base-is-contr-Σ' : - ((x : A) → B x) → is-contr (Σ A B) → is-contr A - is-contr-base-is-contr-Σ' s = - is-contr-retract-of (Σ A B) ((λ a → a , s a) , pr1 , refl-htpy) -``` - ### Contractibility of cartesian product types Given two types `A` and `B`, the following are equivalent: @@ -248,6 +230,24 @@ normalize the extracted information (in this case the first projection of the proof of contractibility), but it will normalize the entire proof of contractibility first, and then apply the projection. +### Contractibility of the base of a contractible dependent sum + +Given a type `A` and a type family over it `B`, then if the dependent sum +`Σ A B` is contractible and there is a section `(x : A) → B x`, then `A` is +contractible. + +```agda +module _ + {l1 l2 : Level} (A : UU l1) (B : A → UU l2) + where + + abstract + is-contr-base-is-contr-Σ' : + ((x : A) → B x) → is-contr (Σ A B) → is-contr A + is-contr-base-is-contr-Σ' s = + is-contr-retract-of (Σ A B) ((λ a → a , s a) , pr1 , refl-htpy) +``` + ### Contractible types are propositions ```agda diff --git a/src/foundation-core/fibers-of-maps.lagda.md b/src/foundation-core/fibers-of-maps.lagda.md index 066a033e3c..1c09641373 100644 --- a/src/foundation-core/fibers-of-maps.lagda.md +++ b/src/foundation-core/fibers-of-maps.lagda.md @@ -229,9 +229,7 @@ module _ map-fiber-pr1 ((x , y) , p) = tr B p y map-inv-fiber-pr1 : B a → fiber (pr1 {B = B}) a - pr1 (pr1 (map-inv-fiber-pr1 b)) = a - pr2 (pr1 (map-inv-fiber-pr1 b)) = b - pr2 (map-inv-fiber-pr1 b) = refl + map-inv-fiber-pr1 b = (a , b) , refl is-section-map-inv-fiber-pr1 : is-section map-fiber-pr1 map-inv-fiber-pr1 diff --git a/src/foundation-core/function-types.lagda.md b/src/foundation-core/function-types.lagda.md index 0fad64ab6a..e9ac42fc1f 100644 --- a/src/foundation-core/function-types.lagda.md +++ b/src/foundation-core/function-types.lagda.md @@ -24,6 +24,9 @@ Functions are primitive in Agda. Here we construct some basic functions id : {l : Level} {A : UU l} → A → A id a = a +id' : {l : Level} (A : UU l) → A → A +id' A = id + idω : {A : UUω} → A → A idω a = a ``` diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 78a7642b23..46bcc44c71 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -177,6 +177,8 @@ open import foundation.exclusive-sum public open import foundation.existential-quantification public open import foundation.exponents-set-quotients public open import foundation.extensions-types public +open import foundation.extensions-types-global-subuniverses public +open import foundation.extensions-types-subuniverses public open import foundation.faithful-maps public open import foundation.families-of-equivalences public open import foundation.families-of-maps public diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 715937f221..347bb16120 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -720,7 +720,7 @@ module _ ap-binary ( λ L q → eq-htpy L ∙ q) ( eq-htpy (preserves-comp-left-whisker-comp h bottom-right H)) - ( inv (compute-eq-htpy-ap-precomp top-left (h ·l K))) + ( inv (coherence-eq-htpy-ap-precomp top-left (h ·l K))) distributive-precomp-pasting-vertical-coherence-square-maps : ( top : A → X) (left-top : A → B) (right-top : X → Y) (middle : B → Y) → @@ -805,7 +805,7 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( inv (compute-eq-htpy-ap-precomp left-top (h ·l K))) + ( inv (coherence-eq-htpy-ap-precomp left-top (h ·l K))) ( eq-htpy (preserves-comp-left-whisker-comp h right-bottom H)) ``` @@ -856,7 +856,7 @@ module _ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) distributive-precomp-right-whisker-comp-coherence-square-maps f g = - inv (compute-eq-htpy-ap-precomp f (g ·l H)) + inv (coherence-eq-htpy-ap-precomp f (g ·l H)) ``` Similarly, we can calculate transpositions of left-whiskered squares with the diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index e98e9e0260..d78d99cfee 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -78,7 +78,7 @@ module _ (h : C → A) (H : f ~ g) (S : UU l4) → precomp h S ·l htpy-precomp H S ~ htpy-precomp (H ·r h) S inv-distributive-htpy-precomp-right-whisker h H S i = - compute-eq-htpy-ap-precomp h (i ·l H) + coherence-eq-htpy-ap-precomp h (i ·l H) distributive-htpy-precomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → diff --git a/src/foundation/continuations.lagda.md b/src/foundation/continuations.lagda.md index 853df7969c..3c7d65926e 100644 --- a/src/foundation/continuations.lagda.md +++ b/src/foundation/continuations.lagda.md @@ -34,7 +34,7 @@ open import foundation-core.retractions open import foundation-core.sections open import foundation-core.transport-along-identifications -open import orthogonal-factorization-systems.extensions-of-maps +open import orthogonal-factorization-systems.extensions-maps open import orthogonal-factorization-systems.modal-operators open import orthogonal-factorization-systems.types-local-at-maps open import orthogonal-factorization-systems.uniquely-eliminating-modalities @@ -82,8 +82,8 @@ unit-continuation = ev ### Maps into `continuation R A` extend along the unit Every `f` as in the following diagram -[extends](orthogonal-factorization-systems.extensions-of-maps.md) along the unit -of its domain +[extends](orthogonal-factorization-systems.extensions-maps.md) along the unit of +its domain ```text f diff --git a/src/foundation/equality-fibers-of-maps.lagda.md b/src/foundation/equality-fibers-of-maps.lagda.md index e9f8f003d7..e5fa8e6684 100644 --- a/src/foundation/equality-fibers-of-maps.lagda.md +++ b/src/foundation/equality-fibers-of-maps.lagda.md @@ -121,7 +121,7 @@ module _ abstract is-equiv-eq-fiber-fiber-ap : - (q : (f x) = f y) → is-equiv (eq-fiber-fiber-ap q) + (q : f x = f y) → is-equiv (eq-fiber-fiber-ap q) is-equiv-eq-fiber-fiber-ap q = is-equiv-comp ( tr (fiber (ap f)) right-unit) diff --git a/src/foundation/extensions-types-global-subuniverses.lagda.md b/src/foundation/extensions-types-global-subuniverses.lagda.md new file mode 100644 index 0000000000..a75184e2aa --- /dev/null +++ b/src/foundation/extensions-types-global-subuniverses.lagda.md @@ -0,0 +1,231 @@ +# Extensions of types in a global subuniverse + +```agda +module foundation.extensions-types-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.commuting-triangles-of-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.equivalences +open import foundation.extensions-types +open import foundation.fibers-of-maps +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.global-subuniverses +open import foundation.homotopies +open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.propositional-maps +open import foundation.propositions +open import foundation.torsorial-type-families +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.univalence +open import foundation.universe-levels +``` + +
+ +## Idea + +Consider a type `X`. An +{{#concept "extension" Disambiguation="type in global subuniverse" Agda=extension-type-global-subuniverse}} +of `X` in a [global subuniverse](foundation.global-subuniverses.md) `𝒫` is an +object in the [coslice](foundation.coslice.md) under `X` in `𝒫`, i.e., it +consists of a type `Y` in `𝒫` and a map `f : X → Y`. + +In the above definition of extensions of types in a global subuniverse our aim +is to capture the most general concept of what it means to be an extension of a +type in a subuniverse. + +Our notion of extensions of types are not to be confused with extension types of +cubical type theory or +[extension types of simplicial type theory](https://arxiv.org/abs/1705.07442). + +## Definitions + +### The predicate on an extension of types of being in a global subuniverse + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} + (𝒫 : global-subuniverse α) {X : UU l1} + (E : extension-type l2 X) + where + + is-in-global-subuniverse-extension-type-Prop : Prop (α l2) + is-in-global-subuniverse-extension-type-Prop = + is-in-global-subuniverse-Prop 𝒫 (type-extension-type E) + + is-in-global-subuniverse-extension-type : UU (α l2) + is-in-global-subuniverse-extension-type = + is-in-global-subuniverse 𝒫 (type-extension-type E) + + is-prop-is-in-global-subuniverse-extension-type : + is-prop is-in-global-subuniverse-extension-type + is-prop-is-in-global-subuniverse-extension-type = + is-prop-is-in-global-subuniverse 𝒫 (type-extension-type E) +``` + +### Extensions of types in a subuniverse + +```agda +extension-type-global-subuniverse : + {α : Level → Level} {l1 : Level} + (𝒫 : global-subuniverse α) (l2 : Level) (X : UU l1) → + UU (α l2 ⊔ l1 ⊔ lsuc l2) +extension-type-global-subuniverse 𝒫 l2 X = + Σ (type-global-subuniverse 𝒫 l2) (λ Y → X → inclusion-global-subuniverse 𝒫 Y) + +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) {X : UU l1} + (Y : extension-type-global-subuniverse 𝒫 l2 X) + where + + type-global-subuniverse-extension-type-global-subuniverse : + type-global-subuniverse 𝒫 l2 + type-global-subuniverse-extension-type-global-subuniverse = pr1 Y + + type-extension-type-global-subuniverse : UU l2 + type-extension-type-global-subuniverse = + inclusion-global-subuniverse 𝒫 + type-global-subuniverse-extension-type-global-subuniverse + + is-in-global-subuniverse-type-extension-type-global-subuniverse : + is-in-global-subuniverse 𝒫 type-extension-type-global-subuniverse + is-in-global-subuniverse-type-extension-type-global-subuniverse = + is-in-global-subuniverse-inclusion-global-subuniverse 𝒫 + type-global-subuniverse-extension-type-global-subuniverse + + inclusion-extension-type-global-subuniverse : + X → type-extension-type-global-subuniverse + inclusion-extension-type-global-subuniverse = pr2 Y + + extension-type-extension-type-global-subuniverse : extension-type l2 X + extension-type-extension-type-global-subuniverse = + type-extension-type-global-subuniverse , + inclusion-extension-type-global-subuniverse +``` + +## Properties + +### Extensions of types in a subuniverse are extensions of types by types in the subuniverse + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) {X : UU l1} + where + + compute-extension-type-global-subuniverse : + extension-type-global-subuniverse 𝒫 l2 X ≃ + Σ (extension-type l2 X) (is-in-global-subuniverse-extension-type 𝒫) + compute-extension-type-global-subuniverse = equiv-right-swap-Σ +``` + +### The inclusion of extensions of types in a subuniverse into extensions of types is an embedding + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) {X : UU l1} + where + + compute-fiber-extension-type-extension-type-global-subuniverse : + (Y : extension-type l2 X) → + fiber (extension-type-extension-type-global-subuniverse 𝒫) Y ≃ + is-in-global-subuniverse 𝒫 (type-extension-type Y) + compute-fiber-extension-type-extension-type-global-subuniverse Y = + equivalence-reasoning + Σ ( Σ (Σ (UU l2) (λ Z → is-in-global-subuniverse 𝒫 Z)) (λ Z → X → pr1 Z)) + ( λ E → extension-type-extension-type-global-subuniverse 𝒫 E = Y) + ≃ Σ ( Σ (extension-type l2 X) (is-in-global-subuniverse-extension-type 𝒫)) + ( λ E → pr1 E = Y) + by + equiv-Σ-equiv-base + ( λ E → pr1 E = Y) + ( compute-extension-type-global-subuniverse 𝒫) + ≃ Σ ( Σ (extension-type l2 X) (λ E → E = Y)) + ( is-in-global-subuniverse-extension-type 𝒫 ∘ pr1) + by equiv-right-swap-Σ + ≃ is-in-global-subuniverse-extension-type 𝒫 Y + by left-unit-law-Σ-is-contr (is-torsorial-Id' Y) (Y , refl) + + is-prop-map-extension-type-extension-type-global-subuniverse : + is-prop-map (extension-type-extension-type-global-subuniverse 𝒫) + is-prop-map-extension-type-extension-type-global-subuniverse Y = + is-prop-equiv + ( compute-fiber-extension-type-extension-type-global-subuniverse Y) + ( is-prop-is-in-global-subuniverse 𝒫 (type-extension-type Y)) + + is-emb-extension-type-extension-type-global-subuniverse : + is-emb (extension-type-extension-type-global-subuniverse 𝒫) + is-emb-extension-type-extension-type-global-subuniverse = + is-emb-is-prop-map + is-prop-map-extension-type-extension-type-global-subuniverse +``` + +### Characterization of identifications of extensions of types in a subuniverse + +```agda +equiv-extension-type-global-subuniverse : + {α : Level → Level} {l1 l2 l3 : Level} + (𝒫 : global-subuniverse α) {X : UU l1} → + extension-type-global-subuniverse 𝒫 l2 X → + extension-type-global-subuniverse 𝒫 l3 X → UU (l1 ⊔ l2 ⊔ l3) +equiv-extension-type-global-subuniverse 𝒫 U V = + equiv-extension-type + ( extension-type-extension-type-global-subuniverse 𝒫 U) + ( extension-type-extension-type-global-subuniverse 𝒫 V) + +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) {X : UU l1} + where + + id-equiv-extension-type-global-subuniverse : + (U : extension-type-global-subuniverse 𝒫 l2 X) → + equiv-extension-type-global-subuniverse 𝒫 U U + id-equiv-extension-type-global-subuniverse U = + id-equiv-extension-type + ( extension-type-extension-type-global-subuniverse 𝒫 U) + + equiv-eq-extension-type-global-subuniverse : + (U V : extension-type-global-subuniverse 𝒫 l2 X) → + U = V → equiv-extension-type-global-subuniverse 𝒫 U V + equiv-eq-extension-type-global-subuniverse U V p = + equiv-eq-extension-type + ( extension-type-extension-type-global-subuniverse 𝒫 U) + ( extension-type-extension-type-global-subuniverse 𝒫 V) + ( ap (extension-type-extension-type-global-subuniverse 𝒫) p) + + is-equiv-equiv-eq-extension-type-global-subuniverse : + (U V : extension-type-global-subuniverse 𝒫 l2 X) → + is-equiv (equiv-eq-extension-type-global-subuniverse U V) + is-equiv-equiv-eq-extension-type-global-subuniverse U V = + is-equiv-comp + ( equiv-eq-extension-type + ( extension-type-extension-type-global-subuniverse 𝒫 U) + ( extension-type-extension-type-global-subuniverse 𝒫 V)) + ( ap (extension-type-extension-type-global-subuniverse 𝒫)) + ( is-emb-extension-type-extension-type-global-subuniverse 𝒫 U V) + ( is-equiv-equiv-eq-extension-type + ( extension-type-extension-type-global-subuniverse 𝒫 U) + ( extension-type-extension-type-global-subuniverse 𝒫 V)) + + extensionality-extension-type-global-subuniverse : + (U V : extension-type-global-subuniverse 𝒫 l2 X) → + (U = V) ≃ equiv-extension-type-global-subuniverse 𝒫 U V + extensionality-extension-type-global-subuniverse U V = + equiv-eq-extension-type-global-subuniverse U V , + is-equiv-equiv-eq-extension-type-global-subuniverse U V + + eq-equiv-extension-type-global-subuniverse : + (U V : extension-type-global-subuniverse 𝒫 l2 X) → + equiv-extension-type-global-subuniverse 𝒫 U V → U = V + eq-equiv-extension-type-global-subuniverse U V = + map-inv-equiv (extensionality-extension-type-global-subuniverse U V) +``` diff --git a/src/foundation/extensions-types-subuniverses.lagda.md b/src/foundation/extensions-types-subuniverses.lagda.md new file mode 100644 index 0000000000..b76a1afee1 --- /dev/null +++ b/src/foundation/extensions-types-subuniverses.lagda.md @@ -0,0 +1,221 @@ +# Extensions of types in a subuniverse + +```agda +module foundation.extensions-types-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.commuting-triangles-of-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.equivalences +open import foundation.extensions-types +open import foundation.fibers-of-maps +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopies +open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.propositional-maps +open import foundation.propositions +open import foundation.structure-identity-principle +open import foundation.subtype-identity-principle +open import foundation.subuniverses +open import foundation.torsorial-type-families +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.univalence +open import foundation.universe-levels +``` + +
+ +## Idea + +Consider a type `X`. An +{{#concept "extension" Disambiguation="type in subuniverse" Agda=extension-type-subuniverse}} +of `X` in a [subuniverse](foundation.subuniverses.md) `𝒫` is an object in the +[coslice](foundation.coslice.md) under `X` in `𝒫`, i.e., it consists of a type +`Y` in `𝒫` and a map `f : X → Y`. + +In the above definition of extensions of types in a subuniverse our aim is to +capture the most general concept of what it means to be an extension of a type +in a subuniverse. + +Our notion of extensions of types are not to be confused with extension types of +cubical type theory or +[extension types of simplicial type theory](https://arxiv.org/abs/1705.07442). + +## Definitions + +### The predicate on an extension of types of being in a subuniverse + +```agda +module _ + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) {X : UU l3} + (E : extension-type l1 X) + where + + is-in-subuniverse-extension-type-Prop : Prop l2 + is-in-subuniverse-extension-type-Prop = 𝒫 (type-extension-type E) + + is-in-subuniverse-extension-type : UU l2 + is-in-subuniverse-extension-type = + is-in-subuniverse 𝒫 (type-extension-type E) + + is-prop-is-in-subuniverse-extension-type : + is-prop is-in-subuniverse-extension-type + is-prop-is-in-subuniverse-extension-type = + is-prop-is-in-subuniverse 𝒫 (type-extension-type E) +``` + +### Extensions of types in a subuniverse + +```agda +extension-type-subuniverse : + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) (X : UU l3) → + UU (lsuc l1 ⊔ l2 ⊔ l3) +extension-type-subuniverse 𝒫 X = + Σ (type-subuniverse 𝒫) (λ Y → X → inclusion-subuniverse 𝒫 Y) + +module _ + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) {X : UU l3} + (Y : extension-type-subuniverse 𝒫 X) + where + + type-subuniverse-extension-type-subuniverse : type-subuniverse 𝒫 + type-subuniverse-extension-type-subuniverse = pr1 Y + + type-extension-type-subuniverse : UU l1 + type-extension-type-subuniverse = + inclusion-subuniverse 𝒫 type-subuniverse-extension-type-subuniverse + + is-in-subuniverse-type-extension-type-subuniverse : + is-in-subuniverse 𝒫 type-extension-type-subuniverse + is-in-subuniverse-type-extension-type-subuniverse = + is-in-subuniverse-inclusion-subuniverse 𝒫 + type-subuniverse-extension-type-subuniverse + + inclusion-extension-type-subuniverse : X → type-extension-type-subuniverse + inclusion-extension-type-subuniverse = pr2 Y + + extension-type-extension-type-subuniverse : extension-type l1 X + extension-type-extension-type-subuniverse = + type-extension-type-subuniverse , inclusion-extension-type-subuniverse +``` + +## Properties + +### Extensions of types in a subuniverse are extensions of types by types in the subuniverse + +```agda +module _ + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) {X : UU l3} + where + + compute-extension-type-subuniverse : + extension-type-subuniverse 𝒫 X ≃ + Σ (extension-type l1 X) (is-in-subuniverse-extension-type 𝒫) + compute-extension-type-subuniverse = equiv-right-swap-Σ +``` + +### The inclusion of extensions of types in a subuniverse into extensions of types is an embedding + +```agda +module _ + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) {X : UU l3} + where + + compute-fiber-extension-type-extension-type-subuniverse : + (Y : extension-type l1 X) → + fiber (extension-type-extension-type-subuniverse 𝒫) Y ≃ + is-in-subuniverse 𝒫 (type-extension-type Y) + compute-fiber-extension-type-extension-type-subuniverse Y = + equivalence-reasoning + Σ ( Σ (Σ (UU l1) (λ Z → is-in-subuniverse 𝒫 Z)) (λ Z → X → pr1 Z)) + ( λ E → extension-type-extension-type-subuniverse 𝒫 E = Y) + ≃ Σ ( Σ (extension-type l1 X) (is-in-subuniverse-extension-type 𝒫)) + ( λ E → pr1 E = Y) + by + equiv-Σ-equiv-base + ( λ E → pr1 E = Y) + ( compute-extension-type-subuniverse 𝒫) + ≃ Σ ( Σ (extension-type l1 X) (λ E → E = Y)) + ( is-in-subuniverse-extension-type 𝒫 ∘ pr1) + by equiv-right-swap-Σ + ≃ is-in-subuniverse-extension-type 𝒫 Y + by left-unit-law-Σ-is-contr (is-torsorial-Id' Y) (Y , refl) + + is-prop-map-extension-type-extension-type-subuniverse : + is-prop-map (extension-type-extension-type-subuniverse 𝒫) + is-prop-map-extension-type-extension-type-subuniverse Y = + is-prop-equiv + ( compute-fiber-extension-type-extension-type-subuniverse Y) + ( is-prop-is-in-subuniverse 𝒫 (type-extension-type Y)) + + is-emb-extension-type-extension-type-subuniverse : + is-emb (extension-type-extension-type-subuniverse 𝒫) + is-emb-extension-type-extension-type-subuniverse = + is-emb-is-prop-map is-prop-map-extension-type-extension-type-subuniverse +``` + +### Characterization of identifications of extensions of types in a subuniverse + +```agda +module _ + {l1 l2 l3 : Level} (𝒫 : subuniverse l1 l2) {X : UU l3} + where + + equiv-extension-type-subuniverse : + extension-type-subuniverse 𝒫 X → + extension-type-subuniverse 𝒫 X → UU (l1 ⊔ l3) + equiv-extension-type-subuniverse U V = + equiv-extension-type + ( extension-type-extension-type-subuniverse 𝒫 U) + ( extension-type-extension-type-subuniverse 𝒫 V) + + id-equiv-extension-type-subuniverse : + (U : extension-type-subuniverse 𝒫 X) → equiv-extension-type-subuniverse U U + id-equiv-extension-type-subuniverse U = + id-equiv-extension-type (extension-type-extension-type-subuniverse 𝒫 U) + + equiv-eq-extension-type-subuniverse : + (U V : extension-type-subuniverse 𝒫 X) → + U = V → equiv-extension-type-subuniverse U V + equiv-eq-extension-type-subuniverse U V p = + equiv-eq-extension-type + ( extension-type-extension-type-subuniverse 𝒫 U) + ( extension-type-extension-type-subuniverse 𝒫 V) + ( ap (extension-type-extension-type-subuniverse 𝒫) p) + + is-equiv-equiv-eq-extension-type-subuniverse : + (U V : extension-type-subuniverse 𝒫 X) → + is-equiv (equiv-eq-extension-type-subuniverse U V) + is-equiv-equiv-eq-extension-type-subuniverse U V = + is-equiv-comp + ( equiv-eq-extension-type + ( extension-type-extension-type-subuniverse 𝒫 U) + ( extension-type-extension-type-subuniverse 𝒫 V)) + ( ap (extension-type-extension-type-subuniverse 𝒫)) + ( is-emb-extension-type-extension-type-subuniverse 𝒫 U V) + ( is-equiv-equiv-eq-extension-type + ( extension-type-extension-type-subuniverse 𝒫 U) + ( extension-type-extension-type-subuniverse 𝒫 V)) + + extensionality-extension-type-subuniverse : + (U V : extension-type-subuniverse 𝒫 X) → + (U = V) ≃ equiv-extension-type-subuniverse U V + extensionality-extension-type-subuniverse U V = + equiv-eq-extension-type-subuniverse U V , + is-equiv-equiv-eq-extension-type-subuniverse U V + + eq-equiv-extension-type-subuniverse : + (U V : extension-type-subuniverse 𝒫 X) → + equiv-extension-type-subuniverse U V → U = V + eq-equiv-extension-type-subuniverse U V = + map-inv-equiv (extensionality-extension-type-subuniverse U V) +``` diff --git a/src/foundation/extensions-types.lagda.md b/src/foundation/extensions-types.lagda.md index 669684f417..7d78a32bdd 100644 --- a/src/foundation/extensions-types.lagda.md +++ b/src/foundation/extensions-types.lagda.md @@ -7,7 +7,16 @@ module foundation.extensions-types where
Imports ```agda +open import foundation.commuting-triangles-of-maps open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopies +open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.structure-identity-principle +open import foundation.torsorial-type-families +open import foundation.univalence open import foundation.universe-levels ``` @@ -47,3 +56,86 @@ module _ inclusion-extension-type : X → type-extension-type inclusion-extension-type = pr2 Y ``` + +## Properties + +### Characterization of identifications of extensions of types + +```agda +equiv-extension-type : + {l1 l2 l3 : Level} {X : UU l1} → + extension-type l2 X → + extension-type l3 X → UU (l1 ⊔ l2 ⊔ l3) +equiv-extension-type (Y , f) (Z , g) = + Σ (Y ≃ Z) (λ e → coherence-triangle-maps g (map-equiv e) f) + +module _ + {l1 l2 : Level} {X : UU l1} + where + + id-equiv-extension-type : (U : extension-type l2 X) → equiv-extension-type U U + id-equiv-extension-type U = id-equiv , refl-htpy + + equiv-eq-extension-type : + (U V : extension-type l2 X) → U = V → equiv-extension-type U V + equiv-eq-extension-type U .U refl = id-equiv-extension-type U + + is-torsorial-equiv-extension-type : + (U : extension-type l2 X) → is-torsorial (equiv-extension-type U) + is-torsorial-equiv-extension-type U = + is-torsorial-Eq-structure + ( is-torsorial-equiv (type-extension-type U)) + ( type-extension-type U , id-equiv) + (is-torsorial-htpy' (inclusion-extension-type U)) + + is-equiv-equiv-eq-extension-type : + (U V : extension-type l2 X) → is-equiv (equiv-eq-extension-type U V) + is-equiv-equiv-eq-extension-type U = + fundamental-theorem-id + ( is-torsorial-equiv-extension-type U) + ( equiv-eq-extension-type U) + + extensionality-extension-type : + (U V : extension-type l2 X) → (U = V) ≃ equiv-extension-type U V + extensionality-extension-type U V = + equiv-eq-extension-type U V , is-equiv-equiv-eq-extension-type U V + + eq-equiv-extension-type : + (U V : extension-type l2 X) → equiv-extension-type U V → U = V + eq-equiv-extension-type U V = + map-inv-equiv (extensionality-extension-type U V) +``` + +### If an extension is equivalent to an equivalence, then it is an equivalence + +```agda +module _ + {l1 l2 l3 : Level} {X : UU l1} + (U : extension-type l2 X) (V : extension-type l3 X) + where + + is-equiv-inclusion-extension-type-equiv : + equiv-extension-type U V → + is-equiv (inclusion-extension-type V) → + is-equiv (inclusion-extension-type U) + is-equiv-inclusion-extension-type-equiv (e , H) = + is-equiv-top-map-triangle + ( inclusion-extension-type V) + ( map-equiv e) + ( inclusion-extension-type U) + ( H) + ( is-equiv-map-equiv e) + + is-equiv-inclusion-extension-type-equiv' : + equiv-extension-type U V → + is-equiv (inclusion-extension-type U) → + is-equiv (inclusion-extension-type V) + is-equiv-inclusion-extension-type-equiv' (e , H) u = + is-equiv-left-map-triangle + ( inclusion-extension-type V) + ( map-equiv e) + ( inclusion-extension-type U) + ( H) + ( u) + ( is-equiv-map-equiv e) +``` diff --git a/src/foundation/fundamental-theorem-of-identity-types.lagda.md b/src/foundation/fundamental-theorem-of-identity-types.lagda.md index 9ac5bfc324..38a8adedd0 100644 --- a/src/foundation/fundamental-theorem-of-identity-types.lagda.md +++ b/src/foundation/fundamental-theorem-of-identity-types.lagda.md @@ -59,9 +59,9 @@ module _ abstract fundamental-theorem-id : is-torsorial B → (f : (x : A) → a = x → B x) → is-fiberwise-equiv f - fundamental-theorem-id is-contr-AB f = + fundamental-theorem-id is-torsorial-B f = is-fiberwise-equiv-is-equiv-tot - ( is-equiv-is-contr (tot f) (is-torsorial-Id a) is-contr-AB) + ( is-equiv-is-contr (tot f) (is-torsorial-Id a) is-torsorial-B) abstract fundamental-theorem-id' : @@ -84,8 +84,8 @@ module _ abstract fundamental-theorem-id-J : is-torsorial B → is-fiberwise-equiv (ind-Id a (λ x p → B x) b) - fundamental-theorem-id-J is-contr-AB = - fundamental-theorem-id is-contr-AB (ind-Id a (λ x p → B x) b) + fundamental-theorem-id-J is-torsorial-B = + fundamental-theorem-id is-torsorial-B (ind-Id a (λ x p → B x) b) abstract fundamental-theorem-id-J' : diff --git a/src/foundation/global-subuniverses.lagda.md b/src/foundation/global-subuniverses.lagda.md index e000dc080e..fffb54617f 100644 --- a/src/foundation/global-subuniverses.lagda.md +++ b/src/foundation/global-subuniverses.lagda.md @@ -64,9 +64,13 @@ record global-subuniverse (α : Level → Level) : UUω where (l : Level) → subuniverse l (α l) is-closed-under-equiv-global-subuniverse : - (l1 l2 : Level) → + {l1 l2 : Level} → is-closed-under-equiv-subuniverses α subuniverse-global-subuniverse l1 l2 + is-in-global-subuniverse-Prop : {l : Level} → UU l → Prop (α l) + is-in-global-subuniverse-Prop {l} X = + subuniverse-global-subuniverse l X + is-in-global-subuniverse : {l : Level} → UU l → UU (α l) is-in-global-subuniverse {l} X = is-in-subuniverse (subuniverse-global-subuniverse l) X @@ -85,6 +89,12 @@ record global-subuniverse (α : Level → Level) : UUω where inclusion-global-subuniverse {l} = inclusion-subuniverse (subuniverse-global-subuniverse l) + is-in-global-subuniverse-inclusion-global-subuniverse : + {l : Level} (X : type-global-subuniverse l) → + is-in-global-subuniverse (inclusion-global-subuniverse X) + is-in-global-subuniverse-inclusion-global-subuniverse {l} = + is-in-subuniverse-inclusion-subuniverse (subuniverse-global-subuniverse l) + open global-subuniverse public ``` diff --git a/src/foundation/maps-in-global-subuniverses.lagda.md b/src/foundation/maps-in-global-subuniverses.lagda.md index c890a5c258..c3f263ac66 100644 --- a/src/foundation/maps-in-global-subuniverses.lagda.md +++ b/src/foundation/maps-in-global-subuniverses.lagda.md @@ -65,7 +65,7 @@ module _ is-in-global-subuniverse-map 𝒫 (terminal-map A) → is-in-global-subuniverse 𝒫 A is-in-global-subuniverse-is-in-global-subuniverse-terminal-map H = - is-closed-under-equiv-global-subuniverse 𝒫 l1 l1 + is-closed-under-equiv-global-subuniverse 𝒫 ( fiber (terminal-map A) star) ( A) ( equiv-fiber-terminal-map star) @@ -75,7 +75,7 @@ module _ is-in-global-subuniverse 𝒫 A → is-in-global-subuniverse-map 𝒫 (terminal-map A) is-in-global-subuniverse-terminal-map-is-in-global-subuniverse H u = - is-closed-under-equiv-global-subuniverse 𝒫 l1 l1 + is-closed-under-equiv-global-subuniverse 𝒫 ( A) ( fiber (terminal-map A) u) ( inv-equiv-fiber-terminal-map u) @@ -98,7 +98,7 @@ module _ cartesian-hom-arrow g f → is-in-global-subuniverse-map 𝒫 g is-in-global-subuniverse-map-base-change F α d = - is-closed-under-equiv-global-subuniverse 𝒫 (l1 ⊔ l2) (l3 ⊔ l4) + is-closed-under-equiv-global-subuniverse 𝒫 ( fiber f (map-codomain-cartesian-hom-arrow g f α d)) ( fiber g d) ( inv-equiv (equiv-fibers-cartesian-hom-arrow g f α d)) diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index b5156efa46..fef97c901d 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -79,27 +79,43 @@ module _ {g h : (b : B) → C b} where - compute-htpy-eq-ap-precomp-Π : + coherence-htpy-eq-ap-precomp-Π : coherence-square-maps ( ap (precomp-Π f C) {g} {h}) ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - compute-htpy-eq-ap-precomp-Π refl = refl + coherence-htpy-eq-ap-precomp-Π refl = refl - compute-eq-htpy-ap-precomp-Π : + coherence-htpy-eq-ap-precomp-Π' : + coherence-square-maps' + ( ap (precomp-Π f C) {g} {h}) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) + coherence-htpy-eq-ap-precomp-Π' = inv-htpy coherence-htpy-eq-ap-precomp-Π + + coherence-eq-htpy-ap-precomp-Π : coherence-square-maps ( precomp-Π f (eq-value g h)) ( eq-htpy) ( eq-htpy) ( ap (precomp-Π f C) {g} {h}) - compute-eq-htpy-ap-precomp-Π = + coherence-eq-htpy-ap-precomp-Π = vertical-inv-equiv-coherence-square-maps ( ap (precomp-Π f C)) ( equiv-funext) ( equiv-funext) ( precomp-Π f (eq-value g h)) - ( compute-htpy-eq-ap-precomp-Π) + ( coherence-htpy-eq-ap-precomp-Π) + + coherence-eq-htpy-ap-precomp-Π' : + coherence-square-maps' + ( precomp-Π f (eq-value g h)) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp-Π f C) {g} {h}) + coherence-eq-htpy-ap-precomp-Π' = inv-htpy coherence-eq-htpy-ap-precomp-Π ``` ### Precomposing functions `Π B C` by `f : A → B` is `k+1`-truncated if and only if precomposing homotopies is `k`-truncated @@ -118,7 +134,7 @@ is-trunc-map-succ-precomp-Π {k = k} {f = f} {C = C} H = ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - ( compute-htpy-eq-ap-precomp-Π f) + ( coherence-htpy-eq-ap-precomp-Π f) ( funext g h) ( funext (g ∘ f) (h ∘ f)) ( H g h)) diff --git a/src/foundation/precomposition-functions-into-subuniverses.lagda.md b/src/foundation/precomposition-functions-into-subuniverses.lagda.md index b1d64720ab..8e0a567f55 100644 --- a/src/foundation/precomposition-functions-into-subuniverses.lagda.md +++ b/src/foundation/precomposition-functions-into-subuniverses.lagda.md @@ -10,14 +10,15 @@ module foundation.precomposition-functions-into-subuniverses where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.function-extensionality +open import foundation.precomposition-functions open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.function-types +open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.precomposition-functions open import foundation-core.propositions open import foundation-core.retractions open import foundation-core.sections @@ -28,30 +29,37 @@ open import foundation-core.truncation-levels
-## Theorem - -### A map between structured types is an equivalence if precomposition of functions into structured types by that map is an equivalence +## Definitions ```agda module _ - {l1 l2 : Level} - (α : Level → Level) (P : {l : Level} → UU l → UU (α l)) - (A : Σ (UU l1) (P {l1})) (B : Σ (UU l2) (P {l2})) (f : pr1 A → pr1 B) + {α : Level → Level} (𝒫 : {l : Level} → UU l → UU (α l)) + {l1 l2 : Level} (A : Σ (UU l1) 𝒫) (B : Σ (UU l2) 𝒫) (f : pr1 A → pr1 B) where universal-property-equiv-structured-type : UUω universal-property-equiv-structured-type = - {l : Level} (C : Σ (UU l) (P {l})) → is-equiv (precomp f (pr1 C)) + {l : Level} (C : Σ (UU l) 𝒫) → is-equiv (precomp f (pr1 C)) +``` + +## Theorem + +### A map between structured types is an equivalence if precomposition of functions into structured types by that map is an equivalence + +```agda +module _ + {α : Level → Level} (𝒫 : {l : Level} → UU l → UU (α l)) + {l1 l2 : Level} (A : Σ (UU l1) 𝒫) (B : Σ (UU l2) 𝒫) (f : pr1 A → pr1 B) + (H : universal-property-equiv-structured-type 𝒫 A B f) + where - map-inv-is-equiv-precomp-structured-type : - universal-property-equiv-structured-type → pr1 B → pr1 A - map-inv-is-equiv-precomp-structured-type H = + map-inv-is-equiv-precomp-structured-type : pr1 B → pr1 A + map-inv-is-equiv-precomp-structured-type = pr1 (center (is-contr-map-is-equiv (H A) id)) is-section-map-inv-is-equiv-precomp-structured-type : - (H : universal-property-equiv-structured-type) → - is-section f (map-inv-is-equiv-precomp-structured-type H) - is-section-map-inv-is-equiv-precomp-structured-type H = + is-section f map-inv-is-equiv-precomp-structured-type + is-section-map-inv-is-equiv-precomp-structured-type = htpy-eq ( ap ( pr1) @@ -59,24 +67,22 @@ module _ ( is-contr-map-is-equiv (H B) f) ( ( f ∘ (pr1 (center (is-contr-map-is-equiv (H A) id)))) , ( ap - ( λ (g : pr1 A → pr1 A) → f ∘ g) + ( λ g → f ∘ g) ( pr2 (center (is-contr-map-is-equiv (H A) id))))) ( id , refl))) is-retraction-map-inv-is-equiv-precomp-structured-type : - (H : universal-property-equiv-structured-type) → - is-retraction f (map-inv-is-equiv-precomp-structured-type H) - is-retraction-map-inv-is-equiv-precomp-structured-type H = + is-retraction f map-inv-is-equiv-precomp-structured-type + is-retraction-map-inv-is-equiv-precomp-structured-type = htpy-eq (pr2 (center (is-contr-map-is-equiv (H A) id))) abstract - is-equiv-is-equiv-precomp-structured-type : - universal-property-equiv-structured-type → is-equiv f - is-equiv-is-equiv-precomp-structured-type H = + is-equiv-is-equiv-precomp-structured-type : is-equiv f + is-equiv-is-equiv-precomp-structured-type = is-equiv-is-invertible - ( map-inv-is-equiv-precomp-structured-type H) - ( is-section-map-inv-is-equiv-precomp-structured-type H) - ( is-retraction-map-inv-is-equiv-precomp-structured-type H) + ( map-inv-is-equiv-precomp-structured-type) + ( is-section-map-inv-is-equiv-precomp-structured-type) + ( is-retraction-map-inv-is-equiv-precomp-structured-type) ``` ## Corollaries @@ -95,7 +101,7 @@ module _ is-equiv-is-equiv-precomp-Prop : universal-property-equiv-Prop → is-equiv f is-equiv-is-equiv-precomp-Prop = - is-equiv-is-equiv-precomp-structured-type (λ l → l) is-prop P Q f + is-equiv-is-equiv-precomp-structured-type is-prop P Q f ``` ### A map between sets is an equivalence if precomposition of functions into sets by that map is an equivalence @@ -112,7 +118,7 @@ module _ is-equiv-is-equiv-precomp-Set : universal-property-equiv-Set → is-equiv f is-equiv-is-equiv-precomp-Set = - is-equiv-is-equiv-precomp-structured-type (λ l → l) is-set A B f + is-equiv-is-equiv-precomp-structured-type is-set A B f ``` ### A map between truncated types is an equivalence if precomposition of functions into truncated types by that map is an equivalence @@ -132,5 +138,5 @@ module _ is-equiv-is-equiv-precomp-Truncated-Type : universal-property-equiv-Truncated-Type → is-equiv f is-equiv-is-equiv-precomp-Truncated-Type = - is-equiv-is-equiv-precomp-structured-type (λ l → l) (is-trunc k) A B f + is-equiv-is-equiv-precomp-structured-type (is-trunc k) A B f ``` diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index b008165dea..9e48f70cfd 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -84,11 +84,19 @@ module _ {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X → Y) where - retraction-section-precomp-domain : section (precomp f X) → retraction f - pr1 (retraction-section-precomp-domain s) = - map-section (precomp f X) s id - pr2 (retraction-section-precomp-domain s) = - htpy-eq (is-section-map-section (precomp f X) s id) + retraction-map-section-precomp : section (precomp f X) → retraction f + retraction-map-section-precomp (s , S) = s id , htpy-eq (S id) +``` + +### If `f` has a retraction then `- ∘ f : (Y → X) → (X → X)` has a section + +```agda +module _ + {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X → Y) + where + + section-precomp-retraction-map : retraction f → section (precomp f X) + section-precomp-retraction-map (r , H) = precomp r X , htpy-precomp H X ``` ### Equivalences induce an equivalence from the type of homotopies between two maps to the type of homotopies between their precomposites @@ -191,28 +199,41 @@ module _ (f : A → B) {g h : B → C} where - compute-htpy-eq-ap-precomp : + coherence-htpy-eq-ap-precomp : coherence-square-maps ( ap (precomp f C)) ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - compute-htpy-eq-ap-precomp = - compute-htpy-eq-ap-precomp-Π f + coherence-htpy-eq-ap-precomp = + coherence-htpy-eq-ap-precomp-Π f + + coherence-htpy-eq-ap-precomp' : + coherence-square-maps' + ( ap (precomp f C)) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) + coherence-htpy-eq-ap-precomp' = + coherence-htpy-eq-ap-precomp-Π' f - compute-eq-htpy-ap-precomp : + coherence-eq-htpy-ap-precomp : coherence-square-maps ( precomp-Π f (eq-value g h)) ( eq-htpy) ( eq-htpy) ( ap (precomp f C)) - compute-eq-htpy-ap-precomp = - vertical-inv-equiv-coherence-square-maps - ( ap (precomp f C)) - ( equiv-funext) - ( equiv-funext) + coherence-eq-htpy-ap-precomp = + coherence-eq-htpy-ap-precomp-Π f + + coherence-eq-htpy-ap-precomp' : + coherence-square-maps' ( precomp-Π f (eq-value g h)) - ( compute-htpy-eq-ap-precomp) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp f C)) + coherence-eq-htpy-ap-precomp' = + coherence-eq-htpy-ap-precomp-Π' f ``` ### The precomposition map at a dependent pair type diff --git a/src/foundation/pullback-cones.lagda.md b/src/foundation/pullback-cones.lagda.md index eb53295e13..f35b29848d 100644 --- a/src/foundation/pullback-cones.lagda.md +++ b/src/foundation/pullback-cones.lagda.md @@ -8,6 +8,7 @@ module foundation.pullback-cones where ```agda open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types open import foundation.cones-over-cospan-diagrams open import foundation.cospan-diagrams open import foundation.dependent-pair-types @@ -18,8 +19,11 @@ open import foundation.homotopies open import foundation.homotopy-induction open import foundation.identity-types open import foundation.multivariable-homotopies +open import foundation.pullbacks open import foundation.standard-pullbacks open import foundation.structure-identity-principle +open import foundation.unit-type +open import foundation.universal-property-cartesian-product-types open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -28,7 +32,6 @@ open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types -open import foundation-core.pullbacks open import foundation-core.retractions open import foundation-core.sections open import foundation-core.torsorial-type-families @@ -226,6 +229,56 @@ id-pullback-cone : id-pullback-cone A = ((A , id-cone A) , is-pullback-id-cone A) ``` +### The identity type pullback cone + +```agda +module _ + {l : Level} {A : UU l} (x y : A) + where + + cospan-diagram-Id : cospan-diagram lzero lzero l + cospan-diagram-Id = (unit , unit , A , point x , point y) + + pullback-cone-Id : pullback-cone cospan-diagram-Id l + pullback-cone-Id = (((x = y) , cone-Id x y) , is-pullback-Id x y) +``` + +### The type of equivalences pullback cone + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + cospan-diagram-equiv : cospan-diagram (l1 ⊔ l2) lzero (l1 ⊔ l2) + cospan-diagram-equiv = + ( (A → B) × (B → A) × (B → A) , + unit , + (A → A) × (B → B) , + (λ (f , g , h) → h ∘ f , f ∘ g) , + point (id' A , id' B)) + + pullback-cone-equiv : pullback-cone cospan-diagram-equiv (l1 ⊔ l2) + pullback-cone-equiv = (A ≃ B , cone-equiv) , is-pullback-equiv +``` + +### The cartesian product pullback cone + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + cospan-diagram-cartesian-product : cospan-diagram l1 l2 lzero + cospan-diagram-cartesian-product = + ( A , B , unit , terminal-map A , terminal-map B) + + pullback-cone-cartesian-product : + pullback-cone cospan-diagram-cartesian-product (l1 ⊔ l2) + pullback-cone-cartesian-product = + (A × B , cone-cartesian-product A B) , is-pullback-cartesian-product A B +``` + ## Table of files about pullbacks The following table lists files that are about pullbacks as a general concept. diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index 7da824f4bb..aa710ea8cd 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -9,17 +9,21 @@ open import foundation-core.pullbacks public
Imports ```agda +open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.commuting-cubes-of-maps open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.dependent-sums-pullbacks open import foundation.descent-equivalences +open import foundation.equality-cartesian-product-types +open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.function-extensionality open import foundation.functoriality-coproduct-types open import foundation.functoriality-function-types open import foundation.standard-pullbacks +open import foundation.subtypes open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -88,6 +92,83 @@ module _ pr2 (is-pullback-Prop c) = is-prop-is-pullback c ``` +### The identity type as a pullback + +```agda +module _ + {l : Level} {A : UU l} (x y : A) + where + + cone-Id : cone (point x) (point y) (x = y) + cone-Id = terminal-map (x = y) , terminal-map (x = y) , id + + is-pullback-Id : is-pullback (point x) (point y) cone-Id + is-pullback-Id = + is-equiv-is-invertible + coherence-square-standard-pullback + refl-htpy + refl-htpy +``` + +### The type of equivalences as a pullback + +The type of equivalences `A ≃ B` can be presented as the following pullback. + +```text + A ≃ B ----------------------> unit + | ⌟ | + | | + | | * ↦ (id , id) + | | + | | + ∨ ∨ + (A → B) × (B → A) × (B → A) ----> (A → A) × (B → B) + (f , g , h) ↦ (h ∘ f , f ∘ g) +``` + +This presentation can be found as Proposition 2.18 in {{#cite CORS20}} and +Corollary 5.1.23 in {{#cite Rij19}}. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + cone-equiv : + cone + ( λ (f , g , h) → h ∘ f , f ∘ g) + ( point (id' A , id' B)) + ( A ≃ B) + cone-equiv = + ( λ e → + map-equiv e , map-section-map-equiv e , map-retraction-map-equiv e) , + ( terminal-map (A ≃ B)) , + ( λ e → + eq-pair + ( eq-htpy (is-retraction-map-retraction-map-equiv e)) + ( eq-htpy (is-section-map-section-map-equiv e))) + + abstract + is-pullback-equiv : + is-pullback + ( λ (f , g , h) → h ∘ f , f ∘ g) + ( point (id' A , id' B)) + ( cone-equiv) + is-pullback-equiv = + is-equiv-is-invertible + ( λ ((f , g , h) , * , H) → + f , (g , htpy-eq (pr2 (pair-eq H))) , (h , htpy-eq (pr1 (pair-eq H)))) + ( λ (_ , * , H) → + eq-pair-eq-fiber + ( eq-pair-eq-fiber + ( ( ap-binary + ( eq-pair) + ( is-retraction-eq-htpy (ap pr1 H)) + ( is-retraction-eq-htpy (ap pr2 H))) ∙ + ( is-section-pair-eq H)))) + ( λ e → eq-type-subtype is-equiv-Prop refl) +``` + ### In a commuting cube where the front faces are pullbacks, either back face is a pullback iff the other back face is ```agda @@ -441,6 +522,10 @@ module _ ( v)) ``` +## References + +{{#bibliography}} + ## Table of files about pullbacks The following table lists files that are about pullbacks as a general concept. diff --git a/src/foundation/structure-identity-principle.lagda.md b/src/foundation/structure-identity-principle.lagda.md index 28faad649b..47915100c2 100644 --- a/src/foundation/structure-identity-principle.lagda.md +++ b/src/foundation/structure-identity-principle.lagda.md @@ -23,10 +23,10 @@ open import foundation-core.torsorial-type-families ## Idea [Structure](foundation.structure.md) is presented in type theory by -[dependent pair types](foundation.dependent-pair-types.md). The **structure -identity principle** is a way to characterize the -[identity type](foundation-core.identity-types.md) of a structure, using -characterizations of the identity types of its components. +[dependent pair types](foundation.dependent-pair-types.md). The +{{#concept "structure identity principle" Disambiguation="for types" Agda=structure-identity-principle}} +is a way to characterize the [identity type](foundation-core.identity-types.md) +of a structure, using characterizations of the identity types of its components. ## Lemma @@ -38,14 +38,14 @@ module _ abstract is-torsorial-Eq-structure : - (is-contr-AC : is-torsorial C) (t : Σ A C) → + (is-torsorial-AC : is-torsorial C) (t : Σ A C) → is-torsorial (λ y → D (pr1 t) y (pr2 t)) → is-torsorial (λ t → Σ (C (pr1 t)) (D (pr1 t) (pr2 t))) - is-torsorial-Eq-structure is-contr-AC t is-contr-BD = + is-torsorial-Eq-structure is-torsorial-AC t is-torsorial-BD = is-contr-equiv ( Σ (Σ A C) (λ t → Σ (B (pr1 t)) (λ y → D (pr1 t) y (pr2 t)))) ( interchange-Σ-Σ D) - ( is-contr-Σ is-contr-AC t is-contr-BD) + ( is-contr-Σ is-torsorial-AC t is-torsorial-BD) ``` ## Theorem @@ -54,7 +54,7 @@ module _ ```agda module _ - {l1 l2 l3 l4 : Level} { A : UU l1} {B : A → UU l2} {Eq-A : A → UU l3} + {l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2} {Eq-A : A → UU l3} (Eq-B : {x : A} → B x → Eq-A x → UU l4) {a : A} {b : B a} (refl-A : Eq-A a) (refl-B : Eq-B b refl-A) where @@ -93,3 +93,10 @@ module _ ( λ y → is-equiv-map-equiv (g y)) ( z) ``` + +## External links + +- [Structure Identity Principle](https://1lab.dev/1Lab.Univalence.SIP.html) at + 1lab +- [structure identity principle](https://ncatlab.org/nlab/show/structure+identity+principle) + at $n$Lab diff --git a/src/foundation/surjective-maps.lagda.md b/src/foundation/surjective-maps.lagda.md index 59d60318b5..46a1d7c326 100644 --- a/src/foundation/surjective-maps.lagda.md +++ b/src/foundation/surjective-maps.lagda.md @@ -48,7 +48,7 @@ open import foundation-core.torsorial-type-families open import foundation-core.truncated-maps open import foundation-core.truncation-levels -open import orthogonal-factorization-systems.extensions-of-maps +open import orthogonal-factorization-systems.extensions-maps ```
diff --git a/src/foundation/unit-type.lagda.md b/src/foundation/unit-type.lagda.md index ca159a3636..5b832275cd 100644 --- a/src/foundation/unit-type.lagda.md +++ b/src/foundation/unit-type.lagda.md @@ -15,9 +15,11 @@ open import foundation.universe-levels open import foundation-core.constant-maps open import foundation-core.contractible-types open import foundation-core.equivalences +open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.propositions +open import foundation-core.retractions open import foundation-core.sets open import foundation-core.truncated-types open import foundation-core.truncation-levels @@ -201,3 +203,14 @@ module _ pr1 point-injection = point x pr2 point-injection = is-injective-point ``` + +### The map `point x` has a retraction for every `x` + +```agda +module _ + {l : Level} {A : UU l} (x : A) + where + + retraction-point : retraction (point x) + retraction-point = terminal-map A , refl-htpy +``` diff --git a/src/foundation/universal-property-equivalences.lagda.md b/src/foundation/universal-property-equivalences.lagda.md index 177b654004..4f4300ef98 100644 --- a/src/foundation/universal-property-equivalences.lagda.md +++ b/src/foundation/universal-property-equivalences.lagda.md @@ -97,7 +97,6 @@ module _ universal-property-equiv f → is-equiv f is-equiv-is-equiv-precomp H = is-equiv-is-equiv-precomp-structured-type - ( λ l → l1 ⊔ l2) ( λ X → A → B) ( A , f) ( B , f) diff --git a/src/orthogonal-factorization-systems.lagda.md b/src/orthogonal-factorization-systems.lagda.md index b4d6443ccc..a167d57d4a 100644 --- a/src/orthogonal-factorization-systems.lagda.md +++ b/src/orthogonal-factorization-systems.lagda.md @@ -17,7 +17,7 @@ open import orthogonal-factorization-systems.double-lifts-families-of-elements p open import orthogonal-factorization-systems.double-negation-sheaves public open import orthogonal-factorization-systems.extensions-double-lifts-families-of-elements public open import orthogonal-factorization-systems.extensions-lifts-families-of-elements public -open import orthogonal-factorization-systems.extensions-of-maps public +open import orthogonal-factorization-systems.extensions-maps public open import orthogonal-factorization-systems.factorization-operations public open import orthogonal-factorization-systems.factorization-operations-function-classes public open import orthogonal-factorization-systems.factorization-operations-global-function-classes public @@ -28,7 +28,9 @@ open import orthogonal-factorization-systems.families-of-types-local-at-maps pub open import orthogonal-factorization-systems.fiberwise-orthogonal-maps public open import orthogonal-factorization-systems.function-classes public open import orthogonal-factorization-systems.functoriality-higher-modalities public +open import orthogonal-factorization-systems.functoriality-localizations-at-global-subuniverses public open import orthogonal-factorization-systems.functoriality-pullback-hom public +open import orthogonal-factorization-systems.functoriality-reflective-global-subuniverses public open import orthogonal-factorization-systems.global-function-classes public open import orthogonal-factorization-systems.higher-modalities public open import orthogonal-factorization-systems.identity-modality public @@ -37,7 +39,8 @@ open import orthogonal-factorization-systems.lawvere-tierney-topologies public open import orthogonal-factorization-systems.lifting-operations public open import orthogonal-factorization-systems.lifting-structures-on-squares public open import orthogonal-factorization-systems.lifts-families-of-elements public -open import orthogonal-factorization-systems.lifts-of-maps public +open import orthogonal-factorization-systems.lifts-maps public +open import orthogonal-factorization-systems.localizations-at-global-subuniverses public open import orthogonal-factorization-systems.localizations-at-maps public open import orthogonal-factorization-systems.localizations-at-subuniverses public open import orthogonal-factorization-systems.locally-small-modal-operators public @@ -55,6 +58,7 @@ open import orthogonal-factorization-systems.orthogonal-maps public open import orthogonal-factorization-systems.precomposition-lifts-families-of-elements public open import orthogonal-factorization-systems.pullback-hom public open import orthogonal-factorization-systems.raise-modalities public +open import orthogonal-factorization-systems.reflective-global-subuniverses public open import orthogonal-factorization-systems.reflective-modalities public open import orthogonal-factorization-systems.reflective-subuniverses public open import orthogonal-factorization-systems.regular-cd-structures public @@ -66,6 +70,7 @@ open import orthogonal-factorization-systems.types-colocal-at-maps public open import orthogonal-factorization-systems.types-local-at-maps public open import orthogonal-factorization-systems.types-separated-at-maps public open import orthogonal-factorization-systems.uniquely-eliminating-modalities public +open import orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses public open import orthogonal-factorization-systems.wide-function-classes public open import orthogonal-factorization-systems.wide-global-function-classes public open import orthogonal-factorization-systems.zero-modality public diff --git a/src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md index 54b283d49d..4c248d4992 100644 --- a/src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md @@ -90,5 +90,5 @@ module _ ## See also - [Lifts of families of elements](orthogonal-factorization-systems.lifts-families-of-elements.md) -- [Lifts of maps](orthogonal-factorization-systems.lifts-of-maps.md) +- [Lifts of maps](orthogonal-factorization-systems.lifts-maps.md) - [The universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md) diff --git a/src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md index a577431bf1..c590c46263 100644 --- a/src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md @@ -296,5 +296,5 @@ module _ ## See also - [Extensions of lifts of families of elements](orthogonal-factorization-systems.extensions-lifts-families-of-elements.md) -- [Extensions of maps](orthogonal-factorization-systems.extensions-of-maps.md) +- [Extensions of maps](orthogonal-factorization-systems.extensions-maps.md) - [The universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md) diff --git a/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md index 54bbaced86..8766921e92 100644 --- a/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md @@ -308,4 +308,4 @@ module _ ## See also - [Extensions of double lifts of families of elements](orthogonal-factorization-systems.extensions-double-lifts-families-of-elements.md) -- [Extensions of maps](orthogonal-factorization-systems.extensions-of-maps.md) +- [Extensions of maps](orthogonal-factorization-systems.extensions-maps.md) diff --git a/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md b/src/orthogonal-factorization-systems/extensions-maps.lagda.md similarity index 82% rename from src/orthogonal-factorization-systems/extensions-of-maps.lagda.md rename to src/orthogonal-factorization-systems/extensions-maps.lagda.md index 1c04e75a4b..ccdc296bd0 100644 --- a/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/extensions-maps.lagda.md @@ -1,7 +1,7 @@ # Extensions of maps ```agda -module orthogonal-factorization-systems.extensions-of-maps where +module orthogonal-factorization-systems.extensions-maps where ```
Imports @@ -9,13 +9,10 @@ module orthogonal-factorization-systems.extensions-of-maps where ```agda open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions -open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.embeddings open import foundation.equivalences -open import foundation.fibers-of-maps -open import foundation.function-extensionality open import foundation.function-types open import foundation.functoriality-dependent-function-types open import foundation.functoriality-dependent-pair-types @@ -25,7 +22,6 @@ open import foundation.homotopy-induction open import foundation.identity-types open import foundation.monomorphisms open import foundation.postcomposition-functions -open import foundation.precomposition-dependent-functions open import foundation.propositions open import foundation.sets open import foundation.structure-identity-principle @@ -37,8 +33,6 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.torsorial-type-families - -open import orthogonal-factorization-systems.types-local-at-maps ```
@@ -369,67 +363,34 @@ module _ is-prop-Π (λ x → is-set-P x (f x) (g (i x))) ``` -### Every map has a unique extension along `i` if and only if `P` is `i`-local +## Examples + +### Every map is an extension of itself along the identity ```agda module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (i : A → B) - {l : Level} (P : B → UU l) + {l1 l2 : Level} {A : UU l1} {P : A → UU l2} (f : (x : A) → P x) where - equiv-fiber'-precomp-extension-dependent-type : - (f : (x : A) → P (i x)) → - fiber' (precomp-Π i P) f ≃ extension-dependent-type i P f - equiv-fiber'-precomp-extension-dependent-type f = - equiv-tot (λ g → equiv-funext {f = f} {g ∘ i}) - - equiv-fiber-precomp-extension-dependent-type : - (f : (x : A) → P (i x)) → - fiber (precomp-Π i P) f ≃ extension-dependent-type i P f - equiv-fiber-precomp-extension-dependent-type f = - ( equiv-fiber'-precomp-extension-dependent-type f) ∘e - ( equiv-fiber (precomp-Π i P) f) - - equiv-is-contr-extension-dependent-type-is-local-dependent-type : - is-local-dependent-type i P ≃ - ((f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f)) - equiv-is-contr-extension-dependent-type-is-local-dependent-type = - ( equiv-Π-equiv-family - ( equiv-is-contr-equiv ∘ equiv-fiber-precomp-extension-dependent-type)) ∘e - ( equiv-is-contr-map-is-equiv (precomp-Π i P)) - - is-contr-extension-dependent-type-is-local-dependent-type : - is-local-dependent-type i P → - (f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f) - is-contr-extension-dependent-type-is-local-dependent-type = - map-equiv equiv-is-contr-extension-dependent-type-is-local-dependent-type - - is-local-dependent-type-is-contr-extension-dependent-type : - ((f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f)) → - is-local-dependent-type i P - is-local-dependent-type-is-contr-extension-dependent-type = - map-inv-equiv - equiv-is-contr-extension-dependent-type-is-local-dependent-type -``` - -## Examples - -### Every map is an extension of itself along the identity + is-extension-self : is-extension id f f + is-extension-self = refl-htpy -```agda -is-extension-self : - {l1 l2 : Level} {A : UU l1} {P : A → UU l2} - (f : (x : A) → P x) → is-extension id f f -is-extension-self _ = refl-htpy + extension-self : extension-dependent-type id P f + extension-self = f , is-extension-self ``` ### The identity is an extension of every map along themselves ```agda -is-extension-along-self : - {l1 l2 : Level} {A : UU l1} {B : UU l2} - (f : A → B) → is-extension f f id -is-extension-along-self _ = refl-htpy +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + is-extension-along-self : is-extension f f id + is-extension-along-self = refl-htpy + + extension-along-self : extension f f + extension-along-self = id , is-extension-along-self ``` ### Postcomposition of extensions by an embedding is an embedding @@ -454,5 +415,5 @@ module _ ## See also -- [`orthogonal-factorization-systems.lifts-of-maps`](orthogonal-factorization-systems.lifts-of-maps.md) +- [`orthogonal-factorization-systems.lifts-maps`](orthogonal-factorization-systems.lifts-maps.md) for the dual notion. diff --git a/src/orthogonal-factorization-systems/functoriality-localizations-at-global-subuniverses.lagda.md b/src/orthogonal-factorization-systems/functoriality-localizations-at-global-subuniverses.lagda.md new file mode 100644 index 0000000000..84d0582079 --- /dev/null +++ b/src/orthogonal-factorization-systems/functoriality-localizations-at-global-subuniverses.lagda.md @@ -0,0 +1,381 @@ +# Functoriality of localizations at global subuniverses + +```agda +module orthogonal-factorization-systems.functoriality-localizations-at-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.commuting-squares-of-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.extensions-types-global-subuniverses +open import foundation.extensions-types-subuniverses +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.global-subuniverses +open import foundation.homotopies +open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.precomposition-functions +open import foundation.propositions +open import foundation.retractions +open import foundation.retracts-of-maps +open import foundation.retracts-of-types +open import foundation.subuniverses +open import foundation.unit-type +open import foundation.universe-levels + +open import orthogonal-factorization-systems.localizations-at-global-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 +open import orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses +``` + +
+ +## Idea + +Given a [global subuniverse](foundation.global-subuniverses.md) `𝒫`, and two +`𝒫`-localizations `η_X : X → LX` and `η_Y : Y → LY` then for every map +`f : X → Y` there is a map `Lf : LX → LY` such that the square + +```text + f + X --------> Y + | | + | | + ∨ Lf ∨ + LX ------> LY +``` + +commutes. This construction preserves identity functions and composition of maps + +```text + L(g ∘ f) ~ Lg ∘ Lf and L(id) ~ id +``` + +## Definitions + +### The functorial action on maps of types with localizations + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} + (LX : localization-global-subuniverse 𝒫 l3 X) + (LY : extension-type-global-subuniverse 𝒫 l4 Y) + where + + map-localization-global-subuniverse' : + (X → Y) → + type-localization-global-subuniverse LX → + type-extension-type-global-subuniverse 𝒫 LY + map-localization-global-subuniverse' f = + map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LY)) + ( inclusion-extension-type-global-subuniverse 𝒫 LY ∘ f) + + eq-naturality-map-localization-global-subuniverse' : + (f : X → Y) → + map-localization-global-subuniverse' f ∘ + unit-localization-global-subuniverse LX = + inclusion-extension-type-global-subuniverse 𝒫 LY ∘ + f + eq-naturality-map-localization-global-subuniverse' f = + is-section-map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LY)) + ( inclusion-extension-type-global-subuniverse 𝒫 LY ∘ f) + + naturality-map-localization-global-subuniverse' : + (f : X → Y) → + coherence-square-maps + ( f) + ( unit-localization-global-subuniverse LX) + ( inclusion-extension-type-global-subuniverse 𝒫 LY) + ( map-localization-global-subuniverse' f) + naturality-map-localization-global-subuniverse' f = + htpy-eq (eq-naturality-map-localization-global-subuniverse' f) + +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} + (LX : localization-global-subuniverse 𝒫 l3 X) + (LY : localization-global-subuniverse 𝒫 l4 Y) + where + + map-localization-global-subuniverse : + (X → Y) → + type-localization-global-subuniverse LX → + type-localization-global-subuniverse LY + map-localization-global-subuniverse = + map-localization-global-subuniverse' 𝒫 LX + ( reflection-localization-global-subuniverse LY) + + eq-naturality-map-localization-global-subuniverse : + (f : X → Y) → + map-localization-global-subuniverse f ∘ + unit-localization-global-subuniverse LX = + unit-localization-global-subuniverse LY ∘ + f + eq-naturality-map-localization-global-subuniverse = + eq-naturality-map-localization-global-subuniverse' 𝒫 LX + ( reflection-localization-global-subuniverse LY) + + naturality-map-localization-global-subuniverse : + (f : X → Y) → + coherence-square-maps + ( f) + ( unit-localization-global-subuniverse LX) + ( unit-localization-global-subuniverse LY) + ( map-localization-global-subuniverse f) + naturality-map-localization-global-subuniverse = + naturality-map-localization-global-subuniverse' 𝒫 LX + ( reflection-localization-global-subuniverse LY) +``` + +### The functorial action on maps of types with localizations preserves homotopies + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} + (LX : localization-global-subuniverse 𝒫 l3 X) + (LY : extension-type-global-subuniverse 𝒫 l4 Y) + where + + abstract + preserves-htpy-map-localization-global-subuniverse' : + {f g : X → Y} → f ~ g → + map-localization-global-subuniverse' 𝒫 LX LY f ~ + map-localization-global-subuniverse' 𝒫 LX LY g + preserves-htpy-map-localization-global-subuniverse' {f} = + ind-htpy f + ( λ g _ → + map-localization-global-subuniverse' 𝒫 LX LY f ~ + map-localization-global-subuniverse' 𝒫 LX LY g) + ( refl-htpy) + +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} + (LX : localization-global-subuniverse 𝒫 l3 X) + (LY : localization-global-subuniverse 𝒫 l4 Y) + where + + preserves-htpy-map-localization-global-subuniverse : + {f g : X → Y} → f ~ g → + map-localization-global-subuniverse 𝒫 LX LY f ~ + map-localization-global-subuniverse 𝒫 LX LY g + preserves-htpy-map-localization-global-subuniverse = + preserves-htpy-map-localization-global-subuniverse' 𝒫 LX + ( reflection-localization-global-subuniverse LY) +``` + +## Properties + +### The functorial action on maps of types with localizations preserves identity functions + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX : localization-global-subuniverse 𝒫 l2 X) + where + + eq-preserves-id-map-localization-global-subuniverse : + map-localization-global-subuniverse 𝒫 LX LX id = id + eq-preserves-id-map-localization-global-subuniverse = + is-retraction-map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-localization-global-subuniverse LX)) + ( id) + + preserves-id-map-localization-global-subuniverse : + map-localization-global-subuniverse 𝒫 LX LX id ~ id + preserves-id-map-localization-global-subuniverse = + htpy-eq eq-preserves-id-map-localization-global-subuniverse +``` + +### The functorial action on maps of types with localizations preserves composition + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 l5 l6 : Level} + {X : UU l1} {Y : UU l2} {Z : UU l3} + (LX : localization-global-subuniverse 𝒫 l4 X) + (LY : localization-global-subuniverse 𝒫 l5 Y) + (LZ : extension-type-global-subuniverse 𝒫 l6 Z) + (g : Y → Z) (f : X → Y) + where + + eq-preserves-comp-map-localization-global-subuniverse' : + map-localization-global-subuniverse' 𝒫 LX LZ (g ∘ f) = + map-localization-global-subuniverse' 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f + eq-preserves-comp-map-localization-global-subuniverse' = + equational-reasoning + map-localization-global-subuniverse' 𝒫 LX LZ (g ∘ f) + = ( map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LZ)) + ( map-localization-global-subuniverse' 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f ∘ + unit-localization-global-subuniverse LX)) + by + ap + ( map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LZ))) + ( inv + ( ap + ( map-localization-global-subuniverse' 𝒫 LY LZ g ∘_) + ( eq-naturality-map-localization-global-subuniverse 𝒫 LX LY f) ∙ + ap + ( _∘ f) + ( eq-naturality-map-localization-global-subuniverse' 𝒫 LY LZ g))) + = ( map-localization-global-subuniverse' 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f) + by + ( is-retraction-map-inv-is-equiv + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LZ)) + ( map-localization-global-subuniverse' 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f)) + + preserves-comp-map-localization-global-subuniverse' : + map-localization-global-subuniverse' 𝒫 LX LZ (g ∘ f) ~ + map-localization-global-subuniverse' 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f + preserves-comp-map-localization-global-subuniverse' = + htpy-eq eq-preserves-comp-map-localization-global-subuniverse' + +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 l5 l6 : Level} + {X : UU l1} {Y : UU l2} {Z : UU l3} + (LX : localization-global-subuniverse 𝒫 l4 X) + (LY : localization-global-subuniverse 𝒫 l5 Y) + (LZ : localization-global-subuniverse 𝒫 l6 Z) + (g : Y → Z) (f : X → Y) + where + + eq-preserves-comp-map-localization-global-subuniverse : + map-localization-global-subuniverse 𝒫 LX LZ (g ∘ f) = + map-localization-global-subuniverse 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f + eq-preserves-comp-map-localization-global-subuniverse = + eq-preserves-comp-map-localization-global-subuniverse' 𝒫 + LX LY (reflection-localization-global-subuniverse LZ) g f + + preserves-comp-map-localization-global-subuniverse : + map-localization-global-subuniverse 𝒫 LX LZ (g ∘ f) ~ + map-localization-global-subuniverse 𝒫 LY LZ g ∘ + map-localization-global-subuniverse 𝒫 LX LY f + preserves-comp-map-localization-global-subuniverse = + preserves-comp-map-localization-global-subuniverse' 𝒫 + LX LY (reflection-localization-global-subuniverse LZ) g f +``` + +### Localizations are closed under retracts + +**Proof.** Let `X` and `Y` be types with localizations in a global subuniverse +`𝒫`. Moreover, assume `X` is a retract of `Y` and that `Y ∈ 𝒫`. then applying +the functoriality of localizations at global subuniverses we have a retract of +maps + +```text + i r + X --------> Y --------> X + | | | + | | | + ∨ Li ∨ Lr ∨ + LX -------> LY ------> LX +``` + +since the middle vertical map is an equivalence, so is the outer vertical map. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} + (LX : localization-global-subuniverse 𝒫 l3 X) + (LY : localization-global-subuniverse 𝒫 l4 Y) + (R : X retract-of Y) + where + + inclusion-retract-localization-global-subuniverse : + type-localization-global-subuniverse LX → + type-localization-global-subuniverse LY + inclusion-retract-localization-global-subuniverse = + map-localization-global-subuniverse 𝒫 LX LY (inclusion-retract R) + + map-retraction-retract-localization-global-subuniverse : + type-localization-global-subuniverse LY → + type-localization-global-subuniverse LX + map-retraction-retract-localization-global-subuniverse = + map-localization-global-subuniverse 𝒫 LY LX (map-retraction-retract R) + + is-retraction-map-retraction-retract-localization-global-subuniverse : + is-retraction + ( inclusion-retract-localization-global-subuniverse) + ( map-retraction-retract-localization-global-subuniverse) + is-retraction-map-retraction-retract-localization-global-subuniverse = + inv-htpy + ( preserves-comp-map-localization-global-subuniverse 𝒫 LX LY LX + ( map-retraction-retract R) + ( inclusion-retract R)) ∙h + preserves-htpy-map-localization-global-subuniverse 𝒫 LX LX + ( is-retraction-map-retraction-retract R) ∙h + preserves-id-map-localization-global-subuniverse 𝒫 LX + + retraction-retract-localization-global-subuniverse : + retraction + ( inclusion-retract-localization-global-subuniverse) + retraction-retract-localization-global-subuniverse = + map-retraction-retract-localization-global-subuniverse , + is-retraction-map-retraction-retract-localization-global-subuniverse + + retract-localization-global-subuniverse : + ( type-localization-global-subuniverse LX) retract-of + ( type-localization-global-subuniverse LY) + retract-localization-global-subuniverse = + ( map-localization-global-subuniverse 𝒫 LX LY (inclusion-retract R)) , + ( retraction-retract-localization-global-subuniverse) + + is-in-global-subuniverse-retract-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 Y → + is-in-global-subuniverse 𝒫 X + is-in-global-subuniverse-retract-localization-global-subuniverse H = + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LX) + ( up-localization-global-subuniverse LX) + ( is-equiv-retract-map-is-equiv' + ( unit-localization-global-subuniverse LX) + ( unit-localization-global-subuniverse LY) + ( R) + ( retract-localization-global-subuniverse) + ( naturality-map-localization-global-subuniverse 𝒫 LX LY + ( inclusion-retract R)) + ( naturality-map-localization-global-subuniverse 𝒫 LY LX + ( map-retraction-retract R)) + ( is-equiv-unit-is-in-global-subuniverse-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LY) + ( up-localization-global-subuniverse LY) + ( H))) +``` + +## References + +{{#bibliography}} {{#reference Rij19}} {{#reference CORS20}} diff --git a/src/orthogonal-factorization-systems/functoriality-reflective-global-subuniverses.lagda.md b/src/orthogonal-factorization-systems/functoriality-reflective-global-subuniverses.lagda.md new file mode 100644 index 0000000000..495d59bdb1 --- /dev/null +++ b/src/orthogonal-factorization-systems/functoriality-reflective-global-subuniverses.lagda.md @@ -0,0 +1,274 @@ +# Functoriality of reflective global subuniverses + +```agda +module orthogonal-factorization-systems.functoriality-reflective-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.commuting-squares-of-maps +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.extensions-types-global-subuniverses +open import foundation.extensions-types-subuniverses +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.global-subuniverses +open import foundation.homotopies +open import foundation.identity-types +open import foundation.precomposition-functions +open import foundation.propositions +open import foundation.retractions +open import foundation.retracts-of-maps +open import foundation.retracts-of-types +open import foundation.subuniverses +open import foundation.unit-type +open import foundation.universe-levels + +open import orthogonal-factorization-systems.functoriality-localizations-at-global-subuniverses +open import orthogonal-factorization-systems.localizations-at-global-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.reflective-global-subuniverses +open import orthogonal-factorization-systems.types-local-at-maps +open import orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses +``` + +
+ +## Idea + +Given a +[reflective global subuniverse](orthogonal-factorization-systems.reflective-global-subuniverses.md) +`𝒫` then for every map `f : X → Y` there is a map `Lf : LX → LY` such that the +square + +```text + f + X --------> Y + | | + | | + ∨ Lf ∨ + LX ------> LY +``` + +commutes. This construction preserves identity functions and composition of maps + +```text + L(g ∘ f) ~ Lg ∘ Lf and L(id) ~ id +``` + +## Definitions + +### The functorial action on maps of reflective global subuniverses + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {X : UU l1} {Y : UU l2} + where + + map-reflective-global-subuniverse : + (X → Y) → + type-reflection-reflective-global-subuniverse 𝒫 X → + type-reflection-reflective-global-subuniverse 𝒫 Y + map-reflective-global-subuniverse = + map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + + eq-naturality-map-reflective-global-subuniverse : + (f : X → Y) → + map-reflective-global-subuniverse f ∘ + unit-reflective-global-subuniverse 𝒫 X = + unit-reflective-global-subuniverse 𝒫 Y ∘ + f + eq-naturality-map-reflective-global-subuniverse = + eq-naturality-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + + naturality-map-reflective-global-subuniverse : + (f : X → Y) → + coherence-square-maps + ( f) + ( unit-reflective-global-subuniverse 𝒫 X) + ( unit-reflective-global-subuniverse 𝒫 Y) + ( map-reflective-global-subuniverse f) + naturality-map-reflective-global-subuniverse = + naturality-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) +``` + +### The functorial action on maps of reflective global subuniverses preserves homotopies + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {X : UU l1} {Y : UU l2} + where + + preserves-htpy-map-reflective-global-subuniverse : + {f g : X → Y} → f ~ g → + map-reflective-global-subuniverse 𝒫 f ~ + map-reflective-global-subuniverse 𝒫 g + preserves-htpy-map-reflective-global-subuniverse = + preserves-htpy-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) +``` + +## Properties + +### The functorial action on maps of types with localizations preserves identity functions + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 : Level} {X : UU l1} + where + + eq-preserves-id-map-reflective-global-subuniverse : + map-reflective-global-subuniverse 𝒫 (id' X) = id + eq-preserves-id-map-reflective-global-subuniverse = + eq-preserves-id-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + + preserves-id-map-reflective-global-subuniverse : + map-reflective-global-subuniverse 𝒫 (id' X) ~ id + preserves-id-map-reflective-global-subuniverse = + preserves-id-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) +``` + +### The functorial action on maps of types with localizations preserves composition + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} {Z : UU l3} + (g : Y → Z) (f : X → Y) + where + + eq-preserves-comp-map-reflective-global-subuniverse : + map-reflective-global-subuniverse 𝒫 (g ∘ f) = + map-reflective-global-subuniverse 𝒫 g ∘ + map-reflective-global-subuniverse 𝒫 f + eq-preserves-comp-map-reflective-global-subuniverse = + eq-preserves-comp-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( is-reflective-reflective-global-subuniverse 𝒫 Z) + ( g) + ( f) + + preserves-comp-map-reflective-global-subuniverse : + map-reflective-global-subuniverse 𝒫 (g ∘ f) ~ + map-reflective-global-subuniverse 𝒫 g ∘ + map-reflective-global-subuniverse 𝒫 f + preserves-comp-map-reflective-global-subuniverse = + preserves-comp-map-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( is-reflective-reflective-global-subuniverse 𝒫 Z) + ( g) + ( f) +``` + +### Reflective global subuniverses are closed under retracts + +This is Corollary 5.1.10 in {{#cite Rij19}}. + +**Proof.** Let `𝒫` be a reflective global subuniverse and `Y ∈ 𝒫`. Moreover, let +`X` be a retract of `Y`. then applying the functoriality of the reflective +subuniverse we have a retract of maps + +```text + i r + X --------> Y --------> X + | | | + | | | + ∨ Li ∨ Lr ∨ + LX -------> LY ------> LX +``` + +since the middle vertical map is an equivalence, so is the outer vertical map. + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {X : UU l1} {Y : UU l2} + (R : X retract-of Y) + where + + inclusion-retract-reflective-global-subuniverse : + type-reflection-reflective-global-subuniverse 𝒫 X → + type-reflection-reflective-global-subuniverse 𝒫 Y + inclusion-retract-reflective-global-subuniverse = + map-reflective-global-subuniverse 𝒫 (inclusion-retract R) + + map-retraction-retract-reflective-global-subuniverse : + type-reflection-reflective-global-subuniverse 𝒫 Y → + type-reflection-reflective-global-subuniverse 𝒫 X + map-retraction-retract-reflective-global-subuniverse = + map-reflective-global-subuniverse 𝒫 (map-retraction-retract R) + + is-retraction-map-retraction-retract-reflective-global-subuniverse : + is-retraction + ( inclusion-retract-reflective-global-subuniverse) + ( map-retraction-retract-reflective-global-subuniverse) + is-retraction-map-retraction-retract-reflective-global-subuniverse = + is-retraction-map-retraction-retract-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( R) + + retraction-retract-reflective-global-subuniverse : + retraction + ( inclusion-retract-reflective-global-subuniverse) + retraction-retract-reflective-global-subuniverse = + retraction-retract-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( R) + + retract-reflective-global-subuniverse : + ( type-reflection-reflective-global-subuniverse 𝒫 X) retract-of + ( type-reflection-reflective-global-subuniverse 𝒫 Y) + retract-reflective-global-subuniverse = + retract-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( R) + + is-in-reflective-global-subuniverse-retract : + is-in-reflective-global-subuniverse 𝒫 Y → + is-in-reflective-global-subuniverse 𝒫 X + is-in-reflective-global-subuniverse-retract = + is-in-global-subuniverse-retract-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 X) + ( is-reflective-reflective-global-subuniverse 𝒫 Y) + ( R) +``` + +## References + +{{#bibliography}} {{#reference Rij19}} {{#reference CORS20}} diff --git a/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md index 3482e34b6f..cd33ef10d2 100644 --- a/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md @@ -33,8 +33,8 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation -open import orthogonal-factorization-systems.extensions-of-maps -open import orthogonal-factorization-systems.lifts-of-maps +open import orthogonal-factorization-systems.extensions-maps +open import orthogonal-factorization-systems.lifts-maps open import orthogonal-factorization-systems.pullback-hom ``` diff --git a/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md index 51dfe0ed13..be59e74dee 100644 --- a/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md @@ -53,7 +53,7 @@ A family of elements equipped with a dependent lift is a elements equipped with a lift is a {{#concept "lifted family of elements"}}. To see how these families relate to -[lifts of maps](orthogonal-factorization-systems.lifts-of-maps.md), consider the +[lifts of maps](orthogonal-factorization-systems.lifts-maps.md), consider the lifting diagram ```text @@ -215,4 +215,4 @@ module _ ## See also - [Double lifts of families of elements](orthogonal-factorization-systems.double-lifts-families-of-elements.md) -- [Lifts of maps](orthogonal-factorization-systems.lifts-of-maps.md) +- [Lifts of maps](orthogonal-factorization-systems.lifts-maps.md) diff --git a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md b/src/orthogonal-factorization-systems/lifts-maps.lagda.md similarity index 97% rename from src/orthogonal-factorization-systems/lifts-of-maps.lagda.md rename to src/orthogonal-factorization-systems/lifts-maps.lagda.md index 779ab60222..9d2fe4746b 100644 --- a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-maps.lagda.md @@ -1,7 +1,7 @@ # Lifts of maps ```agda -module orthogonal-factorization-systems.lifts-of-maps where +module orthogonal-factorization-systems.lifts-maps where ```
Imports @@ -280,5 +280,5 @@ module _ ## See also -- [`orthogonal-factorization-systems.extensions-of-maps`](orthogonal-factorization-systems.extensions-of-maps.md) +- [`orthogonal-factorization-systems.extensions-maps`](orthogonal-factorization-systems.extensions-maps.md) for the dual notion. diff --git a/src/orthogonal-factorization-systems/localizations-at-global-subuniverses.lagda.md b/src/orthogonal-factorization-systems/localizations-at-global-subuniverses.lagda.md new file mode 100644 index 0000000000..f4ba57ae36 --- /dev/null +++ b/src/orthogonal-factorization-systems/localizations-at-global-subuniverses.lagda.md @@ -0,0 +1,690 @@ +# Localizations at global subuniverses + +```agda +module orthogonal-factorization-systems.localizations-at-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.cones-over-cospan-diagrams +open import foundation.constant-maps +open import foundation.contractible-types +open import foundation.cospan-diagrams +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.equivalences-arrows +open import foundation.extensions-types +open import foundation.extensions-types-global-subuniverses +open import foundation.fibers-of-maps +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-cartesian-product-types +open import foundation.functoriality-dependent-function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.global-subuniverses +open import foundation.homotopies +open import foundation.identity-types +open import foundation.postcomposition-functions +open import foundation.precomposition-dependent-functions +open import foundation.precomposition-functions +open import foundation.pullback-cones +open import foundation.pullbacks +open import foundation.sequential-limits +open import foundation.singleton-induction +open import foundation.subuniverses +open import foundation.type-theoretic-principle-of-choice +open import foundation.unit-type +open import foundation.universal-property-dependent-pair-types +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition + +open import orthogonal-factorization-systems.orthogonal-maps +open import orthogonal-factorization-systems.pullback-hom +open import orthogonal-factorization-systems.types-local-at-maps +open import orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses +``` + +
+ +## Idea + +Let `𝒫` be a [global subuniverse](foundation.global-subuniverses.md). Given a +type `X`, its +{{#concept "localization" Disambiguation="at a global subuniverse of types" Agda=localization-global-subuniverse}} +at `𝒫`, or **`𝒫`-localization**, is a type `LX` in `𝒫` and a map `η : X → LX` +such that every type in `𝒫` is +`η`-[local](orthogonal-factorization-systems.types-local-at-maps.md). I.e., for +every `Z` in `𝒫`, the [precomposition map](foundation-core.function-types.md) + +```text + - ∘ η : (LX → Z) → (X → Z) +``` + +is an [equivalence](foundation-core.equivalences.md). This is referred to as the +[universal property of localizations](orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses.md). + +## Definitions + +### The type of localizations of a type at a global subuniverse + +```agda +record + localization-global-subuniverse + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 : Level} (l2 : Level) (X : UU l1) : + UUω + where + + constructor make-localization-global-subuniverse + + field + reflection-localization-global-subuniverse : + extension-type-global-subuniverse 𝒫 l2 X + + extension-type-localization-global-subuniverse : + extension-type l2 X + extension-type-localization-global-subuniverse = + extension-type-extension-type-global-subuniverse 𝒫 + reflection-localization-global-subuniverse + + type-global-subuniverse-localization-global-subuniverse : + type-global-subuniverse 𝒫 l2 + type-global-subuniverse-localization-global-subuniverse = + type-global-subuniverse-extension-type-global-subuniverse 𝒫 + reflection-localization-global-subuniverse + + type-localization-global-subuniverse : UU l2 + type-localization-global-subuniverse = + type-extension-type-global-subuniverse 𝒫 + reflection-localization-global-subuniverse + + is-in-global-subuniverse-type-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 type-localization-global-subuniverse + is-in-global-subuniverse-type-localization-global-subuniverse = + is-in-global-subuniverse-type-extension-type-global-subuniverse 𝒫 + reflection-localization-global-subuniverse + + unit-localization-global-subuniverse : + X → type-localization-global-subuniverse + unit-localization-global-subuniverse = + inclusion-extension-type-global-subuniverse 𝒫 + reflection-localization-global-subuniverse + + field + up-localization-global-subuniverse : + universal-property-localization-global-subuniverse 𝒫 X + reflection-localization-global-subuniverse + +open localization-global-subuniverse public +``` + +## Properties + +### Localizations are essentially unique + +This is Proposition 5.1.2 in {{#cite Rij19}}. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {X : UU l1} + (LX : localization-global-subuniverse 𝒫 l2 X) + (LX' : localization-global-subuniverse 𝒫 l3 X) + where + + essentially-unique-type-localization-global-subuniverse : + type-localization-global-subuniverse LX ≃ + type-localization-global-subuniverse LX' + essentially-unique-type-localization-global-subuniverse = + essentially-unique-type-universal-property-localization-global-subuniverse 𝒫 + ( reflection-localization-global-subuniverse LX) + ( reflection-localization-global-subuniverse LX') + ( up-localization-global-subuniverse LX) + ( up-localization-global-subuniverse LX') + + essentially-unique-reflection-localization-global-subuniverse : + equiv-extension-type-global-subuniverse 𝒫 + ( reflection-localization-global-subuniverse LX) + ( reflection-localization-global-subuniverse LX') + essentially-unique-reflection-localization-global-subuniverse = + essentially-unique-extension-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LX) + ( reflection-localization-global-subuniverse LX') + ( up-localization-global-subuniverse LX) + ( up-localization-global-subuniverse LX') +``` + +### Localizations are unique + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX LX' : localization-global-subuniverse 𝒫 l2 X) + where + + unique-type-localization-global-subuniverse : + type-localization-global-subuniverse LX = + type-localization-global-subuniverse LX' + unique-type-localization-global-subuniverse = + unique-type-universal-property-localization-global-subuniverse 𝒫 + ( reflection-localization-global-subuniverse LX) + ( reflection-localization-global-subuniverse LX') + ( up-localization-global-subuniverse LX) + ( up-localization-global-subuniverse LX') + + unique-reflection-localization-global-subuniverse : + reflection-localization-global-subuniverse LX = + reflection-localization-global-subuniverse LX' + unique-reflection-localization-global-subuniverse = + unique-extension-type-universal-property-localization-global-subuniverse 𝒫 + ( reflection-localization-global-subuniverse LX) + ( reflection-localization-global-subuniverse LX') + ( up-localization-global-subuniverse LX) + ( up-localization-global-subuniverse LX') +``` + +### If the unit type has a `𝒫`-localization then it is in `𝒫` + +This is Corollary 5.1.4 of {{#cite Rij19}}. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + where + + is-equiv-unit-has-localization-global-subuniverse-unit : + {l : Level} (L : localization-global-subuniverse 𝒫 l unit) → + is-equiv (unit-localization-global-subuniverse L) + is-equiv-unit-has-localization-global-subuniverse-unit L = + is-equiv-unit-retraction-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse L) + ( up-localization-global-subuniverse L) + ( retraction-point (unit-localization-global-subuniverse L star)) + + is-in-global-subuniverse-has-localization-global-subuniverse-unit : + {l : Level} (L : localization-global-subuniverse 𝒫 l unit) → + is-in-global-subuniverse 𝒫 unit + is-in-global-subuniverse-has-localization-global-subuniverse-unit L = + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse L) + ( up-localization-global-subuniverse L) + ( is-equiv-unit-has-localization-global-subuniverse-unit L) +``` + +### If a contractible type has a `𝒫`-localization then it is in `𝒫` + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {A : UU l1} (H : is-contr A) + (LA : localization-global-subuniverse 𝒫 l2 A) + where + + is-equiv-unit-has-localization-global-subuniverse-is-contr : + is-equiv (unit-localization-global-subuniverse LA) + is-equiv-unit-has-localization-global-subuniverse-is-contr = + is-equiv-unit-retraction-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LA) + ( up-localization-global-subuniverse LA) + ( const (type-localization-global-subuniverse LA) (center H) , + contraction H) + + is-in-global-subuniverse-has-localization-global-subuniverse-is-contr : + is-in-global-subuniverse 𝒫 A + is-in-global-subuniverse-has-localization-global-subuniverse-is-contr = + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LA) + ( up-localization-global-subuniverse LA) + ( is-equiv-unit-has-localization-global-subuniverse-is-contr) +``` + +### Dependent sums of dependent types over localizations + +Given a localization `η : X → LX` with respect to a global subuniverse `𝒫` and a +dependent type `P` over `LX`, then if the dependent sum `Σ (l : LX), P l` is in +`𝒫` the dependent type `P` is `η`-local. + +This is stated as Proposition 5.1.5 in {{#cite Rij19}} and as Proposition 2.8 in +{{#cite CORS20}}. + +**Proof.** Consider the following diagram. + +```text + - ∘ η + (Π (l : LX), P l) --------> (Π (x : X), P (η x)) + | | + | | + | | + | | + ∨ - ∘ η ∨ + (LX → Σ (l : LX), P l) ------> (X → Σ (l : LX), P l) + | | + | | + pr1 ∘ - | | pr1 ∘ - + | | + ∨ - ∘ η ∨ + id ∈ (LX → LX) -------------------> (X → LX) +``` + +The bottom horizontal map is an equivalence by the universal property of the +localization and the top vertical maps are fiber inclusions. Therefore, the +middle horizontal map is an equivalence and the bottom square is a pullback if +and only if the the top horizontal map is an equivalence. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {X : UU l1} + (LX : localization-global-subuniverse 𝒫 l2 X) + {P : type-localization-global-subuniverse LX → UU l3} + where + + is-local-dependent-type-is-in-global-subuniverse-Σ-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (Σ (type-localization-global-subuniverse LX) P) → + is-local-dependent-type (unit-localization-global-subuniverse LX) P + is-local-dependent-type-is-in-global-subuniverse-Σ-localization-global-subuniverse + H = + is-equiv-target-is-equiv-source-equiv-arrow _ _ + ( equiv-Π-equiv-family (equiv-fiber-pr1 P) , + equiv-Π-equiv-family + ( equiv-fiber-pr1 P ∘ unit-localization-global-subuniverse LX) , + refl-htpy) + ( is-orthogonal-fiber-condition-right-map-is-orthogonal-pullback-condition + ( unit-localization-global-subuniverse LX) + ( pr1 {B = P}) + ( is-pullback-is-equiv-horizontal-maps _ _ + ( cone-pullback-hom (unit-localization-global-subuniverse LX) pr1) + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-localization-global-subuniverse LX)) + ( up-localization-global-subuniverse LX + ( Σ (type-localization-global-subuniverse LX) P , H))) + ( id)) +``` + +> This formalized proof can be made more elegant by formalizing the concept of +> type families that are orthogonal to maps. + +**Alternative proof.** We have an equivalence of arrows + +```text + precomp η (Σ LX P) + (B → Σ LX P) ------------------------------> (A → Σ LX P) + | | + ~ | | ~ + ∨ ∨ + Σ (h : B → LX) ((y : B) → P (h y)) --------> Σ (h : A → LX) ((x : A) → P (h x)). + map-Σ _ (precomp η LX) (λ h → precomp-Π η (P ∘ h)) +``` + +and the functoriality of dependent pair types decomposes as a composite + +```text + map-Σ _ (precomp η LX) (λ h → precomp-Π η (P ∘ h)) ~ + map-Σ-map-base _ (precomp η LX) ∘ tot (λ h → precomp-Π η (P ∘ h)). +``` + +Since `LX` is `𝒫`-local the map `map-Σ-map-base _ (precomp η LX)` is an +equivalence. Therefore, `precomp η (Σ LX P)` is an equivalence if and only if +`λ h → precomp-Π η (P ∘ h)` is a fiberwise equivalence. In particular, if +`precomp η (Σ LX P)` is an equivalence then `precomp-Π η P` is an equivalence. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {X : UU l1} + (LX : localization-global-subuniverse 𝒫 l2 X) + {P : type-localization-global-subuniverse LX → UU l3} + where + + is-local-dependent-type-is-in-global-subuniverse-Σ-localization-global-subuniverse' : + is-in-global-subuniverse 𝒫 (Σ (type-localization-global-subuniverse LX) P) → + is-local-dependent-type (unit-localization-global-subuniverse LX) P + is-local-dependent-type-is-in-global-subuniverse-Σ-localization-global-subuniverse' + H = + is-fiberwise-equiv-is-equiv-map-Σ + ( λ h → (x : X) → P (h x)) + ( precomp + ( unit-localization-global-subuniverse LX) + ( type-localization-global-subuniverse LX)) + ( λ h → precomp-Π (unit-localization-global-subuniverse LX) (P ∘ h)) + ( up-localization-global-subuniverse LX + ( type-global-subuniverse-localization-global-subuniverse LX)) + ( is-equiv-target-is-equiv-source-equiv-arrow + ( precomp + ( unit-localization-global-subuniverse LX) + ( Σ (type-localization-global-subuniverse LX) P)) + ( map-Σ + ( λ h → (x : X) → P (h x)) + ( precomp + ( unit-localization-global-subuniverse LX) + ( type-localization-global-subuniverse LX)) + ( λ h → precomp-Π (unit-localization-global-subuniverse LX) (P ∘ h))) + ( distributive-Π-Σ , distributive-Π-Σ , coherence-precomp-Σ) + ( up-localization-global-subuniverse LX + ( Σ (type-localization-global-subuniverse LX) P , H))) + ( id) +``` + +### Dependent products of `𝒫`-types that have a `𝒫`-localization are `𝒫`-types + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} + (K : (x : A) → is-in-global-subuniverse 𝒫 (B x)) + (LE : localization-global-subuniverse 𝒫 l3 ((x : A) → B x)) + where + + is-in-global-subuniverse-Π-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 ((x : A) → B x) + is-in-global-subuniverse-Π-localization-global-subuniverse = + is-in-global-subuniverse-is-local-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LE) + ( up-localization-global-subuniverse LE) + ( distributive-Π-is-local + ( unit-localization-global-subuniverse LE) + ( B) + ( λ x → up-localization-global-subuniverse LE (B x , K x))) +``` + +### Exponentials of `𝒫`-types that have a `𝒫`-localization are `𝒫`-types + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} + (K : is-in-global-subuniverse 𝒫 B) + (LE : localization-global-subuniverse 𝒫 l3 (A → B)) + where + + is-in-global-subuniverse-exponential-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (A → B) + is-in-global-subuniverse-exponential-localization-global-subuniverse = + is-in-global-subuniverse-Π-localization-global-subuniverse 𝒫 (λ _ → K) LE +``` + +### Localizations of types of homotopies + +Assume given a `𝒫`-localization `η : X → LX` and two maps `f g : LX → Y` where +`Y ∈ 𝒫`, then the right whiskering map `- ·r η : (g ~ h) → (g ∘ η ~ h ∘ η)` is +an equivalence. + +This is Lemma 5.1.18 in {{#cite Rij19}}. + +**Proof.** We have an equivalence of maps + +```text + ap (- ∘ η) + g = h -----------> g ∘ η = h ∘ η + | | + htpy-eq | ~ ~ | htpy-eq + ∨ ∨ + g ~ h ------------> g ∘ η ~ h ∘ η + - ·r η +``` + +and the map `- ∘ η` is an embedding since `Y` is `η`-local by the universal +property, hence the top horizontal map is an equivalence and so the bottom map +is as well. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {X : UU l1} {Y : UU l3} + (LX : localization-global-subuniverse 𝒫 l2 X) + (H : is-in-global-subuniverse 𝒫 Y) + where + + is-equiv-right-whisker-unit-localization-global-subuniverse : + {g h : type-localization-global-subuniverse LX → Y} → + is-equiv + ( λ H → + right-whisker-comp {g = g} {h} H + ( unit-localization-global-subuniverse LX)) + is-equiv-right-whisker-unit-localization-global-subuniverse {g} {h} = + is-equiv-target-is-equiv-source-equiv-arrow + ( ap (precomp (unit-localization-global-subuniverse LX) Y)) + ( _·r (unit-localization-global-subuniverse LX)) + ( equiv-funext , + equiv-funext , + coherence-htpy-eq-ap-precomp' (unit-localization-global-subuniverse LX)) + (is-emb-is-equiv (up-localization-global-subuniverse LX (Y , H)) g h) +``` + +### A type is a `𝒫`-type if it has a `𝒫`-localization and is a pullback of types in `𝒫` + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 l5 : Level} + {𝒮 : cospan-diagram l1 l2 l3} + (c : pullback-cone 𝒮 l4) + (LC : localization-global-subuniverse 𝒫 l5 (domain-pullback-cone 𝒮 c)) + where + + map-compute-cone-pullback-localization-global-subuniverse : + cone + ( left-map-cospan-diagram 𝒮) + ( right-map-cospan-diagram 𝒮) + ( type-localization-global-subuniverse LC) → + cone + ( left-map-cospan-diagram 𝒮) + ( right-map-cospan-diagram 𝒮) + ( domain-pullback-cone 𝒮 c) + map-compute-cone-pullback-localization-global-subuniverse c' = + cone-map + ( left-map-cospan-diagram 𝒮) + ( right-map-cospan-diagram 𝒮) + ( c') + ( unit-localization-global-subuniverse LC) + + is-equiv-map-compute-cone-pullback-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (cospanning-type-cospan-diagram 𝒮) → + is-in-global-subuniverse 𝒫 (left-type-cospan-diagram 𝒮) → + is-in-global-subuniverse 𝒫 (right-type-cospan-diagram 𝒮) → + is-equiv map-compute-cone-pullback-localization-global-subuniverse + is-equiv-map-compute-cone-pullback-localization-global-subuniverse x a b = + is-equiv-map-Σ _ + ( up-localization-global-subuniverse LC + ( left-type-cospan-diagram 𝒮 , a)) + ( λ _ → + is-equiv-map-Σ _ + ( up-localization-global-subuniverse LC + ( right-type-cospan-diagram 𝒮 , b)) + ( λ _ → + is-equiv-right-whisker-unit-localization-global-subuniverse 𝒫 LC x)) + + is-in-global-subuniverse-pullback-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (cospanning-type-cospan-diagram 𝒮) → + is-in-global-subuniverse 𝒫 (left-type-cospan-diagram 𝒮) → + is-in-global-subuniverse 𝒫 (right-type-cospan-diagram 𝒮) → + is-in-global-subuniverse 𝒫 (domain-pullback-cone 𝒮 c) + is-in-global-subuniverse-pullback-localization-global-subuniverse x a b = + is-in-global-subuniverse-is-local-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( reflection-localization-global-subuniverse LC) + ( up-localization-global-subuniverse LC) + ( is-equiv-source-is-equiv-target-equiv-arrow + ( precomp + ( unit-localization-global-subuniverse LC) + ( domain-pullback-cone 𝒮 c)) + ( map-compute-cone-pullback-localization-global-subuniverse) + ( ( ( cone-map + ( left-map-cospan-diagram 𝒮) + ( right-map-cospan-diagram 𝒮) + ( cone-pullback-cone 𝒮 c)) , + ( up-pullback-cone 𝒮 c (type-localization-global-subuniverse LC))) , + ( ( cone-map + ( left-map-cospan-diagram 𝒮) + ( right-map-cospan-diagram 𝒮) + ( cone-pullback-cone 𝒮 c)) , + ( up-pullback-cone 𝒮 c ( domain-pullback-cone 𝒮 c))) , + ( refl-htpy)) + ( is-equiv-map-compute-cone-pullback-localization-global-subuniverse + ( x) + ( a) + ( b))) +``` + +### Cartesian products of `𝒫`-types that have a `𝒫`-localization are `𝒫`-types + +Let `𝒫` be a global subuniverse such that `unit` is a `𝒫`-type. Then if `A` and +`B` are `𝒫`-types and their cartesian product `A × B` has a `𝒫`-localization, +then `A × B` is a `𝒫`-type. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + (U : is-in-global-subuniverse 𝒫 unit) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} + (H : is-in-global-subuniverse 𝒫 A) + (K : is-in-global-subuniverse 𝒫 B) + (LI : localization-global-subuniverse 𝒫 l3 (A × B)) + where + + is-in-global-subuniverse-cartesian-product-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (A × B) + is-in-global-subuniverse-cartesian-product-localization-global-subuniverse = + is-in-global-subuniverse-pullback-localization-global-subuniverse 𝒫 + ( pullback-cone-cartesian-product) + ( LI) + ( U) + ( H) + ( K) +``` + +### Identity types of `𝒫`-types that have a `𝒫`-localization are `𝒫`-types + +Let `𝒫` be a global subuniverse such that `unit` is a `𝒫`-type. Now assume given +a `𝒫`-type `A` with elements `x` and `y` such that `x = y` has a +`𝒫`-localization, then `x = y` is a `𝒫`-type. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + (U : is-in-global-subuniverse 𝒫 unit) + {l1 l2 : Level} {A : UU l1} {x y : A} + (H : is-in-global-subuniverse 𝒫 A) + (LI : localization-global-subuniverse 𝒫 l2 (x = y)) + where + + is-in-global-subuniverse-Id-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 (x = y) + is-in-global-subuniverse-Id-localization-global-subuniverse = + is-in-global-subuniverse-pullback-localization-global-subuniverse 𝒫 + ( pullback-cone-Id x y) + ( LI) + ( H) + ( U) + ( U) +``` + +### Sequential limits of `𝒫`-types that have a `𝒫`-localization are `𝒫`-types + +> This remains to be formalized. + +### Cartesian products of `𝒫`-localizations + +Let `𝒫` be a global subuniverse, then if `η_A : A → LA` and `η_B : B → LB` are +`𝒫`-localizations such that `LA × LB` is a `𝒫`-type and `𝒫` is closed under +exponentiating by `LB`, then `η_A × η_B : A × B → LA × LB` is a `𝒫`-localization +as well. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} + (LA : localization-global-subuniverse 𝒫 l3 A) + (LB : localization-global-subuniverse 𝒫 l4 B) + (exp-LB : + {l : Level} + (Z : type-global-subuniverse 𝒫 l) → + is-in-global-subuniverse 𝒫 + ( type-localization-global-subuniverse LB → + inclusion-global-subuniverse 𝒫 Z)) + (H : + is-in-global-subuniverse 𝒫 + ( type-localization-global-subuniverse LA × + type-localization-global-subuniverse LB)) + where + + type-cartesian-product-localization-global-subuniverse : + UU (l3 ⊔ l4) + type-cartesian-product-localization-global-subuniverse = + type-localization-global-subuniverse LA × + type-localization-global-subuniverse LB + + unit-cartesian-product-localization-global-subuniverse : + A × B → type-cartesian-product-localization-global-subuniverse + unit-cartesian-product-localization-global-subuniverse = + map-product + ( unit-localization-global-subuniverse LA) + ( unit-localization-global-subuniverse LB) + + reflection-cartesian-product-localization-global-subuniverse : + extension-type-global-subuniverse 𝒫 (l3 ⊔ l4) (A × B) + reflection-cartesian-product-localization-global-subuniverse = + ( type-cartesian-product-localization-global-subuniverse , H) , + ( unit-cartesian-product-localization-global-subuniverse) + + up-cartesian-product-localization-global-subuniverse : + universal-property-localization-global-subuniverse 𝒫 (A × B) + ( reflection-cartesian-product-localization-global-subuniverse) + up-cartesian-product-localization-global-subuniverse Z = + is-equiv-source-is-equiv-target-equiv-arrow + ( precomp + ( unit-cartesian-product-localization-global-subuniverse) + ( inclusion-global-subuniverse 𝒫 Z)) + ( λ f → + ( precomp + ( unit-localization-global-subuniverse LB) + ( inclusion-global-subuniverse 𝒫 Z)) ∘ + ( precomp + ( unit-localization-global-subuniverse LA) + ( type-localization-global-subuniverse LB → + inclusion-global-subuniverse 𝒫 Z) + ( f))) + ( equiv-ev-pair , equiv-ev-pair , refl-htpy) + ( is-equiv-comp + ( postcomp A + ( precomp + ( unit-localization-global-subuniverse LB) + ( inclusion-global-subuniverse 𝒫 Z))) + ( precomp + ( unit-localization-global-subuniverse LA) + ( type-localization-global-subuniverse LB → + inclusion-global-subuniverse 𝒫 Z)) + ( up-localization-global-subuniverse LA + ( ( type-localization-global-subuniverse LB → + inclusion-global-subuniverse 𝒫 Z) , + ( exp-LB Z))) + ( is-equiv-postcomp-is-equiv + ( precomp + ( unit-localization-global-subuniverse LB) + ( inclusion-global-subuniverse 𝒫 Z)) + ( up-localization-global-subuniverse LB Z) + ( A))) + + cartesian-product-localization-global-subuniverse : + localization-global-subuniverse 𝒫 (l3 ⊔ l4) (A × B) + reflection-localization-global-subuniverse + cartesian-product-localization-global-subuniverse = + reflection-cartesian-product-localization-global-subuniverse + up-localization-global-subuniverse + cartesian-product-localization-global-subuniverse = + up-cartesian-product-localization-global-subuniverse +``` + +## References + +{{#bibliography}} diff --git a/src/orthogonal-factorization-systems/null-types.lagda.md b/src/orthogonal-factorization-systems/null-types.lagda.md index 4a8aa80c7b..d47b2a74fd 100644 --- a/src/orthogonal-factorization-systems/null-types.lagda.md +++ b/src/orthogonal-factorization-systems/null-types.lagda.md @@ -7,6 +7,7 @@ module orthogonal-factorization-systems.null-types where
Imports ```agda +open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.diagonal-maps-of-types @@ -14,6 +15,8 @@ open import foundation.equivalences open import foundation.equivalences-arrows open import foundation.fibers-of-maps open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types open import foundation.homotopies open import foundation.identity-types open import foundation.logical-equivalences @@ -21,9 +24,12 @@ open import foundation.postcomposition-functions open import foundation.precomposition-dependent-functions open import foundation.precomposition-functions open import foundation.propositions +open import foundation.retractions open import foundation.retracts-of-maps open import foundation.retracts-of-types +open import foundation.sections open import foundation.type-arithmetic-unit-type +open import foundation.type-theoretic-principle-of-choice open import foundation.unit-type open import foundation.universal-property-equivalences open import foundation.universal-property-family-of-fibers-of-maps @@ -238,3 +244,29 @@ is-null-is-contr {A = A} B is-contr-A = is-null-is-local-terminal-map B A ( is-local-is-contr (terminal-map B) A is-contr-A) ``` + +### Null types are closed under dependent sums + +This is Theorem 2.19 in {{#cite RSS20}}. + +```agda +module _ + {l1 l2 l3 : Level} {Y : UU l1} {A : UU l2} {B : A → UU l3} + (is-null-A : is-null Y A) + (is-null-B : (x : A) → is-null Y (B x)) + where + + is-null-Σ : is-null Y (Σ A B) + is-null-Σ = + is-equiv-map-equiv + ( equivalence-reasoning + Σ A B + ≃ Σ (Y → A) (λ f → (x : Y) → B (f x)) + by + equiv-Σ + ( λ f → (x : Y) → B (f x)) + ( diagonal-exponential A Y , is-null-A) + ( λ x → diagonal-exponential (B x) Y , is-null-B x) + ≃ (Y → Σ A B) + by inv-distributive-Π-Σ) +``` diff --git a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md index bec501ea4d..ec37ad84de 100644 --- a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md @@ -61,8 +61,8 @@ The map `f : A → B` is said to be {{#concept "orthogonal" Disambiguation="maps of types" Agda=is-orthogonal}} to `g : X → Y` if any of the following equivalent definitions hold -1. Their [pullback-hom](orthogonal-factorization-systems.pullback-hom.md) is an - equivalence. +1. Their [pullback-hom](orthogonal-factorization-systems.pullback-hom.md) + `f ⋔ g` is an equivalence. 2. There is a [unique](foundation-core.contractible-types.md) [lifting operation](orthogonal-factorization-systems.lifting-operations.md) @@ -108,6 +108,8 @@ module _ is-orthogonal : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-orthogonal = is-equiv (pullback-hom f g) + infix 6 _⊥_ + _⊥_ : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) _⊥_ = is-orthogonal is-prop-is-orthogonal : is-prop is-orthogonal @@ -320,6 +322,28 @@ module _ ### Being orthogonal means satisfying the fiber condition for orthogonal maps +**Proof.** The exponential square is a pullback if and only if the induced map +on fibers of the vertical maps + +```text + fiber (g ∘ -) h → fiber (g ∘ -) (h ∘ f) +``` + +is an equivalence for all `h`, and this map is equivalent to the relevant fiber +map + +```text + ~ + (Π (b : B), fiber g (h b)) ----------> fiber (g ∘ -) h + | | + | | + ∨ ~ ∨ + (Π (a : A) → (fiber g (h (f a)))) ----> fiber (g ∘ -) (h ∘ f), +``` + +hence the fiber condition is satisified if and only if `f` and `g` are +orthogonal. + ```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index c905593052..4181ff3a64 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -524,6 +524,17 @@ module _ ### Computing the fiber map between the vertical maps in the pullback-hom square +We have an equivalence of arrows + +```text + ~ + (Π (b : B), fiber g (h b)) ----------> fiber (g ∘ -) h + | | + | | + ∨ ~ ∨ + (Π (a : A) → (fiber g (h (f a)))) ----> fiber (g ∘ -) (h ∘ f) +``` + ```agda module _ {l1 l2 l3 l4 : Level} @@ -549,7 +560,7 @@ module _ ( postcomp A g) ( precomp f Y h) ( refl) - ( compute-eq-htpy-ap-precomp f (pr2 (map-distributive-Π-Σ H))) + ( coherence-eq-htpy-ap-precomp f (pr2 (map-distributive-Π-Σ H))) ``` ## Table of files about pullbacks diff --git a/src/orthogonal-factorization-systems/reflective-global-subuniverses.lagda.md b/src/orthogonal-factorization-systems/reflective-global-subuniverses.lagda.md new file mode 100644 index 0000000000..787a963051 --- /dev/null +++ b/src/orthogonal-factorization-systems/reflective-global-subuniverses.lagda.md @@ -0,0 +1,477 @@ +# Reflective global subuniverses + +```agda +module orthogonal-factorization-systems.reflective-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.cones-over-cospan-diagrams +open import foundation.contractible-types +open import foundation.cospan-diagrams +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.equivalences-arrows +open import foundation.extensions-types-global-subuniverses +open import foundation.extensions-types-subuniverses +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.global-subuniverses +open import foundation.identity-types +open import foundation.precomposition-functions +open import foundation.propositions +open import foundation.pullback-cones +open import foundation.retractions +open import foundation.subuniverses +open import foundation.unit-type +open import foundation.universal-property-pullbacks +open import foundation.universe-levels + +open import orthogonal-factorization-systems.localizations-at-global-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 +open import orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses +``` + +
+ +## Idea + +A +{{#concept "reflective global subuniverse" Disambiguation="of types" Agda=reflective-global-subuniverse}}, +or **localization**, is a +[global subuniverse](foundation.global-subuniverses.md) `𝒫` together with a +reflecting operator `L` on types giving +[localizations](orthogonal-factorization-systems.localizations-at-global-subuniverses.md) +at `𝒫`. I.e., for every type `A` there is a type `LA ∈ 𝒫` equipped with a _unit +map_ + +```text + η : A → LA +``` + +satisfying the +[universal property of localizations](orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses.md). +This states that every type in `𝒫` is +[local](orthogonal-factorization-systems.types-local-at-maps.md) at the unit +`η`. As a consequence, the local types with respect to `L` are precisely the +types in `𝒫`. + +## Definitions + +### The predicate on global subuniverses of being reflective + +```agda +is-reflective-global-subuniverse : + {α : Level → Level} → (Level → Level) → global-subuniverse α → UUω +is-reflective-global-subuniverse β 𝒫 = + {l : Level} (X : UU l) → localization-global-subuniverse 𝒫 (β l) X + +module _ + {α β : Level → Level} + (𝒫 : global-subuniverse α) + (H : is-reflective-global-subuniverse β 𝒫) + where + + reflection-is-reflective-global-subuniverse : + {l : Level} (X : UU l) → extension-type-global-subuniverse 𝒫 (β l) X + reflection-is-reflective-global-subuniverse X = + reflection-localization-global-subuniverse (H X) + + type-reflection-is-reflective-global-subuniverse : + {l : Level} → UU l → UU (β l) + type-reflection-is-reflective-global-subuniverse X = + type-localization-global-subuniverse (H X) + + is-in-global-subuniverse-type-reflection-is-reflective-global-subuniverse : + {l : Level} (X : UU l) → + is-in-global-subuniverse 𝒫 + ( type-reflection-is-reflective-global-subuniverse X) + is-in-global-subuniverse-type-reflection-is-reflective-global-subuniverse X = + is-in-global-subuniverse-type-localization-global-subuniverse (H X) + + unit-is-reflective-global-subuniverse : + {l : Level} (X : UU l) → + X → type-reflection-is-reflective-global-subuniverse X + unit-is-reflective-global-subuniverse X = + unit-localization-global-subuniverse (H X) + + up-localization-is-reflective-global-subuniverse : + {l : Level} (X : UU l) → + universal-property-localization-global-subuniverse 𝒫 X + ( reflection-is-reflective-global-subuniverse X) + up-localization-is-reflective-global-subuniverse X = + up-localization-global-subuniverse (H X) +``` + +### Reflective global subuniverses + +```agda +record + reflective-global-subuniverse (α β : Level → Level) : UUω + where + + field + global-subuniverse-reflective-global-subuniverse : + global-subuniverse α + + is-reflective-reflective-global-subuniverse : + is-reflective-global-subuniverse β + global-subuniverse-reflective-global-subuniverse +``` + +```agda + subuniverse-reflective-global-subuniverse : (l : Level) → subuniverse l (α l) + subuniverse-reflective-global-subuniverse = + subuniverse-global-subuniverse + global-subuniverse-reflective-global-subuniverse + + is-closed-under-equiv-reflective-global-subuniverse : + {l1 l2 : Level} → + is-closed-under-equiv-subuniverses α + subuniverse-reflective-global-subuniverse + l1 + l2 + is-closed-under-equiv-reflective-global-subuniverse = + is-closed-under-equiv-global-subuniverse + global-subuniverse-reflective-global-subuniverse + + is-in-reflective-global-subuniverse : {l : Level} → UU l → UU (α l) + is-in-reflective-global-subuniverse = + is-in-global-subuniverse global-subuniverse-reflective-global-subuniverse + + is-prop-is-in-reflective-global-subuniverse : + {l : Level} (X : UU l) → is-prop (is-in-reflective-global-subuniverse X) + is-prop-is-in-reflective-global-subuniverse = + is-prop-is-in-global-subuniverse + global-subuniverse-reflective-global-subuniverse + + type-reflective-global-subuniverse : (l : Level) → UU (α l ⊔ lsuc l) + type-reflective-global-subuniverse = + type-global-subuniverse + global-subuniverse-reflective-global-subuniverse + + inclusion-reflective-global-subuniverse : + {l : Level} → type-reflective-global-subuniverse l → UU l + inclusion-reflective-global-subuniverse = + inclusion-global-subuniverse + global-subuniverse-reflective-global-subuniverse + + type-reflection-reflective-global-subuniverse : + {l : Level} → UU l → UU (β l) + type-reflection-reflective-global-subuniverse = + type-reflection-is-reflective-global-subuniverse + global-subuniverse-reflective-global-subuniverse + is-reflective-reflective-global-subuniverse + + is-in-global-subuniverse-type-reflection-reflective-global-subuniverse : + {l : Level} (X : UU l) → + is-in-reflective-global-subuniverse + ( type-reflection-reflective-global-subuniverse X) + is-in-global-subuniverse-type-reflection-reflective-global-subuniverse = + is-in-global-subuniverse-type-reflection-is-reflective-global-subuniverse + global-subuniverse-reflective-global-subuniverse + is-reflective-reflective-global-subuniverse + + reflection-reflective-global-subuniverse : + {l : Level} (X : UU l) → + extension-type-global-subuniverse + global-subuniverse-reflective-global-subuniverse + ( β l) + ( X) + reflection-reflective-global-subuniverse = + reflection-is-reflective-global-subuniverse + global-subuniverse-reflective-global-subuniverse + is-reflective-reflective-global-subuniverse + + unit-reflective-global-subuniverse : + {l : Level} (X : UU l) → + X → type-reflection-reflective-global-subuniverse X + unit-reflective-global-subuniverse = + unit-is-reflective-global-subuniverse + global-subuniverse-reflective-global-subuniverse + is-reflective-reflective-global-subuniverse + + up-localization-reflective-global-subuniverse : + {l : Level} (X : UU l) → + universal-property-localization-global-subuniverse + global-subuniverse-reflective-global-subuniverse + ( X) + ( reflection-reflective-global-subuniverse X) + up-localization-reflective-global-subuniverse = + up-localization-is-reflective-global-subuniverse + global-subuniverse-reflective-global-subuniverse + is-reflective-reflective-global-subuniverse + +open reflective-global-subuniverse public +``` + +## Properties + +### A type is in a reflective subuniverse if and only if it is local at reflections + +```agda +module _ + {α β : Level → Level} + (𝒫 : reflective-global-subuniverse α β) + where + + is-in-reflective-global-subuniverse-is-local-domain : + {l1 : Level} {A : UU l1} → + is-local (unit-reflective-global-subuniverse 𝒫 A) A → + is-in-reflective-global-subuniverse 𝒫 A + is-in-reflective-global-subuniverse-is-local-domain {A = A} = + is-in-global-subuniverse-is-local-type-universal-property-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( reflection-reflective-global-subuniverse 𝒫 A) + ( up-localization-reflective-global-subuniverse 𝒫 A) + + is-in-reflective-global-subuniverse-is-local : + {l1 : Level} {A : UU l1} → + ( {l : Level} (X : UU l) → + is-local (unit-reflective-global-subuniverse 𝒫 X) A) → + is-in-reflective-global-subuniverse 𝒫 A + is-in-reflective-global-subuniverse-is-local {A = A} H = + is-in-reflective-global-subuniverse-is-local-domain (H A) +``` + +### A type `X` is in a reflective subuniverse if and only if the unit is an equivalence at `X` + +```agda +module _ + {α β : Level → Level} + (𝒫 : reflective-global-subuniverse α β) + {l : Level} {X : UU l} + where + + is-in-reflective-global-subuniverse-is-equiv-unit : + is-equiv (unit-reflective-global-subuniverse 𝒫 X) → + is-in-reflective-global-subuniverse 𝒫 X + is-in-reflective-global-subuniverse-is-equiv-unit = + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( reflection-reflective-global-subuniverse 𝒫 X) + ( up-localization-reflective-global-subuniverse 𝒫 X) + + is-equiv-unit-is-in-reflective-global-subuniverse : + is-in-reflective-global-subuniverse 𝒫 X → + is-equiv (unit-reflective-global-subuniverse 𝒫 X) + is-equiv-unit-is-in-reflective-global-subuniverse = + is-equiv-unit-is-in-global-subuniverse-universal-property-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( reflection-reflective-global-subuniverse 𝒫 X) + ( up-localization-reflective-global-subuniverse 𝒫 X) +``` + +### Reflective global subuniverses contain contractible types + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + where + + is-in-reflective-global-subuniverse-unit : + is-in-reflective-global-subuniverse 𝒫 unit + is-in-reflective-global-subuniverse-unit = + is-in-global-subuniverse-has-localization-global-subuniverse-unit + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-reflective-reflective-global-subuniverse 𝒫 unit) + + is-in-reflective-global-subuniverse-is-contr : + {l : Level} {A : UU l} → + is-contr A → + is-in-reflective-global-subuniverse 𝒫 A + is-in-reflective-global-subuniverse-is-contr {A = A} H = + is-in-global-subuniverse-has-localization-global-subuniverse-is-contr + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( H) + ( is-reflective-reflective-global-subuniverse 𝒫 A) +``` + +### Reflective global subuniverses are closed under dependent products + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + is-in-reflective-global-subuniverse-Π : + ((x : A) → is-in-reflective-global-subuniverse 𝒫 (B x)) → + is-in-reflective-global-subuniverse 𝒫 ((x : A) → B x) + is-in-reflective-global-subuniverse-Π H = + is-in-global-subuniverse-Π-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( H) + ( is-reflective-reflective-global-subuniverse 𝒫 ((x : A) → B x)) +``` + +### Reflective global subuniverses are closed under exponentials + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + is-in-reflective-global-subuniverse-exponential : + is-in-reflective-global-subuniverse 𝒫 B → + is-in-reflective-global-subuniverse 𝒫 (A → B) + is-in-reflective-global-subuniverse-exponential H = + is-in-global-subuniverse-exponential-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( H) + ( is-reflective-reflective-global-subuniverse 𝒫 (A → B)) +``` + +### Reflective global subuniverses are closed under pullbacks + +Consider a pullback square + +```text + q + C --------> B + | ⌟ | + p | | g + ∨ ∨ + A --------> X + f +``` + +then if `A`, `B` and `X` are in `𝒫`, then so is `C`. + +This is Proposition 5.1.19 in {{#cite Rij19}}. + +**Proof.** We have a commuting square + +```text + - ∘ η + (LC → C) --------> (C → C) + | | + | | + cone-map | | cone-map + | | + ∨ ∨ + cone f g LC ····> cone f g C +``` + +where the bottom horizontal map is an equivalence by the assumptions that `A`, +`B` and `X` are `𝒫`-local. The two vertical maps are equivalences by the +assumption that `C` is a pullback and so the top map must be an equivalence as +well. + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 l3 l4 : Level} + {𝒮 : cospan-diagram l1 l2 l3} + (c : pullback-cone 𝒮 l4) + where + + is-in-reflective-global-subuniverse-pullback : + is-in-reflective-global-subuniverse 𝒫 (cospanning-type-cospan-diagram 𝒮) → + is-in-reflective-global-subuniverse 𝒫 (left-type-cospan-diagram 𝒮) → + is-in-reflective-global-subuniverse 𝒫 (right-type-cospan-diagram 𝒮) → + is-in-reflective-global-subuniverse 𝒫 (domain-pullback-cone 𝒮 c) + is-in-reflective-global-subuniverse-pullback = + is-in-global-subuniverse-pullback-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( c) + ( is-reflective-reflective-global-subuniverse 𝒫 + ( domain-pullback-cone 𝒮 c)) +``` + +### Reflective global subuniverses are closed under cartesian product types + +This is Corollary 5.1.20 in {{#cite Rij19}}. + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + is-in-reflective-global-subuniverse-cartesian-product : + is-in-reflective-global-subuniverse 𝒫 A → + is-in-reflective-global-subuniverse 𝒫 B → + is-in-reflective-global-subuniverse 𝒫 (A × B) + is-in-reflective-global-subuniverse-cartesian-product H K = + is-in-global-subuniverse-cartesian-product-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-in-reflective-global-subuniverse-unit 𝒫) + ( H) + ( K) + ( is-reflective-reflective-global-subuniverse 𝒫 (A × B)) +``` + +### Reflective global subuniverses are closed under identity types + +This is Corollary 5.1.21 in {{#cite Rij19}}. + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l : Level} {A : UU l} (x y : A) (H : is-in-reflective-global-subuniverse 𝒫 A) + where + + is-in-reflective-global-subuniverse-Id : + is-in-reflective-global-subuniverse 𝒫 (x = y) + is-in-reflective-global-subuniverse-Id = + is-in-global-subuniverse-Id-localization-global-subuniverse + ( global-subuniverse-reflective-global-subuniverse 𝒫) + ( is-in-reflective-global-subuniverse-unit 𝒫) + ( H) + ( is-reflective-reflective-global-subuniverse 𝒫 (x = y)) +``` + +### Reflective global subuniverses are closed under types of equivalences + +If `A` and `B` are `𝒫`-types, then the type of equivalences `A ≃ B` is again a +`𝒫`-type. While this would follow straightforwardly from the above result and +univalence, we give a proof that is independent of the univalence axiom. + +This is Corollary 5.1.23 in {{#cite Rij19}} and Proposition 2.18 in +{{#cite CORS20}}. + +```agda +module _ + {α β : Level → Level} (𝒫 : reflective-global-subuniverse α β) + {l1 l2 : Level} {A : UU l1} {B : UU l2} + (H : is-in-reflective-global-subuniverse 𝒫 A) + (K : is-in-reflective-global-subuniverse 𝒫 B) + where + + is-in-reflective-global-subuniverse-equiv : + is-in-reflective-global-subuniverse 𝒫 (A ≃ B) + is-in-reflective-global-subuniverse-equiv = + is-in-reflective-global-subuniverse-pullback 𝒫 + pullback-cone-equiv + (is-in-reflective-global-subuniverse-cartesian-product 𝒫 + ( is-in-reflective-global-subuniverse-exponential 𝒫 H) + ( is-in-reflective-global-subuniverse-exponential 𝒫 K)) + (is-in-reflective-global-subuniverse-cartesian-product 𝒫 + ( is-in-reflective-global-subuniverse-exponential 𝒫 K) + ( is-in-reflective-global-subuniverse-cartesian-product 𝒫 + ( is-in-reflective-global-subuniverse-exponential 𝒫 H) + ( is-in-reflective-global-subuniverse-exponential 𝒫 H))) + ( is-in-reflective-global-subuniverse-unit 𝒫) +``` + +### Reflective global subuniverses are closed under sequential limits + +> This remains to be formalized. + +## See also + +- [Σ-closed reflective subuniverses](orthogonal-factorization-systems.sigma-closed-reflective-subuniverses.md) +- [Localizations with respect to subuniverses](orthogonal-factorization-systems.localizations-at-subuniverses.md) + +## References + +{{#bibliography}} {{#reference UF13}} {{#reference RSS20}} {{#reference Rij19}} diff --git a/src/orthogonal-factorization-systems/types-local-at-maps.lagda.md b/src/orthogonal-factorization-systems/types-local-at-maps.lagda.md index 6b4c1b5c99..1ebbc9e3de 100644 --- a/src/orthogonal-factorization-systems/types-local-at-maps.lagda.md +++ b/src/orthogonal-factorization-systems/types-local-at-maps.lagda.md @@ -9,6 +9,7 @@ module orthogonal-factorization-systems.types-local-at-maps where ```agda open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-maps +open import foundation.commuting-triangles-of-maps open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types @@ -16,9 +17,11 @@ open import foundation.dependent-universal-property-equivalences open import foundation.empty-types open import foundation.equivalences open import foundation.families-of-equivalences +open import foundation.fibers-of-maps open import foundation.function-extensionality open import foundation.function-types open import foundation.functoriality-dependent-function-types +open import foundation.functoriality-dependent-pair-types open import foundation.homotopies open import foundation.identity-types open import foundation.logical-equivalences @@ -26,15 +29,19 @@ open import foundation.postcomposition-functions open import foundation.precomposition-dependent-functions open import foundation.precomposition-functions open import foundation.propositions +open import foundation.retractions open import foundation.retracts-of-maps open import foundation.retracts-of-types open import foundation.sections +open import foundation.transport-along-identifications open import foundation.type-arithmetic-dependent-function-types open import foundation.type-arithmetic-unit-type open import foundation.unit-type open import foundation.universal-property-empty-type open import foundation.universal-property-equivalences open import foundation.universe-levels + +open import orthogonal-factorization-systems.extensions-maps ```
@@ -47,7 +54,7 @@ A dependent type `A` over `Y` is said to be [precomposition map](foundation-core.function-types.md) ```text - _∘ f : ((y : Y) → A y) → ((x : X) → A (f x)) + - ∘ f : ((y : Y) → A y) → ((x : X) → A (f x)) ``` is an [equivalence](foundation-core.equivalences.md). @@ -103,29 +110,66 @@ module _ ## Properties -### Locality distributes over Π-types +### Every map has a unique extension along `i` if and only if `P` is `i`-local ```agda module _ - {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X → Y) + {l1 l2 : Level} {A : UU l1} {B : UU l2} (i : A → B) + {l : Level} (P : B → UU l) where - distributive-Π-is-local-dependent-type : - {l3 l4 : Level} {A : UU l3} (B : A → Y → UU l4) → - ((a : A) → is-local-dependent-type f (B a)) → - is-local-dependent-type f (λ x → (a : A) → B a x) - distributive-Π-is-local-dependent-type B f-loc = - is-equiv-map-equiv - ( ( equiv-swap-Π) ∘e - ( equiv-Π-equiv-family (λ a → precomp-Π f (B a) , (f-loc a))) ∘e - ( equiv-swap-Π)) + equiv-fiber'-precomp-extension-dependent-type : + (f : (x : A) → P (i x)) → + fiber' (precomp-Π i P) f ≃ extension-dependent-type i P f + equiv-fiber'-precomp-extension-dependent-type f = + equiv-tot (λ g → equiv-funext {f = f} {g ∘ i}) + + equiv-fiber-precomp-extension-dependent-type : + (f : (x : A) → P (i x)) → + fiber (precomp-Π i P) f ≃ extension-dependent-type i P f + equiv-fiber-precomp-extension-dependent-type f = + ( equiv-fiber'-precomp-extension-dependent-type f) ∘e + ( equiv-fiber (precomp-Π i P) f) + + equiv-is-contr-extension-dependent-type-is-local-dependent-type : + is-local-dependent-type i P ≃ + ((f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f)) + equiv-is-contr-extension-dependent-type-is-local-dependent-type = + ( equiv-Π-equiv-family + ( equiv-is-contr-equiv ∘ equiv-fiber-precomp-extension-dependent-type)) ∘e + ( equiv-is-contr-map-is-equiv (precomp-Π i P)) + + is-contr-extension-dependent-type-is-local-dependent-type : + is-local-dependent-type i P → + (f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f) + is-contr-extension-dependent-type-is-local-dependent-type = + map-equiv equiv-is-contr-extension-dependent-type-is-local-dependent-type + + is-local-dependent-type-is-contr-extension-dependent-type : + ((f : (x : A) → P (i x)) → is-contr (extension-dependent-type i P f)) → + is-local-dependent-type i P + is-local-dependent-type-is-contr-extension-dependent-type = + map-inv-equiv + equiv-is-contr-extension-dependent-type-is-local-dependent-type +``` - distributive-Π-is-local : - {l3 l4 : Level} {A : UU l3} (B : A → UU l4) → - ((a : A) → is-local f (B a)) → - is-local f ((a : A) → B a) - distributive-Π-is-local B = - distributive-Π-is-local-dependent-type (λ a _ → B a) +### Every map has a unique extension along `i` if and only if `P` is `i`-local + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (i : A → B) + {l : Level} {C : UU l} + where + + is-contr-extension-is-local : + is-local i C → (f : A → C) → is-contr (extension i f) + is-contr-extension-is-local = + is-contr-extension-dependent-type-is-local-dependent-type i (λ _ → C) + + is-local-is-contr-extension : + ((f : A → C) → is-contr (extension i f)) → is-local i C + is-local-is-contr-extension = + is-local-dependent-type-is-contr-extension-dependent-type i (λ _ → C) ``` ### Local types are closed under equivalences @@ -185,7 +229,7 @@ module _ ( refl-htpy) ``` -### Locality is preserved by homotopies +### Locality is preserved by homotopies of functions ```agda module _ @@ -288,13 +332,29 @@ module _ pr1 (is-equiv-is-local-domains' section-precomp-X is-local-Y) = section-is-local-domains' section-precomp-X is-local-Y pr2 (is-equiv-is-local-domains' section-precomp-X is-local-Y) = - retraction-section-precomp-domain f section-precomp-X + retraction-map-section-precomp f section-precomp-X is-equiv-is-local-domains : is-local f X → is-local f Y → is-equiv f is-equiv-is-local-domains is-local-X = is-equiv-is-local-domains' (pr1 is-local-X) ``` +### If `f` has a retraction and the codomain of `f` is `f`-local, then `f` is an equivalence + +```agda +module _ + {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X → Y) + where + + is-equiv-retraction-is-local-codomain : + retraction f → is-local f Y → is-equiv f + is-equiv-retraction-is-local-codomain r is-local-Y = + section-is-local-domains' f + ( section-precomp-retraction-map f r) + ( is-local-Y) , + r +``` + ### Propositions are `f`-local if `- ∘ f` has a converse ```agda @@ -319,7 +379,7 @@ module _ is-local-dependent-type-is-prop (λ _ → A) (λ _ → is-prop-A) ``` -### All type families are local at equivalences +### All types are local at equivalences ```agda module _ @@ -370,6 +430,96 @@ is-contr-is-local A is-local-A = ( universal-property-empty' A) ``` +### The 3-for-2 property of local types + +Given a [commuting triangle](foundation-core.commuting-triangles-of-maps.md) of +maps + +```text + f + X ------> Y + \ / + h \ / g + \ / + ∨ ∨ + Z, +``` + +then if `A` is local at two of the maps then it is local at all three. + +```agda +module _ + {l1 l2 l3 l4 : Level} {X : UU l1} {Y : UU l2} {Z : UU l3} {A : UU l4} + {f : X → Y} {g : Y → Z} + where + + is-local-comp : is-local g A → is-local f A → is-local (g ∘ f) A + is-local-comp G F = is-equiv-comp (precomp f A) (precomp g A) G F + + is-local-left-map-triangle : + {h : X → Z} → coherence-triangle-maps h g f → + is-local g A → is-local f A → is-local h A + is-local-left-map-triangle {h} K = + is-equiv-left-map-triangle + ( precomp h A) + ( precomp f A) + ( precomp g A) + ( htpy-precomp K A) + + is-local-right-factor : + is-local (g ∘ f) A → is-local g A → is-local f A + is-local-right-factor = is-equiv-left-factor (precomp f A) (precomp g A) + + is-local-top-map-triangle : + {h : X → Z} → coherence-triangle-maps h g f → + is-local h A → is-local g A → is-local f A + is-local-top-map-triangle {h} K = + is-equiv-right-map-triangle + ( precomp h A) + ( precomp f A) + ( precomp g A) + ( htpy-precomp K A) + + is-local-left-factor : + is-local f A → is-local (g ∘ f) A → is-local g A + is-local-left-factor = is-equiv-right-factor (precomp f A) (precomp g A) + + is-local-right-map-triangle : + {h : X → Z} → coherence-triangle-maps h g f → + is-local f A → is-local h A → is-local g A + is-local-right-map-triangle {h} K = + is-equiv-top-map-triangle + ( precomp h A) + ( precomp f A) + ( precomp g A) + ( htpy-precomp K A) +``` + +### Locality distributes over Π-types + +```agda +module _ + {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X → Y) + where + + distributive-Π-is-local-dependent-type : + {l3 l4 : Level} {A : UU l3} (B : A → Y → UU l4) → + ((a : A) → is-local-dependent-type f (B a)) → + is-local-dependent-type f (λ x → (a : A) → B a x) + distributive-Π-is-local-dependent-type B f-loc = + is-equiv-map-equiv + ( ( equiv-swap-Π) ∘e + ( equiv-Π-equiv-family (λ a → precomp-Π f (B a) , (f-loc a))) ∘e + ( equiv-swap-Π)) + + distributive-Π-is-local : + {l3 l4 : Level} {A : UU l3} (B : A → UU l4) → + ((a : A) → is-local f (B a)) → + is-local f ((a : A) → B a) + distributive-Π-is-local B = + distributive-Π-is-local-dependent-type (λ a _ → B a) +``` + ## See also - [Local maps](orthogonal-factorization-systems.maps-local-at-maps.md) diff --git a/src/orthogonal-factorization-systems/types-separated-at-maps.lagda.md b/src/orthogonal-factorization-systems/types-separated-at-maps.lagda.md index d47b4396a1..a909c66dac 100644 --- a/src/orthogonal-factorization-systems/types-separated-at-maps.lagda.md +++ b/src/orthogonal-factorization-systems/types-separated-at-maps.lagda.md @@ -21,7 +21,7 @@ A type `A` is said to be **separated** with respect to a map `f`, or **`f`-separated**, if its [identity types](foundation-core.identity-types.md) are [`f`-local](orthogonal-factorization-systems.types-local-at-maps.md). -## Definition +## Definitions ```agda module _ diff --git a/src/orthogonal-factorization-systems/universal-property-localizations-at-global-subuniverses.lagda.md b/src/orthogonal-factorization-systems/universal-property-localizations-at-global-subuniverses.lagda.md new file mode 100644 index 0000000000..a3c2143af4 --- /dev/null +++ b/src/orthogonal-factorization-systems/universal-property-localizations-at-global-subuniverses.lagda.md @@ -0,0 +1,527 @@ +# The universal property of localizations at global subuniverses + +```agda +module orthogonal-factorization-systems.universal-property-localizations-at-global-subuniverses where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.extensions-types +open import foundation.extensions-types-global-subuniverses +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.global-subuniverses +open import foundation.homotopies +open import foundation.identity-types +open import foundation.precomposition-functions +open import foundation.propositions +open import foundation.retractions +open import foundation.sections +open import foundation.subuniverses +open import foundation.unit-type +open import foundation.univalence +open import foundation.universe-levels + +open import orthogonal-factorization-systems.extensions-maps +open import orthogonal-factorization-systems.types-local-at-maps +``` + +
+ +## Idea + +Let `𝒫` be a [global subuniverse](foundation.global-subuniverses.md). Given a +type `X` we say a type `LX` in `𝒫` [equipped](foundation.structure.md) with a +unit map `η : X → LX` satisfies the +{{#concept "universal property of localizations" Disambiguation="at a global universe of types" Agda=universal-property-localization-global-subuniverse}} +if every type `Z` in `𝒫` is +`η`-[local](orthogonal-factorization-systems.types-local-at-maps.md). I.e., the +[precomposition map](foundation-core.function-types.md) + +```text + - ∘ η : (LX → Z) → (X → Z) +``` + +is an [equivalence](foundation-core.equivalences.md). + +## Definitions + +### The universal property of being a localization at a global subuniverse + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + where + + universal-property-localization-global-subuniverse-Level : + (l : Level) → UU (α l ⊔ l1 ⊔ l2 ⊔ lsuc l) + universal-property-localization-global-subuniverse-Level l = + (Z : type-global-subuniverse 𝒫 l) → + is-local + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-global-subuniverse 𝒫 Z) + + universal-property-localization-global-subuniverse : UUω + universal-property-localization-global-subuniverse = + {l : Level} → universal-property-localization-global-subuniverse-Level l +``` + +### The recursion principle of localization at a global subuniverse + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + where + + recursion-principle-localization-global-subuniverse-Level : + (l : Level) → UU (α l ⊔ l1 ⊔ l2 ⊔ lsuc l) + recursion-principle-localization-global-subuniverse-Level l = + (Z : type-global-subuniverse 𝒫 l) → + section + ( precomp + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-global-subuniverse 𝒫 Z)) + + recursion-principle-localization-global-subuniverse : UUω + recursion-principle-localization-global-subuniverse = + {l : Level} → recursion-principle-localization-global-subuniverse-Level l +``` + +## Properties + +### Equivalences satisfy the universal property of localizations + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + where + + universal-property-localization-global-subuniverse-is-equiv : + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) → + universal-property-localization-global-subuniverse 𝒫 X LX + universal-property-localization-global-subuniverse-is-equiv H Z = + is-local-is-equiv + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( H) + ( inclusion-global-subuniverse 𝒫 Z) + +module _ + {α : Level → Level} {l1 : Level} (𝒫 : global-subuniverse α) + (X : type-global-subuniverse 𝒫 l1) + where + + universal-property-localization-global-subuniverse-id : + universal-property-localization-global-subuniverse 𝒫 + ( inclusion-global-subuniverse 𝒫 X) + ( X , id) + universal-property-localization-global-subuniverse-id = + universal-property-localization-global-subuniverse-is-equiv 𝒫 + ( inclusion-global-subuniverse 𝒫 X) + ( X , id) + ( is-equiv-id) +``` + +### Satisfying the universal property of localizations is a property + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + where + + is-prop-universal-property-localization-global-subuniverse-Level : + {l : Level} → + is-prop (universal-property-localization-global-subuniverse-Level 𝒫 X LX l) + is-prop-universal-property-localization-global-subuniverse-Level = + is-prop-Π + ( λ Z → + is-property-is-local + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-global-subuniverse 𝒫 Z)) +``` + +### Localizations are closed under equivalences + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + where + + equiv-universal-property-localization-global-subuniverse : + {l3 : Level} {Y : UU l3} + (e : type-extension-type-global-subuniverse 𝒫 LX ≃ Y) → + universal-property-localization-global-subuniverse 𝒫 X + ( ( Y , + is-closed-under-equiv-global-subuniverse 𝒫 + ( type-extension-type-global-subuniverse 𝒫 LX) + ( Y) + ( e) + ( is-in-global-subuniverse-type-extension-type-global-subuniverse + ( 𝒫) + ( LX))) , + ( map-equiv e ∘ inclusion-extension-type-global-subuniverse 𝒫 LX)) + equiv-universal-property-localization-global-subuniverse e Z = + is-local-comp + ( is-local-is-equiv _ + ( is-equiv-map-equiv e) + ( inclusion-global-subuniverse 𝒫 Z)) + ( H Z) +``` + +### Localizations are maps with unique extensions + +The map `η : X → LX` satisfies the universal property of localizations with +respect to `𝒫` if and only if every map `f : X → Z` where `Z` is in `𝒫` has a +unique extension along `η` + +```text + f + X ----> Z + | ∧ + η | ⋰ + ∨ ⋰ + LX. +``` + +```agda +module _ + {α : Level → Level} {l1 l2 : Level} (𝒫 : global-subuniverse α) + (X : UU l1) (LX : extension-type-global-subuniverse 𝒫 l2 X) + where + + forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse : + universal-property-localization-global-subuniverse 𝒫 X LX → + {l : Level} (Z : type-global-subuniverse 𝒫 l) + (f : X → inclusion-global-subuniverse 𝒫 Z) → + is-contr (extension (inclusion-extension-type-global-subuniverse 𝒫 LX) f) + forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + H Z = + is-contr-extension-is-local + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( H Z) + + backward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse : + ( {l : Level} (Z : type-global-subuniverse 𝒫 l) + (f : X → inclusion-global-subuniverse 𝒫 Z) → + is-contr + ( extension (inclusion-extension-type-global-subuniverse 𝒫 LX) f)) → + universal-property-localization-global-subuniverse 𝒫 X LX + backward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + H Z = + is-local-is-contr-extension + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( H Z) +``` + +### Localizations are essentially unique + +This is Proposition 5.1.2 in {{#cite Rij19}}. We formalize essential uniqueness +with equivalences of extensions of the type `X`, as the universal property is a +large proposition. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 l3 : Level} {X : UU l1} + (LX : extension-type-global-subuniverse 𝒫 l2 X) + (LX' : extension-type-global-subuniverse 𝒫 l3 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + (H' : universal-property-localization-global-subuniverse 𝒫 X LX') + where + + extension-map-essentially-unique-universal-property-localization-global-subuniverse : + extension + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-extension-type-global-subuniverse 𝒫 LX') + extension-map-essentially-unique-universal-property-localization-global-subuniverse = + center + ( forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + ( 𝒫) + ( X) + ( LX) + ( H) + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX') + ( inclusion-extension-type-global-subuniverse 𝒫 LX')) + + extension-map-inv-essentially-unique-universal-property-localization-global-subuniverse : + extension + ( inclusion-extension-type-global-subuniverse 𝒫 LX') + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + extension-map-inv-essentially-unique-universal-property-localization-global-subuniverse = + center + ( forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + ( 𝒫) + ( X) + ( LX') + ( H') + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-extension-type-global-subuniverse 𝒫 LX)) + + map-essentially-unique-universal-property-localization-global-subuniverse : + type-extension-type-global-subuniverse 𝒫 LX → + type-extension-type-global-subuniverse 𝒫 LX' + map-essentially-unique-universal-property-localization-global-subuniverse = + map-extension + extension-map-essentially-unique-universal-property-localization-global-subuniverse + + map-inv-essentially-unique-universal-property-localization-global-subuniverse : + type-extension-type-global-subuniverse 𝒫 LX' → + type-extension-type-global-subuniverse 𝒫 LX + map-inv-essentially-unique-universal-property-localization-global-subuniverse = + map-extension + extension-map-inv-essentially-unique-universal-property-localization-global-subuniverse + + abstract + is-section-map-inv-essentially-unique-universal-property-localization-global-subuniverse : + is-section + map-essentially-unique-universal-property-localization-global-subuniverse + map-inv-essentially-unique-universal-property-localization-global-subuniverse + is-section-map-inv-essentially-unique-universal-property-localization-global-subuniverse = + htpy-eq + ( ap + ( map-extension) + ( eq-is-contr + ( forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + ( 𝒫) + ( X) + ( LX') + ( H') + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX') + ( inclusion-extension-type-global-subuniverse 𝒫 LX')) + { map-essentially-unique-universal-property-localization-global-subuniverse ∘ + map-inv-essentially-unique-universal-property-localization-global-subuniverse , + is-extension-comp-horizontal + { f = inclusion-extension-type-global-subuniverse 𝒫 LX'} + { inclusion-extension-type-global-subuniverse 𝒫 LX} + { inclusion-extension-type-global-subuniverse 𝒫 LX'} + { map-inv-essentially-unique-universal-property-localization-global-subuniverse} + { map-essentially-unique-universal-property-localization-global-subuniverse} + ( is-extension-map-extension + extension-map-inv-essentially-unique-universal-property-localization-global-subuniverse) + ( is-extension-map-extension + extension-map-essentially-unique-universal-property-localization-global-subuniverse)} + { extension-along-self + ( inclusion-extension-type-global-subuniverse 𝒫 LX')})) + + abstract + is-retraction-map-inv-essentially-unique-universal-property-localization-global-subuniverse : + is-retraction + map-essentially-unique-universal-property-localization-global-subuniverse + map-inv-essentially-unique-universal-property-localization-global-subuniverse + is-retraction-map-inv-essentially-unique-universal-property-localization-global-subuniverse = + htpy-eq + ( ap + ( map-extension) + ( eq-is-contr + ( forward-implication-iff-unique-extensions-universal-property-localization-global-subuniverse + ( 𝒫) + ( X) + ( LX) + ( H) + ( type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX) + ( inclusion-extension-type-global-subuniverse 𝒫 LX)) + { map-inv-essentially-unique-universal-property-localization-global-subuniverse ∘ + map-essentially-unique-universal-property-localization-global-subuniverse , + is-extension-comp-horizontal + { f = inclusion-extension-type-global-subuniverse 𝒫 LX} + { inclusion-extension-type-global-subuniverse 𝒫 LX'} + { inclusion-extension-type-global-subuniverse 𝒫 LX} + { map-essentially-unique-universal-property-localization-global-subuniverse} + { map-inv-essentially-unique-universal-property-localization-global-subuniverse} + ( is-extension-map-extension + extension-map-essentially-unique-universal-property-localization-global-subuniverse) + ( is-extension-map-extension + extension-map-inv-essentially-unique-universal-property-localization-global-subuniverse)} + { extension-along-self + ( inclusion-extension-type-global-subuniverse 𝒫 LX)})) + + is-equiv-map-essentially-unique-universal-property-localization-global-subuniverse : + is-equiv + map-essentially-unique-universal-property-localization-global-subuniverse + is-equiv-map-essentially-unique-universal-property-localization-global-subuniverse = + is-equiv-is-invertible + map-inv-essentially-unique-universal-property-localization-global-subuniverse + is-section-map-inv-essentially-unique-universal-property-localization-global-subuniverse + is-retraction-map-inv-essentially-unique-universal-property-localization-global-subuniverse + + essentially-unique-type-universal-property-localization-global-subuniverse : + type-extension-type-global-subuniverse 𝒫 LX ≃ + type-extension-type-global-subuniverse 𝒫 LX' + essentially-unique-type-universal-property-localization-global-subuniverse = + map-essentially-unique-universal-property-localization-global-subuniverse , + is-equiv-map-essentially-unique-universal-property-localization-global-subuniverse + + essentially-unique-extension-type-universal-property-localization-global-subuniverse : + equiv-extension-type-global-subuniverse 𝒫 LX LX' + essentially-unique-extension-type-universal-property-localization-global-subuniverse = + essentially-unique-type-universal-property-localization-global-subuniverse , + is-extension-map-extension + extension-map-essentially-unique-universal-property-localization-global-subuniverse +``` + +### Localizations are unique + +We formalize uniqueness with equality of extensions of the type `X`, as the +universal property, that after all is a proposition, is large. + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX LX' : extension-type-global-subuniverse 𝒫 l2 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + (H' : universal-property-localization-global-subuniverse 𝒫 X LX') + where + + unique-type-universal-property-localization-global-subuniverse : + type-extension-type-global-subuniverse 𝒫 LX = + type-extension-type-global-subuniverse 𝒫 LX' + unique-type-universal-property-localization-global-subuniverse = + eq-equiv + ( essentially-unique-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( LX) + ( LX') + ( H) + ( H')) + + unique-extension-type-universal-property-localization-global-subuniverse : + LX = LX' + unique-extension-type-universal-property-localization-global-subuniverse = + eq-equiv-extension-type-global-subuniverse 𝒫 LX LX' + ( essentially-unique-extension-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( LX) + ( LX') + ( H) + ( H')) +``` + +### Equivalent conditions for the unit of the localization being an equivalence + +Let `η : X → LX` be a localization of `X` at `𝒫`, then the following are +logically equivalent conditions: + +1. The type `X` is contained in `𝒫`. +2. The map `η` is an equivalence. +3. The type `X` is local at `η`. +4. The map `η` has a retraction. +5. The precomposition map `- ∘ η` has a section at `X`. + +This is Proposition 5.1.3 in {{#cite Rij19}}. + +#### A type with a `𝒫`-localization is in `𝒫` if and only if the unit is an equivalence + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX : extension-type-global-subuniverse 𝒫 l2 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + where + + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse : + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) → + is-in-global-subuniverse 𝒫 X + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + K = + is-closed-under-equiv-global-subuniverse 𝒫 + ( type-extension-type-global-subuniverse 𝒫 LX) + ( X) + ( inv-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX , K)) + ( is-in-global-subuniverse-type-extension-type-global-subuniverse 𝒫 LX) + + is-equiv-unit-is-in-global-subuniverse-universal-property-localization-global-subuniverse : + is-in-global-subuniverse 𝒫 X → + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) + is-equiv-unit-is-in-global-subuniverse-universal-property-localization-global-subuniverse + K = + is-equiv-inclusion-extension-type-equiv + ( extension-type-extension-type-global-subuniverse 𝒫 LX) + ( X , id) + ( essentially-unique-extension-type-universal-property-localization-global-subuniverse + ( 𝒫) + ( LX) + ( ( X , K) , id) + ( H) + ( universal-property-localization-global-subuniverse-id 𝒫 (X , K))) + ( is-equiv-id) +``` + +#### The unit of a `𝒫`-localization is an equivalence if and only if the type is local at the unit + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX : extension-type-global-subuniverse 𝒫 l2 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + where + + is-equiv-unit-is-local-type-universal-property-localization-global-subuniverse : + is-local (inclusion-extension-type-global-subuniverse 𝒫 LX) X → + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) + is-equiv-unit-is-local-type-universal-property-localization-global-subuniverse + K = + is-equiv-is-local-domains + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( K) + ( H (type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX)) + + is-local-type-is-equiv-unit-universal-property-localization-global-subuniverse : + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) → + is-local (inclusion-extension-type-global-subuniverse 𝒫 LX) X + is-local-type-is-equiv-unit-universal-property-localization-global-subuniverse + K = + H ( X , + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + 𝒫 LX H K) + + is-in-global-subuniverse-is-local-type-universal-property-localization-global-subuniverse : + is-local (inclusion-extension-type-global-subuniverse 𝒫 LX) X → + is-in-global-subuniverse 𝒫 X + is-in-global-subuniverse-is-local-type-universal-property-localization-global-subuniverse + K = + is-in-global-subuniverse-is-equiv-unit-universal-property-localization-global-subuniverse + ( 𝒫) + ( LX) + ( H) + ( is-equiv-unit-is-local-type-universal-property-localization-global-subuniverse + ( K)) +``` + +#### The unit of a `𝒫`-localization is an equivalence if and only if it has a retraction + +```agda +module _ + {α : Level → Level} (𝒫 : global-subuniverse α) + {l1 l2 : Level} {X : UU l1} + (LX : extension-type-global-subuniverse 𝒫 l2 X) + (H : universal-property-localization-global-subuniverse 𝒫 X LX) + where + + is-equiv-unit-retraction-universal-property-localization-global-subuniverse : + retraction (inclusion-extension-type-global-subuniverse 𝒫 LX) → + is-equiv (inclusion-extension-type-global-subuniverse 𝒫 LX) + is-equiv-unit-retraction-universal-property-localization-global-subuniverse + r = + is-equiv-retraction-is-local-codomain + ( inclusion-extension-type-global-subuniverse 𝒫 LX) + ( r) + ( H (type-global-subuniverse-extension-type-global-subuniverse 𝒫 LX)) +``` + +## References + +{{#bibliography}}