From 74e9d153f5443b8386f9ab0ad12cf0c154de1f35 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sun, 19 Nov 2023 20:30:13 -0700 Subject: [PATCH 01/29] create universal property file --- ...universal-property-fibers-of-maps.lagda.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/foundation/universal-property-fibers-of-maps.lagda.md diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md new file mode 100644 index 0000000000..7d6544bd5d --- /dev/null +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -0,0 +1,100 @@ +# The Universal Property of Fibers of Maps + +```agda +module foundation.universal-property-fibers-of-maps where +``` + +
Imports + +```agda +open import foundation.cones-over-cospans +open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.type-arithmetic-unit-type +open import foundation.unit-type +open import foundation.universe-levels + +open import foundation-core.constant-maps +open import foundation-core.fibers-of-maps +open import foundation-core.function-types +open import foundation-core.functoriality-dependent-pair-types +open import foundation-core.homotopies +open import foundation-core.identity-types +open import foundation-core.pullbacks +open import foundation-core.universal-property-pullbacks +``` + +## Idea + +A map `f : A → B` induces a type family `fiber f : B → UU`. By +precomposing with `f`, we have another type family `(fiber f) ∘ f : A → UU`. +This latter type family always has a section given by +`λ a → (a , refl) : (a : A) → fiber f (f a)`. + +We can uniquely characterize the family of fibers `fiber f : B → UU` as +the initial type family equipped with such a section. Explicitly, +`fiber f : B → UU` is initial amoung type families `P : B → UU` equipped +with sections `(a : A) → P (f a)`. This can be packaged into an equivalence +between fiberwise maps from `fiber f` to `P` and sections of `B ∘ f`: + +```text +((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) +``` + +This universal property is especially useful when `A` itself enjoys a mapping +out universal property. This lets us characterize the sections +`(a : A) → B (f a)`. And, in the case that `f` was defined using the mapping out +property of `A`, we may obtain an even nicer characterization. + +For example, if we take `A` to be `unit` and the map `f : unit → B` to be +defined by a point `b₀ : B` and the universal property of `unit`, +we have + +```text +((b : B) → fiber f b → P b) ≃ ((t : unit) → P (f t)) ≃ ((t : unit) → P b₀) ≃ P b₀ +``` + +which essentialy tells us `fiber f : B → UU` has the same universal property as +`Id b₀ : B → UU`. + +## Definition + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) + (δ : (a : A) → F (f a)) + where + + ev-fiber : + {l4 : Level} (P : B → UU l4) → ((b : B) → F b → P b) → + (a : A) → P (f a) + ev-fiber P h a = h (f a) (δ a) + + universal-property-fiber : + (l4 : Level) → UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l4) + universal-property-fiber l4 = (P : B → UU l4) → is-equiv (ev-fiber P) +``` + +## Properties + +### Fibers are uniquely unique + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) + (δ : (a : A) → F (f a)) (F' : B → UU l4) (δ' : (a : A) → F' (f a)) + where + + unique-fiber : + ({l : Level} → universal-property-fiber f F δ l) → + ({l : Level} → universal-property-fiber f F' δ' l) → (b : B) → F b ≃ F' b + pr1 (unique-fiber u u' b) = (map-inv-is-equiv (u F')) δ' b + pr2 (unique-fiber u u' b) = + is-equiv-is-invertible + ( map-inv-is-equiv (u' F) δ b) + ( λ x → {!!}) + ( {!!}) + +``` From 9f6ad0eeff2c077009ad423a74098802285132e9 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Mon, 20 Nov 2023 01:06:05 -0700 Subject: [PATCH 02/29] uniqueness --- src/foundation-core/equivalences.lagda.md | 11 ++ src/foundation.lagda.md | 1 + src/foundation/equivalences.lagda.md | 13 +++ ...universal-property-fibers-of-maps.lagda.md | 100 +++++++++++++----- 4 files changed, 100 insertions(+), 25 deletions(-) diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index 23da5bdb52..20421067e7 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -149,6 +149,17 @@ module _ fiberwise-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) fiberwise-equiv B C = Σ ((x : A) → B x → C x) is-fiberwise-equiv + fiberwise-map-fiberwise-equiv : + {B : A → UU l2} {C : A → UU l3} → + fiberwise-equiv B C → (a : A) → B a → C a + fiberwise-map-fiberwise-equiv = pr1 + + is-fiberwise-equiv-fiberwise-equiv : + {B : A → UU l2} {C : A → UU l3} → + (e : fiberwise-equiv B C) → + is-fiberwise-equiv (fiberwise-map-fiberwise-equiv e) + is-fiberwise-equiv-fiberwise-equiv = pr2 + fam-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) fam-equiv B C = (x : A) → B x ≃ C x ``` diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 77007066d3..6d1f9af672 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -336,6 +336,7 @@ open import foundation.universal-property-coproduct-types public open import foundation.universal-property-dependent-pair-types public open import foundation.universal-property-empty-type public open import foundation.universal-property-fiber-products public +open import foundation.universal-property-fibers-of-maps public open import foundation.universal-property-identity-systems public open import foundation.universal-property-identity-types public open import foundation.universal-property-image public diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 79aa2a9bfb..f9310a5d0d 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -248,6 +248,19 @@ module _ pr2 emb-map-equiv = is-emb-map-equiv ``` +### Being a fiberwise equivalence is a proposition + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + where + + is-property-is-fiberwise-equiv : + (f : (a : A) → B a → C a) → is-prop (is-fiberwise-equiv f) + is-property-is-fiberwise-equiv f = + is-prop-Π (λ a → is-property-is-equiv (f a)) +``` + ### The 3-for-2 property of being an equivalence #### If the right factor is an equivalence, then the left factor being an equivalence is equivalent to the composite being one diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 7d6544bd5d..f9226bfaeb 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -8,9 +8,14 @@ module foundation.universal-property-fibers-of-maps where ```agda open import foundation.cones-over-cospans +open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.functoriality-dependent-function-types +open import foundation.functoriality-function-types +open import foundation.subtype-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-unit-type open import foundation.unit-type @@ -26,18 +31,20 @@ open import foundation-core.pullbacks open import foundation-core.universal-property-pullbacks ``` +
+ ## Idea -A map `f : A → B` induces a type family `fiber f : B → UU`. By -precomposing with `f`, we have another type family `(fiber f) ∘ f : A → UU`. -This latter type family always has a section given by +A map `f : A → B` induces a type family `fiber f : B → UU`. By precomposing with +`f`, we have another type family `(fiber f) ∘ f : A → UU`. This latter type +family always has a section given by `λ a → (a , refl) : (a : A) → fiber f (f a)`. -We can uniquely characterize the family of fibers `fiber f : B → UU` as -the initial type family equipped with such a section. Explicitly, -`fiber f : B → UU` is initial amoung type families `P : B → UU` equipped -with sections `(a : A) → P (f a)`. This can be packaged into an equivalence -between fiberwise maps from `fiber f` to `P` and sections of `B ∘ f`: +We can uniquely characterize the family of fibers `fiber f : B → UU` as the +initial type family equipped with such a section. Explicitly, `fiber f : B → UU` +is initial amoung type families `P : B → UU` equipped with sections +`(a : A) → P (f a)`. This can be packaged into an equivalence between fiberwise +maps from `fiber f` to `P` and sections of `B ∘ f`: ```text ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) @@ -49,52 +56,95 @@ out universal property. This lets us characterize the sections property of `A`, we may obtain an even nicer characterization. For example, if we take `A` to be `unit` and the map `f : unit → B` to be -defined by a point `b₀ : B` and the universal property of `unit`, -we have +defined by a point `b₀ : B` and the universal property of `unit`, we have ```text ((b : B) → fiber f b → P b) ≃ ((t : unit) → P (f t)) ≃ ((t : unit) → P b₀) ≃ P b₀ ``` which essentialy tells us `fiber f : B → UU` has the same universal property as -`Id b₀ : B → UU`. +`Id b₀ : B → UU`. ## Definition ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} where ev-fiber : - {l4 : Level} (P : B → UU l4) → ((b : B) → F b → P b) → - (a : A) → P (f a) - ev-fiber P h a = h (f a) (δ a) + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} + (P : B → UU l4) → ((b : B) → F b → P b) → (a : A) → P (f a) + ev-fiber f F δ P h a = h (f a) (δ a) universal-property-fiber : - (l4 : Level) → UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l4) - universal-property-fiber l4 = (P : B → UU l4) → is-equiv (ev-fiber P) + (l : Level) (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → + UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l) + universal-property-fiber l f F δ = (P : B → UU l) → is-equiv (ev-fiber f F δ P) + + fiberwise-map-universal-property-fiber : + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} → + ({l : Level} → universal-property-fiber l f F δ) → + {l4 : Level} (P : B → UU l4) → ((a : A) → P (f a)) → + (b : B) → F b → P b + fiberwise-map-universal-property-fiber f F δ u P γ = + map-inv-is-equiv (u P) γ ``` ## Properties +### The 3-for-2 Property for fibers of maps + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) {F : B → UU l3} + (δ : (a : A) → F (f a)) {P : B → UU l4} (γ : (a : A) → P (f a)) + (h : (b : B) → F b → P b) (H : (ev-fiber f F δ P h) ~ γ) + where + + triangle-ev-fiber : + {l5 : Level} (C : B → UU l5) → + (ev-fiber f P γ C) ~ ((ev-fiber f F δ C ) ∘ (λ (k : (b : B) → P b → C b) b t → k b (h b t))) + triangle-ev-fiber C = {!!} +``` + ### Fibers are uniquely unique ```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) (F' : B → UU l4) (δ' : (a : A) → F' (f a)) + (δ : (a : A) → F (f a)) (u : {l : Level} → universal-property-fiber l f F δ) + (P : B → UU l4) (γ : (a : A) → P (f a)) where + uniqueness-fiberwise-map-universal-property-fiber : + is-contr (Σ ((b : B) → F b → P b) (λ h → (ev-fiber f F δ P h) ~ γ)) + uniqueness-fiberwise-map-universal-property-fiber = + is-contr-equiv + ( fiber (ev-fiber f F δ P) γ) + ( equiv-tot + ( λ h → equiv-eq-htpy)) + ( is-contr-map-is-equiv (u P) γ) + + uniquely-unique-fiberwise-map-universal-property-fiber : + (u' : {l : Level} → universal-property-fiber l f P γ) → + is-contr + ( Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ)) + uniquely-unique-fiberwise-map-universal-property-fiber u' = + is-torsorial-Eq-subtype + ( uniqueness-fiberwise-map-universal-property-fiber) + ( is-property-is-fiberwise-equiv) + ( fiberwise-map-universal-property-fiber f F δ u P γ) + ( htpy-eq (is-section-map-inv-is-equiv (u P) γ)) + ( {!!}) +``` unique-fiber : - ({l : Level} → universal-property-fiber f F δ l) → - ({l : Level} → universal-property-fiber f F' δ' l) → (b : B) → F b ≃ F' b - pr1 (unique-fiber u u' b) = (map-inv-is-equiv (u F')) δ' b + ({l : Level} → universal-property-fiber l f F δ) → + ({l : Level} → universal-property-fiber l f F' δ') → (b : B) → F b ≃ F' b + pr1 (unique-fiber u u' b) = map-inv-is-equiv (u F') δ' b pr2 (unique-fiber u u' b) = is-equiv-is-invertible ( map-inv-is-equiv (u' F) δ b) - ( λ x → {!!}) - ( {!!}) + ( {!s!}) + ( {!r!}) -``` From 9ede5cb709ff9868385fe4d14a81501c1387b559 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Mon, 20 Nov 2023 01:41:04 -0700 Subject: [PATCH 03/29] uniqueness lemmas --- src/foundation/function-types.lagda.md | 2 +- src/foundation/universal-property-fibers-of-maps.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/function-types.lagda.md b/src/foundation/function-types.lagda.md index 5f17839864..491555126a 100644 --- a/src/foundation/function-types.lagda.md +++ b/src/foundation/function-types.lagda.md @@ -1,4 +1,4 @@ -# Function types + # Function types ```agda module foundation.function-types where diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index f9226bfaeb..01a602508d 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -93,7 +93,7 @@ module _ ## Properties -### The 3-for-2 Property for fibers of maps +### The 3-for-2 Property for fibers of maps {- THIS REQUIRES INFRASTRUCTURE FOR COMPOSING DEPENDENT FUNCTIONS -} ```agda module _ From 4a8335ad9eb2631d89af90954f166eb980b947ad Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Mon, 20 Nov 2023 18:04:38 -0700 Subject: [PATCH 04/29] finish universal property --- ...universal-property-fibers-of-maps.lagda.md | 206 +++++++++++++++--- 1 file changed, 170 insertions(+), 36 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 01a602508d..2e28cd751d 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -7,6 +7,7 @@ module foundation.universal-property-fibers-of-maps where
Imports ```agda +open import foundation.action-on-identifications-functions open import foundation.cones-over-cospans open import foundation.contractible-maps open import foundation.contractible-types @@ -65,6 +66,20 @@ defined by a point `b₀ : B` and the universal property of `unit`, we have which essentialy tells us `fiber f : B → UU` has the same universal property as `Id b₀ : B → UU`. +### Temporary lemmas + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + {D : A → UU l4} + where + + dependent-comp : + ((a : A) → C a → D a) → ((a : A) → B a → C a) → (a : A) → B a → D a + dependent-comp g f a b = g a (f a b) + +``` + ## Definition ```agda @@ -81,44 +96,80 @@ module _ (l : Level) (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l) universal-property-fiber l f F δ = (P : B → UU l) → is-equiv (ev-fiber f F δ P) - - fiberwise-map-universal-property-fiber : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} → - ({l : Level} → universal-property-fiber l f F δ) → - {l4 : Level} (P : B → UU l4) → ((a : A) → P (f a)) → - (b : B) → F b → P b - fiberwise-map-universal-property-fiber f F δ u P γ = - map-inv-is-equiv (u P) γ ``` ## Properties -### The 3-for-2 Property for fibers of maps {- THIS REQUIRES INFRASTRUCTURE FOR COMPOSING DEPENDENT FUNCTIONS -} +### Fibers are uniquely unique ```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) {F : B → UU l3} - (δ : (a : A) → F (f a)) {P : B → UU l4} (γ : (a : A) → P (f a)) - (h : (b : B) → F b → P b) (H : (ev-fiber f F δ P h) ~ γ) + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} (F : B → UU l3) + (δ : (a : A) → F (f a)) (P : B → UU l4) (γ : (a : A) → P (f a)) where - triangle-ev-fiber : - {l5 : Level} (C : B → UU l5) → - (ev-fiber f P γ C) ~ ((ev-fiber f F δ C ) ∘ (λ (k : (b : B) → P b → C b) b t → k b (h b t))) - triangle-ev-fiber C = {!!} -``` + section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + section-preserving-fiberwise-map-fiber = + Σ ((b : B) → F b → P b) (λ h → (ev-fiber f F δ P h) ~ γ) -### Fibers are uniquely unique +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + where + + fiberwise-map-section-preserving-fiberwise-map-fiber : + section-preserving-fiberwise-map-fiber F δ P γ → (b : B) → F b → P b + fiberwise-map-section-preserving-fiberwise-map-fiber = pr1 + + preserves-section-section-preserving-fiberwise-map-fiber : + (w : section-preserving-fiberwise-map-fiber F δ P γ) → + (ev-fiber + ( f) + ( F) + ( δ) + ( P) + ( fiberwise-map-section-preserving-fiberwise-map-fiber w)) ~ + ( γ) + preserves-section-section-preserving-fiberwise-map-fiber = pr2 + +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} + where + + id-section-preserving-fiberwise-map-fiber : + section-preserving-fiberwise-map-fiber F δ F δ + pr1 id-section-preserving-fiberwise-map-fiber = λ b → id + pr2 id-section-preserving-fiberwise-map-fiber = refl-htpy -```agda +module _ + {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + {Q : B → UU l5} {η :(a : A) → Q (f a)} + where + + dependent-comp-section-preserving-fiberwise-map-fiber : + ( section-preserving-fiberwise-map-fiber P γ Q η) → + ( section-preserving-fiberwise-map-fiber F δ P γ) → + ( section-preserving-fiberwise-map-fiber F δ Q η) + pr1 (dependent-comp-section-preserving-fiberwise-map-fiber g h) = + dependent-comp + ( fiberwise-map-section-preserving-fiberwise-map-fiber g) + ( fiberwise-map-section-preserving-fiberwise-map-fiber h) + pr2 (dependent-comp-section-preserving-fiberwise-map-fiber g h) a = + ( ap + ( (fiberwise-map-section-preserving-fiberwise-map-fiber g) (f a)) + ( preserves-section-section-preserving-fiberwise-map-fiber h a)) ∙ + ( preserves-section-section-preserving-fiberwise-map-fiber g a) + module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) (u : {l : Level} → universal-property-fiber l f F δ) (P : B → UU l4) (γ : (a : A) → P (f a)) where - + uniqueness-fiberwise-map-universal-property-fiber : - is-contr (Σ ((b : B) → F b → P b) (λ h → (ev-fiber f F δ P h) ~ γ)) + is-contr (section-preserving-fiberwise-map-fiber F δ P γ) uniqueness-fiberwise-map-universal-property-fiber = is-contr-equiv ( fiber (ev-fiber f F δ P) γ) @@ -126,25 +177,108 @@ module _ ( λ h → equiv-eq-htpy)) ( is-contr-map-is-equiv (u P) γ) + section-preserving-fiberwise-map-universal-property-fiber : + section-preserving-fiberwise-map-fiber F δ P γ + section-preserving-fiberwise-map-universal-property-fiber = + ( center uniqueness-fiberwise-map-universal-property-fiber) + + fiberwise-map-universal-property-fiber : + (b : B) → F b → P b + fiberwise-map-universal-property-fiber = + fiberwise-map-section-preserving-fiberwise-map-fiber + section-preserving-fiberwise-map-universal-property-fiber + + preserves-section-fiberwise-map-universal-property-fiber : + (ev-fiber f F δ P fiberwise-map-universal-property-fiber) ~ γ + preserves-section-fiberwise-map-universal-property-fiber = + preserves-section-section-preserving-fiberwise-map-fiber + section-preserving-fiberwise-map-universal-property-fiber + +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) + (δ : (a : A) → F (f a)) (u : {l : Level} → universal-property-fiber l f F δ) + (P : B → UU l4) (γ : (a : A) → P (f a)) (u' : {l : Level} → universal-property-fiber l f P γ) + where + + dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber : + ( dependent-comp-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ) + ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) = + ( id-section-preserving-fiberwise-map-fiber) + dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber = + eq-is-contr + ( uniqueness-fiberwise-map-universal-property-fiber f F δ u F δ) + + dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber : + ( dependent-comp-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) + ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ)= + ( id-section-preserving-fiberwise-map-fiber) + dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber = + eq-is-contr + ( uniqueness-fiberwise-map-universal-property-fiber f P γ u' P γ) + + is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber : + (b : B) → + ( ( fiberwise-map-universal-property-fiber f P γ u' F δ b) ∘ + ( fiberwise-map-universal-property-fiber f F δ u P γ b)) ~ + ( id) + is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber b = + htpy-eq (htpy-eq (ap pr1 dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber) b) + + is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber : + (b : B) → + ( ( fiberwise-map-universal-property-fiber f F δ u P γ b) ∘ + ( fiberwise-map-universal-property-fiber f P γ u' F δ b)) ~ + ( id) + is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber b = + htpy-eq (htpy-eq (ap pr1 dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber) b) + + is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber : + is-fiberwise-equiv (fiberwise-map-universal-property-fiber f F δ u P γ) + is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber b = + is-equiv-is-invertible + ( fiberwise-map-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-fiber + ( f) + ( P) + ( γ) + ( u') + ( F) + ( δ)) + ( b)) + (is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber b) + (is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber b) + uniquely-unique-fiberwise-map-universal-property-fiber : - (u' : {l : Level} → universal-property-fiber l f P γ) → is-contr ( Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ)) - uniquely-unique-fiberwise-map-universal-property-fiber u' = + uniquely-unique-fiberwise-map-universal-property-fiber = is-torsorial-Eq-subtype - ( uniqueness-fiberwise-map-universal-property-fiber) + ( uniqueness-fiberwise-map-universal-property-fiber f F δ u P γ) ( is-property-is-fiberwise-equiv) ( fiberwise-map-universal-property-fiber f F δ u P γ) - ( htpy-eq (is-section-map-inv-is-equiv (u P) γ)) - ( {!!}) -``` - unique-fiber : - ({l : Level} → universal-property-fiber l f F δ) → - ({l : Level} → universal-property-fiber l f F' δ') → (b : B) → F b ≃ F' b - pr1 (unique-fiber u u' b) = map-inv-is-equiv (u F') δ' b - pr2 (unique-fiber u u' b) = - is-equiv-is-invertible - ( map-inv-is-equiv (u' F) δ b) - ( {!s!}) - ( {!r!}) + ( preserves-section-fiberwise-map-universal-property-fiber f F δ u P γ) + ( is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber) + + section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : + Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ) + section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = + center uniquely-unique-fiberwise-map-universal-property-fiber + fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : + fiberwise-equiv F P + fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = + pr1 section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber + + preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : + (ev-fiber + ( f) + ( F) + ( δ) + ( P) + ( fiberwise-map-fiberwise-equiv fiberwise-equiv-unique-fiberwise-map-universal-property-fiber)) ~ + ( γ) + preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = + pr2 section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber +``` From 97fcfbca822ed1d8260e7455657f1be895905907 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 15:21:02 -0700 Subject: [PATCH 05/29] clean up --- src/foundation/equivalences.lagda.md | 1 + .../families-of-equivalences.lagda.md | 3 +- src/foundation/function-types.lagda.md | 16 +++++++- ...universal-property-fibers-of-maps.lagda.md | 41 ++++++++----------- 4 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 12060cbd8b..b09f130114 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-identifications-functions open import foundation.cones-over-cospans open import foundation.dependent-pair-types open import foundation.equivalence-extensionality +open import foundation.families-of-equivalences open import foundation.function-extensionality open import foundation.functoriality-fibers-of-maps open import foundation.identity-types diff --git a/src/foundation/families-of-equivalences.lagda.md b/src/foundation/families-of-equivalences.lagda.md index 5d2a3477b4..f99cf26e0a 100644 --- a/src/foundation/families-of-equivalences.lagda.md +++ b/src/foundation/families-of-equivalences.lagda.md @@ -40,7 +40,6 @@ module _ is-fiberwise-equiv f = (x : A) → is-equiv (f x) ``` - ### Fiberwise equivalences ```agda @@ -50,7 +49,7 @@ module _ fiberwise-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) fiberwise-equiv B C = Σ ((x : A) → B x → C x) is-fiberwise-equiv - + fiberwise-map-fiberwise-equiv : {B : A → UU l2} {C : A → UU l3} → fiberwise-equiv B C → (a : A) → B a → C a diff --git a/src/foundation/function-types.lagda.md b/src/foundation/function-types.lagda.md index 98dcea3460..4f6a70b915 100644 --- a/src/foundation/function-types.lagda.md +++ b/src/foundation/function-types.lagda.md @@ -1,4 +1,4 @@ - # Function types +# Function types ```agda module foundation.function-types where @@ -148,6 +148,20 @@ module _ ( eq-htpy-refl-htpy (h (i s)))) ``` +### Composing families of functions + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + {D : A → UU l4} + where + + dependent-comp : + ((a : A) → C a → D a) → ((a : A) → B a → C a) → (a : A) → B a → D a + dependent-comp g f a b = g a (f a b) +``` + + ## See also ### Table of files about function types, composition, and equivalences diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 2e28cd751d..6ce10c1f03 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -13,7 +13,9 @@ open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.families-of-equivalences open import foundation.function-extensionality +open import foundation.function-types open import foundation.functoriality-dependent-function-types open import foundation.functoriality-function-types open import foundation.subtype-identity-principle @@ -66,19 +68,6 @@ defined by a point `b₀ : B` and the universal property of `unit`, we have which essentialy tells us `fiber f : B → UU` has the same universal property as `Id b₀ : B → UU`. -### Temporary lemmas - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - {D : A → UU l4} - where - - dependent-comp : - ((a : A) → C a → D a) → ((a : A) → B a → C a) → (a : A) → B a → D a - dependent-comp g f a b = g a (f a b) - -``` ## Definition @@ -95,7 +84,8 @@ module _ universal-property-fiber : (l : Level) (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l) - universal-property-fiber l f F δ = (P : B → UU l) → is-equiv (ev-fiber f F δ P) + universal-property-fiber l f F δ = + (P : B → UU l) → is-equiv (ev-fiber f F δ P) ``` ## Properties @@ -136,7 +126,7 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} {δ : (a : A) → F (f a)} where - + id-section-preserving-fiberwise-map-fiber : section-preserving-fiberwise-map-fiber F δ F δ pr1 id-section-preserving-fiberwise-map-fiber = λ b → id @@ -145,7 +135,7 @@ module _ module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} - {Q : B → UU l5} {η :(a : A) → Q (f a)} + {Q : B → UU l5} {η : (a : A) → Q (f a)} where dependent-comp-section-preserving-fiberwise-map-fiber : @@ -161,13 +151,13 @@ module _ ( (fiberwise-map-section-preserving-fiberwise-map-fiber g) (f a)) ( preserves-section-section-preserving-fiberwise-map-fiber h a)) ∙ ( preserves-section-section-preserving-fiberwise-map-fiber g a) - + module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) (u : {l : Level} → universal-property-fiber l f F δ) (P : B → UU l4) (γ : (a : A) → P (f a)) where - + uniqueness-fiberwise-map-universal-property-fiber : is-contr (section-preserving-fiberwise-map-fiber F δ P γ) uniqueness-fiberwise-map-universal-property-fiber = @@ -175,7 +165,7 @@ module _ ( fiber (ev-fiber f F δ P) γ) ( equiv-tot ( λ h → equiv-eq-htpy)) - ( is-contr-map-is-equiv (u P) γ) + ( is-contr-map-is-equiv (u P) γ) section-preserving-fiberwise-map-universal-property-fiber : section-preserving-fiberwise-map-fiber F δ P γ @@ -212,7 +202,7 @@ module _ dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber : ( dependent-comp-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) - ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ)= + ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ) = ( id-section-preserving-fiberwise-map-fiber) dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber = eq-is-contr @@ -223,7 +213,8 @@ module _ ( ( fiberwise-map-universal-property-fiber f P γ u' F δ b) ∘ ( fiberwise-map-universal-property-fiber f F δ u P γ b)) ~ ( id) - is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber b = + is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber + b = htpy-eq (htpy-eq (ap pr1 dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber) b) is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber : @@ -231,12 +222,14 @@ module _ ( ( fiberwise-map-universal-property-fiber f F δ u P γ b) ∘ ( fiberwise-map-universal-property-fiber f P γ u' F δ b)) ~ ( id) - is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber b = + is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber + b = htpy-eq (htpy-eq (ap pr1 dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber) b) is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber : is-fiberwise-equiv (fiberwise-map-universal-property-fiber f F δ u P γ) - is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber b = + is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber + b = is-equiv-is-invertible ( fiberwise-map-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-fiber @@ -264,7 +257,7 @@ module _ section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - center uniquely-unique-fiberwise-map-universal-property-fiber + center uniquely-unique-fiberwise-map-universal-property-fiber fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : fiberwise-equiv F P From ecbf4bec88ba60392d9eb8f5bb7d6c5e54013723 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 15:31:10 -0700 Subject: [PATCH 06/29] imports --- src/foundation/fibers-of-maps.lagda.md | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 3d1936b404..1ec46c178d 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -12,10 +12,15 @@ open import foundation-core.fibers-of-maps public open import foundation.cones-over-cospans open import foundation.contractible-types open import foundation.dependent-pair-types +open import foundation.dependent-universal-property-equivalences open import foundation.equivalences +open import foundation.functoriality-dependent-function-types +open import foundation.identity-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-unit-type open import foundation.unit-type +open import foundation.universal-property-dependent-pair-types +open import foundation.universal-property-fibers-of-maps open import foundation.universe-levels open import foundation-core.constant-maps @@ -107,6 +112,40 @@ module _ inv-equiv equiv-total-fiber-terminal-map ``` +### The family of fibers has the universal property of fibers of maps + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + section-family-of-fibers : + (a : A) → fiber f (f a) + pr1 (section-family-of-fibers a) = a + pr2 (section-family-of-fibers a) = refl + + equiv-up-family-of-fibers : + {l : Level} → (P : B → UU l) → + ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) + equiv-up-family-of-fibers P = + equivalence-reasoning + ( (b : B) → fiber f b → P b) + ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w)) + by equiv-ind-Σ + ≃ ((a : A) → P (f a)) + by + equiv-precomp-Π + ( inv-equiv-total-fiber f) + ( λ w → P (pr1 w)) + + up-family-of-fibers : + {l : Level} → + universal-property-fiber l f (fiber f) (section-family-of-fibers) + up-family-of-fibers P = + is-equiv-map-equiv (equiv-up-family-of-fibers P) +``` + + ## Table of files about fibers of maps The following table lists files that are about fibers of maps as a general From 0a49f670d470ca8ac2f1f7a3ccc60b5f3929dd78 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 15:32:36 -0700 Subject: [PATCH 07/29] cleanup --- .../universal-property-fibers-of-maps.lagda.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 6ce10c1f03..3b731ea1b2 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -58,17 +58,6 @@ out universal property. This lets us characterize the sections `(a : A) → B (f a)`. And, in the case that `f` was defined using the mapping out property of `A`, we may obtain an even nicer characterization. -For example, if we take `A` to be `unit` and the map `f : unit → B` to be -defined by a point `b₀ : B` and the universal property of `unit`, we have - -```text -((b : B) → fiber f b → P b) ≃ ((t : unit) → P (f t)) ≃ ((t : unit) → P b₀) ≃ P b₀ -``` - -which essentialy tells us `fiber f : B → UU` has the same universal property as -`Id b₀ : B → UU`. - - ## Definition ```agda From 669aeb22af2b66e1aaf2e5c4d977e1f94f743333 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 15:49:29 -0700 Subject: [PATCH 08/29] pre-commit --- src/foundation/fibers-of-maps.lagda.md | 3 +- src/foundation/function-types.lagda.md | 1 - ...universal-property-fibers-of-maps.lagda.md | 55 ++++++++++++++----- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 1ec46c178d..f83b9aa901 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -142,10 +142,9 @@ module _ {l : Level} → universal-property-fiber l f (fiber f) (section-family-of-fibers) up-family-of-fibers P = - is-equiv-map-equiv (equiv-up-family-of-fibers P) + is-equiv-map-equiv (equiv-up-family-of-fibers P) ``` - ## Table of files about fibers of maps The following table lists files that are about fibers of maps as a general diff --git a/src/foundation/function-types.lagda.md b/src/foundation/function-types.lagda.md index 4f6a70b915..5dedd121e5 100644 --- a/src/foundation/function-types.lagda.md +++ b/src/foundation/function-types.lagda.md @@ -161,7 +161,6 @@ module _ dependent-comp g f a b = g a (f a b) ``` - ## See also ### Table of files about function types, composition, and equivalences diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 3b731ea1b2..b6f44cb783 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -26,7 +26,6 @@ open import foundation.universe-levels open import foundation-core.constant-maps open import foundation-core.fibers-of-maps -open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types @@ -176,13 +175,20 @@ module _ module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) (u : {l : Level} → universal-property-fiber l f F δ) - (P : B → UU l4) (γ : (a : A) → P (f a)) (u' : {l : Level} → universal-property-fiber l f P γ) + (P : B → UU l4) (γ : (a : A) → P (f a)) + (u' : {l : Level} → universal-property-fiber l f P γ) where dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber : ( dependent-comp-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ) - ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) = + ( section-preserving-fiberwise-map-universal-property-fiber + ( f) + ( F) + ( δ) + ( u) + ( P) + ( γ))) = ( id-section-preserving-fiberwise-map-fiber) dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber = eq-is-contr @@ -191,7 +197,13 @@ module _ dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber : ( dependent-comp-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) - ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ) = + ( section-preserving-fiberwise-map-universal-property-fiber + ( f) + ( P) + ( γ) + ( u') + ( F) + ( δ)) = ( id-section-preserving-fiberwise-map-fiber) dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber = eq-is-contr @@ -204,7 +216,12 @@ module _ ( id) is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber b = - htpy-eq (htpy-eq (ap pr1 dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber) b) + htpy-eq + ( htpy-eq + ( ap + ( pr1) + ( dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber)) + ( b)) is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber : (b : B) → @@ -213,7 +230,12 @@ module _ ( id) is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber b = - htpy-eq (htpy-eq (ap pr1 dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber) b) + htpy-eq + ( htpy-eq + ( ap + ( pr1) + ( dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber)) + ( b)) is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber : is-fiberwise-equiv (fiberwise-map-universal-property-fiber f F δ u P γ) @@ -229,12 +251,15 @@ module _ ( F) ( δ)) ( b)) - (is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber b) - (is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber b) + ( is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber + ( b)) + ( is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber + ( b)) uniquely-unique-fiberwise-map-universal-property-fiber : is-contr - ( Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ)) + ( Σ (fiberwise-equiv F P) + ( λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ)) uniquely-unique-fiberwise-map-universal-property-fiber = is-torsorial-Eq-subtype ( uniqueness-fiberwise-map-universal-property-fiber f F δ u P γ) @@ -244,14 +269,16 @@ module _ ( is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : - Σ (fiberwise-equiv F P) (λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ) + Σ (fiberwise-equiv F P) + ( λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = center uniquely-unique-fiberwise-map-universal-property-fiber fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : fiberwise-equiv F P fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - pr1 section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber + pr1 + ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber) preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : (ev-fiber @@ -259,8 +286,10 @@ module _ ( F) ( δ) ( P) - ( fiberwise-map-fiberwise-equiv fiberwise-equiv-unique-fiberwise-map-universal-property-fiber)) ~ + ( fiberwise-map-fiberwise-equiv + ( fiberwise-equiv-unique-fiberwise-map-universal-property-fiber))) ~ ( γ) preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - pr2 section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber + pr2 + ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber) ``` From a63321f0602ebefe8219ea65b329847655611e6e Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 15:55:46 -0700 Subject: [PATCH 09/29] typo --- .../universal-property-fibers-of-maps.lagda.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index b6f44cb783..193a3aed20 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -46,16 +46,16 @@ We can uniquely characterize the family of fibers `fiber f : B → UU` as the initial type family equipped with such a section. Explicitly, `fiber f : B → UU` is initial amoung type families `P : B → UU` equipped with sections `(a : A) → P (f a)`. This can be packaged into an equivalence between fiberwise -maps from `fiber f` to `P` and sections of `B ∘ f`: +maps from `fiber f` to `P` and sections of `P ∘ f`: ```text ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) ``` -This universal property is especially useful when `A` itself enjoys a mapping -out universal property. This lets us characterize the sections -`(a : A) → B (f a)`. And, in the case that `f` was defined using the mapping out -property of `A`, we may obtain an even nicer characterization. +This universal property is especially useful when `A` or `B` enjoy mapping +out universal properties. This lets us characterize the sections +`(a : A) → P (f a)` in terms of the mapping ot properties of `A` and +the descent data of `B`. ## Definition From 4ce85022b0f6a2d645688697f64f391d01215e62 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Sat, 25 Nov 2023 16:07:50 -0700 Subject: [PATCH 10/29] typos --- src/foundation/universal-property-fibers-of-maps.lagda.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 193a3aed20..bb81856cad 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -52,10 +52,9 @@ maps from `fiber f` to `P` and sections of `P ∘ f`: ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) ``` -This universal property is especially useful when `A` or `B` enjoy mapping -out universal properties. This lets us characterize the sections -`(a : A) → P (f a)` in terms of the mapping ot properties of `A` and -the descent data of `B`. +This universal property is especially useful when `A` or `B` enjoy mapping out +universal properties. This lets us characterize the sections `(a : A) → P (f a)` +in terms of the mapping ot properties of `A` and the descent data of `B`. ## Definition From c9b19796484dfc12187e4108f09e511bbd018aee Mon Sep 17 00:00:00 2001 From: Raymond Baker <96847663+morphismz@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:07:16 -0700 Subject: [PATCH 11/29] Apply suggestions from code review Co-authored-by: Fredrik Bakke Co-authored-by: Egbert Rijke --- src/foundation/universal-property-fibers-of-maps.lagda.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index bb81856cad..9f8d2432da 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -1,4 +1,4 @@ -# The Universal Property of Fibers of Maps +# The universal property of fibers of maps ```agda module foundation.universal-property-fibers-of-maps where @@ -69,10 +69,9 @@ module _ ev-fiber f F δ P h a = h (f a) (δ a) universal-property-fiber : - (l : Level) (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → - UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l) + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω universal-property-fiber l f F δ = - (P : B → UU l) → is-equiv (ev-fiber f F δ P) + {l : Level} (P : B → UU l) → is-equiv (ev-fiber f F δ P) ``` ## Properties From 62901e059edf9dcdfbf0896dc7c0269bd2c56e6b Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Tue, 28 Nov 2023 16:54:01 -0700 Subject: [PATCH 12/29] dependent universal property of fibers --- src/foundation/fibers-of-maps.lagda.md | 2 +- .../universal-property-fibers-of-maps.lagda.md | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 80de090bc5..198566022e 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -143,7 +143,7 @@ module _ up-family-of-fibers : {l : Level} → - universal-property-fiber l f (fiber f) (section-family-of-fibers) + universal-property-fiber f (fiber f) (section-family-of-fibers) up-family-of-fibers P = is-equiv-map-equiv (equiv-up-family-of-fibers P) ``` diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 5463a2d801..8a2ff9ae8f 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -72,6 +72,17 @@ module _ (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω universal-property-fiber f F δ = {l : Level} (P : B → UU l) → is-equiv (ev-fiber f F δ P) + + dependent-ev-fiber : + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} + (P : (b : B) → F b → UU l4) → ((b : B) (z : F b) → P b z) → + (a : A) → P (f a) (δ a) + dependent-ev-fiber f F δ P h a = h (f a) (δ a) + + dependent-universal-property-fiber : + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω + dependent-universal-property-fiber f F δ = + {l : Level} (P : (b : B) → F b → UU l) → is-equiv (dependent-ev-fiber f F δ P) ``` ## Properties From eb524204b86b8e51708bc0e13e2e37a0b135522f Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Tue, 28 Nov 2023 17:02:12 -0700 Subject: [PATCH 13/29] fibers have the dependent universal property --- src/foundation/fibers-of-maps.lagda.md | 32 +++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 198566022e..46fbbeaf3b 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -142,12 +142,42 @@ module _ ( λ w → P (pr1 w)) up-family-of-fibers : - {l : Level} → universal-property-fiber f (fiber f) (section-family-of-fibers) up-family-of-fibers P = is-equiv-map-equiv (equiv-up-family-of-fibers P) ``` +### The family of fibers has the dependent universal property of fibers of maps + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + equiv-dependent-up-family-of-fibers : + {l : Level} (P : (b : B) → fiber f b → UU l) → + ( ( b : B) (z : fiber f b) → P b z) ≃ + ( ( a : A) → P (f a) (section-family-of-fibers f a)) + equiv-dependent-up-family-of-fibers P = + equivalence-reasoning + ( ( b : B) (z : fiber f b) → P b z) + ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w) (pr2 w)) + by equiv-ind-Σ + ≃ ((a : A) → P (f a) (section-family-of-fibers f a)) + by + equiv-precomp-Π + ( inv-equiv-total-fiber f) + ( λ w → P (pr1 w) (pr2 w)) + + dependent-up-family-of-fibers : + dependent-universal-property-fiber + ( f) + ( fiber f) + ( section-family-of-fibers f) + dependent-up-family-of-fibers P = + is-equiv-map-equiv (equiv-dependent-up-family-of-fibers P) +``` + ### Transport in fibers ```agda From 854e29ce7f06cfe37a79ad1d6c0994ff885f9072 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Tue, 28 Nov 2023 17:05:27 -0700 Subject: [PATCH 14/29] table --- tables/fibers-of-maps.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index 83de16f22c..f6334a3451 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,8 +1,9 @@ -| Concept | File | -| -------------------------------- | --------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| Concept | File | +| -------------------------------- | --------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| Universal property of fibers of maps | [`foundation.universal-property-fibers-of-maps`](foundation.universal-property-fibers-of-maps.md) | From 018f1856719cdc736a2f8fdc388c17e13fbfdd32 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Tue, 28 Nov 2023 17:39:33 -0700 Subject: [PATCH 15/29] pre-commit --- .../families-of-equivalences.lagda.md | 6 +++--- src/foundation/fibers-of-maps.lagda.md | 1 - .../universal-property-fibers-of-maps.lagda.md | 9 +++++---- tables/fibers-of-maps.md | 18 +++++++++--------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/foundation/families-of-equivalences.lagda.md b/src/foundation/families-of-equivalences.lagda.md index f99cf26e0a..7c64fdbf81 100644 --- a/src/foundation/families-of-equivalences.lagda.md +++ b/src/foundation/families-of-equivalences.lagda.md @@ -50,15 +50,15 @@ module _ fiberwise-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) fiberwise-equiv B C = Σ ((x : A) → B x → C x) is-fiberwise-equiv - fiberwise-map-fiberwise-equiv : + map-fiberwise-equiv : {B : A → UU l2} {C : A → UU l3} → fiberwise-equiv B C → (a : A) → B a → C a - fiberwise-map-fiberwise-equiv = pr1 + map-fiberwise-equiv = pr1 is-fiberwise-equiv-fiberwise-equiv : {B : A → UU l2} {C : A → UU l3} → (e : fiberwise-equiv B C) → - is-fiberwise-equiv (fiberwise-map-fiberwise-equiv e) + is-fiberwise-equiv (map-fiberwise-equiv e) is-fiberwise-equiv-fiberwise-equiv = pr2 ``` diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 46fbbeaf3b..ae32749545 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -28,7 +28,6 @@ open import foundation-core.constant-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies -open import foundation-core.identity-types open import foundation-core.pullbacks open import foundation-core.transport-along-identifications open import foundation-core.universal-property-pullbacks diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 8a2ff9ae8f..4fe5bed9ab 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -82,7 +82,8 @@ module _ dependent-universal-property-fiber : (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω dependent-universal-property-fiber f F δ = - {l : Level} (P : (b : B) → F b → UU l) → is-equiv (dependent-ev-fiber f F δ P) + {l : Level} (P : (b : B) → F b → UU l) → + is-equiv (dependent-ev-fiber f F δ P) ``` ## Properties @@ -268,7 +269,7 @@ module _ uniquely-unique-fiberwise-map-universal-property-fiber : is-contr ( Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ)) + ( λ h → (ev-fiber f F δ P (map-fiberwise-equiv h)) ~ γ)) uniquely-unique-fiberwise-map-universal-property-fiber = is-torsorial-Eq-subtype ( uniqueness-fiberwise-map-universal-property-fiber f F δ u P γ) @@ -279,7 +280,7 @@ module _ section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ P (fiberwise-map-fiberwise-equiv h)) ~ γ) + ( λ h → (ev-fiber f F δ P (map-fiberwise-equiv h)) ~ γ) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = center uniquely-unique-fiberwise-map-universal-property-fiber @@ -295,7 +296,7 @@ module _ ( F) ( δ) ( P) - ( fiberwise-map-fiberwise-equiv + ( map-fiberwise-equiv ( fiberwise-equiv-unique-fiberwise-map-universal-property-fiber))) ~ ( γ) preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index f6334a3451..384a00bb10 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,9 +1,9 @@ -| Concept | File | -| -------------------------------- | --------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| Universal property of fibers of maps | [`foundation.universal-property-fibers-of-maps`](foundation.universal-property-fibers-of-maps.md) | +| Concept | File | +| ------------------------------------ | ------------------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| Universal property of fibers of maps | [`foundation.universal-property-fibers-of-maps`](foundation.universal-property-fibers-of-maps.md) | From 7ce23d5b6945315220bda59486cea8a6e7e3ef07 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Wed, 29 Nov 2023 20:44:50 -0700 Subject: [PATCH 16/29] minimize imports --- .../universal-property-fibers-of-maps.lagda.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 4fe5bed9ab..0ff5e99b9d 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -8,7 +8,6 @@ module foundation.universal-property-fibers-of-maps where ```agda open import foundation.action-on-identifications-functions -open import foundation.cones-over-cospans open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types @@ -16,21 +15,13 @@ open import foundation.equivalences open import foundation.families-of-equivalences open import foundation.function-extensionality open import foundation.function-types -open import foundation.functoriality-dependent-function-types -open import foundation.functoriality-function-types open import foundation.subtype-identity-principle -open import foundation.type-arithmetic-dependent-pair-types -open import foundation.type-arithmetic-unit-type -open import foundation.unit-type open import foundation.universe-levels -open import foundation-core.constant-maps open import foundation-core.fibers-of-maps open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.pullbacks -open import foundation-core.universal-property-pullbacks ```
From e9a570da30ea048d1d4db9e6a5db9f2003724d13 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Wed, 29 Nov 2023 20:55:05 -0700 Subject: [PATCH 17/29] imports --- src/foundation/fibers-of-maps.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index ae32749545..46b2bcbae4 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -15,8 +15,6 @@ open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.equivalences -open import foundation.functoriality-dependent-function-types -open import foundation.identity-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-unit-type open import foundation.unit-type @@ -28,6 +26,7 @@ open import foundation-core.constant-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies +open import foundation-core.identity-types open import foundation-core.pullbacks open import foundation-core.transport-along-identifications open import foundation-core.universal-property-pullbacks From bcefaa13e02dc5e38479502391115ca17a3a68b7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 30 Nov 2023 13:42:10 -0500 Subject: [PATCH 18/29] working through the universal property of fibers of maps --- .../precomposition-type-families.lagda.md | 38 ++++++++++ ...universal-property-fibers-of-maps.lagda.md | 74 ++++++++++--------- 2 files changed, 79 insertions(+), 33 deletions(-) create mode 100644 src/foundation/precomposition-type-families.lagda.md diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md new file mode 100644 index 0000000000..798926561a --- /dev/null +++ b/src/foundation/precomposition-type-families.lagda.md @@ -0,0 +1,38 @@ +# Precomposition of type families + +```agda +module foundation.precomposition-type-families where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import foundation-core.function-types +``` + +
+ +## Idea + +Any map `f : A → B` induces a {{#concept "precomposition operation" Disambiguation="of type families"}} + +```text + (B → 𝒰) → (A → 𝒰) +``` + +given by [precomposing](precomposition-functions.md) any `Q : B → 𝒰` to `Q ∘ f : A → 𝒰`. + +## Definitions + +### The precomposition operation on type familes + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + precomp-family : (l : Level) → (B → UU l) → (A → UU l) + precomp-family l Q = Q ∘ f +``` diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 0ff5e99b9d..18db2c71ae 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -28,53 +28,63 @@ open import foundation-core.identity-types ## Idea -A map `f : A → B` induces a type family `fiber f : B → UU`. By precomposing with -`f`, we have another type family `(fiber f) ∘ f : A → UU`. This latter type -family always has a section given by -`λ a → (a , refl) : (a : A) → fiber f (f a)`. +Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of +[fibers](foundation-core.fibers-of-maps.md) of `f`. By +[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by -We can uniquely characterize the family of fibers `fiber f : B → UU` as the -initial type family equipped with such a section. Explicitly, `fiber f : B → UU` -is initial amoung type families `P : B → UU` equipped with sections -`(a : A) → P (f a)`. This can be packaged into an equivalence between fiberwise -maps from `fiber f` to `P` and sections of `P ∘ f`: +```text + λ a → (a , refl) : (a : A) → fiber f (f a). +``` + +We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the +initial type family equipped with such a section. Explicitly, the {{#concept "universal property of the fiber" Disambiguation="of a map"}} `fiber f : B → 𝒰` of a map `f` is that the precomposition operation ```text -((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) + ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) ``` +is an [equivalence](foundation-core.equivalences.md) for any type family `P : B → 𝒰`. + This universal property is especially useful when `A` or `B` enjoy mapping out universal properties. This lets us characterize the sections `(a : A) → P (f a)` -in terms of the mapping ot properties of `A` and the descent data of `B`. +in terms of the mapping out properties of `A` and the descent data of `B`. ## Definition +### The canonical map used in the universal property and dependent universal property of the fibers of a map + ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) + (F : B → UU l3) (δ : (a : A) → F (f a)) where ev-fiber : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} - (P : B → UU l4) → ((b : B) → F b → P b) → (a : A) → P (f a) - ev-fiber f F δ P h a = h (f a) (δ a) + {l4 : Level} {P : (b : B) → F b → UU l4} → + ((b : B) (z : F b) → P b z) → (a : A) → P (f a) (δ a) + ev-fiber h a = h (f a) (δ a) +``` + +### The universal property of the fibers of a map + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} + where universal-property-fiber : (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω universal-property-fiber f F δ = - {l : Level} (P : B → UU l) → is-equiv (ev-fiber f F δ P) + {l : Level} (P : B → UU l) → is-equiv (ev-fiber f F δ {l} {λ b _ → P b}) +``` - dependent-ev-fiber : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) {l4 : Level} - (P : (b : B) → F b → UU l4) → ((b : B) (z : F b) → P b z) → - (a : A) → P (f a) (δ a) - dependent-ev-fiber f F δ P h a = h (f a) (δ a) +### The dependent universal property of the fibers of a map +```agda dependent-universal-property-fiber : (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω dependent-universal-property-fiber f F δ = - {l : Level} (P : (b : B) → F b → UU l) → - is-equiv (dependent-ev-fiber f F δ P) + {l : Level} (P : (b : B) → F b → UU l) → is-equiv (ev-fiber f F δ {l} {P}) ``` ## Properties @@ -89,7 +99,7 @@ module _ section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) section-preserving-fiberwise-map-fiber = - Σ ((b : B) → F b → P b) (λ h → (ev-fiber f F δ P h) ~ γ) + Σ ((b : B) → F b → P b) (λ h → ev-fiber f F δ h ~ γ) module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} @@ -102,12 +112,11 @@ module _ preserves-section-section-preserving-fiberwise-map-fiber : (w : section-preserving-fiberwise-map-fiber F δ P γ) → - (ev-fiber + ev-fiber ( f) ( F) ( δ) - ( P) - ( fiberwise-map-section-preserving-fiberwise-map-fiber w)) ~ + ( fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ ( γ) preserves-section-section-preserving-fiberwise-map-fiber = pr2 @@ -118,7 +127,7 @@ module _ id-section-preserving-fiberwise-map-fiber : section-preserving-fiberwise-map-fiber F δ F δ - pr1 id-section-preserving-fiberwise-map-fiber = λ b → id + pr1 id-section-preserving-fiberwise-map-fiber b = id pr2 id-section-preserving-fiberwise-map-fiber = refl-htpy module _ @@ -151,7 +160,7 @@ module _ is-contr (section-preserving-fiberwise-map-fiber F δ P γ) uniqueness-fiberwise-map-universal-property-fiber = is-contr-equiv - ( fiber (ev-fiber f F δ P) γ) + ( fiber (ev-fiber f F δ) γ) ( equiv-tot ( λ h → equiv-eq-htpy)) ( is-contr-map-is-equiv (u P) γ) @@ -168,7 +177,7 @@ module _ section-preserving-fiberwise-map-universal-property-fiber preserves-section-fiberwise-map-universal-property-fiber : - (ev-fiber f F δ P fiberwise-map-universal-property-fiber) ~ γ + (ev-fiber f F δ fiberwise-map-universal-property-fiber) ~ γ preserves-section-fiberwise-map-universal-property-fiber = preserves-section-section-preserving-fiberwise-map-fiber section-preserving-fiberwise-map-universal-property-fiber @@ -260,7 +269,7 @@ module _ uniquely-unique-fiberwise-map-universal-property-fiber : is-contr ( Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ P (map-fiberwise-equiv h)) ~ γ)) + ( λ h → (ev-fiber f F δ (map-fiberwise-equiv h)) ~ γ)) uniquely-unique-fiberwise-map-universal-property-fiber = is-torsorial-Eq-subtype ( uniqueness-fiberwise-map-universal-property-fiber f F δ u P γ) @@ -271,7 +280,7 @@ module _ section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ P (map-fiberwise-equiv h)) ~ γ) + ( λ h → (ev-fiber f F δ (map-fiberwise-equiv h)) ~ γ) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = center uniquely-unique-fiberwise-map-universal-property-fiber @@ -286,7 +295,6 @@ module _ ( f) ( F) ( δ) - ( P) ( map-fiberwise-equiv ( fiberwise-equiv-unique-fiberwise-map-universal-property-fiber))) ~ ( γ) From 512cd6a33239f45e454e05132540c5d028ac8e41 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Fri, 1 Dec 2023 13:44:25 -0500 Subject: [PATCH 19/29] work --- .../families-of-equivalences.lagda.md | 104 ++++++++++++++ src/foundation-core/fibers-of-maps.lagda.md | 48 ------- ...oriality-dependent-function-types.lagda.md | 2 +- ...unctoriality-dependent-pair-types.lagda.md | 2 +- ...universal-property-fibers-of-maps.lagda.md | 14 ++ src/foundation.lagda.md | 1 + .../equality-fibers-of-maps.lagda.md | 2 +- src/foundation/equivalences.lagda.md | 17 +-- .../families-of-equivalences.lagda.md | 71 ++-------- src/foundation/fibers-of-maps.lagda.md | 66 --------- ...amental-theorem-of-identity-types.lagda.md | 2 +- src/foundation/identity-systems.lagda.md | 2 +- ...recomposition-dependent-functions.lagda.md | 1 + .../precomposition-type-families.lagda.md | 6 +- ...universal-property-fibers-of-maps.lagda.md | 131 +++++++++++++++++- 15 files changed, 264 insertions(+), 205 deletions(-) create mode 100644 src/foundation-core/families-of-equivalences.lagda.md create mode 100644 src/foundation-core/universal-property-fibers-of-maps.lagda.md diff --git a/src/foundation-core/families-of-equivalences.lagda.md b/src/foundation-core/families-of-equivalences.lagda.md new file mode 100644 index 0000000000..ff04e874d1 --- /dev/null +++ b/src/foundation-core/families-of-equivalences.lagda.md @@ -0,0 +1,104 @@ +# Families of equivalences + +```agda +module foundation-core.families-of-equivalences where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import foundation-core.equivalences +open import foundation-core.type-theoretic-principle-of-choice +``` + +
+ +## Idea + +A **family of equivalences** is a family + +```text + eᵢ : A i ≃ B i +``` + +of [equivalences](foundation-core.equivalences.md). Families of equivalences are +also called **fiberwise equivalences**. + +## Definitions + +### The predicate of being a fiberwise equivalence + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + where + + is-fiberwise-equiv : (f : (x : A) → B x → C x) → UU (l1 ⊔ l2 ⊔ l3) + is-fiberwise-equiv f = (x : A) → is-equiv (f x) +``` + +### Fiberwise equivalences + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} + where + + fiberwise-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + fiberwise-equiv B C = Σ ((x : A) → B x → C x) is-fiberwise-equiv + + map-fiberwise-equiv : + {B : A → UU l2} {C : A → UU l3} → + fiberwise-equiv B C → (a : A) → B a → C a + map-fiberwise-equiv = pr1 + + is-fiberwise-equiv-fiberwise-equiv : + {B : A → UU l2} {C : A → UU l3} → + (e : fiberwise-equiv B C) → + is-fiberwise-equiv (map-fiberwise-equiv e) + is-fiberwise-equiv-fiberwise-equiv = pr2 +``` + +### Families of equivalences + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} + where + + fam-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + fam-equiv B C = (x : A) → B x ≃ C x + +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (e : fam-equiv B C) + where + + map-fam-equiv : (x : A) → B x → C x + map-fam-equiv x = map-equiv (e x) + + is-equiv-map-fam-equiv : is-fiberwise-equiv map-fam-equiv + is-equiv-map-fam-equiv x = is-equiv-map-equiv (e x) +``` + +## Properties + +### Families of equivalences are equivalent to fiberwise equivalences + +```agda +equiv-fiberwise-equiv-fam-equiv : + {l1 l2 l3 : Level} {A : UU l1} (B : A → UU l2) (C : A → UU l3) → + fam-equiv B C ≃ fiberwise-equiv B C +equiv-fiberwise-equiv-fam-equiv B C = distributive-Π-Σ +``` + +## See also + +- In + [Functoriality of dependent pair types](foundation-core.functoriality-dependent-pair-types.md) + we show that a family of maps is a fiberwise equivalence if and only if it + induces an equivalence on [total spaces](foundation.dependent-pair-types.md). + diff --git a/src/foundation-core/fibers-of-maps.lagda.md b/src/foundation-core/fibers-of-maps.lagda.md index c25178f54f..7d338028e7 100644 --- a/src/foundation-core/fibers-of-maps.lagda.md +++ b/src/foundation-core/fibers-of-maps.lagda.md @@ -366,54 +366,6 @@ module _ pr2 inv-compute-fiber-comp = is-equiv-inv-map-compute-fiber-comp ``` -### When a product is taken over all fibers of a map, then we can equivalently take the product over the domain of that map - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) - (C : (y : B) (z : fiber f y) → UU l3) - where - - map-reduce-Π-fiber : - ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) - map-reduce-Π-fiber h x = h (f x) (x , refl) - - inv-map-reduce-Π-fiber : - ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) - inv-map-reduce-Π-fiber h .(f x) (x , refl) = h x - - is-section-inv-map-reduce-Π-fiber : - (map-reduce-Π-fiber ∘ inv-map-reduce-Π-fiber) ~ id - is-section-inv-map-reduce-Π-fiber h = refl - - is-retraction-inv-map-reduce-Π-fiber' : - (h : (y : B) (z : fiber f y) → C y z) (y : B) → - (inv-map-reduce-Π-fiber (map-reduce-Π-fiber h) y) ~ (h y) - is-retraction-inv-map-reduce-Π-fiber' h .(f z) (z , refl) = refl - - is-retraction-inv-map-reduce-Π-fiber : - (inv-map-reduce-Π-fiber ∘ map-reduce-Π-fiber) ~ id - is-retraction-inv-map-reduce-Π-fiber h = - eq-htpy (eq-htpy ∘ is-retraction-inv-map-reduce-Π-fiber' h) - - is-equiv-map-reduce-Π-fiber : is-equiv map-reduce-Π-fiber - is-equiv-map-reduce-Π-fiber = - is-equiv-is-invertible - ( inv-map-reduce-Π-fiber) - ( is-section-inv-map-reduce-Π-fiber) - ( is-retraction-inv-map-reduce-Π-fiber) - - reduce-Π-fiber' : - ((y : B) (z : fiber f y) → C y z) ≃ ((x : A) → C (f x) (x , refl)) - pr1 reduce-Π-fiber' = map-reduce-Π-fiber - pr2 reduce-Π-fiber' = is-equiv-map-reduce-Π-fiber - -reduce-Π-fiber : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) → - (C : B → UU l3) → ((y : B) → fiber f y → C y) ≃ ((x : A) → C (f x)) -reduce-Π-fiber f C = reduce-Π-fiber' f (λ y z → C y) -``` - ## Table of files about fibers of maps The following table lists files that are about fibers of maps as a general diff --git a/src/foundation-core/functoriality-dependent-function-types.lagda.md b/src/foundation-core/functoriality-dependent-function-types.lagda.md index 3b46394efe..09a535f1f4 100644 --- a/src/foundation-core/functoriality-dependent-function-types.lagda.md +++ b/src/foundation-core/functoriality-dependent-function-types.lagda.md @@ -8,7 +8,6 @@ module foundation-core.functoriality-dependent-function-types where ```agda open import foundation.dependent-pair-types -open import foundation.families-of-equivalences open import foundation.function-extensionality open import foundation.implicit-function-types open import foundation.universe-levels @@ -16,6 +15,7 @@ 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.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation-core/functoriality-dependent-pair-types.lagda.md b/src/foundation-core/functoriality-dependent-pair-types.lagda.md index c28397fc83..ff1ecec37d 100644 --- a/src/foundation-core/functoriality-dependent-pair-types.lagda.md +++ b/src/foundation-core/functoriality-dependent-pair-types.lagda.md @@ -8,13 +8,13 @@ module foundation-core.functoriality-dependent-pair-types where ```agda open import foundation.dependent-pair-types -open import foundation.families-of-equivalences open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences +open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types open import foundation-core.homotopies diff --git a/src/foundation-core/universal-property-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-fibers-of-maps.lagda.md new file mode 100644 index 0000000000..b75aae0cd3 --- /dev/null +++ b/src/foundation-core/universal-property-fibers-of-maps.lagda.md @@ -0,0 +1,14 @@ +# The universal property of fibers of maps + +```agda +module foundation-core.universal-property-fibers-of-maps where +``` + +
Imports + +```agda + +``` + +
+ diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index b88961b0a2..022e86b9d4 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -232,6 +232,7 @@ open import foundation.powersets public open import foundation.precomposition-dependent-functions public open import foundation.precomposition-functions public open import foundation.precomposition-functions-into-subuniverses public +open import foundation.precomposition-type-families public open import foundation.preidempotent-maps public open import foundation.preimages-of-subtypes public open import foundation.preunivalence public diff --git a/src/foundation/equality-fibers-of-maps.lagda.md b/src/foundation/equality-fibers-of-maps.lagda.md index ee8a19acdc..bbf9b42b2e 100644 --- a/src/foundation/equality-fibers-of-maps.lagda.md +++ b/src/foundation/equality-fibers-of-maps.lagda.md @@ -9,13 +9,13 @@ module foundation.equality-fibers-of-maps where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.families-of-equivalences open import foundation.identity-types open import foundation.transport-along-identifications open import foundation.universe-levels open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences +open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index b09f130114..5cd9ffb09e 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -13,11 +13,10 @@ open import foundation.action-on-identifications-functions open import foundation.cones-over-cospans open import foundation.dependent-pair-types open import foundation.equivalence-extensionality -open import foundation.families-of-equivalences open import foundation.function-extensionality open import foundation.functoriality-fibers-of-maps open import foundation.identity-types -open import foundation.truncated-maps +open import foundation-core.truncated-maps open import foundation.universal-property-equivalences open import foundation.universe-levels @@ -25,6 +24,7 @@ open import foundation-core.commuting-triangles-of-maps open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.embeddings +open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types @@ -249,19 +249,6 @@ module _ pr2 emb-map-equiv = is-emb-map-equiv ``` -### Being a fiberwise equivalence is a proposition - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - where - - is-property-is-fiberwise-equiv : - (f : (a : A) → B a → C a) → is-prop (is-fiberwise-equiv f) - is-property-is-fiberwise-equiv f = - is-prop-Π (λ a → is-property-is-equiv (f a)) -``` - ### The 3-for-2 property of being an equivalence #### If the right factor is an equivalence, then the left factor being an equivalence is equivalent to the composite being one diff --git a/src/foundation/families-of-equivalences.lagda.md b/src/foundation/families-of-equivalences.lagda.md index 7c64fdbf81..61a7db1071 100644 --- a/src/foundation/families-of-equivalences.lagda.md +++ b/src/foundation/families-of-equivalences.lagda.md @@ -7,11 +7,11 @@ module foundation.families-of-equivalences where
Imports ```agda -open import foundation.dependent-pair-types +open import foundation.equivalences open import foundation.universe-levels -open import foundation-core.equivalences -open import foundation-core.type-theoretic-principle-of-choice +open import foundation-core.families-of-equivalences +open import foundation-core.propositions ```
@@ -27,72 +27,19 @@ A **family of equivalences** is a family of [equivalences](foundation-core.equivalences.md). Families of equivalences are also called **fiberwise equivalences**. -## Definitions - -### The predicate of being a fiberwise equivalence - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - where - - is-fiberwise-equiv : (f : (x : A) → B x → C x) → UU (l1 ⊔ l2 ⊔ l3) - is-fiberwise-equiv f = (x : A) → is-equiv (f x) -``` - -### Fiberwise equivalences - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} - where - - fiberwise-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) - fiberwise-equiv B C = Σ ((x : A) → B x → C x) is-fiberwise-equiv - - map-fiberwise-equiv : - {B : A → UU l2} {C : A → UU l3} → - fiberwise-equiv B C → (a : A) → B a → C a - map-fiberwise-equiv = pr1 - - is-fiberwise-equiv-fiberwise-equiv : - {B : A → UU l2} {C : A → UU l3} → - (e : fiberwise-equiv B C) → - is-fiberwise-equiv (map-fiberwise-equiv e) - is-fiberwise-equiv-fiberwise-equiv = pr2 -``` +## Properties -### Families of equivalences +### Being a fiberwise equivalence is a proposition ```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} - where - - fam-equiv : (B : A → UU l2) (C : A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) - fam-equiv B C = (x : A) → B x ≃ C x - module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - (e : fam-equiv B C) where - map-fam-equiv : (x : A) → B x → C x - map-fam-equiv x = map-equiv (e x) - - is-equiv-map-fam-equiv : is-fiberwise-equiv map-fam-equiv - is-equiv-map-fam-equiv x = is-equiv-map-equiv (e x) -``` - -## Properties - -### Families of equivalences are equivalent to fiberwise equivalences - -```agda -equiv-fiberwise-equiv-fam-equiv : - {l1 l2 l3 : Level} {A : UU l1} (B : A → UU l2) (C : A → UU l3) → - fam-equiv B C ≃ fiberwise-equiv B C -equiv-fiberwise-equiv-fam-equiv B C = distributive-Π-Σ + is-property-is-fiberwise-equiv : + (f : (a : A) → B a → C a) → is-prop (is-fiberwise-equiv f) + is-property-is-fiberwise-equiv f = + is-prop-Π (λ a → is-property-is-equiv (f a)) ``` ## See also diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 46b2bcbae4..b68c2e768d 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -13,13 +13,10 @@ open import foundation.action-on-identifications-functions open import foundation.cones-over-cospans open import foundation.contractible-types open import foundation.dependent-pair-types -open import foundation.dependent-universal-property-equivalences open import foundation.equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-unit-type open import foundation.unit-type -open import foundation.universal-property-dependent-pair-types -open import foundation.universal-property-fibers-of-maps open import foundation.universe-levels open import foundation-core.constant-maps @@ -113,69 +110,6 @@ module _ inv-equiv equiv-total-fiber-terminal-map ``` -### The family of fibers has the universal property of fibers of maps - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - section-family-of-fibers : - (a : A) → fiber f (f a) - pr1 (section-family-of-fibers a) = a - pr2 (section-family-of-fibers a) = refl - - equiv-up-family-of-fibers : - {l : Level} → (P : B → UU l) → - ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) - equiv-up-family-of-fibers P = - equivalence-reasoning - ( (b : B) → fiber f b → P b) - ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w)) - by equiv-ind-Σ - ≃ ((a : A) → P (f a)) - by - equiv-precomp-Π - ( inv-equiv-total-fiber f) - ( λ w → P (pr1 w)) - - up-family-of-fibers : - universal-property-fiber f (fiber f) (section-family-of-fibers) - up-family-of-fibers P = - is-equiv-map-equiv (equiv-up-family-of-fibers P) -``` - -### The family of fibers has the dependent universal property of fibers of maps - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - equiv-dependent-up-family-of-fibers : - {l : Level} (P : (b : B) → fiber f b → UU l) → - ( ( b : B) (z : fiber f b) → P b z) ≃ - ( ( a : A) → P (f a) (section-family-of-fibers f a)) - equiv-dependent-up-family-of-fibers P = - equivalence-reasoning - ( ( b : B) (z : fiber f b) → P b z) - ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w) (pr2 w)) - by equiv-ind-Σ - ≃ ((a : A) → P (f a) (section-family-of-fibers f a)) - by - equiv-precomp-Π - ( inv-equiv-total-fiber f) - ( λ w → P (pr1 w) (pr2 w)) - - dependent-up-family-of-fibers : - dependent-universal-property-fiber - ( f) - ( fiber f) - ( section-family-of-fibers f) - dependent-up-family-of-fibers P = - is-equiv-map-equiv (equiv-dependent-up-family-of-fibers P) -``` - ### Transport in fibers ```agda diff --git a/src/foundation/fundamental-theorem-of-identity-types.lagda.md b/src/foundation/fundamental-theorem-of-identity-types.lagda.md index 4c2a1aa8b8..5090cca6f8 100644 --- a/src/foundation/fundamental-theorem-of-identity-types.lagda.md +++ b/src/foundation/fundamental-theorem-of-identity-types.lagda.md @@ -8,11 +8,11 @@ module foundation.fundamental-theorem-of-identity-types where ```agda open import foundation.dependent-pair-types -open import foundation.families-of-equivalences open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalences +open import foundation-core.families-of-equivalences open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/identity-systems.lagda.md b/src/foundation/identity-systems.lagda.md index 7c8d5789fb..6b4503a13a 100644 --- a/src/foundation/identity-systems.lagda.md +++ b/src/foundation/identity-systems.lagda.md @@ -9,12 +9,12 @@ module foundation.identity-systems where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.families-of-equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalences +open import foundation-core.families-of-equivalences open import foundation-core.identity-types open import foundation-core.sections open import foundation-core.torsorial-type-families diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index dfafc597a6..d308c5ed63 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -15,6 +15,7 @@ open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.function-extensionality open import foundation.truncation-levels +open import foundation.universal-property-fibers-of-maps open import foundation.universe-levels open import foundation-core.coherently-invertible-maps diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md index 798926561a..de5a2a5891 100644 --- a/src/foundation/precomposition-type-families.lagda.md +++ b/src/foundation/precomposition-type-families.lagda.md @@ -16,13 +16,15 @@ open import foundation-core.function-types ## Idea -Any map `f : A → B` induces a {{#concept "precomposition operation" Disambiguation="of type families"}} +Any map `f : A → B` induces a +{{#concept "precomposition operation" Disambiguation="of type families"}} ```text (B → 𝒰) → (A → 𝒰) ``` -given by [precomposing](precomposition-functions.md) any `Q : B → 𝒰` to `Q ∘ f : A → 𝒰`. +given by [precomposing](precomposition-functions.md) any `Q : B → 𝒰` to +`Q ∘ f : A → 𝒰`. ## Definitions diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md index 18db2c71ae..763e70bbdb 100644 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-fibers-of-maps.lagda.md @@ -8,16 +8,18 @@ module foundation.universal-property-fibers-of-maps where ```agda open import foundation.action-on-identifications-functions -open import foundation.contractible-maps -open import foundation.contractible-types +open import foundation-core.contractible-maps +open import foundation-core.contractible-types open import foundation.dependent-pair-types -open import foundation.equivalences -open import foundation.families-of-equivalences +open import foundation.dependent-universal-property-equivalences +open import foundation-core.equivalences open import foundation.function-extensionality open import foundation.function-types open import foundation.subtype-identity-principle +open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels +open import foundation.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies @@ -30,20 +32,24 @@ open import foundation-core.identity-types Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of [fibers](foundation-core.fibers-of-maps.md) of `f`. By -[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by +[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain +the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by ```text λ a → (a , refl) : (a : A) → fiber f (f a). ``` We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the -initial type family equipped with such a section. Explicitly, the {{#concept "universal property of the fiber" Disambiguation="of a map"}} `fiber f : B → 𝒰` of a map `f` is that the precomposition operation +initial type family equipped with such a section. Explicitly, the +{{#concept "universal property of the fiber" Disambiguation="of a map"}} +`fiber f : B → 𝒰` of a map `f` is that the precomposition operation ```text ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) ``` -is an [equivalence](foundation-core.equivalences.md) for any type family `P : B → 𝒰`. +is an [equivalence](foundation-core.equivalences.md) for any type family +`P : B → 𝒰`. This universal property is especially useful when `A` or `B` enjoy mapping out universal properties. This lets us characterize the sections `(a : A) → P (f a)` @@ -89,6 +95,117 @@ module _ ## Properties +### When a product is taken over all fibers of a map, then we can equivalently take the product over the domain of that map + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) + (C : (y : B) (z : fiber f y) → UU l3) + where + + map-reduce-Π-fiber : + ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) + map-reduce-Π-fiber h x = h (f x) (x , refl) + + inv-map-reduce-Π-fiber : + ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) + inv-map-reduce-Π-fiber h .(f x) (x , refl) = h x + + is-section-inv-map-reduce-Π-fiber : + (map-reduce-Π-fiber ∘ inv-map-reduce-Π-fiber) ~ id + is-section-inv-map-reduce-Π-fiber h = refl + + is-retraction-inv-map-reduce-Π-fiber' : + (h : (y : B) (z : fiber f y) → C y z) (y : B) → + (inv-map-reduce-Π-fiber (map-reduce-Π-fiber h) y) ~ (h y) + is-retraction-inv-map-reduce-Π-fiber' h .(f z) (z , refl) = refl + + is-retraction-inv-map-reduce-Π-fiber : + (inv-map-reduce-Π-fiber ∘ map-reduce-Π-fiber) ~ id + is-retraction-inv-map-reduce-Π-fiber h = + eq-htpy (eq-htpy ∘ is-retraction-inv-map-reduce-Π-fiber' h) + + is-equiv-map-reduce-Π-fiber : is-equiv map-reduce-Π-fiber + is-equiv-map-reduce-Π-fiber = + is-equiv-is-invertible + ( inv-map-reduce-Π-fiber) + ( is-section-inv-map-reduce-Π-fiber) + ( is-retraction-inv-map-reduce-Π-fiber) + + reduce-Π-fiber' : + ((y : B) (z : fiber f y) → C y z) ≃ ((x : A) → C (f x) (x , refl)) + pr1 reduce-Π-fiber' = map-reduce-Π-fiber + pr2 reduce-Π-fiber' = is-equiv-map-reduce-Π-fiber + +reduce-Π-fiber : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) → + (C : B → UU l3) → ((y : B) → fiber f y → C y) ≃ ((x : A) → C (f x)) +reduce-Π-fiber f C = reduce-Π-fiber' f (λ y z → C y) +``` + +### The family of fibers has the universal property of fibers of maps + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + section-family-of-fibers : + (a : A) → fiber f (f a) + pr1 (section-family-of-fibers a) = a + pr2 (section-family-of-fibers a) = refl + + equiv-up-family-of-fibers : + {l : Level} → (P : B → UU l) → + ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) + equiv-up-family-of-fibers P = + equivalence-reasoning + ( (b : B) → fiber f b → P b) + ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w)) + by equiv-ind-Σ + ≃ ((a : A) → P (f a)) + by + equiv-precomp-Π + ( inv-equiv-total-fiber f) + ( λ w → P (pr1 w)) + + up-family-of-fibers : + universal-property-fiber f (fiber f) (section-family-of-fibers) + up-family-of-fibers P = + is-equiv-map-equiv (equiv-up-family-of-fibers P) +``` + +### The family of fibers has the dependent universal property of fibers of maps + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + equiv-dependent-up-family-of-fibers : + {l : Level} (P : (b : B) → fiber f b → UU l) → + ( ( b : B) (z : fiber f b) → P b z) ≃ + ( ( a : A) → P (f a) (section-family-of-fibers f a)) + equiv-dependent-up-family-of-fibers P = + equivalence-reasoning + ( ( b : B) (z : fiber f b) → P b z) + ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w) (pr2 w)) + by equiv-ind-Σ + ≃ ((a : A) → P (f a) (section-family-of-fibers f a)) + by + equiv-precomp-Π + ( inv-equiv-total-fiber f) + ( λ w → P (pr1 w) (pr2 w)) + + dependent-up-family-of-fibers : + dependent-universal-property-fiber + ( f) + ( fiber f) + ( section-family-of-fibers f) + dependent-up-family-of-fibers P = + is-equiv-map-equiv (equiv-dependent-up-family-of-fibers P) +``` + ### Fibers are uniquely unique ```agda From beb2c0fc5389ffde4884d6e3e0ebff7ff762f2bc Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 3 Dec 2023 11:02:53 -0500 Subject: [PATCH 20/29] everything compiles --- src/foundation-core.lagda.md | 2 + .../families-of-equivalences.lagda.md | 1 - src/foundation-core/pullbacks.lagda.md | 2 +- ...property-family-of-fibers-of-maps.lagda.md | 251 +++++++++++ ...universal-property-fibers-of-maps.lagda.md | 14 - src/foundation.lagda.md | 2 +- src/foundation/connected-maps.lagda.md | 3 +- src/foundation/equivalences.lagda.md | 2 +- .../families-of-equivalences.lagda.md | 3 +- ...recomposition-dependent-functions.lagda.md | 24 - src/foundation/surjective-maps.lagda.md | 3 +- ...property-family-of-fibers-of-maps.lagda.md | 289 ++++++++++++ ...universal-property-fibers-of-maps.lagda.md | 421 ------------------ .../universal-property-image.lagda.md | 8 +- tables/fibers-of-maps.md | 18 +- 15 files changed, 566 insertions(+), 477 deletions(-) create mode 100644 src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md delete mode 100644 src/foundation-core/universal-property-fibers-of-maps.lagda.md create mode 100644 src/foundation/universal-property-family-of-fibers-of-maps.lagda.md delete mode 100644 src/foundation/universal-property-fibers-of-maps.lagda.md diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 3607d4a3f7..6178671f4b 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -24,6 +24,7 @@ open import foundation-core.endomorphisms public open import foundation-core.equality-dependent-pair-types public open import foundation-core.equivalence-relations public open import foundation-core.equivalences public +open import foundation-core.families-of-equivalences public open import foundation-core.fibers-of-maps public open import foundation-core.function-types public open import foundation-core.functoriality-dependent-function-types public @@ -53,6 +54,7 @@ open import foundation-core.truncated-types public open import foundation-core.truncation-levels public open import foundation-core.type-theoretic-principle-of-choice public open import foundation-core.univalence public +open import foundation-core.universal-property-family-of-fibers-of-maps public open import foundation-core.universal-property-pullbacks public open import foundation-core.universal-property-truncation public open import foundation-core.whiskering-homotopies public diff --git a/src/foundation-core/families-of-equivalences.lagda.md b/src/foundation-core/families-of-equivalences.lagda.md index ff04e874d1..a3578dcaaa 100644 --- a/src/foundation-core/families-of-equivalences.lagda.md +++ b/src/foundation-core/families-of-equivalences.lagda.md @@ -101,4 +101,3 @@ equiv-fiberwise-equiv-fam-equiv B C = distributive-Π-Σ [Functoriality of dependent pair types](foundation-core.functoriality-dependent-pair-types.md) we show that a family of maps is a fiberwise equivalence if and only if it induces an equivalence on [total spaces](foundation.dependent-pair-types.md). - diff --git a/src/foundation-core/pullbacks.lagda.md b/src/foundation-core/pullbacks.lagda.md index b0f4ec9cd8..1b80b0bd79 100644 --- a/src/foundation-core/pullbacks.lagda.md +++ b/src/foundation-core/pullbacks.lagda.md @@ -11,7 +11,6 @@ open import foundation.action-on-identifications-functions open import foundation.cones-over-cospans open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types -open import foundation.families-of-equivalences open import foundation.functoriality-cartesian-product-types open import foundation.functoriality-fibers-of-maps open import foundation.identity-types @@ -23,6 +22,7 @@ open import foundation-core.cartesian-product-types open import foundation-core.diagonal-maps-of-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences +open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md new file mode 100644 index 0000000000..fe815c61e9 --- /dev/null +++ b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md @@ -0,0 +1,251 @@ +# The universal property of family of fibers of maps + +```agda +module foundation-core.universal-property-family-of-fibers-of-maps where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.universe-levels + +open import foundation-core.constant-maps +open import foundation-core.equivalences +open import foundation-core.fibers-of-maps +open import foundation-core.function-types +open import foundation-core.functoriality-dependent-function-types +open import foundation-core.homotopies +open import foundation-core.identity-types +open import foundation-core.precomposition-dependent-functions +``` + +
+ +## Idea + +Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of +[fibers](foundation-core.fibers-of-maps.md) of `f`. By +[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain +the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by + +```text + λ a → (a , refl) : (a : A) → fiber f (f a). +``` + +We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the +initial type family equipped with such a section. Explicitly, the +{{#concept "universal property of the family of fibers" Disambiguation="of a map"}} +`fiber f : B → 𝒰` of a map `f` is that the precomposition operation + +```text + ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) +``` + +is an [equivalence](foundation-core.equivalences.md) for any type family +`P : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, +the type of _lifts_ of `f` to `P` is precisely the type of sections + +```text + (a : A) → P (f a). +``` + +The family of fibers of `f` is therefore the initial type family over `B` +equipped with a lift of `f`. + +This universal property is especially useful when `A` or `B` enjoy mapping out +universal properties. This lets us characterize the sections `(a : A) → P (f a)` +in terms of the mapping out properties of `A` and the descent data of `B`. + +**Note:** We disambiguate between the _universal property of the family of +fibers of a map_ and the _universal property of the fiber of a map_ at a point +in the codomain. The universal property of the family of fibers of a map is as +described above, while the universal property of the fiber `fiber f b` of a map +`f` at `b` is a special case of the universal property of pullbacks. + +## Definitions + +### The canonical map used in the universal property and dependent universal property of the family of fibers of a map + +The underlying map of the universal property of the family of fibers of a map is +defined to be the evaluation map + +```text + ((b : B) (z : F b) → P b z) → ((a : A) → P (f a) (δ a)) +``` + +for any type family `F : B → 𝒰` equipped with a lift `δ : (a : A) → F (f a)`. +This map takes a dependent function `h` and evaluates it at the values of the +lift `δ`. Hence we call it `ev-lift`. + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) + (F : B → UU l3) (δ : (a : A) → F (f a)) + where + + ev-lift : + {l4 : Level} {P : (b : B) → F b → UU l4} → + ((b : B) (z : F b) → P b z) → (a : A) → P (f a) (δ a) + ev-lift h a = h (f a) (δ a) +``` + +### The universal property of the fibers of a map + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} + where + + universal-property-family-of-fibers : + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω + universal-property-family-of-fibers f F δ = + {l : Level} (P : B → UU l) → is-equiv (ev-lift f F δ {l} {λ b _ → P b}) +``` + +### The dependent universal property of the fibers of a map + +```agda + dependent-universal-property-family-of-fibers : + (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω + dependent-universal-property-family-of-fibers f F δ = + {l : Level} (P : (b : B) → F b → UU l) → is-equiv (ev-lift f F δ {l} {P}) +``` + +### The lift of any map to its family of fibers + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + lift-family-of-fibers : (a : A) → fiber f (f a) + pr1 (lift-family-of-fibers a) = a + pr2 (lift-family-of-fibers a) = refl +``` + +## Properties + +### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + module _ + {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) + where + + ev-lift-family-of-fibers : + ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) + ev-lift-family-of-fibers = ev-lift f (fiber f) (lift-family-of-fibers f) + + inv-ev-lift-family-of-fibers : + ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) + inv-ev-lift-family-of-fibers h .(f x) (x , refl) = h x + + is-section-inv-ev-lift-family-of-fibers : + (ev-lift-family-of-fibers ∘ inv-ev-lift-family-of-fibers) ~ id + is-section-inv-ev-lift-family-of-fibers h = refl + + is-retraction-inv-ev-lift-family-of-fibers' : + (h : (y : B) (z : fiber f y) → C y z) (y : B) → + (inv-ev-lift-family-of-fibers (ev-lift-family-of-fibers h) y) ~ (h y) + is-retraction-inv-ev-lift-family-of-fibers' h .(f z) (z , refl) = refl + + is-retraction-inv-ev-lift-family-of-fibers : + (inv-ev-lift-family-of-fibers ∘ ev-lift-family-of-fibers) ~ id + is-retraction-inv-ev-lift-family-of-fibers h = + eq-htpy (eq-htpy ∘ is-retraction-inv-ev-lift-family-of-fibers' h) + + is-equiv-inv-ev-lift-family-of-fibers : + is-equiv inv-ev-lift-family-of-fibers + is-equiv-inv-ev-lift-family-of-fibers = + is-equiv-is-invertible + ( ev-lift-family-of-fibers) + ( is-retraction-inv-ev-lift-family-of-fibers) + ( is-section-inv-ev-lift-family-of-fibers) + + inv-equiv-dependent-universal-property-family-of-fibers : + ((x : A) → C (f x) (x , refl)) ≃ ((y : B) (z : fiber f y) → C y z) + pr1 inv-equiv-dependent-universal-property-family-of-fibers = + inv-ev-lift-family-of-fibers + pr2 inv-equiv-dependent-universal-property-family-of-fibers = + is-equiv-inv-ev-lift-family-of-fibers + + dependent-universal-property-family-of-fibers-fiber : + dependent-universal-property-family-of-fibers f + ( fiber f) + ( lift-family-of-fibers f) + dependent-universal-property-family-of-fibers-fiber C = + is-equiv-is-invertible + ( inv-ev-lift-family-of-fibers C) + ( is-section-inv-ev-lift-family-of-fibers C) + ( is-retraction-inv-ev-lift-family-of-fibers C) + + equiv-dependent-universal-property-family-of-fibers : + {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) → + ((y : B) (z : fiber f y) → C y z) ≃ ((x : A) → C (f x) (x , refl)) + pr1 (equiv-dependent-universal-property-family-of-fibers C) = + ev-lift-family-of-fibers C + pr2 (equiv-dependent-universal-property-family-of-fibers C) = + dependent-universal-property-family-of-fibers-fiber C +``` + +### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + universal-property-family-of-fibers-fiber : + universal-property-family-of-fibers f (fiber f) (lift-family-of-fibers f) + universal-property-family-of-fibers-fiber C = + dependent-universal-property-family-of-fibers-fiber f (λ y _ → C y) + + equiv-universal-property-family-of-fibers : + {l3 : Level} (C : B → UU l3) → + ((y : B) → fiber f y → C y) ≃ ((x : A) → C (f x)) + equiv-universal-property-family-of-fibers C = + equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) +``` + +### The inverse equivalence of the universal property of the family of fibers of a map + +The inverse of the equivalence `equiv-universal-property-family-of-fibers` has a reasonably nice definition, so we also record it here. + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (C : B → UU l3) + where + + inv-equiv-universal-property-family-of-fibers : + ((x : A) → C (f x)) ≃ ((y : B) → fiber f y → C y) + inv-equiv-universal-property-family-of-fibers = + inv-equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) +``` + +### A type family `C` over `B` satisfies the universal property of the family of fibers of a map `f : A → B` if and only if the diagonal map `C b → (fiber f b → C b)` is an equivalence for every `b : B` + +This condition simplifies, for example, the proof that connected maps satisfy a +dependent universal property. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A → B} + where + + is-equiv-precomp-Π-fiber-condition : + {l3 : Level} {C : B → UU l3} → + ((b : B) → is-equiv (λ (c : C b) → const (fiber f b) (C b) c)) → + is-equiv (precomp-Π f C) + is-equiv-precomp-Π-fiber-condition {l3} {C} H = + is-equiv-comp + ( ev-lift-family-of-fibers f (λ b _ → C b)) + ( map-Π (λ b u _ → u)) + ( is-equiv-map-Π-is-fiberwise-equiv H) + ( universal-property-family-of-fibers-fiber f C) +``` diff --git a/src/foundation-core/universal-property-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-fibers-of-maps.lagda.md deleted file mode 100644 index b75aae0cd3..0000000000 --- a/src/foundation-core/universal-property-fibers-of-maps.lagda.md +++ /dev/null @@ -1,14 +0,0 @@ -# The universal property of fibers of maps - -```agda -module foundation-core.universal-property-fibers-of-maps where -``` - -
Imports - -```agda - -``` - -
- diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 022e86b9d4..58cd2a8bab 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -350,8 +350,8 @@ open import foundation.universal-property-coproduct-types public open import foundation.universal-property-dependent-pair-types public open import foundation.universal-property-empty-type public open import foundation.universal-property-equivalences public +open import foundation.universal-property-family-of-fibers-of-maps public open import foundation.universal-property-fiber-products public -open import foundation.universal-property-fibers-of-maps public open import foundation.universal-property-identity-systems public open import foundation.universal-property-identity-types public open import foundation.universal-property-image public diff --git a/src/foundation/connected-maps.lagda.md b/src/foundation/connected-maps.lagda.md index 72540db3b2..1ae70b4097 100644 --- a/src/foundation/connected-maps.lagda.md +++ b/src/foundation/connected-maps.lagda.md @@ -35,6 +35,7 @@ open import foundation-core.propositions open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.truncated-maps +open import foundation-core.universal-property-family-of-fibers-of-maps ``` @@ -392,7 +393,7 @@ module _ ( λ b → function-dependent-universal-property-trunc ( Id-Truncated-Type' (trunc k (fiber f b)) _)) - ( inv-map-reduce-Π-fiber f + ( inv-ev-lift-family-of-fibers f ( λ b u → _ = unit-trunc u) ( compute-center-is-connected-map-dependent-universal-property-connected-map)) diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 5cd9ffb09e..dc01af3f65 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -16,7 +16,7 @@ open import foundation.equivalence-extensionality open import foundation.function-extensionality open import foundation.functoriality-fibers-of-maps open import foundation.identity-types -open import foundation-core.truncated-maps +open import foundation.truncated-maps open import foundation.universal-property-equivalences open import foundation.universe-levels diff --git a/src/foundation/families-of-equivalences.lagda.md b/src/foundation/families-of-equivalences.lagda.md index 61a7db1071..3cfded46ff 100644 --- a/src/foundation/families-of-equivalences.lagda.md +++ b/src/foundation/families-of-equivalences.lagda.md @@ -2,6 +2,8 @@ ```agda module foundation.families-of-equivalences where + +open import foundation-core.families-of-equivalences public ```
Imports @@ -10,7 +12,6 @@ module foundation.families-of-equivalences where open import foundation.equivalences open import foundation.universe-levels -open import foundation-core.families-of-equivalences open import foundation-core.propositions ``` diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index d308c5ed63..7070783975 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -15,15 +15,12 @@ open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.function-extensionality open import foundation.truncation-levels -open import foundation.universal-property-fibers-of-maps open import foundation.universe-levels open import foundation-core.coherently-invertible-maps -open import foundation-core.constant-maps open import foundation-core.equivalences open import foundation-core.fibers-of-maps open import foundation-core.function-types -open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.path-split-maps @@ -35,27 +32,6 @@ open import foundation-core.truncated-maps ## Properties -### For any map `f : A → B` and any family `C` over `B`, if `f` satisfies the property that `C b → (fiber f b → C b)` is an equivalence for every `b : B` then the precomposition function `((b : B) → C b) → ((a : A) → C (f a))` is an equivalence - -This condition simplifies, for example, the proof that connected maps satisfy a -dependent universal property. - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {C : B → UU l3} - where - - is-equiv-precomp-Π-fiber-condition : - ((b : B) → is-equiv (λ (c : C b) → const (fiber f b) (C b) c)) → - is-equiv (precomp-Π f C) - is-equiv-precomp-Π-fiber-condition H = - is-equiv-comp - ( map-reduce-Π-fiber f (λ b u → C b)) - ( map-Π (λ b u t → u)) - ( is-equiv-map-Π-is-fiberwise-equiv H) - ( is-equiv-map-reduce-Π-fiber f (λ b u → C b)) -``` - ### Equivalences induce an equivalence from the type of homotopies between two dependent functions to the type of homotopies between their precomposites ```agda diff --git a/src/foundation/surjective-maps.lagda.md b/src/foundation/surjective-maps.lagda.md index 61bd607522..efb5af6d84 100644 --- a/src/foundation/surjective-maps.lagda.md +++ b/src/foundation/surjective-maps.lagda.md @@ -49,6 +49,7 @@ open import foundation-core.sets open import foundation-core.torsorial-type-families open import foundation-core.truncated-maps open import foundation-core.truncation-levels +open import foundation-core.universal-property-family-of-fibers-of-maps open import orthogonal-factorization-systems.extensions-of-maps ``` @@ -335,7 +336,7 @@ module _ ( type-Prop (P y)))) ( is-equiv-map-Π-is-fiberwise-equiv ( λ b → is-propositional-truncation-trunc-Prop (fiber f b) (P b)))) - ( is-equiv-map-reduce-Π-fiber f ( λ y z → type-Prop (P y))) + ( universal-property-family-of-fibers-fiber f (is-in-subtype P)) equiv-dependent-universal-property-surj-is-surjective : is-surjective f → diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md new file mode 100644 index 0000000000..253e41900e --- /dev/null +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -0,0 +1,289 @@ +# The universal property of fibers of maps + +```agda +module foundation.universal-property-family-of-fibers-of-maps where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.dependent-universal-property-equivalences +open import foundation.equivalences +open import foundation.families-of-equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.subtype-identity-principle +open import foundation.universal-property-dependent-pair-types +open import foundation.universe-levels + +open import foundation-core.contractible-maps +open import foundation-core.contractible-types +open import foundation-core.fibers-of-maps +open import foundation-core.functoriality-dependent-pair-types +open import foundation-core.homotopies +open import foundation-core.identity-types +open import foundation-core.universal-property-family-of-fibers-of-maps +``` + +
+ +## Idea + +Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of +[fibers](foundation-core.fibers-of-maps.md) of `f`. By +[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain +the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by + +```text + λ a → (a , refl) : (a : A) → fiber f (f a). +``` + +We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the +initial type family equipped with such a section. Explicitly, the +{{#concept "universal property of the family of fibers" Disambiguation="of a map"}} +`fiber f : B → 𝒰` of a map `f` is that the precomposition operation + +```text + ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) +``` + +is an [equivalence](foundation-core.equivalences.md) for any type family +`P : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, +the type of _lifts_ of `f` to `P` is precisely the type of sections + +```text + (a : A) → P (f a). +``` + +The family of fibers of `f` is therefore the initial type family over `B` +equipped with a lift of `f`. + +This universal property is especially useful when `A` or `B` enjoy mapping out +universal properties. This lets us characterize the sections `(a : A) → P (f a)` +in terms of the mapping out properties of `A` and the descent data of `B`. + +**Note:** We disambiguate between the _universal property of the family of +fibers of a map_ and the _universal property of the fiber of a map_ at a point +in the codomain. The universal property of the family of fibers of a map is as +described above, while the universal property of the fiber `fiber f b` of a map +`f` at `b` is a special case of the universal property of pullbacks. + +## Properties + +### Fibers are uniquely unique + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} (F : B → UU l3) + (δ : (a : A) → F (f a)) (P : B → UU l4) (γ : (a : A) → P (f a)) + where + + section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + section-preserving-fiberwise-map-fiber = + Σ ((b : B) → F b → P b) (λ h → ev-lift f F δ h ~ γ) + +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + where + + fiberwise-map-section-preserving-fiberwise-map-fiber : + section-preserving-fiberwise-map-fiber F δ P γ → (b : B) → F b → P b + fiberwise-map-section-preserving-fiberwise-map-fiber = pr1 + + preserves-section-section-preserving-fiberwise-map-fiber : + (w : section-preserving-fiberwise-map-fiber F δ P γ) → + ev-lift f F δ (fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ γ + preserves-section-section-preserving-fiberwise-map-fiber = pr2 + +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} + where + + id-section-preserving-fiberwise-map-fiber : + section-preserving-fiberwise-map-fiber F δ F δ + pr1 id-section-preserving-fiberwise-map-fiber b = id + pr2 id-section-preserving-fiberwise-map-fiber = refl-htpy + +module _ + {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} + {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + {Q : B → UU l5} {η : (a : A) → Q (f a)} + where + + dependent-comp-section-preserving-fiberwise-map-fiber : + ( section-preserving-fiberwise-map-fiber P γ Q η) → + ( section-preserving-fiberwise-map-fiber F δ P γ) → + ( section-preserving-fiberwise-map-fiber F δ Q η) + pr1 (dependent-comp-section-preserving-fiberwise-map-fiber g h) = + dependent-comp + ( fiberwise-map-section-preserving-fiberwise-map-fiber g) + ( fiberwise-map-section-preserving-fiberwise-map-fiber h) + pr2 (dependent-comp-section-preserving-fiberwise-map-fiber g h) a = + ( ap + ( (fiberwise-map-section-preserving-fiberwise-map-fiber g) (f a)) + ( preserves-section-section-preserving-fiberwise-map-fiber h a)) ∙ + ( preserves-section-section-preserving-fiberwise-map-fiber g a) + +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) + (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) + (P : B → UU l4) (γ : (a : A) → P (f a)) + where + + uniqueness-fiberwise-map-universal-property-family-of-fibers : + is-contr (section-preserving-fiberwise-map-fiber F δ P γ) + uniqueness-fiberwise-map-universal-property-family-of-fibers = + is-contr-equiv + ( fiber (ev-lift f F δ) γ) + ( equiv-tot + ( λ h → equiv-eq-htpy)) + ( is-contr-map-is-equiv (u P) γ) + + section-preserving-fiberwise-map-universal-property-family-of-fibers : + section-preserving-fiberwise-map-fiber F δ P γ + section-preserving-fiberwise-map-universal-property-family-of-fibers = + ( center uniqueness-fiberwise-map-universal-property-family-of-fibers) + + fiberwise-map-universal-property-family-of-fibers : + (b : B) → F b → P b + fiberwise-map-universal-property-family-of-fibers = + fiberwise-map-section-preserving-fiberwise-map-fiber + section-preserving-fiberwise-map-universal-property-family-of-fibers + + preserves-section-fiberwise-map-universal-property-family-of-fibers : + (ev-lift f F δ fiberwise-map-universal-property-family-of-fibers) ~ γ + preserves-section-fiberwise-map-universal-property-family-of-fibers = + preserves-section-section-preserving-fiberwise-map-fiber + section-preserving-fiberwise-map-universal-property-family-of-fibers + +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) + (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) + (P : B → UU l4) (γ : (a : A) → P (f a)) + (u' : universal-property-family-of-fibers f P γ) + where + + dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + ( dependent-comp-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-family-of-fibers + f P γ u' F δ) + ( section-preserving-fiberwise-map-universal-property-family-of-fibers + ( f) + ( F) + ( δ) + ( u) + ( P) + ( γ))) = + ( id-section-preserving-fiberwise-map-fiber) + dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = + eq-is-contr + ( uniqueness-fiberwise-map-universal-property-family-of-fibers + f F δ u F δ) + + dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + ( dependent-comp-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-family-of-fibers + f F δ u P γ)) + ( section-preserving-fiberwise-map-universal-property-family-of-fibers + ( f) + ( P) + ( γ) + ( u') + ( F) + ( δ)) = + ( id-section-preserving-fiberwise-map-fiber) + dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = + eq-is-contr + ( uniqueness-fiberwise-map-universal-property-family-of-fibers + f P γ u' P γ) + + is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + (b : B) → + ( ( fiberwise-map-universal-property-family-of-fibers f P γ u' F δ b) ∘ + ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ b)) ~ + ( id) + is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + b = + htpy-eq + ( htpy-eq + ( ap + ( pr1) + ( dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers)) + ( b)) + + is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + (b : B) → + ( ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ b) ∘ + ( fiberwise-map-universal-property-family-of-fibers f P γ u' F δ b)) ~ + ( id) + is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + b = + htpy-eq + ( htpy-eq + ( ap + ( pr1) + ( dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers)) + ( b)) + + is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + is-fiberwise-equiv + ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ) + is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + b = + is-equiv-is-invertible + ( fiberwise-map-section-preserving-fiberwise-map-fiber + ( section-preserving-fiberwise-map-universal-property-family-of-fibers + ( f) + ( P) + ( γ) + ( u') + ( F) + ( δ)) + ( b)) + ( is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + ( b)) + ( is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + ( b)) + + uniquely-unique-fiberwise-map-universal-property-family-of-fibers : + is-contr + ( Σ (fiberwise-equiv F P) + ( λ h → (ev-lift f F δ (map-fiberwise-equiv h)) ~ γ)) + uniquely-unique-fiberwise-map-universal-property-family-of-fibers = + is-torsorial-Eq-subtype + ( uniqueness-fiberwise-map-universal-property-family-of-fibers + f F δ u P γ) + ( is-property-is-fiberwise-equiv) + ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ) + ( preserves-section-fiberwise-map-universal-property-family-of-fibers + f F δ u P γ) + ( is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers) + + section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : + Σ (fiberwise-equiv F P) + ( λ h → (ev-lift f F δ (map-fiberwise-equiv h)) ~ γ) + section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = + center uniquely-unique-fiberwise-map-universal-property-family-of-fibers + + fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : + fiberwise-equiv F P + fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = + pr1 + ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers) + + preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : + (ev-lift + ( f) + ( F) + ( δ) + ( map-fiberwise-equiv + ( fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers))) ~ + ( γ) + preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = + pr2 + ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers) +``` diff --git a/src/foundation/universal-property-fibers-of-maps.lagda.md b/src/foundation/universal-property-fibers-of-maps.lagda.md deleted file mode 100644 index 763e70bbdb..0000000000 --- a/src/foundation/universal-property-fibers-of-maps.lagda.md +++ /dev/null @@ -1,421 +0,0 @@ -# The universal property of fibers of maps - -```agda -module foundation.universal-property-fibers-of-maps where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation-core.contractible-maps -open import foundation-core.contractible-types -open import foundation.dependent-pair-types -open import foundation.dependent-universal-property-equivalences -open import foundation-core.equivalences -open import foundation.function-extensionality -open import foundation.function-types -open import foundation.subtype-identity-principle -open import foundation.universal-property-dependent-pair-types -open import foundation.universe-levels - -open import foundation.families-of-equivalences -open import foundation-core.fibers-of-maps -open import foundation-core.functoriality-dependent-pair-types -open import foundation-core.homotopies -open import foundation-core.identity-types -``` - -
- -## Idea - -Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of -[fibers](foundation-core.fibers-of-maps.md) of `f`. By -[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain -the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by - -```text - λ a → (a , refl) : (a : A) → fiber f (f a). -``` - -We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the -initial type family equipped with such a section. Explicitly, the -{{#concept "universal property of the fiber" Disambiguation="of a map"}} -`fiber f : B → 𝒰` of a map `f` is that the precomposition operation - -```text - ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) -``` - -is an [equivalence](foundation-core.equivalences.md) for any type family -`P : B → 𝒰`. - -This universal property is especially useful when `A` or `B` enjoy mapping out -universal properties. This lets us characterize the sections `(a : A) → P (f a)` -in terms of the mapping out properties of `A` and the descent data of `B`. - -## Definition - -### The canonical map used in the universal property and dependent universal property of the fibers of a map - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) - (F : B → UU l3) (δ : (a : A) → F (f a)) - where - - ev-fiber : - {l4 : Level} {P : (b : B) → F b → UU l4} → - ((b : B) (z : F b) → P b z) → (a : A) → P (f a) (δ a) - ev-fiber h a = h (f a) (δ a) -``` - -### The universal property of the fibers of a map - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} - where - - universal-property-fiber : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω - universal-property-fiber f F δ = - {l : Level} (P : B → UU l) → is-equiv (ev-fiber f F δ {l} {λ b _ → P b}) -``` - -### The dependent universal property of the fibers of a map - -```agda - dependent-universal-property-fiber : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω - dependent-universal-property-fiber f F δ = - {l : Level} (P : (b : B) → F b → UU l) → is-equiv (ev-fiber f F δ {l} {P}) -``` - -## Properties - -### When a product is taken over all fibers of a map, then we can equivalently take the product over the domain of that map - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) - (C : (y : B) (z : fiber f y) → UU l3) - where - - map-reduce-Π-fiber : - ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) - map-reduce-Π-fiber h x = h (f x) (x , refl) - - inv-map-reduce-Π-fiber : - ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) - inv-map-reduce-Π-fiber h .(f x) (x , refl) = h x - - is-section-inv-map-reduce-Π-fiber : - (map-reduce-Π-fiber ∘ inv-map-reduce-Π-fiber) ~ id - is-section-inv-map-reduce-Π-fiber h = refl - - is-retraction-inv-map-reduce-Π-fiber' : - (h : (y : B) (z : fiber f y) → C y z) (y : B) → - (inv-map-reduce-Π-fiber (map-reduce-Π-fiber h) y) ~ (h y) - is-retraction-inv-map-reduce-Π-fiber' h .(f z) (z , refl) = refl - - is-retraction-inv-map-reduce-Π-fiber : - (inv-map-reduce-Π-fiber ∘ map-reduce-Π-fiber) ~ id - is-retraction-inv-map-reduce-Π-fiber h = - eq-htpy (eq-htpy ∘ is-retraction-inv-map-reduce-Π-fiber' h) - - is-equiv-map-reduce-Π-fiber : is-equiv map-reduce-Π-fiber - is-equiv-map-reduce-Π-fiber = - is-equiv-is-invertible - ( inv-map-reduce-Π-fiber) - ( is-section-inv-map-reduce-Π-fiber) - ( is-retraction-inv-map-reduce-Π-fiber) - - reduce-Π-fiber' : - ((y : B) (z : fiber f y) → C y z) ≃ ((x : A) → C (f x) (x , refl)) - pr1 reduce-Π-fiber' = map-reduce-Π-fiber - pr2 reduce-Π-fiber' = is-equiv-map-reduce-Π-fiber - -reduce-Π-fiber : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) → - (C : B → UU l3) → ((y : B) → fiber f y → C y) ≃ ((x : A) → C (f x)) -reduce-Π-fiber f C = reduce-Π-fiber' f (λ y z → C y) -``` - -### The family of fibers has the universal property of fibers of maps - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - section-family-of-fibers : - (a : A) → fiber f (f a) - pr1 (section-family-of-fibers a) = a - pr2 (section-family-of-fibers a) = refl - - equiv-up-family-of-fibers : - {l : Level} → (P : B → UU l) → - ((b : B) → fiber f b → P b) ≃ ((a : A) → P (f a)) - equiv-up-family-of-fibers P = - equivalence-reasoning - ( (b : B) → fiber f b → P b) - ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w)) - by equiv-ind-Σ - ≃ ((a : A) → P (f a)) - by - equiv-precomp-Π - ( inv-equiv-total-fiber f) - ( λ w → P (pr1 w)) - - up-family-of-fibers : - universal-property-fiber f (fiber f) (section-family-of-fibers) - up-family-of-fibers P = - is-equiv-map-equiv (equiv-up-family-of-fibers P) -``` - -### The family of fibers has the dependent universal property of fibers of maps - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - equiv-dependent-up-family-of-fibers : - {l : Level} (P : (b : B) → fiber f b → UU l) → - ( ( b : B) (z : fiber f b) → P b z) ≃ - ( ( a : A) → P (f a) (section-family-of-fibers f a)) - equiv-dependent-up-family-of-fibers P = - equivalence-reasoning - ( ( b : B) (z : fiber f b) → P b z) - ≃ ((w : Σ B (λ b → fiber f b)) → P (pr1 w) (pr2 w)) - by equiv-ind-Σ - ≃ ((a : A) → P (f a) (section-family-of-fibers f a)) - by - equiv-precomp-Π - ( inv-equiv-total-fiber f) - ( λ w → P (pr1 w) (pr2 w)) - - dependent-up-family-of-fibers : - dependent-universal-property-fiber - ( f) - ( fiber f) - ( section-family-of-fibers f) - dependent-up-family-of-fibers P = - is-equiv-map-equiv (equiv-dependent-up-family-of-fibers P) -``` - -### Fibers are uniquely unique - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} (F : B → UU l3) - (δ : (a : A) → F (f a)) (P : B → UU l4) (γ : (a : A) → P (f a)) - where - - section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - section-preserving-fiberwise-map-fiber = - Σ ((b : B) → F b → P b) (λ h → ev-fiber f F δ h ~ γ) - -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} - where - - fiberwise-map-section-preserving-fiberwise-map-fiber : - section-preserving-fiberwise-map-fiber F δ P γ → (b : B) → F b → P b - fiberwise-map-section-preserving-fiberwise-map-fiber = pr1 - - preserves-section-section-preserving-fiberwise-map-fiber : - (w : section-preserving-fiberwise-map-fiber F δ P γ) → - ev-fiber - ( f) - ( F) - ( δ) - ( fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ - ( γ) - preserves-section-section-preserving-fiberwise-map-fiber = pr2 - -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} - where - - id-section-preserving-fiberwise-map-fiber : - section-preserving-fiberwise-map-fiber F δ F δ - pr1 id-section-preserving-fiberwise-map-fiber b = id - pr2 id-section-preserving-fiberwise-map-fiber = refl-htpy - -module _ - {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} - {Q : B → UU l5} {η : (a : A) → Q (f a)} - where - - dependent-comp-section-preserving-fiberwise-map-fiber : - ( section-preserving-fiberwise-map-fiber P γ Q η) → - ( section-preserving-fiberwise-map-fiber F δ P γ) → - ( section-preserving-fiberwise-map-fiber F δ Q η) - pr1 (dependent-comp-section-preserving-fiberwise-map-fiber g h) = - dependent-comp - ( fiberwise-map-section-preserving-fiberwise-map-fiber g) - ( fiberwise-map-section-preserving-fiberwise-map-fiber h) - pr2 (dependent-comp-section-preserving-fiberwise-map-fiber g h) a = - ( ap - ( (fiberwise-map-section-preserving-fiberwise-map-fiber g) (f a)) - ( preserves-section-section-preserving-fiberwise-map-fiber h a)) ∙ - ( preserves-section-section-preserving-fiberwise-map-fiber g a) - -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) (u : universal-property-fiber f F δ) - (P : B → UU l4) (γ : (a : A) → P (f a)) - where - - uniqueness-fiberwise-map-universal-property-fiber : - is-contr (section-preserving-fiberwise-map-fiber F δ P γ) - uniqueness-fiberwise-map-universal-property-fiber = - is-contr-equiv - ( fiber (ev-fiber f F δ) γ) - ( equiv-tot - ( λ h → equiv-eq-htpy)) - ( is-contr-map-is-equiv (u P) γ) - - section-preserving-fiberwise-map-universal-property-fiber : - section-preserving-fiberwise-map-fiber F δ P γ - section-preserving-fiberwise-map-universal-property-fiber = - ( center uniqueness-fiberwise-map-universal-property-fiber) - - fiberwise-map-universal-property-fiber : - (b : B) → F b → P b - fiberwise-map-universal-property-fiber = - fiberwise-map-section-preserving-fiberwise-map-fiber - section-preserving-fiberwise-map-universal-property-fiber - - preserves-section-fiberwise-map-universal-property-fiber : - (ev-fiber f F δ fiberwise-map-universal-property-fiber) ~ γ - preserves-section-fiberwise-map-universal-property-fiber = - preserves-section-section-preserving-fiberwise-map-fiber - section-preserving-fiberwise-map-universal-property-fiber - -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) (u : universal-property-fiber f F δ) - (P : B → UU l4) (γ : (a : A) → P (f a)) - (u' : universal-property-fiber f P γ) - where - - dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber : - ( dependent-comp-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-fiber f P γ u' F δ) - ( section-preserving-fiberwise-map-universal-property-fiber - ( f) - ( F) - ( δ) - ( u) - ( P) - ( γ))) = - ( id-section-preserving-fiberwise-map-fiber) - dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber = - eq-is-contr - ( uniqueness-fiberwise-map-universal-property-fiber f F δ u F δ) - - dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber : - ( dependent-comp-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-fiber f F δ u P γ)) - ( section-preserving-fiberwise-map-universal-property-fiber - ( f) - ( P) - ( γ) - ( u') - ( F) - ( δ)) = - ( id-section-preserving-fiberwise-map-fiber) - dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber = - eq-is-contr - ( uniqueness-fiberwise-map-universal-property-fiber f P γ u' P γ) - - is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber : - (b : B) → - ( ( fiberwise-map-universal-property-fiber f P γ u' F δ b) ∘ - ( fiberwise-map-universal-property-fiber f F δ u P γ b)) ~ - ( id) - is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber - b = - htpy-eq - ( htpy-eq - ( ap - ( pr1) - ( dependent-comp-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber)) - ( b)) - - is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber : - (b : B) → - ( ( fiberwise-map-universal-property-fiber f F δ u P γ b) ∘ - ( fiberwise-map-universal-property-fiber f P γ u' F δ b)) ~ - ( id) - is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber - b = - htpy-eq - ( htpy-eq - ( ap - ( pr1) - ( dependent-comp-section-fiberwise-map-universal-property-fiber-universal-property-fiber)) - ( b)) - - is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber : - is-fiberwise-equiv (fiberwise-map-universal-property-fiber f F δ u P γ) - is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber - b = - is-equiv-is-invertible - ( fiberwise-map-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-fiber - ( f) - ( P) - ( γ) - ( u') - ( F) - ( δ)) - ( b)) - ( is-fiberwise-section-fiberwise-map-universal-property-fiber-universal-property-fiber - ( b)) - ( is-fiberwise-retraction-fiberwise-map-universal-property-fiber-universal-property-fiber - ( b)) - - uniquely-unique-fiberwise-map-universal-property-fiber : - is-contr - ( Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ (map-fiberwise-equiv h)) ~ γ)) - uniquely-unique-fiberwise-map-universal-property-fiber = - is-torsorial-Eq-subtype - ( uniqueness-fiberwise-map-universal-property-fiber f F δ u P γ) - ( is-property-is-fiberwise-equiv) - ( fiberwise-map-universal-property-fiber f F δ u P γ) - ( preserves-section-fiberwise-map-universal-property-fiber f F δ u P γ) - ( is-fiberwise-equiv-fiberwise-map-universal-property-fiber-universal-property-fiber) - - section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : - Σ (fiberwise-equiv F P) - ( λ h → (ev-fiber f F δ (map-fiberwise-equiv h)) ~ γ) - section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - center uniquely-unique-fiberwise-map-universal-property-fiber - - fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : - fiberwise-equiv F P - fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - pr1 - ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber) - - preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber : - (ev-fiber - ( f) - ( F) - ( δ) - ( map-fiberwise-equiv - ( fiberwise-equiv-unique-fiberwise-map-universal-property-fiber))) ~ - ( γ) - preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber = - pr2 - ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-fiber) -``` diff --git a/src/foundation/universal-property-image.lagda.md b/src/foundation/universal-property-image.lagda.md index b76f1e211b..184d5c1539 100644 --- a/src/foundation/universal-property-image.lagda.md +++ b/src/foundation/universal-property-image.lagda.md @@ -31,6 +31,7 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.sections open import foundation-core.subtypes +open import foundation-core.universal-property-family-of-fibers-of-maps open import foundation-core.whiskering-homotopies ``` @@ -322,7 +323,9 @@ abstract is-image-is-surjective' f i q H B' m = map-equiv ( ( equiv-hom-slice-fiberwise-hom (map-emb i) (map-emb m)) ∘e - ( ( inv-equiv (reduce-Π-fiber (map-emb i) (fiber (map-emb m)))) ∘e + ( ( inv-equiv-universal-property-family-of-fibers + ( map-emb i) + ( fiber (map-emb m))) ∘e ( inv-equiv ( equiv-dependent-universal-property-surj-is-surjective ( pr1 q) @@ -333,7 +336,8 @@ abstract ( is-prop-map-emb m (pr1 i b)))) ∘e ( ( equiv-Π-equiv-family ( λ a → equiv-tr (fiber (map-emb m)) (pr2 q a))) ∘e - ( ( reduce-Π-fiber f (fiber (map-emb m))) ∘e + ( ( equiv-universal-property-family-of-fibers f + ( fiber (map-emb m))) ∘e ( equiv-fiberwise-hom-hom-slice f (map-emb m))))))) abstract diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index 384a00bb10..afedeb56a3 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,9 +1,9 @@ -| Concept | File | -| ------------------------------------ | ------------------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| Universal property of fibers of maps | [`foundation.universal-property-fibers-of-maps`](foundation.universal-property-fibers-of-maps.md) | +| Concept | File | +| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| Universal property of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | From 133fd8afeda17d7501815d00cf71272d14db6896 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 3 Dec 2023 11:07:41 -0500 Subject: [PATCH 21/29] fix broken links, add entry to table --- ...property-family-of-fibers-of-maps.lagda.md | 3 ++- .../precomposition-type-families.lagda.md | 4 ++-- tables/fibers-of-maps.md | 19 ++++++++++--------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md index fe815c61e9..c218ce87f3 100644 --- a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md @@ -215,7 +215,8 @@ module _ ### The inverse equivalence of the universal property of the family of fibers of a map -The inverse of the equivalence `equiv-universal-property-family-of-fibers` has a reasonably nice definition, so we also record it here. +The inverse of the equivalence `equiv-universal-property-family-of-fibers` has a +reasonably nice definition, so we also record it here. ```agda module _ diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md index de5a2a5891..e2c95284a3 100644 --- a/src/foundation/precomposition-type-families.lagda.md +++ b/src/foundation/precomposition-type-families.lagda.md @@ -23,8 +23,8 @@ Any map `f : A → B` induces a (B → 𝒰) → (A → 𝒰) ``` -given by [precomposing](precomposition-functions.md) any `Q : B → 𝒰` to -`Q ∘ f : A → 𝒰`. +given by [precomposing](foundation-core.precomposition-functions.md) any +`Q : B → 𝒰` to `Q ∘ f : A → 𝒰`. ## Definitions diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index afedeb56a3..b58171ca83 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,9 +1,10 @@ -| Concept | File | -| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| Universal property of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | +| Concept | File | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| The universal property of the family of fibers of maps (foundation-core) | [`foundation-core.universal-property-family-of-fibers-of-maps`](foundation-core.universal-property-family-of-fibers-of-maps.md) | +| The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | From bbce9e02c47283b209bd7c253449fbd4c660135a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 3 Dec 2023 14:29:23 -0500 Subject: [PATCH 22/29] lifts and extensions of families of elements --- ...property-family-of-fibers-of-maps.lagda.md | 113 +++++++------ src/foundation.lagda.md | 2 + src/foundation/connected-maps.lagda.md | 2 +- .../extensions-families-of-elements.lagda.md | 142 +++++++++++++++++ .../lifts-families-of-elements.lagda.md | 150 ++++++++++++++++++ ...property-family-of-fibers-of-maps.lagda.md | 83 +++++----- 6 files changed, 405 insertions(+), 87 deletions(-) create mode 100644 src/foundation/extensions-families-of-elements.lagda.md create mode 100644 src/foundation/lifts-families-of-elements.lagda.md diff --git a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md index c218ce87f3..5481bde89f 100644 --- a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md @@ -8,7 +8,9 @@ module foundation-core.universal-property-family-of-fibers-of-maps where ```agda open import foundation.dependent-pair-types +open import foundation.extensions-families-of-elements open import foundation.function-extensionality +open import foundation.lifts-families-of-elements open import foundation.universe-levels open import foundation-core.constant-maps @@ -19,6 +21,8 @@ open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.precomposition-dependent-functions +open import foundation-core.retractions +open import foundation-core.sections ```
@@ -45,7 +49,8 @@ initial type family equipped with such a section. Explicitly, the is an [equivalence](foundation-core.equivalences.md) for any type family `P : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, -the type of _lifts_ of `f` to `P` is precisely the type of sections +the type of [lifts](foundation.lifts-of-families-of-elements.md) of `f` to `P` +is precisely the type of sections ```text (a : A) → P (f a). @@ -77,18 +82,18 @@ defined to be the evaluation map for any type family `F : B → 𝒰` equipped with a lift `δ : (a : A) → F (f a)`. This map takes a dependent function `h` and evaluates it at the values of the -lift `δ`. Hence we call it `ev-lift`. +lift `δ`. ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) - (F : B → UU l3) (δ : (a : A) → F (f a)) + (F : B → UU l3) (δ : lift-family-of-elements f F) where - ev-lift : + ev-lift-family-of-elements' : {l4 : Level} {P : (b : B) → F b → UU l4} → - ((b : B) (z : F b) → P b z) → (a : A) → P (f a) (δ a) - ev-lift h a = h (f a) (δ a) + ((b : B) (z : F b) → P b z) → dependent-lift-family-of-elements δ (P ∘ f) + ev-lift-family-of-elements' h a = h (f a) (δ a) ``` ### The universal property of the fibers of a map @@ -99,18 +104,20 @@ module _ where universal-property-family-of-fibers : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω + (f : A → B) (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω universal-property-family-of-fibers f F δ = - {l : Level} (P : B → UU l) → is-equiv (ev-lift f F δ {l} {λ b _ → P b}) + {l : Level} (P : B → UU l) → + is-equiv (ev-lift-family-of-elements' f F δ {l} {λ b _ → P b}) ``` ### The dependent universal property of the fibers of a map ```agda dependent-universal-property-family-of-fibers : - (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) → UUω + (f : A → B) (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω dependent-universal-property-family-of-fibers f F δ = - {l : Level} (P : (b : B) → F b → UU l) → is-equiv (ev-lift f F δ {l} {P}) + {l : Level} (P : (b : B) → F b → UU l) → + is-equiv (ev-lift-family-of-elements' f F δ {l} {P}) ``` ### The lift of any map to its family of fibers @@ -120,9 +127,9 @@ module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - lift-family-of-fibers : (a : A) → fiber f (f a) - pr1 (lift-family-of-fibers a) = a - pr2 (lift-family-of-fibers a) = refl + lift-family-of-elements-fiber : lift-family-of-elements f (fiber f) + pr1 (lift-family-of-elements-fiber a) = a + pr2 (lift-family-of-elements-fiber a) = refl ``` ## Properties @@ -138,58 +145,68 @@ module _ {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) where - ev-lift-family-of-fibers : + ev-lift-family-of-elements-fiber : ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) - ev-lift-family-of-fibers = ev-lift f (fiber f) (lift-family-of-fibers f) + ev-lift-family-of-elements-fiber = + ev-lift-family-of-elements' f (fiber f) (lift-family-of-elements-fiber f) - inv-ev-lift-family-of-fibers : + extend-lift-family-of-elements-fiber : ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) - inv-ev-lift-family-of-fibers h .(f x) (x , refl) = h x + extend-lift-family-of-elements-fiber h .(f x) (x , refl) = h x - is-section-inv-ev-lift-family-of-fibers : - (ev-lift-family-of-fibers ∘ inv-ev-lift-family-of-fibers) ~ id - is-section-inv-ev-lift-family-of-fibers h = refl + is-section-extend-lift-family-of-elements-fiber : + is-section + ( ev-lift-family-of-elements-fiber) + ( extend-lift-family-of-elements-fiber) + is-section-extend-lift-family-of-elements-fiber h = refl - is-retraction-inv-ev-lift-family-of-fibers' : + is-retraction-extend-lift-family-of-elements-fiber' : (h : (y : B) (z : fiber f y) → C y z) (y : B) → - (inv-ev-lift-family-of-fibers (ev-lift-family-of-fibers h) y) ~ (h y) - is-retraction-inv-ev-lift-family-of-fibers' h .(f z) (z , refl) = refl - - is-retraction-inv-ev-lift-family-of-fibers : - (inv-ev-lift-family-of-fibers ∘ ev-lift-family-of-fibers) ~ id - is-retraction-inv-ev-lift-family-of-fibers h = - eq-htpy (eq-htpy ∘ is-retraction-inv-ev-lift-family-of-fibers' h) - - is-equiv-inv-ev-lift-family-of-fibers : - is-equiv inv-ev-lift-family-of-fibers - is-equiv-inv-ev-lift-family-of-fibers = + extend-lift-family-of-elements-fiber + ( ev-lift-family-of-elements-fiber h) + ( y) ~ + h y + is-retraction-extend-lift-family-of-elements-fiber' h .(f z) (z , refl) = + refl + + is-retraction-extend-lift-family-of-elements-fiber : + is-retraction + ( ev-lift-family-of-elements-fiber) + ( extend-lift-family-of-elements-fiber) + is-retraction-extend-lift-family-of-elements-fiber h = + eq-htpy (eq-htpy ∘ is-retraction-extend-lift-family-of-elements-fiber' h) + + is-equiv-extend-lift-family-of-elements-fiber : + is-equiv extend-lift-family-of-elements-fiber + is-equiv-extend-lift-family-of-elements-fiber = is-equiv-is-invertible - ( ev-lift-family-of-fibers) - ( is-retraction-inv-ev-lift-family-of-fibers) - ( is-section-inv-ev-lift-family-of-fibers) + ( ev-lift-family-of-elements-fiber) + ( is-retraction-extend-lift-family-of-elements-fiber) + ( is-section-extend-lift-family-of-elements-fiber) inv-equiv-dependent-universal-property-family-of-fibers : ((x : A) → C (f x) (x , refl)) ≃ ((y : B) (z : fiber f y) → C y z) pr1 inv-equiv-dependent-universal-property-family-of-fibers = - inv-ev-lift-family-of-fibers + extend-lift-family-of-elements-fiber pr2 inv-equiv-dependent-universal-property-family-of-fibers = - is-equiv-inv-ev-lift-family-of-fibers + is-equiv-extend-lift-family-of-elements-fiber dependent-universal-property-family-of-fibers-fiber : dependent-universal-property-family-of-fibers f ( fiber f) - ( lift-family-of-fibers f) + ( lift-family-of-elements-fiber f) dependent-universal-property-family-of-fibers-fiber C = is-equiv-is-invertible - ( inv-ev-lift-family-of-fibers C) - ( is-section-inv-ev-lift-family-of-fibers C) - ( is-retraction-inv-ev-lift-family-of-fibers C) + ( extend-lift-family-of-elements-fiber C) + ( is-section-extend-lift-family-of-elements-fiber C) + ( is-retraction-extend-lift-family-of-elements-fiber C) equiv-dependent-universal-property-family-of-fibers : {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) → - ((y : B) (z : fiber f y) → C y z) ≃ ((x : A) → C (f x) (x , refl)) + ((y : B) (z : fiber f y) → C y z) ≃ + ((x : A) → C (f x) (x , refl)) pr1 (equiv-dependent-universal-property-family-of-fibers C) = - ev-lift-family-of-fibers C + ev-lift-family-of-elements-fiber C pr2 (equiv-dependent-universal-property-family-of-fibers C) = dependent-universal-property-family-of-fibers-fiber C ``` @@ -202,13 +219,15 @@ module _ where universal-property-family-of-fibers-fiber : - universal-property-family-of-fibers f (fiber f) (lift-family-of-fibers f) + universal-property-family-of-fibers f + ( fiber f) + ( lift-family-of-elements-fiber f) universal-property-family-of-fibers-fiber C = dependent-universal-property-family-of-fibers-fiber f (λ y _ → C y) equiv-universal-property-family-of-fibers : {l3 : Level} (C : B → UU l3) → - ((y : B) → fiber f y → C y) ≃ ((x : A) → C (f x)) + ((y : B) → fiber f y → C y) ≃ lift-family-of-elements f C equiv-universal-property-family-of-fibers C = equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) ``` @@ -224,7 +243,7 @@ module _ where inv-equiv-universal-property-family-of-fibers : - ((x : A) → C (f x)) ≃ ((y : B) → fiber f y → C y) + (lift-family-of-elements f C) ≃ ((y : B) → fiber f y → C y) inv-equiv-universal-property-family-of-fibers = inv-equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) ``` @@ -245,7 +264,7 @@ module _ is-equiv (precomp-Π f C) is-equiv-precomp-Π-fiber-condition {l3} {C} H = is-equiv-comp - ( ev-lift-family-of-fibers f (λ b _ → C b)) + ( ev-lift-family-of-elements-fiber f (λ b _ → C b)) ( map-Π (λ b u _ → u)) ( is-equiv-map-Π-is-fiberwise-equiv H) ( universal-property-family-of-fibers-fiber f C) diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 58cd2a8bab..246a8d92f1 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -131,6 +131,7 @@ open import foundation.equivalences-towers public open import foundation.exclusive-disjunction public open import foundation.existential-quantification public open import foundation.exponents-set-quotients public +open import foundation.extensions-families-of-elements public open import foundation.faithful-maps public open import foundation.families-of-equivalences public open import foundation.families-of-maps public @@ -194,6 +195,7 @@ open import foundation.large-locale-of-subtypes public open import foundation.law-of-excluded-middle public open import foundation.lawveres-fixed-point-theorem public open import foundation.lesser-limited-principle-of-omniscience public +open import foundation.lifts-families-of-elements public open import foundation.limited-principle-of-omniscience public open import foundation.locally-small-types public open import foundation.logical-equivalences public diff --git a/src/foundation/connected-maps.lagda.md b/src/foundation/connected-maps.lagda.md index 1ae70b4097..be35154346 100644 --- a/src/foundation/connected-maps.lagda.md +++ b/src/foundation/connected-maps.lagda.md @@ -393,7 +393,7 @@ module _ ( λ b → function-dependent-universal-property-trunc ( Id-Truncated-Type' (trunc k (fiber f b)) _)) - ( inv-ev-lift-family-of-fibers f + ( extend-lift-family-of-elements-fiber f ( λ b u → _ = unit-trunc u) ( compute-center-is-connected-map-dependent-universal-property-connected-map)) diff --git a/src/foundation/extensions-families-of-elements.lagda.md b/src/foundation/extensions-families-of-elements.lagda.md new file mode 100644 index 0000000000..e2ac109c43 --- /dev/null +++ b/src/foundation/extensions-families-of-elements.lagda.md @@ -0,0 +1,142 @@ +# Extensions of families of elements + +```agda +module foundation.extensions-families-of-elements where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.lifts-families-of-elements +open import foundation.universe-levels + +open import foundation-core.function-types +open import foundation-core.homotopies +open import foundation-core.identity-types +``` + +
+ +## Idea + +Consider a family of elements `a : I → A`, a type family `B` over `A` and a +[lift](foundation.lifts-families-of-elements.md) + +```text + b : (i : I) → B (a i) +``` + +of the family of elements `a`. An +{{#concept "extension" Disambiguation="family of elements"}} of `b` to `A` +consists of a family of elements `f : (x : A) → B x` equipped with a +[homotopy](foundation-core.homotopies.md) `f ∘ a ~ b`. + +More generally, given a family of elements `a : (i : I) → A i`, a type family +`B` over `A`, and a dependent lift + +```text + b : (i : I) → B i (a i) +``` + +of the family of elements `A`, a +{{#concet "dependent extension" Disambiguation"family of elements"}} of `b` to +`A` consists of a family of elements + +```text + f : (i : I) (x : A i) → B i x +``` + +equipped with a homotopy `(i : I) → f i (a i) = b i`. + +## Definitions + +### Evaluating families of elements at lifts of families of elements + +We will define an evaluation map + +```text + ((b : B) (z : F b) → P b z) → ((a : A) → P (f a) (δ a)) +``` + +for any type family `F : B → 𝒰` equipped with a lift `δ : (a : A) → F (f a)`. +This map takes a dependent function `h` and evaluates it at the values of the +lift `δ`. + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} (a : (i : I) → A i) + {B : (i : I) → A i → UU l3} + where + + ev-dependent-lift-family-of-elements : + ((i : I) (x : A i) → B i x) → dependent-lift-family-of-elements a B + ev-dependent-lift-family-of-elements h i = h i (a i) + +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} (a : I → A) {B : A → UU l3} + where + + ev-lift-family-of-elements : + ((x : A) → B x) → lift-family-of-elements a B + ev-lift-family-of-elements h i = h (a i) +``` + +### Dependent extensions of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} (a : (i : I) → A i) + (B : (i : I) → A i → UU l3) (b : dependent-lift-family-of-elements a B) + where + + is-dependent-extension-lift-family-of-elements : + (f : (i : I) (x : A i) → B i x) → UU (l1 ⊔ l3) + is-dependent-extension-lift-family-of-elements f = + ev-dependent-lift-family-of-elements a f ~ b + + dependent-extension-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3) + dependent-extension-lift-family-of-elements = + Σ ((i : I) (x : A i) → B i x) is-dependent-extension-lift-family-of-elements + + module _ + (f : dependent-extension-lift-family-of-elements) + where + + family-of-elements-dependent-extension-lift-family-of-elements : + (i : I) (x : A i) → B i x + family-of-elements-dependent-extension-lift-family-of-elements = pr1 f + + is-dependent-extension-dependent-extension-lift-family-of-elements : + is-dependent-extension-lift-family-of-elements + ( family-of-elements-dependent-extension-lift-family-of-elements) + is-dependent-extension-dependent-extension-lift-family-of-elements = pr2 f +``` + +### Dependent-extensions of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} (a : I → A) + (B : A → UU l3) (b : lift-family-of-elements a B) + where + + is-extension-lift-family-of-elements : (f : (x : A) → B x) → UU (l1 ⊔ l3) + is-extension-lift-family-of-elements f = ev-lift-family-of-elements a f ~ b + + extension-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3) + extension-lift-family-of-elements = + Σ ((x : A) → B x) is-extension-lift-family-of-elements + + module _ + (f : extension-lift-family-of-elements) + where + + family-of-elements-extension-lift-family-of-elements : (x : A) → B x + family-of-elements-extension-lift-family-of-elements = pr1 f + + is-extension-extension-lift-family-of-elements : + is-extension-lift-family-of-elements + ( family-of-elements-extension-lift-family-of-elements) + is-extension-extension-lift-family-of-elements = pr2 f +``` diff --git a/src/foundation/lifts-families-of-elements.lagda.md b/src/foundation/lifts-families-of-elements.lagda.md new file mode 100644 index 0000000000..c9dfc940f0 --- /dev/null +++ b/src/foundation/lifts-families-of-elements.lagda.md @@ -0,0 +1,150 @@ +# Lifts of families of elements + +```agda +module foundation.lifts-families-of-elements where +``` + +
Imports + +```agda +open import foundation.universe-levels +``` + +
+ +## Idea + +Consider a family of elements `a : (i : I) → A i` and a type family + +```text + B : (i : I) → A i → 𝒰. +``` + +A {{#concept "dependent lift" Disambiguation="family of elements"}} of the +family of elements `a` to the type family `B` is a family of elements + +```text + (i : I) → B i (a i). +``` + +An important special case occurs when `a : I → A` is a family of elements of a +fixed type `A`, and `B` is a type family over `A`. In this case, a +{{#concept "lift" Disambiguation="family of elements"}} of the family of +elements `a` is a family of elements + +```text + (i : I) → B (a i). +``` + +## Definitions + +### Dependent lifts of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} (a : (i : I) → A i) + (B : (i : I) → A i → UU l3) + where + + dependent-lift-family-of-elements : UU (l1 ⊔ l3) + dependent-lift-family-of-elements = (i : I) → B i (a i) +``` + +### Lifts of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} (a : I → A) (B : A → UU l3) + where + + lift-family-of-elements : UU (l1 ⊔ l3) + lift-family-of-elements = dependent-lift-family-of-elements a (λ _ → B) +``` + +### Dependent lifts of binary families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} (a : (i : I) → A i) + {B : (i : I) → A i → UU l3} (C : (i : I) (x : A i) → B i x → UU l4) + where + + dependent-lift-binary-family-of-elements : UU (l1 ⊔ l3 ⊔ l4) + dependent-lift-binary-family-of-elements = + dependent-lift-family-of-elements a (λ i x → (y : B i x) → C i x y) +``` + +### Lifts of binary families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} (a : I → A) + {B : A → UU l3} {C : (x : A) → B x → UU l4} + where + + lift-binary-family-of-elements : UU (l1 ⊔ l3 ⊔ l4) + lift-binary-family-of-elements = + dependent-lift-binary-family-of-elements a (λ _ → C) +``` + +### Dependent double lifts of families of elements + +Given a lift `a` of `h : (i : I) → J i` to a type family +`A : (i : I) → J i → 𝒰`, a +{{#concept "dependent double lift" Disambiguation="families of elements"}} of +`h` and `a` to a type family + +```text + B : (i : I) (j : J i) → A i j → 𝒰 +``` + +is a family of elements + +```text + (i : I) → B i (h i) (a i). +``` + +Note that this is the type of double lifts in the sense that it simultaneously +lifts `h` and `a` to the type family `B`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {J : I → UU l2} {h : (i : I) → J i} + (A : (i : I) → J i → UU l3) (a : dependent-lift-family-of-elements h A) + (B : (i : I) (j : J i) → A i j → UU l4) + where + + dependent-double-lift-family-of-elements : UU (l1 ⊔ l4) + dependent-double-lift-family-of-elements = + dependent-lift-family-of-elements a (λ i → B i (h i)) +``` + +### Double lifts of families of elements + +Given a lift `a` of `h : I → J` to a type family `A : J → 𝒰`, a +{{#concept "double lift" Disambiguation="families of elements"}} of `h` and `a` +to a type family + +```text + B : (j : J) → A j → 𝒰 +``` + +is a family of elements + +```text + (i : I) → B (h i) (a i). +``` + +Note that this is the type of double lifts in the sense that it simultaneously +lifts `h` and `a` to the type family `B`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {J : UU l2} {h : I → J} + (A : J → UU l3) (a : lift-family-of-elements h A) (B : (j : J) → A j → UU l4) + where + + double-lift-family-of-elements : UU (l1 ⊔ l4) + double-lift-family-of-elements = + dependent-lift-family-of-elements a (λ i → B (h i)) +``` diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md index 253e41900e..d8689ca163 100644 --- a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -11,9 +11,11 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.equivalences +open import foundation.extensions-families-of-elements open import foundation.families-of-equivalences open import foundation.function-extensionality open import foundation.function-types +open import foundation.lifts-families-of-elements open import foundation.subtype-identity-principle open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels @@ -76,26 +78,29 @@ described above, while the universal property of the fiber `fiber f b` of a map ```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} (F : B → UU l3) - (δ : (a : A) → F (f a)) (P : B → UU l4) (γ : (a : A) → P (f a)) + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} + (F : B → UU l3) (δ : lift-family-of-elements f F) + (G : B → UU l4) (γ : lift-family-of-elements f G) where section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) section-preserving-fiberwise-map-fiber = - Σ ((b : B) → F b → P b) (λ h → ev-lift f F δ h ~ γ) + Σ ((b : B) → F b → G b) (λ h → ev-lift-family-of-elements' f F δ h ~ γ) +``` +```text module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + {δ : (a : A) → F (f a)} {G : B → UU l4} {γ : (a : A) → G (f a)} where fiberwise-map-section-preserving-fiberwise-map-fiber : - section-preserving-fiberwise-map-fiber F δ P γ → (b : B) → F b → P b + section-preserving-fiberwise-map-fiber F δ G γ → (b : B) → F b → G b fiberwise-map-section-preserving-fiberwise-map-fiber = pr1 preserves-section-section-preserving-fiberwise-map-fiber : - (w : section-preserving-fiberwise-map-fiber F δ P γ) → - ev-lift f F δ (fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ γ + (w : section-preserving-fiberwise-map-fiber F δ G γ) → + ev-lift-family-of-elements f F δ (fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ γ preserves-section-section-preserving-fiberwise-map-fiber = pr2 module _ @@ -110,13 +115,13 @@ module _ module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {P : B → UU l4} {γ : (a : A) → P (f a)} + {δ : (a : A) → F (f a)} {G : B → UU l4} {γ : (a : A) → G (f a)} {Q : B → UU l5} {η : (a : A) → Q (f a)} where dependent-comp-section-preserving-fiberwise-map-fiber : - ( section-preserving-fiberwise-map-fiber P γ Q η) → - ( section-preserving-fiberwise-map-fiber F δ P γ) → + ( section-preserving-fiberwise-map-fiber G γ Q η) → + ( section-preserving-fiberwise-map-fiber F δ G γ) → ( section-preserving-fiberwise-map-fiber F δ Q η) pr1 (dependent-comp-section-preserving-fiberwise-map-fiber g h) = dependent-comp @@ -131,31 +136,31 @@ module _ module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) - (P : B → UU l4) (γ : (a : A) → P (f a)) + (G : B → UU l4) (γ : (a : A) → G (f a)) where uniqueness-fiberwise-map-universal-property-family-of-fibers : - is-contr (section-preserving-fiberwise-map-fiber F δ P γ) + is-contr (section-preserving-fiberwise-map-fiber F δ G γ) uniqueness-fiberwise-map-universal-property-family-of-fibers = is-contr-equiv - ( fiber (ev-lift f F δ) γ) + ( fiber (ev-lift-family-of-elements f F δ) γ) ( equiv-tot ( λ h → equiv-eq-htpy)) - ( is-contr-map-is-equiv (u P) γ) + ( is-contr-map-is-equiv (u G) γ) section-preserving-fiberwise-map-universal-property-family-of-fibers : - section-preserving-fiberwise-map-fiber F δ P γ + section-preserving-fiberwise-map-fiber F δ G γ section-preserving-fiberwise-map-universal-property-family-of-fibers = ( center uniqueness-fiberwise-map-universal-property-family-of-fibers) fiberwise-map-universal-property-family-of-fibers : - (b : B) → F b → P b + (b : B) → F b → G b fiberwise-map-universal-property-family-of-fibers = fiberwise-map-section-preserving-fiberwise-map-fiber section-preserving-fiberwise-map-universal-property-family-of-fibers preserves-section-fiberwise-map-universal-property-family-of-fibers : - (ev-lift f F δ fiberwise-map-universal-property-family-of-fibers) ~ γ + (ev-lift-family-of-elements f F δ fiberwise-map-universal-property-family-of-fibers) ~ γ preserves-section-fiberwise-map-universal-property-family-of-fibers = preserves-section-section-preserving-fiberwise-map-fiber section-preserving-fiberwise-map-universal-property-family-of-fibers @@ -163,20 +168,20 @@ module _ module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) - (P : B → UU l4) (γ : (a : A) → P (f a)) - (u' : universal-property-family-of-fibers f P γ) + (G : B → UU l4) (γ : (a : A) → G (f a)) + (u' : universal-property-family-of-fibers f G γ) where dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : ( dependent-comp-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-family-of-fibers - f P γ u' F δ) + f G γ u' F δ) ( section-preserving-fiberwise-map-universal-property-family-of-fibers ( f) ( F) ( δ) ( u) - ( P) + ( G) ( γ))) = ( id-section-preserving-fiberwise-map-fiber) dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = @@ -187,10 +192,10 @@ module _ dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : ( dependent-comp-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-family-of-fibers - f F δ u P γ)) + f F δ u G γ)) ( section-preserving-fiberwise-map-universal-property-family-of-fibers ( f) - ( P) + ( G) ( γ) ( u') ( F) @@ -199,12 +204,12 @@ module _ dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = eq-is-contr ( uniqueness-fiberwise-map-universal-property-family-of-fibers - f P γ u' P γ) + f G γ u' G γ) is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : (b : B) → - ( ( fiberwise-map-universal-property-family-of-fibers f P γ u' F δ b) ∘ - ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ b)) ~ + ( ( fiberwise-map-universal-property-family-of-fibers f G γ u' F δ b) ∘ + ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ b)) ~ ( id) is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers b = @@ -217,8 +222,8 @@ module _ is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : (b : B) → - ( ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ b) ∘ - ( fiberwise-map-universal-property-family-of-fibers f P γ u' F δ b)) ~ + ( ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ b) ∘ + ( fiberwise-map-universal-property-family-of-fibers f G γ u' F δ b)) ~ ( id) is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers b = @@ -231,14 +236,14 @@ module _ is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : is-fiberwise-equiv - ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ) + ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ) is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers b = is-equiv-is-invertible ( fiberwise-map-section-preserving-fiberwise-map-fiber ( section-preserving-fiberwise-map-universal-property-family-of-fibers ( f) - ( P) + ( G) ( γ) ( u') ( F) @@ -251,32 +256,32 @@ module _ uniquely-unique-fiberwise-map-universal-property-family-of-fibers : is-contr - ( Σ (fiberwise-equiv F P) - ( λ h → (ev-lift f F δ (map-fiberwise-equiv h)) ~ γ)) + ( Σ (fiberwise-equiv F G) + ( λ h → (ev-lift-family-of-elements f F δ (map-fiberwise-equiv h)) ~ γ)) uniquely-unique-fiberwise-map-universal-property-family-of-fibers = is-torsorial-Eq-subtype ( uniqueness-fiberwise-map-universal-property-family-of-fibers - f F δ u P γ) + f F δ u G γ) ( is-property-is-fiberwise-equiv) - ( fiberwise-map-universal-property-family-of-fibers f F δ u P γ) + ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ) ( preserves-section-fiberwise-map-universal-property-family-of-fibers - f F δ u P γ) + f F δ u G γ) ( is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : - Σ (fiberwise-equiv F P) - ( λ h → (ev-lift f F δ (map-fiberwise-equiv h)) ~ γ) + Σ (fiberwise-equiv F G) + ( λ h → (ev-lift-family-of-elements f F δ (map-fiberwise-equiv h)) ~ γ) section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = center uniquely-unique-fiberwise-map-universal-property-family-of-fibers fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : - fiberwise-equiv F P + fiberwise-equiv F G fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = pr1 ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers) preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : - (ev-lift + (ev-lift-family-of-elements ( f) ( F) ( δ) From b1b98171758711f9884f842e91807e816151a059 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 4 Dec 2023 00:48:57 -0500 Subject: [PATCH 23/29] complete refactoring of Raymond's PR --- src/foundation-core.lagda.md | 1 - ...property-family-of-fibers-of-maps.lagda.md | 271 ---------- src/foundation/connected-maps.lagda.md | 2 +- .../extensions-families-of-elements.lagda.md | 450 +++++++++++++++-- .../lifts-families-of-elements.lagda.md | 36 +- src/foundation/surjective-maps.lagda.md | 2 +- ...property-family-of-fibers-of-maps.lagda.md | 461 +++++++++++------- .../universal-property-image.lagda.md | 2 +- tables/fibers-of-maps.md | 20 +- 9 files changed, 741 insertions(+), 504 deletions(-) delete mode 100644 src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 6178671f4b..0d1313450c 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -54,7 +54,6 @@ open import foundation-core.truncated-types public open import foundation-core.truncation-levels public open import foundation-core.type-theoretic-principle-of-choice public open import foundation-core.univalence public -open import foundation-core.universal-property-family-of-fibers-of-maps public open import foundation-core.universal-property-pullbacks public open import foundation-core.universal-property-truncation public open import foundation-core.whiskering-homotopies public diff --git a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md deleted file mode 100644 index 5481bde89f..0000000000 --- a/src/foundation-core/universal-property-family-of-fibers-of-maps.lagda.md +++ /dev/null @@ -1,271 +0,0 @@ -# The universal property of family of fibers of maps - -```agda -module foundation-core.universal-property-family-of-fibers-of-maps where -``` - -
Imports - -```agda -open import foundation.dependent-pair-types -open import foundation.extensions-families-of-elements -open import foundation.function-extensionality -open import foundation.lifts-families-of-elements -open import foundation.universe-levels - -open import foundation-core.constant-maps -open import foundation-core.equivalences -open import foundation-core.fibers-of-maps -open import foundation-core.function-types -open import foundation-core.functoriality-dependent-function-types -open import foundation-core.homotopies -open import foundation-core.identity-types -open import foundation-core.precomposition-dependent-functions -open import foundation-core.retractions -open import foundation-core.sections -``` - -
- -## Idea - -Any map `f : A → B` induces a type family `fiber f : B → 𝒰` of -[fibers](foundation-core.fibers-of-maps.md) of `f`. By -[precomposing](foundation.precomposition-type-families.md) with `f`, we obtain -the type family `(fiber f) ∘ f : A → 𝒰`, which always has a section given by - -```text - λ a → (a , refl) : (a : A) → fiber f (f a). -``` - -We can uniquely characterize the family of fibers `fiber f : B → 𝒰` as the -initial type family equipped with such a section. Explicitly, the -{{#concept "universal property of the family of fibers" Disambiguation="of a map"}} -`fiber f : B → 𝒰` of a map `f` is that the precomposition operation - -```text - ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) -``` - -is an [equivalence](foundation-core.equivalences.md) for any type family -`P : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, -the type of [lifts](foundation.lifts-of-families-of-elements.md) of `f` to `P` -is precisely the type of sections - -```text - (a : A) → P (f a). -``` - -The family of fibers of `f` is therefore the initial type family over `B` -equipped with a lift of `f`. - -This universal property is especially useful when `A` or `B` enjoy mapping out -universal properties. This lets us characterize the sections `(a : A) → P (f a)` -in terms of the mapping out properties of `A` and the descent data of `B`. - -**Note:** We disambiguate between the _universal property of the family of -fibers of a map_ and the _universal property of the fiber of a map_ at a point -in the codomain. The universal property of the family of fibers of a map is as -described above, while the universal property of the fiber `fiber f b` of a map -`f` at `b` is a special case of the universal property of pullbacks. - -## Definitions - -### The canonical map used in the universal property and dependent universal property of the family of fibers of a map - -The underlying map of the universal property of the family of fibers of a map is -defined to be the evaluation map - -```text - ((b : B) (z : F b) → P b z) → ((a : A) → P (f a) (δ a)) -``` - -for any type family `F : B → 𝒰` equipped with a lift `δ : (a : A) → F (f a)`. -This map takes a dependent function `h` and evaluates it at the values of the -lift `δ`. - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) - (F : B → UU l3) (δ : lift-family-of-elements f F) - where - - ev-lift-family-of-elements' : - {l4 : Level} {P : (b : B) → F b → UU l4} → - ((b : B) (z : F b) → P b z) → dependent-lift-family-of-elements δ (P ∘ f) - ev-lift-family-of-elements' h a = h (f a) (δ a) -``` - -### The universal property of the fibers of a map - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} - where - - universal-property-family-of-fibers : - (f : A → B) (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω - universal-property-family-of-fibers f F δ = - {l : Level} (P : B → UU l) → - is-equiv (ev-lift-family-of-elements' f F δ {l} {λ b _ → P b}) -``` - -### The dependent universal property of the fibers of a map - -```agda - dependent-universal-property-family-of-fibers : - (f : A → B) (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω - dependent-universal-property-family-of-fibers f F δ = - {l : Level} (P : (b : B) → F b → UU l) → - is-equiv (ev-lift-family-of-elements' f F δ {l} {P}) -``` - -### The lift of any map to its family of fibers - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - lift-family-of-elements-fiber : lift-family-of-elements f (fiber f) - pr1 (lift-family-of-elements-fiber a) = a - pr2 (lift-family-of-elements-fiber a) = refl -``` - -## Properties - -### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - module _ - {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) - where - - ev-lift-family-of-elements-fiber : - ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) - ev-lift-family-of-elements-fiber = - ev-lift-family-of-elements' f (fiber f) (lift-family-of-elements-fiber f) - - extend-lift-family-of-elements-fiber : - ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) - extend-lift-family-of-elements-fiber h .(f x) (x , refl) = h x - - is-section-extend-lift-family-of-elements-fiber : - is-section - ( ev-lift-family-of-elements-fiber) - ( extend-lift-family-of-elements-fiber) - is-section-extend-lift-family-of-elements-fiber h = refl - - is-retraction-extend-lift-family-of-elements-fiber' : - (h : (y : B) (z : fiber f y) → C y z) (y : B) → - extend-lift-family-of-elements-fiber - ( ev-lift-family-of-elements-fiber h) - ( y) ~ - h y - is-retraction-extend-lift-family-of-elements-fiber' h .(f z) (z , refl) = - refl - - is-retraction-extend-lift-family-of-elements-fiber : - is-retraction - ( ev-lift-family-of-elements-fiber) - ( extend-lift-family-of-elements-fiber) - is-retraction-extend-lift-family-of-elements-fiber h = - eq-htpy (eq-htpy ∘ is-retraction-extend-lift-family-of-elements-fiber' h) - - is-equiv-extend-lift-family-of-elements-fiber : - is-equiv extend-lift-family-of-elements-fiber - is-equiv-extend-lift-family-of-elements-fiber = - is-equiv-is-invertible - ( ev-lift-family-of-elements-fiber) - ( is-retraction-extend-lift-family-of-elements-fiber) - ( is-section-extend-lift-family-of-elements-fiber) - - inv-equiv-dependent-universal-property-family-of-fibers : - ((x : A) → C (f x) (x , refl)) ≃ ((y : B) (z : fiber f y) → C y z) - pr1 inv-equiv-dependent-universal-property-family-of-fibers = - extend-lift-family-of-elements-fiber - pr2 inv-equiv-dependent-universal-property-family-of-fibers = - is-equiv-extend-lift-family-of-elements-fiber - - dependent-universal-property-family-of-fibers-fiber : - dependent-universal-property-family-of-fibers f - ( fiber f) - ( lift-family-of-elements-fiber f) - dependent-universal-property-family-of-fibers-fiber C = - is-equiv-is-invertible - ( extend-lift-family-of-elements-fiber C) - ( is-section-extend-lift-family-of-elements-fiber C) - ( is-retraction-extend-lift-family-of-elements-fiber C) - - equiv-dependent-universal-property-family-of-fibers : - {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) → - ((y : B) (z : fiber f y) → C y z) ≃ - ((x : A) → C (f x) (x , refl)) - pr1 (equiv-dependent-universal-property-family-of-fibers C) = - ev-lift-family-of-elements-fiber C - pr2 (equiv-dependent-universal-property-family-of-fibers C) = - dependent-universal-property-family-of-fibers-fiber C -``` - -### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) - where - - universal-property-family-of-fibers-fiber : - universal-property-family-of-fibers f - ( fiber f) - ( lift-family-of-elements-fiber f) - universal-property-family-of-fibers-fiber C = - dependent-universal-property-family-of-fibers-fiber f (λ y _ → C y) - - equiv-universal-property-family-of-fibers : - {l3 : Level} (C : B → UU l3) → - ((y : B) → fiber f y → C y) ≃ lift-family-of-elements f C - equiv-universal-property-family-of-fibers C = - equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) -``` - -### The inverse equivalence of the universal property of the family of fibers of a map - -The inverse of the equivalence `equiv-universal-property-family-of-fibers` has a -reasonably nice definition, so we also record it here. - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (C : B → UU l3) - where - - inv-equiv-universal-property-family-of-fibers : - (lift-family-of-elements f C) ≃ ((y : B) → fiber f y → C y) - inv-equiv-universal-property-family-of-fibers = - inv-equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) -``` - -### A type family `C` over `B` satisfies the universal property of the family of fibers of a map `f : A → B` if and only if the diagonal map `C b → (fiber f b → C b)` is an equivalence for every `b : B` - -This condition simplifies, for example, the proof that connected maps satisfy a -dependent universal property. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A → B} - where - - is-equiv-precomp-Π-fiber-condition : - {l3 : Level} {C : B → UU l3} → - ((b : B) → is-equiv (λ (c : C b) → const (fiber f b) (C b) c)) → - is-equiv (precomp-Π f C) - is-equiv-precomp-Π-fiber-condition {l3} {C} H = - is-equiv-comp - ( ev-lift-family-of-elements-fiber f (λ b _ → C b)) - ( map-Π (λ b u _ → u)) - ( is-equiv-map-Π-is-fiberwise-equiv H) - ( universal-property-family-of-fibers-fiber f C) -``` diff --git a/src/foundation/connected-maps.lagda.md b/src/foundation/connected-maps.lagda.md index be35154346..c0b1ae60a2 100644 --- a/src/foundation/connected-maps.lagda.md +++ b/src/foundation/connected-maps.lagda.md @@ -22,6 +22,7 @@ open import foundation.truncation-levels open import foundation.truncations open import foundation.type-theoretic-principle-of-choice open import foundation.univalence +open import foundation.universal-property-family-of-fibers-of-maps open import foundation.universe-levels open import foundation-core.contractible-maps @@ -35,7 +36,6 @@ open import foundation-core.propositions open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.truncated-maps -open import foundation-core.universal-property-family-of-fibers-of-maps ``` diff --git a/src/foundation/extensions-families-of-elements.lagda.md b/src/foundation/extensions-families-of-elements.lagda.md index e2ac109c43..7e6df21605 100644 --- a/src/foundation/extensions-families-of-elements.lagda.md +++ b/src/foundation/extensions-families-of-elements.lagda.md @@ -7,6 +7,7 @@ module foundation.extensions-families-of-elements where
Imports ```agda +open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.lifts-families-of-elements open import foundation.universe-levels @@ -53,15 +54,13 @@ equipped with a homotopy `(i : I) → f i (a i) = b i`. ### Evaluating families of elements at lifts of families of elements -We will define an evaluation map +Any family of elements `a : (i : I) → A i` induces an evaluation map ```text - ((b : B) (z : F b) → P b z) → ((a : A) → P (f a) (δ a)) + ((i : I) (x : A i) → B i x) → ((i : I) → B i (a i)) ``` -for any type family `F : B → 𝒰` equipped with a lift `δ : (a : A) → F (f a)`. -This map takes a dependent function `h` and evaluates it at the values of the -lift `δ`. +defined by `b ↦ (λ i → b i (a i))`. ```agda module _ @@ -71,7 +70,7 @@ module _ ev-dependent-lift-family-of-elements : ((i : I) (x : A i) → B i x) → dependent-lift-family-of-elements a B - ev-dependent-lift-family-of-elements h i = h i (a i) + ev-dependent-lift-family-of-elements b i = b i (a i) module _ {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} (a : I → A) {B : A → UU l3} @@ -79,10 +78,44 @@ module _ ev-lift-family-of-elements : ((x : A) → B x) → lift-family-of-elements a B - ev-lift-family-of-elements h i = h (a i) + ev-lift-family-of-elements b i = b (a i) ``` -### Dependent extensions of families of elements +### Evaluating families of elements at double lifts of families of elements + +Any family of elements `b : (i : I) → B i (a i)` dependent over a family of +elements `a : (i : I) → A i` induces an evaluation map + +```text + ((i : I) (x : A i) (y : B i x) → C i x y) → ((i : I) → C i (a i) (b i)) +``` + +given by `c ↦ (λ i → c i (a i) (b i))`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + {C : (i : I) (x : A i) → B i x → UU l4} + where + + ev-dependent-double-lift-family-of-elements : + ((i : I) (x : A i) (y : B i x) → C i x y) → + dependent-double-lift-family-of-elements b C + ev-dependent-double-lift-family-of-elements h i = h i (a i) (b i) + +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + {C : (x : A) → B x → UU l4} + where + + ev-double-lift-family-of-elements : + ((x : A) (y : B x) → C x y) → double-lift-family-of-elements b C + ev-double-lift-family-of-elements h i = h (a i) (b i) +``` + +### Dependent extensions of dependent lifts of families of elements ```agda module _ @@ -90,30 +123,32 @@ module _ (B : (i : I) → A i → UU l3) (b : dependent-lift-family-of-elements a B) where - is-dependent-extension-lift-family-of-elements : + is-extension-dependent-lift-family-of-elements : (f : (i : I) (x : A i) → B i x) → UU (l1 ⊔ l3) - is-dependent-extension-lift-family-of-elements f = + is-extension-dependent-lift-family-of-elements f = ev-dependent-lift-family-of-elements a f ~ b - dependent-extension-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3) - dependent-extension-lift-family-of-elements = - Σ ((i : I) (x : A i) → B i x) is-dependent-extension-lift-family-of-elements + extension-dependent-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3) + extension-dependent-lift-family-of-elements = + Σ ((i : I) (x : A i) → B i x) is-extension-dependent-lift-family-of-elements - module _ - (f : dependent-extension-lift-family-of-elements) - where +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} + (f : extension-dependent-lift-family-of-elements a B b) + where - family-of-elements-dependent-extension-lift-family-of-elements : - (i : I) (x : A i) → B i x - family-of-elements-dependent-extension-lift-family-of-elements = pr1 f + family-of-elements-extension-dependent-lift-family-of-elements : + (i : I) (x : A i) → B i x + family-of-elements-extension-dependent-lift-family-of-elements = pr1 f - is-dependent-extension-dependent-extension-lift-family-of-elements : - is-dependent-extension-lift-family-of-elements - ( family-of-elements-dependent-extension-lift-family-of-elements) - is-dependent-extension-dependent-extension-lift-family-of-elements = pr2 f + is-extension-extension-dependent-lift-family-of-elements : + is-extension-dependent-lift-family-of-elements a B b + ( family-of-elements-extension-dependent-lift-family-of-elements) + is-extension-extension-dependent-lift-family-of-elements = pr2 f ``` -### Dependent-extensions of families of elements +### Extensions of lifts of families of elements ```agda module _ @@ -128,15 +163,364 @@ module _ extension-lift-family-of-elements = Σ ((x : A) → B x) is-extension-lift-family-of-elements - module _ - (f : extension-lift-family-of-elements) - where +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} {b : lift-family-of-elements a B} + (f : extension-lift-family-of-elements a B b) + where + + family-of-elements-extension-lift-family-of-elements : (x : A) → B x + family-of-elements-extension-lift-family-of-elements = pr1 f + + is-extension-extension-lift-family-of-elements : + is-extension-lift-family-of-elements a B b + ( family-of-elements-extension-lift-family-of-elements) + is-extension-extension-lift-family-of-elements = pr2 f +``` + +### Dependent extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + (C : (i : I) (x : A i) (y : B i x) → UU l4) + (c : dependent-double-lift-family-of-elements b C) + where + + is-extension-dependent-double-lift-family-of-elements : + (f : (i : I) (x : A i) (y : B i x) → C i x y) → UU (l1 ⊔ l4) + is-extension-dependent-double-lift-family-of-elements f = + ev-dependent-double-lift-family-of-elements b f ~ c + + extension-dependent-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + extension-dependent-double-lift-family-of-elements = + Σ ( (i : I) (x : A i) (y : B i x) → C i x y) + ( is-extension-dependent-double-lift-family-of-elements) + +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} + {C : (i : I) (x : A i) (y : B i x) → UU l4} + {c : dependent-double-lift-family-of-elements b C} + (f : extension-dependent-double-lift-family-of-elements b C c) + where + + family-of-elements-extension-dependent-double-lift-family-of-elements : + (i : I) (x : A i) (y : B i x) → C i x y + family-of-elements-extension-dependent-double-lift-family-of-elements = + pr1 f + + is-extension-extension-dependent-double-lift-family-of-elements : + is-extension-dependent-double-lift-family-of-elements b C c + ( family-of-elements-extension-dependent-double-lift-family-of-elements) + is-extension-extension-dependent-double-lift-family-of-elements = pr2 f +``` + +### Extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + (C : (x : A) (y : B x) → UU l4) (c : double-lift-family-of-elements b C) + where + + is-extension-double-lift-family-of-elements : + (f : (x : A) (y : B x) → C x y) → UU (l1 ⊔ l4) + is-extension-double-lift-family-of-elements f = + ev-double-lift-family-of-elements b f ~ c + + extension-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + extension-double-lift-family-of-elements = + Σ ((x : A) (y : B x) → C x y) is-extension-double-lift-family-of-elements + +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} {b : lift-family-of-elements a B} + {C : (x : A) (y : B x) → UU l4} {c : double-lift-family-of-elements b C} + (f : extension-double-lift-family-of-elements b C c) + where + + family-of-elements-extension-double-lift-family-of-elements : + (x : A) (y : B x) → C x y + family-of-elements-extension-double-lift-family-of-elements = pr1 f + + is-extension-extension-double-lift-family-of-elements : + is-extension-double-lift-family-of-elements b C c + ( family-of-elements-extension-double-lift-family-of-elements) + is-extension-extension-double-lift-family-of-elements = pr2 f +``` + +### Identity extensions of dependent lifts of families of elements + +```agda +module _ + {l1 l2 : Level} {I : UU l1} {A : I → UU l2} (a : (i : I) → A i) + where + + id-extension-dependent-lift-family-of-elements : + extension-dependent-lift-family-of-elements a (λ i _ → A i) a + pr1 id-extension-dependent-lift-family-of-elements i = id + pr2 id-extension-dependent-lift-family-of-elements = refl-htpy +``` + +### Identity extensions of lifts of families of elements + +```agda +module _ + {l1 l2 : Level} {I : UU l1} {A : UU l2} (a : I → A) + where + + id-extension-lift-family-of-elements : + extension-lift-family-of-elements a (λ _ → A) a + pr1 id-extension-lift-family-of-elements = id + pr2 id-extension-lift-family-of-elements = refl-htpy +``` + +### Identity extensions of dependent double lifts of families of elements - family-of-elements-extension-lift-family-of-elements : (x : A) → B x - family-of-elements-extension-lift-family-of-elements = pr1 f +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + where + + id-extension-dependent-double-lift-family-of-elements : + extension-dependent-double-lift-family-of-elements b (λ i x y → B i x) b + pr1 id-extension-dependent-double-lift-family-of-elements i x = id + pr2 id-extension-dependent-double-lift-family-of-elements = refl-htpy +``` + +### Identity extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + where + + id-extension-double-lift-family-of-elements : + extension-double-lift-family-of-elements b (λ x (y : B x) → B x) b + pr1 id-extension-double-lift-family-of-elements x = id + pr2 id-extension-double-lift-family-of-elements = refl-htpy +``` + +### Composition of extensions of dependent lifts of families of elements + +Consider three type families `A`, `B`, and `C` over a type `I` equipped with +sections + +```text + a : (i : I) → A i + b : (i : I) → B i + c : (i : I) → C i. +``` + +Furthermore, suppose that `g` is an extension of `c` along `b`, and suppose that +`f` is an extension of `b` along `a`. In other words, `g` consists of a family +of maps + +```text + g : (i : I) → B i → C i +``` + +equipped with a homotopy witnessing that `g i (b i) = c i` for all `i : I`, and +`f` consists of a family of maps + +```text + f : (i : I) → A i → B i +``` + +equipped with a homotopy witnessing that `f i (a i) = b i` for all `i : I`. +Then we can compose `g` and `f` fiberwise, resulting in a family of maps + +```text + λ i → g i ∘ f i : (i : I) → A i → C i +``` + +equipped with a homotopy witnessing that `g i (f i (a i)) = c i` for all +`i : I`. In other words, extensions of `c` along `b` can be composed with +extensions of `b` along `a` to obtain extensions of `c` along `a`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} + {A : I → UU l2} {a : (i : I) → A i} + {B : I → UU l3} {b : (i : I) → B i} + {C : I → UU l4} {c : (i : I) → C i} + (g : extension-dependent-lift-family-of-elements b (λ i _ → C i) c) + (f : extension-dependent-lift-family-of-elements a (λ i _ → B i) b) + where + + family-of-elements-comp-extension-dependent-lift-family-of-elements : + (i : I) → A i → C i + family-of-elements-comp-extension-dependent-lift-family-of-elements i = + family-of-elements-extension-dependent-lift-family-of-elements g i ∘ + family-of-elements-extension-dependent-lift-family-of-elements f i + + is-extension-comp-extension-dependent-lift-family-of-elements : + is-extension-dependent-lift-family-of-elements a + ( λ i _ → C i) + ( c) + ( family-of-elements-comp-extension-dependent-lift-family-of-elements) + is-extension-comp-extension-dependent-lift-family-of-elements i = + ( ap + ( family-of-elements-extension-dependent-lift-family-of-elements g i) + ( is-extension-extension-dependent-lift-family-of-elements f i)) ∙ + ( is-extension-extension-dependent-lift-family-of-elements g i) + + comp-extension-dependent-lift-family-of-elements : + extension-dependent-lift-family-of-elements a (λ i _ → C i) c + pr1 comp-extension-dependent-lift-family-of-elements = + family-of-elements-comp-extension-dependent-lift-family-of-elements + pr2 comp-extension-dependent-lift-family-of-elements = + is-extension-comp-extension-dependent-lift-family-of-elements +``` + +### Composition of extensions of lifts of families of elements + +Consider three types `A`, `B`, and `C` equipped with maps + +```text + a : I → A + b : I → B + c : I → C. +``` + +Furthermore, suppose that `g` is an extension of `c` along `b`, and suppose that +`f` is an extension of `b` along `a`. In other words, we assume a commuting +diagram + +```text + I + / | \ + a/ | \c + / |b \ + V V V + A --> B --> C + f g +``` + +The composite `g ∘ f` is then an extension of `c` along `a. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} + {A : UU l2} {a : I → A} + {B : UU l3} {b : I → B} + {C : UU l4} {c : I → C} + (g : extension-lift-family-of-elements b (λ _ → C) c) + (f : extension-lift-family-of-elements a (λ _ → B) b) + where + + map-comp-extension-lift-family-of-elements : A → C + map-comp-extension-lift-family-of-elements = + family-of-elements-extension-lift-family-of-elements g ∘ + family-of-elements-extension-lift-family-of-elements f + + is-extension-comp-extension-lift-family-of-elements : + is-extension-lift-family-of-elements a + ( λ _ → C) + ( c) + ( map-comp-extension-lift-family-of-elements) + is-extension-comp-extension-lift-family-of-elements x = + ( ap + ( family-of-elements-extension-lift-family-of-elements g) + ( is-extension-extension-lift-family-of-elements f x)) ∙ + ( is-extension-extension-lift-family-of-elements g x) + + comp-extension-lift-family-of-elements : + extension-lift-family-of-elements a (λ _ → C) c + pr1 comp-extension-lift-family-of-elements = + map-comp-extension-lift-family-of-elements + pr2 comp-extension-lift-family-of-elements = + is-extension-comp-extension-lift-family-of-elements +``` + +### Composition of extensions of dependent double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} {I : UU l1} + {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} + {C : (i : I) → A i → UU l4} {c : dependent-lift-family-of-elements a C} + {D : (i : I) → A i → UU l5} {d : dependent-lift-family-of-elements a D} + (g : + extension-dependent-double-lift-family-of-elements c + ( λ i x (_ : C i x) → D i x) + ( d)) + (f : + extension-dependent-double-lift-family-of-elements b + ( λ i x (_ : B i x) → C i x) + ( c)) + where + + family-of-elements-comp-extension-dependent-double-lift-family-of-elements : + (i : I) (x : A i) → B i x → D i x + family-of-elements-comp-extension-dependent-double-lift-family-of-elements + i x = + family-of-elements-extension-dependent-double-lift-family-of-elements + g i x ∘ + family-of-elements-extension-dependent-double-lift-family-of-elements + f i x + + is-extension-comp-extension-dependent-double-lift-family-of-elements : + is-extension-dependent-double-lift-family-of-elements b + ( λ i x _ → D i x) + ( d) + ( family-of-elements-comp-extension-dependent-double-lift-family-of-elements) + is-extension-comp-extension-dependent-double-lift-family-of-elements i = + ( ap + ( family-of-elements-extension-dependent-double-lift-family-of-elements + g i (a i)) + ( is-extension-extension-dependent-double-lift-family-of-elements f i)) ∙ + ( is-extension-extension-dependent-double-lift-family-of-elements g i) + + comp-extension-dependent-double-lift-family-of-elements : + extension-dependent-double-lift-family-of-elements b + ( λ i x (_ : B i x) → D i x) + ( d) + pr1 comp-extension-dependent-double-lift-family-of-elements = + family-of-elements-comp-extension-dependent-double-lift-family-of-elements + pr2 comp-extension-dependent-double-lift-family-of-elements = + is-extension-comp-extension-dependent-double-lift-family-of-elements +``` + +### Composition of extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} {b : lift-family-of-elements a B} + {C : A → UU l4} {c : lift-family-of-elements a C} + {D : A → UU l5} {d : lift-family-of-elements a D} + (g : extension-double-lift-family-of-elements c (λ x (_ : C x) → D x) d) + (f : extension-double-lift-family-of-elements b (λ x (_ : B x) → C x) c) + where - is-extension-extension-lift-family-of-elements : - is-extension-lift-family-of-elements - ( family-of-elements-extension-lift-family-of-elements) - is-extension-extension-lift-family-of-elements = pr2 f + family-of-elements-comp-extension-double-lift-family-of-elements : + (x : A) → B x → D x + family-of-elements-comp-extension-double-lift-family-of-elements x = + family-of-elements-extension-double-lift-family-of-elements g x ∘ + family-of-elements-extension-double-lift-family-of-elements f x + + is-extension-comp-extension-double-lift-family-of-elements : + is-extension-double-lift-family-of-elements b + ( λ x _ → D x) + ( d) + ( family-of-elements-comp-extension-double-lift-family-of-elements) + is-extension-comp-extension-double-lift-family-of-elements i = + ( ap + ( family-of-elements-extension-double-lift-family-of-elements g (a i)) + ( is-extension-extension-double-lift-family-of-elements f i)) ∙ + ( is-extension-extension-double-lift-family-of-elements g i) + + comp-extension-double-lift-family-of-elements : + extension-double-lift-family-of-elements b (λ x (_ : B x) → D x) d + pr1 comp-extension-double-lift-family-of-elements = + family-of-elements-comp-extension-double-lift-family-of-elements + pr2 comp-extension-double-lift-family-of-elements = + is-extension-comp-extension-double-lift-family-of-elements ``` diff --git a/src/foundation/lifts-families-of-elements.lagda.md b/src/foundation/lifts-families-of-elements.lagda.md index c9dfc940f0..12882fd82a 100644 --- a/src/foundation/lifts-families-of-elements.lagda.md +++ b/src/foundation/lifts-families-of-elements.lagda.md @@ -89,62 +89,62 @@ module _ ### Dependent double lifts of families of elements -Given a lift `a` of `h : (i : I) → J i` to a type family -`A : (i : I) → J i → 𝒰`, a +Given a lift `b` of `a : (i : I) → A i` to a type family +`B : (i : I) → A i → 𝒰`, a {{#concept "dependent double lift" Disambiguation="families of elements"}} of -`h` and `a` to a type family +`a` and `b` to a type family ```text - B : (i : I) (j : J i) → A i j → 𝒰 + C : (i : I) (x : A i) → B i x → 𝒰 ``` is a family of elements ```text - (i : I) → B i (h i) (a i). + (i : I) → C i (a i) (b i). ``` Note that this is the type of double lifts in the sense that it simultaneously -lifts `h` and `a` to the type family `B`. +lifts `a` and `b` to the type family `C`. ```agda module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {J : I → UU l2} {h : (i : I) → J i} - (A : (i : I) → J i → UU l3) (a : dependent-lift-family-of-elements h A) - (B : (i : I) (j : J i) → A i j → UU l4) + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + (C : (i : I) (x : A i) → B i x → UU l4) where dependent-double-lift-family-of-elements : UU (l1 ⊔ l4) dependent-double-lift-family-of-elements = - dependent-lift-family-of-elements a (λ i → B i (h i)) + dependent-lift-family-of-elements b (λ i → C i (a i)) ``` ### Double lifts of families of elements -Given a lift `a` of `h : I → J` to a type family `A : J → 𝒰`, a -{{#concept "double lift" Disambiguation="families of elements"}} of `h` and `a` +Given a lift `b` of `a : I → A` to a type family `B : A → 𝒰`, a +{{#concept "double lift" Disambiguation="families of elements"}} of `a` and `b` to a type family ```text - B : (j : J) → A j → 𝒰 + C : (x : A) → B x → 𝒰 ``` is a family of elements ```text - (i : I) → B (h i) (a i). + (i : I) → C (a i) (b i). ``` Note that this is the type of double lifts in the sense that it simultaneously -lifts `h` and `a` to the type family `B`. +lifts `a` and `b` to the type family `C`. ```agda module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {J : UU l2} {h : I → J} - (A : J → UU l3) (a : lift-family-of-elements h A) (B : (j : J) → A j → UU l4) + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) (C : (x : A) → B x → UU l4) where double-lift-family-of-elements : UU (l1 ⊔ l4) double-lift-family-of-elements = - dependent-lift-family-of-elements a (λ i → B (h i)) + dependent-lift-family-of-elements b (λ i → C (a i)) ``` diff --git a/src/foundation/surjective-maps.lagda.md b/src/foundation/surjective-maps.lagda.md index efb5af6d84..411a8ca0dd 100644 --- a/src/foundation/surjective-maps.lagda.md +++ b/src/foundation/surjective-maps.lagda.md @@ -32,6 +32,7 @@ open import foundation.truncated-types open import foundation.type-theoretic-principle-of-choice open import foundation.univalence open import foundation.universal-property-dependent-pair-types +open import foundation.universal-property-family-of-fibers-of-maps open import foundation.universal-property-propositional-truncation open import foundation.universe-levels @@ -49,7 +50,6 @@ open import foundation-core.sets open import foundation-core.torsorial-type-families open import foundation-core.truncated-maps open import foundation-core.truncation-levels -open import foundation-core.universal-property-family-of-fibers-of-maps open import orthogonal-factorization-systems.extensions-of-maps ``` diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md index d8689ca163..4e58743a6c 100644 --- a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -1,4 +1,4 @@ -# The universal property of fibers of maps +# The universal property of family of fibers of maps ```agda module foundation.universal-property-family-of-fibers-of-maps where @@ -9,24 +9,26 @@ module foundation.universal-property-family-of-fibers-of-maps where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.dependent-universal-property-equivalences -open import foundation.equivalences open import foundation.extensions-families-of-elements open import foundation.families-of-equivalences open import foundation.function-extensionality -open import foundation.function-types open import foundation.lifts-families-of-elements open import foundation.subtype-identity-principle -open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels +open import foundation-core.constant-maps open import foundation-core.contractible-maps open import foundation-core.contractible-types +open import foundation-core.equivalences open import foundation-core.fibers-of-maps +open import foundation-core.function-types +open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.universal-property-family-of-fibers-of-maps +open import foundation-core.precomposition-dependent-functions +open import foundation-core.retractions +open import foundation-core.sections ```
@@ -48,22 +50,23 @@ initial type family equipped with such a section. Explicitly, the `fiber f : B → 𝒰` of a map `f` is that the precomposition operation ```text - ((b : B) → fiber f b → P b) → ((a : A) → P (f a)) + ((b : B) → fiber f b → X b) → ((a : A) → X (f a)) ``` is an [equivalence](foundation-core.equivalences.md) for any type family -`P : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, -the type of _lifts_ of `f` to `P` is precisely the type of sections +`X : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, +the type of [lifts](foundation.lifts-families-of-elements.md) of `f` to `P` is +precisely the type of sections ```text - (a : A) → P (f a). + (a : A) → X (f a). ``` The family of fibers of `f` is therefore the initial type family over `B` equipped with a lift of `f`. This universal property is especially useful when `A` or `B` enjoy mapping out -universal properties. This lets us characterize the sections `(a : A) → P (f a)` +universal properties. This lets us characterize the sections `(a : A) → X (f a)` in terms of the mapping out properties of `A` and the descent data of `B`. **Note:** We disambiguate between the _universal property of the family of @@ -72,223 +75,345 @@ in the codomain. The universal property of the family of fibers of a map is as described above, while the universal property of the fiber `fiber f b` of a map `f` at `b` is a special case of the universal property of pullbacks. -## Properties +## Definitions -### Fibers are uniquely unique +### The dependent universal property of the fibers of a map + +Consider a map `f : A → B` and a type family `F : B → 𝒰` equipped with a lift +`δ : (a : A) → F (f f)` of `f` to `F`. Then there is an evaluation map + +```text + ((b : B) (z : F b) → X b z) → ((a : A) → X (f a) (δ a)) +``` + +for any binary type family `X : (b : B) → F b → 𝒰`. This evaluation map takes a +binary family of elements of `X` to a double lift over `f` and `δ`. The +dependent universal property of the family of fibers of `f` asserts that this +evaluation map is an equivalence. ```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} - (F : B → UU l3) (δ : lift-family-of-elements f F) - (G : B → UU l4) (γ : lift-family-of-elements f G) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} where - section-preserving-fiberwise-map-fiber : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - section-preserving-fiberwise-map-fiber = - Σ ((b : B) → F b → G b) (λ h → ev-lift-family-of-elements' f F δ h ~ γ) + dependent-universal-property-family-of-fibers : + {f : A → B} (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω + dependent-universal-property-family-of-fibers F δ = + {l : Level} (X : (b : B) → F b → UU l) → + is-equiv (ev-double-lift-family-of-elements {B = F} δ {X}) ``` +### The universal property of the fibers of a map + +Consider a map `f : A → B` and a type family `F : B → 𝒰` equipped with a lift +`δ : (a : A) → F (f f)` of `f` to `F`. Then there is an evaluation map + ```text + ((b : B) → F b → X b) → ((a : A) → X (f a)) +``` + +for any binary type family `X : B → 𝒰`. This evaluation map takes a binary +family of elements of `X` to a lift of `f`. The universal property of the family +of fibers of `f` asserts that this evaluation map is an equivalence. + +```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {G : B → UU l4} {γ : (a : A) → G (f a)} + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} where - fiberwise-map-section-preserving-fiberwise-map-fiber : - section-preserving-fiberwise-map-fiber F δ G γ → (b : B) → F b → G b - fiberwise-map-section-preserving-fiberwise-map-fiber = pr1 + universal-property-family-of-fibers : + {f : A → B} (F : B → UU l3) (δ : lift-family-of-elements f F) → UUω + universal-property-family-of-fibers F δ = + {l : Level} (X : B → UU l) → + is-equiv (ev-double-lift-family-of-elements {B = F} δ {λ b _ → X b}) +``` - preserves-section-section-preserving-fiberwise-map-fiber : - (w : section-preserving-fiberwise-map-fiber F δ G γ) → - ev-lift-family-of-elements f F δ (fiberwise-map-section-preserving-fiberwise-map-fiber w) ~ γ - preserves-section-section-preserving-fiberwise-map-fiber = pr2 +### The lift of any map to its family of fibers +```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - id-section-preserving-fiberwise-map-fiber : - section-preserving-fiberwise-map-fiber F δ F δ - pr1 id-section-preserving-fiberwise-map-fiber b = id - pr2 id-section-preserving-fiberwise-map-fiber = refl-htpy + lift-family-of-elements-fiber : lift-family-of-elements f (fiber f) + pr1 (lift-family-of-elements-fiber a) = a + pr2 (lift-family-of-elements-fiber a) = refl +``` + +## Properties + +### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map +```agda module _ - {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} {f : A → B} {F : B → UU l3} - {δ : (a : A) → F (f a)} {G : B → UU l4} {γ : (a : A) → G (f a)} - {Q : B → UU l5} {η : (a : A) → Q (f a)} + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - dependent-comp-section-preserving-fiberwise-map-fiber : - ( section-preserving-fiberwise-map-fiber G γ Q η) → - ( section-preserving-fiberwise-map-fiber F δ G γ) → - ( section-preserving-fiberwise-map-fiber F δ Q η) - pr1 (dependent-comp-section-preserving-fiberwise-map-fiber g h) = - dependent-comp - ( fiberwise-map-section-preserving-fiberwise-map-fiber g) - ( fiberwise-map-section-preserving-fiberwise-map-fiber h) - pr2 (dependent-comp-section-preserving-fiberwise-map-fiber g h) a = - ( ap - ( (fiberwise-map-section-preserving-fiberwise-map-fiber g) (f a)) - ( preserves-section-section-preserving-fiberwise-map-fiber h a)) ∙ - ( preserves-section-section-preserving-fiberwise-map-fiber g a) + module _ + {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) + where + + ev-lift-family-of-elements-fiber : + ((y : B) (z : fiber f y) → C y z) → ((x : A) → C (f x) (x , refl)) + ev-lift-family-of-elements-fiber = + ev-double-lift-family-of-elements (lift-family-of-elements-fiber f) + + extend-lift-family-of-elements-fiber : + ((x : A) → C (f x) (x , refl)) → ((y : B) (z : fiber f y) → C y z) + extend-lift-family-of-elements-fiber h .(f x) (x , refl) = h x + + is-section-extend-lift-family-of-elements-fiber : + is-section + ( ev-lift-family-of-elements-fiber) + ( extend-lift-family-of-elements-fiber) + is-section-extend-lift-family-of-elements-fiber h = refl + + is-retraction-extend-lift-family-of-elements-fiber' : + (h : (y : B) (z : fiber f y) → C y z) (y : B) → + extend-lift-family-of-elements-fiber + ( ev-lift-family-of-elements-fiber h) + ( y) ~ + h y + is-retraction-extend-lift-family-of-elements-fiber' h .(f z) (z , refl) = + refl + + is-retraction-extend-lift-family-of-elements-fiber : + is-retraction + ( ev-lift-family-of-elements-fiber) + ( extend-lift-family-of-elements-fiber) + is-retraction-extend-lift-family-of-elements-fiber h = + eq-htpy (eq-htpy ∘ is-retraction-extend-lift-family-of-elements-fiber' h) + + is-equiv-extend-lift-family-of-elements-fiber : + is-equiv extend-lift-family-of-elements-fiber + is-equiv-extend-lift-family-of-elements-fiber = + is-equiv-is-invertible + ( ev-lift-family-of-elements-fiber) + ( is-retraction-extend-lift-family-of-elements-fiber) + ( is-section-extend-lift-family-of-elements-fiber) + + inv-equiv-dependent-universal-property-family-of-fibers : + ((x : A) → C (f x) (x , refl)) ≃ ((y : B) (z : fiber f y) → C y z) + pr1 inv-equiv-dependent-universal-property-family-of-fibers = + extend-lift-family-of-elements-fiber + pr2 inv-equiv-dependent-universal-property-family-of-fibers = + is-equiv-extend-lift-family-of-elements-fiber + + dependent-universal-property-family-of-fibers-fiber : + dependent-universal-property-family-of-fibers + ( fiber f) + ( lift-family-of-elements-fiber f) + dependent-universal-property-family-of-fibers-fiber C = + is-equiv-is-invertible + ( extend-lift-family-of-elements-fiber C) + ( is-section-extend-lift-family-of-elements-fiber C) + ( is-retraction-extend-lift-family-of-elements-fiber C) + + equiv-dependent-universal-property-family-of-fibers : + {l3 : Level} (C : (y : B) (z : fiber f y) → UU l3) → + ((y : B) (z : fiber f y) → C y z) ≃ + ((x : A) → C (f x) (x , refl)) + pr1 (equiv-dependent-universal-property-family-of-fibers C) = + ev-lift-family-of-elements-fiber C + pr2 (equiv-dependent-universal-property-family-of-fibers C) = + dependent-universal-property-family-of-fibers-fiber C +``` +### The family of fibers of a map satisfies the dependent universal property of the family of fibers of a map + +```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) - (G : B → UU l4) (γ : (a : A) → G (f a)) + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - uniqueness-fiberwise-map-universal-property-family-of-fibers : - is-contr (section-preserving-fiberwise-map-fiber F δ G γ) - uniqueness-fiberwise-map-universal-property-family-of-fibers = - is-contr-equiv - ( fiber (ev-lift-family-of-elements f F δ) γ) - ( equiv-tot - ( λ h → equiv-eq-htpy)) - ( is-contr-map-is-equiv (u G) γ) + universal-property-family-of-fibers-fiber : + universal-property-family-of-fibers + ( fiber f) + ( lift-family-of-elements-fiber f) + universal-property-family-of-fibers-fiber C = + dependent-universal-property-family-of-fibers-fiber f (λ y _ → C y) + + equiv-universal-property-family-of-fibers : + {l3 : Level} (C : B → UU l3) → + ((y : B) → fiber f y → C y) ≃ lift-family-of-elements f C + equiv-universal-property-family-of-fibers C = + equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) +``` + +### The inverse equivalence of the universal property of the family of fibers of a map - section-preserving-fiberwise-map-universal-property-family-of-fibers : - section-preserving-fiberwise-map-fiber F δ G γ - section-preserving-fiberwise-map-universal-property-family-of-fibers = - ( center uniqueness-fiberwise-map-universal-property-family-of-fibers) +The inverse of the equivalence `equiv-universal-property-family-of-fibers` has a +reasonably nice definition, so we also record it here. + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (C : B → UU l3) + where + + inv-equiv-universal-property-family-of-fibers : + (lift-family-of-elements f C) ≃ ((y : B) → fiber f y → C y) + inv-equiv-universal-property-family-of-fibers = + inv-equiv-dependent-universal-property-family-of-fibers f (λ y _ → C y) +``` + +### If a type family equipped with a lift of a map satisfies the universal property of the family of fibers, then it satisfies a unique extension property + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {f : A → B} + {F : B → UU l3} {δ : (a : A) → F (f a)} + (u : universal-property-family-of-fibers F δ) + (G : B → UU l4) (γ : (a : A) → G (f a)) + where + + abstract + uniqueness-extension-universal-property-family-of-fibers : + is-contr + ( extension-double-lift-family-of-elements δ (λ y (_ : F y) → G y) γ) + uniqueness-extension-universal-property-family-of-fibers = + is-contr-equiv + ( fiber (ev-double-lift-family-of-elements δ) γ) + ( equiv-tot (λ h → equiv-eq-htpy)) + ( is-contr-map-is-equiv (u G) γ) + + abstract + extension-universal-property-family-of-fibers : + extension-double-lift-family-of-elements δ (λ y (_ : F y) → G y) γ + extension-universal-property-family-of-fibers = + center uniqueness-extension-universal-property-family-of-fibers fiberwise-map-universal-property-family-of-fibers : (b : B) → F b → G b fiberwise-map-universal-property-family-of-fibers = - fiberwise-map-section-preserving-fiberwise-map-fiber - section-preserving-fiberwise-map-universal-property-family-of-fibers + family-of-elements-extension-double-lift-family-of-elements + extension-universal-property-family-of-fibers + + is-extension-fiberwise-map-universal-property-family-of-fibers : + is-extension-double-lift-family-of-elements δ + ( λ y _ → G y) + ( γ) + ( fiberwise-map-universal-property-family-of-fibers) + is-extension-fiberwise-map-universal-property-family-of-fibers = + is-extension-extension-double-lift-family-of-elements + extension-universal-property-family-of-fibers +``` - preserves-section-fiberwise-map-universal-property-family-of-fibers : - (ev-lift-family-of-elements f F δ fiberwise-map-universal-property-family-of-fibers) ~ γ - preserves-section-fiberwise-map-universal-property-family-of-fibers = - preserves-section-section-preserving-fiberwise-map-fiber - section-preserving-fiberwise-map-universal-property-family-of-fibers +### Fibers are uniquely unique +```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) (F : B → UU l3) - (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers f F δ) + (δ : (a : A) → F (f a)) (u : universal-property-family-of-fibers F δ) (G : B → UU l4) (γ : (a : A) → G (f a)) - (u' : universal-property-family-of-fibers f G γ) + (v : universal-property-family-of-fibers G γ) where - dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : - ( dependent-comp-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-family-of-fibers - f G γ u' F δ) - ( section-preserving-fiberwise-map-universal-property-family-of-fibers - ( f) - ( F) - ( δ) - ( u) - ( G) - ( γ))) = - ( id-section-preserving-fiberwise-map-fiber) - dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = + is-retraction-extension-universal-property-family-of-fibers : + comp-extension-double-lift-family-of-elements + ( extension-universal-property-family-of-fibers v F δ) + ( extension-universal-property-family-of-fibers u G γ) = + id-extension-double-lift-family-of-elements δ + is-retraction-extension-universal-property-family-of-fibers = eq-is-contr - ( uniqueness-fiberwise-map-universal-property-family-of-fibers - f F δ u F δ) - - dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : - ( dependent-comp-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-family-of-fibers - f F δ u G γ)) - ( section-preserving-fiberwise-map-universal-property-family-of-fibers - ( f) - ( G) - ( γ) - ( u') - ( F) - ( δ)) = - ( id-section-preserving-fiberwise-map-fiber) - dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers = + ( uniqueness-extension-universal-property-family-of-fibers u F δ) + + is-section-extension-universal-property-family-of-fibers : + comp-extension-double-lift-family-of-elements + ( extension-universal-property-family-of-fibers u G γ) + ( extension-universal-property-family-of-fibers v F δ) = + id-extension-double-lift-family-of-elements γ + is-section-extension-universal-property-family-of-fibers = eq-is-contr - ( uniqueness-fiberwise-map-universal-property-family-of-fibers - f G γ u' G γ) + ( uniqueness-extension-universal-property-family-of-fibers v G γ) - is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + is-retraction-fiberwise-map-universal-property-family-of-fibers : (b : B) → - ( ( fiberwise-map-universal-property-family-of-fibers f G γ u' F δ b) ∘ - ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ b)) ~ - ( id) - is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers - b = + is-retraction + ( fiberwise-map-universal-property-family-of-fibers u G γ b) + ( fiberwise-map-universal-property-family-of-fibers v F δ b) + is-retraction-fiberwise-map-universal-property-family-of-fibers b = htpy-eq ( htpy-eq ( ap ( pr1) - ( dependent-comp-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers)) + ( is-retraction-extension-universal-property-family-of-fibers)) ( b)) - is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : + is-section-fiberwise-map-universal-property-family-of-fibers : (b : B) → - ( ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ b) ∘ - ( fiberwise-map-universal-property-family-of-fibers f G γ u' F δ b)) ~ - ( id) - is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers - b = + is-section + ( fiberwise-map-universal-property-family-of-fibers u G γ b) + ( fiberwise-map-universal-property-family-of-fibers v F δ b) + is-section-fiberwise-map-universal-property-family-of-fibers b = htpy-eq ( htpy-eq ( ap ( pr1) - ( dependent-comp-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers)) + ( is-section-extension-universal-property-family-of-fibers)) ( b)) - is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers : - is-fiberwise-equiv - ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ) - is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers - b = + is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers : + is-fiberwise-equiv (fiberwise-map-universal-property-family-of-fibers u G γ) + is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers b = is-equiv-is-invertible - ( fiberwise-map-section-preserving-fiberwise-map-fiber - ( section-preserving-fiberwise-map-universal-property-family-of-fibers - ( f) - ( G) - ( γ) - ( u') - ( F) - ( δ)) - ( b)) - ( is-fiberwise-section-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers - ( b)) - ( is-fiberwise-retraction-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers + ( family-of-elements-extension-double-lift-family-of-elements + ( extension-universal-property-family-of-fibers v F δ) ( b)) + ( is-section-fiberwise-map-universal-property-family-of-fibers b) + ( is-retraction-fiberwise-map-universal-property-family-of-fibers b) - uniquely-unique-fiberwise-map-universal-property-family-of-fibers : + uniquely-unique-family-of-fibers : is-contr - ( Σ (fiberwise-equiv F G) - ( λ h → (ev-lift-family-of-elements f F δ (map-fiberwise-equiv h)) ~ γ)) - uniquely-unique-fiberwise-map-universal-property-family-of-fibers = + ( Σ ( fiberwise-equiv F G) + ( λ h → + ev-double-lift-family-of-elements δ (map-fiberwise-equiv h) ~ γ)) + uniquely-unique-family-of-fibers = is-torsorial-Eq-subtype - ( uniqueness-fiberwise-map-universal-property-family-of-fibers - f F δ u G γ) + ( uniqueness-extension-universal-property-family-of-fibers u G γ) ( is-property-is-fiberwise-equiv) - ( fiberwise-map-universal-property-family-of-fibers f F δ u G γ) - ( preserves-section-fiberwise-map-universal-property-family-of-fibers - f F δ u G γ) - ( is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers-universal-property-family-of-fibers) - - section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : - Σ (fiberwise-equiv F G) - ( λ h → (ev-lift-family-of-elements f F δ (map-fiberwise-equiv h)) ~ γ) - section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = - center uniquely-unique-fiberwise-map-universal-property-family-of-fibers - - fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : + ( fiberwise-map-universal-property-family-of-fibers u G γ) + ( is-extension-fiberwise-map-universal-property-family-of-fibers u G γ) + ( is-fiberwise-equiv-fiberwise-map-universal-property-family-of-fibers) + + extension-by-fiberwise-equiv-universal-property-family-of-fibers : + Σ ( fiberwise-equiv F G) + ( λ h → ev-double-lift-family-of-elements δ (map-fiberwise-equiv h) ~ γ) + extension-by-fiberwise-equiv-universal-property-family-of-fibers = + center uniquely-unique-family-of-fibers + + fiberwise-equiv-universal-property-of-fibers : fiberwise-equiv F G - fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = - pr1 - ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers) - - preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers : - (ev-lift-family-of-elements - ( f) - ( F) - ( δ) + fiberwise-equiv-universal-property-of-fibers = + pr1 extension-by-fiberwise-equiv-universal-property-family-of-fibers + + is-extension-fiberwise-equiv-universal-property-of-fibers : + is-extension-double-lift-family-of-elements δ + ( λ y _ → G y) + ( γ) ( map-fiberwise-equiv - ( fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers))) ~ - ( γ) - preserves-section-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers = - pr2 - ( section-preserving-fiberwise-equiv-unique-fiberwise-map-universal-property-family-of-fibers) + ( fiberwise-equiv-universal-property-of-fibers)) + is-extension-fiberwise-equiv-universal-property-of-fibers = + pr2 extension-by-fiberwise-equiv-universal-property-family-of-fibers +``` + +### A type family `C` over `B` satisfies the universal property of the family of fibers of a map `f : A → B` if and only if the diagonal map `C b → (fiber f b → C b)` is an equivalence for every `b : B` + +This condition simplifies, for example, the proof that connected maps satisfy a +dependent universal property. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A → B} + where + + is-equiv-precomp-Π-fiber-condition : + {l3 : Level} {C : B → UU l3} → + ((b : B) → is-equiv (λ (c : C b) → const (fiber f b) (C b) c)) → + is-equiv (precomp-Π f C) + is-equiv-precomp-Π-fiber-condition {l3} {C} H = + is-equiv-comp + ( ev-lift-family-of-elements-fiber f (λ b _ → C b)) + ( map-Π (λ b u _ → u)) + ( is-equiv-map-Π-is-fiberwise-equiv H) + ( universal-property-family-of-fibers-fiber f C) ``` diff --git a/src/foundation/universal-property-image.lagda.md b/src/foundation/universal-property-image.lagda.md index 184d5c1539..48114b75b7 100644 --- a/src/foundation/universal-property-image.lagda.md +++ b/src/foundation/universal-property-image.lagda.md @@ -15,6 +15,7 @@ open import foundation.propositional-truncations open import foundation.slice open import foundation.surjective-maps open import foundation.transport-along-identifications +open import foundation.universal-property-family-of-fibers-of-maps open import foundation.universe-levels open import foundation-core.contractible-maps @@ -31,7 +32,6 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.sections open import foundation-core.subtypes -open import foundation-core.universal-property-family-of-fibers-of-maps open import foundation-core.whiskering-homotopies ``` diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index b58171ca83..6ace40fa5d 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,10 +1,10 @@ -| Concept | File | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| The universal property of the family of fibers of maps (foundation-core) | [`foundation-core.universal-property-family-of-fibers-of-maps`](foundation-core.universal-property-family-of-fibers-of-maps.md) | -| The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | +| Concept | File | +| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| The universal property of the family of fibers of maps (foundation-core) | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | +| The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | From 3340bda9e2815a3f87cacc7c91517616bfd5a16d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 4 Dec 2023 12:33:00 -0500 Subject: [PATCH 24/29] refactoring double lifts and extensions of double lifts --- src/foundation.lagda.md | 2 - ...property-family-of-fibers-of-maps.lagda.md | 10 +- src/orthogonal-factorization-systems.lagda.md | 4 + ...double-lifts-families-of-elements.lagda.md | 93 ++++++ ...double-lifts-families-of-elements.lagda.md | 291 ++++++++++++++++++ ...sions-lifts-families-of-elements.lagda.md} | 233 +------------- .../lifts-families-of-elements.lagda.md | 65 +--- 7 files changed, 407 insertions(+), 291 deletions(-) create mode 100644 src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md create mode 100644 src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md rename src/{foundation/extensions-families-of-elements.lagda.md => orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md} (51%) rename src/{foundation => orthogonal-factorization-systems}/lifts-families-of-elements.lagda.md (54%) diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 246a8d92f1..58cd2a8bab 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -131,7 +131,6 @@ open import foundation.equivalences-towers public open import foundation.exclusive-disjunction public open import foundation.existential-quantification public open import foundation.exponents-set-quotients public -open import foundation.extensions-families-of-elements public open import foundation.faithful-maps public open import foundation.families-of-equivalences public open import foundation.families-of-maps public @@ -195,7 +194,6 @@ open import foundation.large-locale-of-subtypes public open import foundation.law-of-excluded-middle public open import foundation.lawveres-fixed-point-theorem public open import foundation.lesser-limited-principle-of-omniscience public -open import foundation.lifts-families-of-elements public open import foundation.limited-principle-of-omniscience public open import foundation.locally-small-types public open import foundation.logical-equivalences public diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md index 4e58743a6c..5724acdb8e 100644 --- a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -9,10 +9,8 @@ module foundation.universal-property-family-of-fibers-of-maps where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.extensions-families-of-elements open import foundation.families-of-equivalences open import foundation.function-extensionality -open import foundation.lifts-families-of-elements open import foundation.subtype-identity-principle open import foundation.universe-levels @@ -29,6 +27,9 @@ open import foundation-core.identity-types open import foundation-core.precomposition-dependent-functions open import foundation-core.retractions open import foundation-core.sections + +open import orthogonal-factorization-systems.extensions-double-lifts-families-of-elements +open import orthogonal-factorization-systems.lifts-families-of-elements ``` @@ -55,8 +56,9 @@ initial type family equipped with such a section. Explicitly, the is an [equivalence](foundation-core.equivalences.md) for any type family `X : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, -the type of [lifts](foundation.lifts-families-of-elements.md) of `f` to `P` is -precisely the type of sections +the type of +[lifts](orthogonal-factorization-systems.lifts-families-of-elements.md) of `f` +to `P` is precisely the type of sections ```text (a : A) → X (f a). diff --git a/src/orthogonal-factorization-systems.lagda.md b/src/orthogonal-factorization-systems.lagda.md index 79e056afb2..178dac2fd7 100644 --- a/src/orthogonal-factorization-systems.lagda.md +++ b/src/orthogonal-factorization-systems.lagda.md @@ -12,6 +12,9 @@ module orthogonal-factorization-systems where open import orthogonal-factorization-systems.cd-structures public open import orthogonal-factorization-systems.cellular-maps public open import orthogonal-factorization-systems.closed-modalities public +open import orthogonal-factorization-systems.double-lifts-families-of-elements 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.factorization-operations public open import orthogonal-factorization-systems.factorization-operations-function-classes public @@ -27,6 +30,7 @@ open import orthogonal-factorization-systems.higher-modalities public open import orthogonal-factorization-systems.identity-modality public open import orthogonal-factorization-systems.lifting-operations public open import orthogonal-factorization-systems.lifting-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.local-families public open import orthogonal-factorization-systems.local-maps 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 new file mode 100644 index 0000000000..032f76b87d --- /dev/null +++ b/src/orthogonal-factorization-systems/double-lifts-families-of-elements.lagda.md @@ -0,0 +1,93 @@ +# Double lifts of families of elements + +```agda +module orthogonal-factorization-systems.double-lifts-families-of-elements where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import orthogonal-factorization-systems.lifts-families-of-elements +``` + +
+ +## Idea + +Consider a family of elements `b : (i : I) → B i (a i)` over a family of +elements `a : (i : I) → A i` and consider a family of types + +```text + C : (i : I) (x : A i) → B i x → 𝒰. +``` + +Recall that `b` is also a +[dependent lift](orthogonal-factorization-systems.lifts-families-of-elements.md) +of the family of elements `a`. The type of +{{#concept "dependent double lifts" Disambiguation="family of elements"}} of `b` +and `a` to `C` is defined to be the type + +```text + (i : I) → C i (a i) (b i). +``` + +Note that this is the type of double lifts in the sense that it simultaneously +lifts `a` and `b` to the type family `C`. + +The definition of (ordinary) double lifts is somewhat simpler: Given a lift `b` +of `a : I → A` to a type family `B : A → 𝒰`, a +{{#concept "double lift" Disambiguation="families of elements"}} of `a` and `b` +to a type family + +```text + C : (x : A) → B x → 𝒰 +``` + +is a family of elements + +```text + (i : I) → C (a i) (b i). +``` + +Note that this is the type of double lifts in the sense that it simultaneously +lifts `a` and `b` to the type family `C`. + +The type of double lifts plays a role in the +[universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md). + +## Definitions + +### Dependent double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + (C : (i : I) (x : A i) → B i x → UU l4) + where + + dependent-double-lift-family-of-elements : UU (l1 ⊔ l4) + dependent-double-lift-family-of-elements = + dependent-lift-family-of-elements b (λ i → C i (a i)) +``` + +### Double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) (C : (x : A) → B x → UU l4) + where + + double-lift-family-of-elements : UU (l1 ⊔ l4) + double-lift-family-of-elements = + dependent-lift-family-of-elements b (λ i → C (a i)) +``` + +## 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) +- [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 new file mode 100644 index 0000000000..5a617ec37c --- /dev/null +++ b/src/orthogonal-factorization-systems/extensions-double-lifts-families-of-elements.lagda.md @@ -0,0 +1,291 @@ +# Extensions of double lifts of families of elements + +```agda +module + orthogonal-factorization-systems.extensions-double-lifts-families-of-elements + where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import foundation-core.function-types +open import foundation-core.homotopies +open import foundation-core.identity-types + +open import orthogonal-factorization-systems.double-lifts-families-of-elements +open import orthogonal-factorization-systems.lifts-families-of-elements +``` + +
+ +## Idea + +Consider a +[dependent lift](orthogonal-factorization-systems.lifts-families-of-elements.md) +`b : (i : I) → B i (a i)` of a family of elements `a : I → A`, a type family `C` +over `B` and a +[double lift](orthogonal-factorization-systems.double-lifts-families-of-elements.md) + +```text + c : (i : I) → C i (a i) (b i) +``` + +of the lift `b` of `a`. An +{{#concept "extension" Disambiguation="dependent double family of elements"}} of +`b` to `A` consists of a family of elements +`f : (i : I) (x : A i) (y : B i x) → C i x y` equipped with a +[homotopy](foundation-core.homotopies.md) witnessing that the +[identification](foundation-core.identity-types.md) `f i (a i) (b i) = c i` +holds for every `i : I`. + +Extensions of dependent double lifts play a role in the +[universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md) + +## Definitions + +### Evaluating families of elements at dependent double lifts of families of elements + +Any family of elements `b : (i : I) → B i (a i)` dependent over a family of +elements `a : (i : I) → A i` induces an evaluation map + +```text + ((i : I) (x : A i) (y : B i x) → C i x y) → ((i : I) → C i (a i) (b i)) +``` + +given by `c ↦ (λ i → c i (a i) (b i))`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + {C : (i : I) (x : A i) → B i x → UU l4} + where + + ev-dependent-double-lift-family-of-elements : + ((i : I) (x : A i) (y : B i x) → C i x y) → + dependent-double-lift-family-of-elements b C + ev-dependent-double-lift-family-of-elements h i = h i (a i) (b i) +``` + +### Evaluating families of elements at double lifts of families of elements + +Any family of elements `b : (i : I) → B (a i)` dependent over a family of +elements `a : I → A` induces an evaluation map + +```text + ((x : A) (y : B x) → C x y) → ((i : I) → C (a i) (b i)) +``` + +given by `c ↦ (λ i → c (a i) (b i))`. + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + {C : (x : A) → B x → UU l4} + where + + ev-double-lift-family-of-elements : + ((x : A) (y : B x) → C x y) → double-lift-family-of-elements b C + ev-double-lift-family-of-elements h i = h (a i) (b i) +``` + +### Dependent extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + (C : (i : I) (x : A i) (y : B i x) → UU l4) + (c : dependent-double-lift-family-of-elements b C) + where + + is-extension-dependent-double-lift-family-of-elements : + (f : (i : I) (x : A i) (y : B i x) → C i x y) → UU (l1 ⊔ l4) + is-extension-dependent-double-lift-family-of-elements f = + ev-dependent-double-lift-family-of-elements b f ~ c + + extension-dependent-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + extension-dependent-double-lift-family-of-elements = + Σ ( (i : I) (x : A i) (y : B i x) → C i x y) + ( is-extension-dependent-double-lift-family-of-elements) + +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} + {C : (i : I) (x : A i) (y : B i x) → UU l4} + {c : dependent-double-lift-family-of-elements b C} + (f : extension-dependent-double-lift-family-of-elements b C c) + where + + family-of-elements-extension-dependent-double-lift-family-of-elements : + (i : I) (x : A i) (y : B i x) → C i x y + family-of-elements-extension-dependent-double-lift-family-of-elements = + pr1 f + + is-extension-extension-dependent-double-lift-family-of-elements : + is-extension-dependent-double-lift-family-of-elements b C c + ( family-of-elements-extension-dependent-double-lift-family-of-elements) + is-extension-extension-dependent-double-lift-family-of-elements = pr2 f +``` + +### Extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + (C : (x : A) (y : B x) → UU l4) (c : double-lift-family-of-elements b C) + where + + is-extension-double-lift-family-of-elements : + (f : (x : A) (y : B x) → C x y) → UU (l1 ⊔ l4) + is-extension-double-lift-family-of-elements f = + ev-double-lift-family-of-elements b f ~ c + + extension-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + extension-double-lift-family-of-elements = + Σ ((x : A) (y : B x) → C x y) is-extension-double-lift-family-of-elements + +module _ + {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} {b : lift-family-of-elements a B} + {C : (x : A) (y : B x) → UU l4} {c : double-lift-family-of-elements b C} + (f : extension-double-lift-family-of-elements b C c) + where + + family-of-elements-extension-double-lift-family-of-elements : + (x : A) (y : B x) → C x y + family-of-elements-extension-double-lift-family-of-elements = pr1 f + + is-extension-extension-double-lift-family-of-elements : + is-extension-double-lift-family-of-elements b C c + ( family-of-elements-extension-double-lift-family-of-elements) + is-extension-extension-double-lift-family-of-elements = pr2 f +``` + +### Identity extensions of dependent double lifts of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) + where + + id-extension-dependent-double-lift-family-of-elements : + extension-dependent-double-lift-family-of-elements b (λ i x y → B i x) b + pr1 id-extension-dependent-double-lift-family-of-elements i x = id + pr2 id-extension-dependent-double-lift-family-of-elements = refl-htpy +``` + +### Identity extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} (b : lift-family-of-elements a B) + where + + id-extension-double-lift-family-of-elements : + extension-double-lift-family-of-elements b (λ x (y : B x) → B x) b + pr1 id-extension-double-lift-family-of-elements x = id + pr2 id-extension-double-lift-family-of-elements = refl-htpy +``` + +### Composition of extensions of dependent double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} {I : UU l1} + {A : I → UU l2} {a : (i : I) → A i} + {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} + {C : (i : I) → A i → UU l4} {c : dependent-lift-family-of-elements a C} + {D : (i : I) → A i → UU l5} {d : dependent-lift-family-of-elements a D} + (g : + extension-dependent-double-lift-family-of-elements c + ( λ i x (_ : C i x) → D i x) + ( d)) + (f : + extension-dependent-double-lift-family-of-elements b + ( λ i x (_ : B i x) → C i x) + ( c)) + where + + family-of-elements-comp-extension-dependent-double-lift-family-of-elements : + (i : I) (x : A i) → B i x → D i x + family-of-elements-comp-extension-dependent-double-lift-family-of-elements + i x = + family-of-elements-extension-dependent-double-lift-family-of-elements + g i x ∘ + family-of-elements-extension-dependent-double-lift-family-of-elements + f i x + + is-extension-comp-extension-dependent-double-lift-family-of-elements : + is-extension-dependent-double-lift-family-of-elements b + ( λ i x _ → D i x) + ( d) + ( family-of-elements-comp-extension-dependent-double-lift-family-of-elements) + is-extension-comp-extension-dependent-double-lift-family-of-elements i = + ( ap + ( family-of-elements-extension-dependent-double-lift-family-of-elements + g i (a i)) + ( is-extension-extension-dependent-double-lift-family-of-elements f i)) ∙ + ( is-extension-extension-dependent-double-lift-family-of-elements g i) + + comp-extension-dependent-double-lift-family-of-elements : + extension-dependent-double-lift-family-of-elements b + ( λ i x (_ : B i x) → D i x) + ( d) + pr1 comp-extension-dependent-double-lift-family-of-elements = + family-of-elements-comp-extension-dependent-double-lift-family-of-elements + pr2 comp-extension-dependent-double-lift-family-of-elements = + is-extension-comp-extension-dependent-double-lift-family-of-elements +``` + +### Composition of extensions of double lifts of families of elements + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} {I : UU l1} {A : UU l2} {a : I → A} + {B : A → UU l3} {b : lift-family-of-elements a B} + {C : A → UU l4} {c : lift-family-of-elements a C} + {D : A → UU l5} {d : lift-family-of-elements a D} + (g : extension-double-lift-family-of-elements c (λ x (_ : C x) → D x) d) + (f : extension-double-lift-family-of-elements b (λ x (_ : B x) → C x) c) + where + + family-of-elements-comp-extension-double-lift-family-of-elements : + (x : A) → B x → D x + family-of-elements-comp-extension-double-lift-family-of-elements x = + family-of-elements-extension-double-lift-family-of-elements g x ∘ + family-of-elements-extension-double-lift-family-of-elements f x + + is-extension-comp-extension-double-lift-family-of-elements : + is-extension-double-lift-family-of-elements b + ( λ x _ → D x) + ( d) + ( family-of-elements-comp-extension-double-lift-family-of-elements) + is-extension-comp-extension-double-lift-family-of-elements i = + ( ap + ( family-of-elements-extension-double-lift-family-of-elements g (a i)) + ( is-extension-extension-double-lift-family-of-elements f i)) ∙ + ( is-extension-extension-double-lift-family-of-elements g i) + + comp-extension-double-lift-family-of-elements : + extension-double-lift-family-of-elements b (λ x (_ : B x) → D x) d + pr1 comp-extension-double-lift-family-of-elements = + family-of-elements-comp-extension-double-lift-family-of-elements + pr2 comp-extension-double-lift-family-of-elements = + is-extension-comp-extension-double-lift-family-of-elements +``` + +## 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) +- [The universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md) diff --git a/src/foundation/extensions-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md similarity index 51% rename from src/foundation/extensions-families-of-elements.lagda.md rename to src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md index 7e6df21605..4e2fb63574 100644 --- a/src/foundation/extensions-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/extensions-lifts-families-of-elements.lagda.md @@ -1,7 +1,9 @@ # Extensions of families of elements ```agda -module foundation.extensions-families-of-elements where +module + orthogonal-factorization-systems.extensions-lifts-families-of-elements + where ```
Imports @@ -9,12 +11,13 @@ module foundation.extensions-families-of-elements where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.lifts-families-of-elements open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types + +open import orthogonal-factorization-systems.lifts-families-of-elements ```
@@ -22,7 +25,7 @@ open import foundation-core.identity-types ## Idea Consider a family of elements `a : I → A`, a type family `B` over `A` and a -[lift](foundation.lifts-families-of-elements.md) +[lift](orthogonal-factorization-systems.lifts-families-of-elements.md) ```text b : (i : I) → B (a i) @@ -81,40 +84,6 @@ module _ ev-lift-family-of-elements b i = b (a i) ``` -### Evaluating families of elements at double lifts of families of elements - -Any family of elements `b : (i : I) → B i (a i)` dependent over a family of -elements `a : (i : I) → A i` induces an evaluation map - -```text - ((i : I) (x : A i) (y : B i x) → C i x y) → ((i : I) → C i (a i) (b i)) -``` - -given by `c ↦ (λ i → c i (a i) (b i))`. - -```agda -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) - {C : (i : I) (x : A i) → B i x → UU l4} - where - - ev-dependent-double-lift-family-of-elements : - ((i : I) (x : A i) (y : B i x) → C i x y) → - dependent-double-lift-family-of-elements b C - ev-dependent-double-lift-family-of-elements h i = h i (a i) (b i) - -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} (b : lift-family-of-elements a B) - {C : (x : A) → B x → UU l4} - where - - ev-double-lift-family-of-elements : - ((x : A) (y : B x) → C x y) → double-lift-family-of-elements b C - ev-double-lift-family-of-elements h i = h (a i) (b i) -``` - ### Dependent extensions of dependent lifts of families of elements ```agda @@ -178,80 +147,6 @@ module _ is-extension-extension-lift-family-of-elements = pr2 f ``` -### Dependent extensions of double lifts of families of elements - -```agda -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) - (C : (i : I) (x : A i) (y : B i x) → UU l4) - (c : dependent-double-lift-family-of-elements b C) - where - - is-extension-dependent-double-lift-family-of-elements : - (f : (i : I) (x : A i) (y : B i x) → C i x y) → UU (l1 ⊔ l4) - is-extension-dependent-double-lift-family-of-elements f = - ev-dependent-double-lift-family-of-elements b f ~ c - - extension-dependent-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - extension-dependent-double-lift-family-of-elements = - Σ ( (i : I) (x : A i) (y : B i x) → C i x y) - ( is-extension-dependent-double-lift-family-of-elements) - -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} - {C : (i : I) (x : A i) (y : B i x) → UU l4} - {c : dependent-double-lift-family-of-elements b C} - (f : extension-dependent-double-lift-family-of-elements b C c) - where - - family-of-elements-extension-dependent-double-lift-family-of-elements : - (i : I) (x : A i) (y : B i x) → C i x y - family-of-elements-extension-dependent-double-lift-family-of-elements = - pr1 f - - is-extension-extension-dependent-double-lift-family-of-elements : - is-extension-dependent-double-lift-family-of-elements b C c - ( family-of-elements-extension-dependent-double-lift-family-of-elements) - is-extension-extension-dependent-double-lift-family-of-elements = pr2 f -``` - -### Extensions of double lifts of families of elements - -```agda -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} (b : lift-family-of-elements a B) - (C : (x : A) (y : B x) → UU l4) (c : double-lift-family-of-elements b C) - where - - is-extension-double-lift-family-of-elements : - (f : (x : A) (y : B x) → C x y) → UU (l1 ⊔ l4) - is-extension-double-lift-family-of-elements f = - ev-double-lift-family-of-elements b f ~ c - - extension-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - extension-double-lift-family-of-elements = - Σ ((x : A) (y : B x) → C x y) is-extension-double-lift-family-of-elements - -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} {b : lift-family-of-elements a B} - {C : (x : A) (y : B x) → UU l4} {c : double-lift-family-of-elements b C} - (f : extension-double-lift-family-of-elements b C c) - where - - family-of-elements-extension-double-lift-family-of-elements : - (x : A) (y : B x) → C x y - family-of-elements-extension-double-lift-family-of-elements = pr1 f - - is-extension-extension-double-lift-family-of-elements : - is-extension-double-lift-family-of-elements b C c - ( family-of-elements-extension-double-lift-family-of-elements) - is-extension-extension-double-lift-family-of-elements = pr2 f -``` - ### Identity extensions of dependent lifts of families of elements ```agda @@ -278,34 +173,6 @@ module _ pr2 id-extension-lift-family-of-elements = refl-htpy ``` -### Identity extensions of dependent double lifts of families of elements - -```agda -module _ - {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) - where - - id-extension-dependent-double-lift-family-of-elements : - extension-dependent-double-lift-family-of-elements b (λ i x y → B i x) b - pr1 id-extension-dependent-double-lift-family-of-elements i x = id - pr2 id-extension-dependent-double-lift-family-of-elements = refl-htpy -``` - -### Identity extensions of double lifts of families of elements - -```agda -module _ - {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} (b : lift-family-of-elements a B) - where - - id-extension-double-lift-family-of-elements : - extension-double-lift-family-of-elements b (λ x (y : B x) → B x) b - pr1 id-extension-double-lift-family-of-elements x = id - pr2 id-extension-double-lift-family-of-elements = refl-htpy -``` - ### Composition of extensions of dependent lifts of families of elements Consider three type families `A`, `B`, and `C` over a type `I` equipped with @@ -438,89 +305,7 @@ module _ is-extension-comp-extension-lift-family-of-elements ``` -### Composition of extensions of dependent double lifts of families of elements - -```agda -module _ - {l1 l2 l3 l4 l5 : Level} {I : UU l1} - {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} {b : dependent-lift-family-of-elements a B} - {C : (i : I) → A i → UU l4} {c : dependent-lift-family-of-elements a C} - {D : (i : I) → A i → UU l5} {d : dependent-lift-family-of-elements a D} - (g : - extension-dependent-double-lift-family-of-elements c - ( λ i x (_ : C i x) → D i x) - ( d)) - (f : - extension-dependent-double-lift-family-of-elements b - ( λ i x (_ : B i x) → C i x) - ( c)) - where +## See also - family-of-elements-comp-extension-dependent-double-lift-family-of-elements : - (i : I) (x : A i) → B i x → D i x - family-of-elements-comp-extension-dependent-double-lift-family-of-elements - i x = - family-of-elements-extension-dependent-double-lift-family-of-elements - g i x ∘ - family-of-elements-extension-dependent-double-lift-family-of-elements - f i x - - is-extension-comp-extension-dependent-double-lift-family-of-elements : - is-extension-dependent-double-lift-family-of-elements b - ( λ i x _ → D i x) - ( d) - ( family-of-elements-comp-extension-dependent-double-lift-family-of-elements) - is-extension-comp-extension-dependent-double-lift-family-of-elements i = - ( ap - ( family-of-elements-extension-dependent-double-lift-family-of-elements - g i (a i)) - ( is-extension-extension-dependent-double-lift-family-of-elements f i)) ∙ - ( is-extension-extension-dependent-double-lift-family-of-elements g i) - - comp-extension-dependent-double-lift-family-of-elements : - extension-dependent-double-lift-family-of-elements b - ( λ i x (_ : B i x) → D i x) - ( d) - pr1 comp-extension-dependent-double-lift-family-of-elements = - family-of-elements-comp-extension-dependent-double-lift-family-of-elements - pr2 comp-extension-dependent-double-lift-family-of-elements = - is-extension-comp-extension-dependent-double-lift-family-of-elements -``` - -### Composition of extensions of double lifts of families of elements - -```agda -module _ - {l1 l2 l3 l4 l5 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} {b : lift-family-of-elements a B} - {C : A → UU l4} {c : lift-family-of-elements a C} - {D : A → UU l5} {d : lift-family-of-elements a D} - (g : extension-double-lift-family-of-elements c (λ x (_ : C x) → D x) d) - (f : extension-double-lift-family-of-elements b (λ x (_ : B x) → C x) c) - where - - family-of-elements-comp-extension-double-lift-family-of-elements : - (x : A) → B x → D x - family-of-elements-comp-extension-double-lift-family-of-elements x = - family-of-elements-extension-double-lift-family-of-elements g x ∘ - family-of-elements-extension-double-lift-family-of-elements f x - - is-extension-comp-extension-double-lift-family-of-elements : - is-extension-double-lift-family-of-elements b - ( λ x _ → D x) - ( d) - ( family-of-elements-comp-extension-double-lift-family-of-elements) - is-extension-comp-extension-double-lift-family-of-elements i = - ( ap - ( family-of-elements-extension-double-lift-family-of-elements g (a i)) - ( is-extension-extension-double-lift-family-of-elements f i)) ∙ - ( is-extension-extension-double-lift-family-of-elements g i) - - comp-extension-double-lift-family-of-elements : - extension-double-lift-family-of-elements b (λ x (_ : B x) → D x) d - pr1 comp-extension-double-lift-family-of-elements = - family-of-elements-comp-extension-double-lift-family-of-elements - pr2 comp-extension-double-lift-family-of-elements = - is-extension-comp-extension-double-lift-family-of-elements -``` +- [Extensions of double families of elements](orthogonal-factorization-systems.extensions-double-families-of-elements.md) +- [Extensions of maps](orthogonal-factorization-systems.extensions-of-maps.md) diff --git a/src/foundation/lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md similarity index 54% rename from src/foundation/lifts-families-of-elements.lagda.md rename to src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md index 12882fd82a..e3a3aa1f13 100644 --- a/src/foundation/lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-families-of-elements.lagda.md @@ -1,7 +1,7 @@ # Lifts of families of elements ```agda -module foundation.lifts-families-of-elements where +module orthogonal-factorization-systems.lifts-families-of-elements where ```
Imports @@ -87,64 +87,7 @@ module _ dependent-lift-binary-family-of-elements a (λ _ → C) ``` -### Dependent double lifts of families of elements +## See also -Given a lift `b` of `a : (i : I) → A i` to a type family -`B : (i : I) → A i → 𝒰`, a -{{#concept "dependent double lift" Disambiguation="families of elements"}} of -`a` and `b` to a type family - -```text - C : (i : I) (x : A i) → B i x → 𝒰 -``` - -is a family of elements - -```text - (i : I) → C i (a i) (b i). -``` - -Note that this is the type of double lifts in the sense that it simultaneously -lifts `a` and `b` to the type family `C`. - -```agda -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {a : (i : I) → A i} - {B : (i : I) → A i → UU l3} (b : dependent-lift-family-of-elements a B) - (C : (i : I) (x : A i) → B i x → UU l4) - where - - dependent-double-lift-family-of-elements : UU (l1 ⊔ l4) - dependent-double-lift-family-of-elements = - dependent-lift-family-of-elements b (λ i → C i (a i)) -``` - -### Double lifts of families of elements - -Given a lift `b` of `a : I → A` to a type family `B : A → 𝒰`, a -{{#concept "double lift" Disambiguation="families of elements"}} of `a` and `b` -to a type family - -```text - C : (x : A) → B x → 𝒰 -``` - -is a family of elements - -```text - (i : I) → C (a i) (b i). -``` - -Note that this is the type of double lifts in the sense that it simultaneously -lifts `a` and `b` to the type family `C`. - -```agda -module _ - {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {a : I → A} - {B : A → UU l3} (b : lift-family-of-elements a B) (C : (x : A) → B x → UU l4) - where - - double-lift-family-of-elements : UU (l1 ⊔ l4) - double-lift-family-of-elements = - dependent-lift-family-of-elements b (λ i → C (a i)) -``` +- [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) From c65f4d787eeffad731f4be5c85767dff16687bf7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 4 Dec 2023 12:45:43 -0500 Subject: [PATCH 25/29] complete refactoring --- .../extensions-lifts-families-of-elements.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4e2fb63574..b91f37e228 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 @@ -307,5 +307,5 @@ module _ ## See also -- [Extensions of double families of elements](orthogonal-factorization-systems.extensions-double-families-of-elements.md) +- [Extensions of double families of elements](orthogonal-factorization-systems.extensions-double-lifts-families-of-elements.md) - [Extensions of maps](orthogonal-factorization-systems.extensions-of-maps.md) From ed218ffeeef83c56ff504354d475bfdd895d28d3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 4 Dec 2023 12:46:16 -0500 Subject: [PATCH 26/29] typo --- .../extensions-lifts-families-of-elements.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b91f37e228..f7998568ba 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 @@ -307,5 +307,5 @@ module _ ## See also -- [Extensions of double families of elements](orthogonal-factorization-systems.extensions-double-lifts-families-of-elements.md) +- [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) From 521f65b9e85d0c1f86698ecb06205482ef3d3d88 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Mon, 4 Dec 2023 13:31:57 -0700 Subject: [PATCH 27/29] typos --- .../universal-property-family-of-fibers-of-maps.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md index 5724acdb8e..18d9ea9e3b 100644 --- a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -55,10 +55,10 @@ initial type family equipped with such a section. Explicitly, the ``` is an [equivalence](foundation-core.equivalences.md) for any type family -`X : B → 𝒰`. Note that for any type family `P` over `B` and any map `f : A → B`, +`X : B → 𝒰`. Note that for any type family `X` over `B` and any map `f : A → B`, the type of [lifts](orthogonal-factorization-systems.lifts-families-of-elements.md) of `f` -to `P` is precisely the type of sections +to `X` is precisely the type of sections ```text (a : A) → X (f a). @@ -82,7 +82,7 @@ described above, while the universal property of the fiber `fiber f b` of a map ### The dependent universal property of the fibers of a map Consider a map `f : A → B` and a type family `F : B → 𝒰` equipped with a lift -`δ : (a : A) → F (f f)` of `f` to `F`. Then there is an evaluation map +`δ : (a : A) → F (f a)` of `f` to `F`. Then there is an evaluation map ```text ((b : B) (z : F b) → X b z) → ((a : A) → X (f a) (δ a)) From 68cd62cb2d6c66033327d0c5eea58c743c994461 Mon Sep 17 00:00:00 2001 From: Raymond Baker <96847663+morphismz@users.noreply.github.com> Date: Mon, 4 Dec 2023 18:13:10 -0700 Subject: [PATCH 28/29] Update tables/fibers-of-maps.md Co-authored-by: Egbert Rijke --- tables/fibers-of-maps.md | 1 - 1 file changed, 1 deletion(-) diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index 6ace40fa5d..32af013d76 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -6,5 +6,4 @@ | Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | | Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | | Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| The universal property of the family of fibers of maps (foundation-core) | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | | The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | From fefd593d1ed4aaf81c53801401c6b5ea0d9bff67 Mon Sep 17 00:00:00 2001 From: Raymond Baker Date: Mon, 4 Dec 2023 18:18:59 -0700 Subject: [PATCH 29/29] pre-commit --- tables/fibers-of-maps.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tables/fibers-of-maps.md b/tables/fibers-of-maps.md index 32af013d76..2d788dd534 100644 --- a/tables/fibers-of-maps.md +++ b/tables/fibers-of-maps.md @@ -1,9 +1,9 @@ -| Concept | File | -| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | -| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | -| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | -| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | -| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | -| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | -| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | -| The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) | +| Concept | File | +| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | +| Fibers of maps (foundation-core) | [`foundation-core.fibers-of-maps`](foundation-core.fibers-of-maps.md) | +| Fibers of maps (foundation) | [`foundation.fibers-of-maps`](foundation.fibers-of-maps.md) | +| Equality in the fibers of a map | [`foundation.equality-fibers-of-maps`](foundation.equality-fibers-of-maps.md) | +| Functoriality of fibers of maps | [`foundation.functoriality-fibers-of-maps`](foundation.functoriality-fibers-of-maps.md) | +| Fibers of pointed maps | [`structured-types.fibers-of-pointed-maps`](structured-types.fibers-of-pointed-maps.md) | +| Fibers of maps of finite types | [`univalent-combinatorics.fibers-of-maps`](univalent-combinatorics.fibers-of-maps.md) | +| The universal property of the family of fibers of maps | [`foundation.universal-property-family-of-fibers-of-maps`](foundation.universal-property-family-of-fibers-of-maps.md) |