{-# 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)