Diagonal maps of types
module foundation-core.diagonal-maps-of-types where
Imports
open import foundation-core.cartesian-product-types open import foundation-core.dependent-pair-types open import foundation-core.equality-cartesian-product-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps open import foundation-core.functions open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.universe-levels
Idea
The diagonal map δ : A → A × A
of A
is the map that includes A
as the
diagonal into A × A
.
Definition
module _ {l : Level} (A : UU l) where diagonal : A → A × A pr1 (diagonal x) = x pr2 (diagonal x) = x
Properties
The action on paths of a diagonal
ap-diagonal : {l : Level} {A : UU l} {x y : A} (p : x = y) → ap (diagonal A) p = eq-pair p p ap-diagonal refl = refl
If the diagonal of A
is an equivalence, then A
is a proposition
module _ {l : Level} (A : UU l) where abstract is-prop-is-equiv-diagonal : is-equiv (diagonal A) → is-prop A is-prop-is-equiv-diagonal is-equiv-d = is-prop-all-elements-equal ( λ x y → ( inv (ap pr1 (issec-map-inv-is-equiv is-equiv-d (pair x y)))) ∙ ( ap pr2 (issec-map-inv-is-equiv is-equiv-d (pair x y)))) equiv-diagonal-is-prop : is-prop A → A ≃ (A × A) pr1 (equiv-diagonal-is-prop is-prop-A) = diagonal A pr2 (equiv-diagonal-is-prop is-prop-A) = is-equiv-has-inverse ( pr1) ( λ pair-a → eq-pair (eq-is-prop is-prop-A) (eq-is-prop is-prop-A)) ( λ a → eq-is-prop is-prop-A)
The fibers of the diagonal map
module _ {l : Level} (A : UU l) where eq-fib-diagonal : (t : A × A) → fib (diagonal A) t → pr1 t = pr2 t eq-fib-diagonal (pair x y) (pair z α) = (inv (ap pr1 α)) ∙ (ap pr2 α) fib-diagonal-eq : (t : A × A) → pr1 t = pr2 t → fib (diagonal A) t pr1 (fib-diagonal-eq (pair x y) β) = x pr2 (fib-diagonal-eq (pair x y) β) = eq-pair refl β issec-fib-diagonal-eq : (t : A × A) → ((eq-fib-diagonal t) ∘ (fib-diagonal-eq t)) ~ id issec-fib-diagonal-eq (pair x .x) refl = refl isretr-fib-diagonal-eq : (t : A × A) → ((fib-diagonal-eq t) ∘ (eq-fib-diagonal t)) ~ id isretr-fib-diagonal-eq .(pair z z) (pair z refl) = refl abstract is-equiv-eq-fib-diagonal : (t : A × A) → is-equiv (eq-fib-diagonal t) is-equiv-eq-fib-diagonal t = is-equiv-has-inverse ( fib-diagonal-eq t) ( issec-fib-diagonal-eq t) ( isretr-fib-diagonal-eq t)