{-# OPTIONS --without-K --rewriting #-} module Pi.Coxeter.NonParametrized.MCoxeter where open import lib.Base open import lib.types.Nat using (_+_) open import lib.types.Sigma open import lib.PathGroupoid open import Pi.Common.Misc open import Pi.Common.Arithmetic open import Pi.Common.ListN open import Pi.Coxeter.NonParametrized.ReductionRel open import Pi.Coxeter.NonParametrized.Diamond open ≅*-Reasoning data _↔_ : Listℕ -> Listℕ -> Set where MC : {m1 m2 mf : Listℕ} -> (p1 : m1 ≅* mf) -> (p2 : m2 ≅* mf) -> m1 ↔ m2 refl↔ : (m : Listℕ) -> (m ↔ m) refl↔ m = MC idp idp comm↔ : (m1 m2 : Listℕ) -> (m1 ↔ m2) -> (m2 ↔ m1) comm↔ m1 m2 (MC p1 p2) = MC p2 p1 trans↔ : (m1 m2 m3 : Listℕ) -> (r1 : m1 ↔ m2) -> (r2 : m2 ↔ m3) -> (m1 ↔ m3) trans↔ m1 m2 m3 (MC p1 p2) (MC p3 p4) = let lemma-m , lemma1 , lemma2 = diamond-full p2 p3 in MC (trans p1 lemma1) (trans p4 lemma2)