--------------------------------------------------------------------------------
Ettore Aldrovandi, ealdrovandi@fsu.edu
Started: November 2022
Revision: June 2023
--------------------------------------------------------------------------------
Port of [HoTT-Agda](https://github.com/HoTT/HoTT-Agda) `PathSeq`
library to TypeTopology.
\begin{code}
{-# OPTIONS --without-K --safe #-}
module PathSequences.Concat where
open import MLTT.Spartan
open import UF.Base
open import PathSequences.Type
\end{code}
This module handles concatenation of path sequences. The developmenet
is very close to the module `Concat` in the original repository, with
a couple of extra items.
\begin{code}
_ββ‘_ : {X : π€ Μ } {x y z : X}
β x β‘ y β y β‘ z β x β‘ z
[] ββ‘ t = t
(p ββ s) ββ‘ t = p ββ (s ββ‘ t)
ββ‘-assoc : {X : π€ Μ } {x y z w : X}
β (s : x β‘ y) (t : y β‘ z) (u : z β‘ w)
β (s ββ‘ t) ββ‘ u οΌ s ββ‘ (t ββ‘ u)
ββ‘-assoc [] t u = refl
ββ‘-assoc (p ββ s) t u = ap (p ββ_) (ββ‘-assoc s t u)
\end{code}
The following is not in the original module, but it seems one should
have a proof of associativity for the direct equality _οΌβ_ between
path sequences.
\begin{code}
ββ‘-assoc-οΌβ : {X : π€ Μ } {x y z w : X}
β (s : x β‘ y) (t : y β‘ z) (u : z β‘ w)
β ((s ββ‘ t) ββ‘ u) οΌβ (s ββ‘ (t ββ‘ u))
ββ‘-assoc-οΌβ s t u = οΌβ-in (ap (Ξ» v β [ v β]) (ββ‘-assoc s t u))
\end{code}
We see ββ‘-assoc is more fundamental.
Resumingβ¦
\begin{code}
[]-ββ‘-right-neutral : {X : π€ Μ } {x y : X}
β (s : x β‘ y)
β s ββ‘ [] οΌ s
[]-ββ‘-right-neutral [] = refl
[]-ββ‘-right-neutral (p ββ s) = ap (p ββ_) ([]-ββ‘-right-neutral s)
[]-ββ‘-right-neutral-οΌβ : {X : π€ Μ } {x y : X}
β (s : x β‘ y)
β s ββ‘ [] οΌβ s
[]-ββ‘-right-neutral-οΌβ s =
οΌβ-in (ap (Ξ» v β [ v β]) ([]-ββ‘-right-neutral s))
_ββΉ_ : {X : π€ Μ } {x y z : X}
β x β‘ y β y οΌ z β x β‘ z
s ββΉ p = s ββ‘ (p ββ)
β‘-to-οΌ-hom : {X : π€ Μ } {x y z : X}
β (s : x β‘ y) (t : y β‘ z)
β ([ s β]) β ([ t β]) οΌ [ (s ββ‘ t) β]
β‘-to-οΌ-hom [] t = refl-left-neutral
β‘-to-οΌ-hom (p ββ s) [] =
[ (p ββ s) β] β [ [] β] οΌβ¨ refl-right-neutral [ (p ββ s) β] β»ΒΉ β©
[ (p ββ s) β] οΌβ¨ ap (Ξ» v β [ v β]) Ο β©
[ (p ββ s ββ‘ []) β] β
where
Ο = ([]-ββ‘-right-neutral (p ββ s)) β»ΒΉ
β‘-to-οΌ-hom (p ββ s) (q ββ t) =
[ (p ββ s) β] β [ (q ββ t) β] οΌβ¨ refl β©
(p β [ s β]) β [ (q ββ t) β] οΌβ¨ βassoc p [ s β] [ q ββ t β] β©
p β ([ s β] β [ q ββ t β]) οΌβ¨ ap (p β_) (β‘-to-οΌ-hom s (q ββ t)) β©
p β [ s ββ‘ (q ββ t) β] οΌβ¨ refl β©
[ p ββ s ββ‘ q ββ t β] β
[β]-hom = β‘-to-οΌ-hom
\end{code}
Fixities
\begin{code}
infixr 80 _ββ‘_
infixl 80 _ββΉ_
\end{code}