module Homotopy.Conjugation where
Conjugation of paths🔗
private variable
: Level
ℓ : Type ℓ
A : A
x y z : x ≡ y
p q r
open is-iso
In any type for which we know two points the existence of any identification induces an equivalence between the loop spaces and given by transport in the usual way. However, since we know ahead-of-time what transport in a type of paths computes to, we can take a short-cut and define the equivalence directly: it is given by conjugation with
opaque: ∀ {ℓ} {A : Type ℓ} {x y : A} → y ≡ x → y ≡ y → x ≡ x
conj = sym p ∙∙ q ∙∙ p conj p q
opaque unfolding conj
: (p : y ≡ x) (q : y ≡ y) → conj p q ≡ sym p ∙ q ∙ p
conj-defn = double-composite (sym p) q p
conj-defn p q
: (p : y ≡ x) (q : y ≡ y) → conj p q ≡ subst (λ x → x ≡ x) p q
conj-defn' = conj-defn p q ∙ sym (subst-path-both q p) conj-defn' p q
opaque unfolding conj
: (l : x ≡ x) → conj refl l ≡ l
conj-refl = ∙-idr l
conj-refl l
: (p : x ≡ y) (q : y ≡ z) (r : x ≡ x)
conj-∙ → conj q (conj p r) ≡ conj (p ∙ q) r
= ∙∙-stack conj-∙ p q r
: (p : y ≡ x) → conj p refl ≡ refl
conj-of-refl = hcomp (i ∨ ∂ j) λ where
conj-of-refl p i j (k = i0) → p k
k (i = i1) → p k
k (j = i0) → p k
k (j = i1) → p k
k
: (p : y ≡ x) (q r : y ≡ y) → conj p (q ∙ r) ≡ conj p q ∙ conj p r
conj-of-∙ = sym ∙∙-chain conj-of-∙ p q r
opaque
unfolding conj
ap-conj: ∀ {ℓ ℓ'} {A : Type ℓ} {B : Type ℓ'} {x y : A}
→ (f : A → B) (p : y ≡ x) (q : y ≡ y)
→ ap f (conj p q) ≡ conj (ap f p) (ap f q)
= ap-∙∙ f _ _ _ ap-conj f p q
opaque: conj (sym p) (conj p q) ≡ q
conj⁻conj {p = p} {q = q} =
conj⁻conj (conj _) (conj-defn' _ _)
ap _ _
∙∙ conj-defn' (λ i → p i ≡ p i) q ∙∙ transport⁻transport
opaque
square→conj: {p : y ≡ x} {q₁ : y ≡ y} {q₂ : x ≡ x}
→ Square p q₁ q₂ p → conj p q₁ ≡ q₂
= conj-defn' _ _ ∙ from-pathp p square→conj p
opaque: {p q : x ≡ x} → q ∙ p ≡ p ∙ q → conj p q ≡ q
conj-commutative = conj-defn _ _ ∙∙ ap₂ _∙_ refl α ∙∙ ∙-cancell _ _ conj-commutative α
: (p : y ≡ x) → is-iso (conj p)
conj-is-iso .from q = conj (sym p) q
conj-is-iso p .rinv q = conj⁻conj
conj-is-iso p .linv q = conj⁻conj conj-is-iso p
opaque
unfolding conj conj-refl conj-of-refl
conj-refl-square: ∀ {ℓ} {A : Type ℓ} {a₀ : A}
→ Square (conj-refl refl) (conj-of-refl refl) (λ i j → a₀) refl
{a₀ = a₀} i j k = hcomp (∂ k ∨ i ∨ j) λ where
conj-refl-square (l = i0) → a₀
l (k = i0) → a₀
l (k = i1) → a₀
l (i = i1) → a₀
l (j = i1) → a₀ l
opaque: (p : y ≡ x) → is-equiv (conj p)
conj-is-equiv = is-iso→is-equiv (conj-is-iso p)
conj-is-equiv p
module conj {ℓ} {A : Type ℓ} {x y : A} (p : y ≡ x) = Equiv (conj p , conj-is-equiv p)