--------------------------------------------------------------------------------
Ettore Aldrovandi, ealdrovandi@fsu.edu
Started: November 2023
--------------------------------------------------------------------------------
Addition to the port of [HoTT-Agda](https://github.com/HoTT/HoTT-Agda)
`PathSeq` library to TypeTopology.
Cancel portions of path sequences.
\begin{code}
{-# OPTIONS --without-K --safe #-}
open import MLTT.Spartan
open import UF.Base using (left-inverse)
open import PathSequences.Type
open import PathSequences.Concat
open import PathSequences.Reasoning
open import PathSequences.Inversion
open import PathSequences.Rotations
module PathSequences.Cancel {X : 𝓤 ̇ } where
\end{code}
\begin{code}
cancel-left : {x y z : X} {p : x = y} {q r : y ≡ z}
→ p ◃∙ q =ₛ p ◃∙ r
→ q =ₛ r
cancel-left {p = p} {q} {r} e = q =ₛ⟨ pre-rotate-in e ⟩
(p ⁻¹) ◃∙ p ◃∙ r
=ₛ⟨ 0 & 2 & =ₛ-in (left-inverse p) ⟩
r ∎ₛ
cancel-seq-left : {x y z : X} {p : x ≡ y} {q r : y ≡ z}
→ p ∙≡ q =ₛ p ∙≡ r
→ q =ₛ r
cancel-seq-left {p = []} {q} {r} e = e
cancel-seq-left {p = p ◃∙ p₁} {q} {r} e = cancel-seq-left (cancel-left e)
cancel-right : {x y z : X} {p q : x ≡ y} {r : y = z}
→ p ∙▹ r =ₛ q ∙▹ r
→ p =ₛ q
cancel-right {p = p} {q} {r} e = p =ₛ⟨ post-rotate-in e ⟩
q ∙▹ r ∙▹ (r ⁻¹)
=ₛ⟨ post-rotate-in (=ₛ-in refl) ⁻¹ₛ ⟩
q ∎ₛ
cancel-seq-right : {x y z : X} {p q : x ≡ y} {r : y ≡ z}
→ p ∙≡ r =ₛ q ∙≡ r
→ p =ₛ q
cancel-seq-right {p = p} {q} {r} e =
p =ₛ⟨ post-rotate-seq-in {p = p} e ⟩
(q ∙≡ r) ∙≡ (seq⁻¹ r)
=ₛ⟨ post-rotate-seq-in {q = r} (=ₛ-in refl) ⁻¹ₛ ⟩
q ∎ₛ
\end{code}