Transport along identifications
Content created by Fredrik Bakke, Egbert Rijke and Raymond Baker.
Created on 2023-09-11.
Last modified on 2025-11-06.
module foundation.transport-along-identifications where open import foundation-core.transport-along-identifications public
Imports
open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions open import foundation-core.sections
Idea
Given a type family B over A, an
identification p : x = y in A and an
element b : B x, we can
transport the element
b along the identification p to obtain an element tr B p b : B y.
The fact that tr B p is an equivalence is
recorded on this page.
Properties
Transport is an equivalence
module _ {l1 l2 : Level} {A : UU l1} (B : A → UU l2) {x y : A} where is-retraction-inv-tr : (p : x = y) → is-retraction (tr B p) (inv-tr B p) is-retraction-inv-tr refl b = refl is-section-inv-tr : (p : x = y) → is-section (tr B p) (inv-tr B p) is-section-inv-tr refl b = refl is-equiv-tr : (p : x = y) → is-equiv (tr B p) is-equiv-tr p = is-equiv-is-invertible ( inv-tr B p) ( is-section-inv-tr p) ( is-retraction-inv-tr p) is-equiv-inv-tr : (p : x = y) → is-equiv (inv-tr B p) is-equiv-inv-tr p = is-equiv-is-invertible ( tr B p) ( is-retraction-inv-tr p) ( is-section-inv-tr p) equiv-tr : x = y → B x ≃ B y equiv-tr p = (tr B p , is-equiv-tr p) equiv-inv-tr : x = y → B y ≃ B x equiv-inv-tr p = (inv-tr B p , is-equiv-inv-tr p)
Transporting along refl is the identity equivalence
equiv-tr-refl : {l1 l2 : Level} {A : UU l1} (B : A → UU l2) {x : A} → equiv-tr B refl = id-equiv {A = B x} equiv-tr-refl B = refl
Computing transport of loops
tr-loop : {l1 : Level} {A : UU l1} {a0 a1 : A} (p : a0 = a1) (q : a0 = a0) → tr (λ y → y = y) p q = (inv p ∙ q) ∙ p tr-loop refl q = inv right-unit tr-loop-self : {l1 : Level} {A : UU l1} {a : A} (p : a = a) → tr (λ y → y = y) p p = p tr-loop-self p = tr-loop p p ∙ ap (_∙ p) (left-inv p)
Recent changes
- 2025-11-06. Fredrik Bakke. Miscellaneous edits from #1547 (#1667).
- 2025-01-07. Fredrik Bakke. Logic (#1226).
- 2024-04-19. Fredrik Bakke. Rewrite rules for pushouts (#1021).
- 2024-02-08. Fredrik Bakke. Computational identity types (#1015).
- 2024-02-06. Fredrik Bakke. Redefine
equiv-eqasequiv-tr id(#1020).