This is an archived version pinned as of the submission of my master's thesis. An up-to-date version may be found online.
Families of maps
module foundation.families-of-maps where
Imports
open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.families-of-equivalences 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.propositions open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice
Idea
Given a type A
and type families B C : A → Type
, a family of maps from
B
to C
is an element of the type (x : A) → B x → C x
.
module _ {l1 l2 l3 : Level} {A : UU l1} (B : A → UU l2) (C : A → UU l3) where fam-map : UU (l1 ⊔ l2 ⊔ l3) fam-map = (x : A) → B x → C x
Properties
Families of maps are equivalent to maps of total spaces respecting the first coordinate
module _ {l1 l2 l3 : Level} {A : UU l1} (B : A → UU l2) (C : A → UU l3) where equiv-fam-map-map-tot-space : fam-map B C ≃ Σ (Σ A B → Σ A C) (λ f → pr1 ~ pr1 ∘ f) equiv-fam-map-map-tot-space = equivalence-reasoning fam-map B C ≃ (((x , _) : Σ A B) → C x) by equiv-ind-Σ ≃ (((x , _) : Σ A B) → Σ (Σ A (x =_)) (λ (x' , _) → C x')) by equiv-Π-equiv-family ( λ (x , _) → inv-left-unit-law-Σ-is-contr ( is-torsorial-Id x) ( x , refl)) ≃ (((x , _) : Σ A B) → Σ (Σ A C) (λ (x' , _) → x = x')) by equiv-Π-equiv-family (λ _ → equiv-right-swap-Σ) ≃ Σ (Σ A B → Σ A C) (λ f → pr1 ~ pr1 ∘ f) by distributive-Π-Σ
Families of equivalences are equivalent to equivalences of total spaces respecting the first coordinate
module _ {l1 l2 l3 : Level} {A : UU l1} (B : A → UU l2) (C : A → UU l3) where equiv-fam-equiv-equiv-tot-space : fam-equiv B C ≃ Σ (Σ A B ≃ Σ A C) (λ e → pr1 ~ pr1 ∘ map-equiv e) equiv-fam-equiv-equiv-tot-space = equivalence-reasoning fam-equiv B C ≃ fiberwise-equiv B C by equiv-fiberwise-equiv-fam-equiv B C ≃ Σ ( Σ ( Σ A B → Σ A C) (λ e → pr1 ~ pr1 ∘ e)) ( λ (e , _) → is-equiv e) by equiv-subtype-equiv ( equiv-fam-map-map-tot-space B C) ( λ f → Π-Prop A (is-equiv-Prop ∘ f)) ( λ (e , _) → is-equiv-Prop e) ( λ f → is-equiv-tot-is-fiberwise-equiv , is-fiberwise-equiv-is-equiv-tot) ≃ Σ (Σ A B ≃ Σ A C) (λ e → pr1 ~ pr1 ∘ map-equiv e) by equiv-right-swap-Σ