ChurchRosserModulo

Martin Escardo, July 2026.

Church-Rosser modulo an equivalence relation _≈_.

We consider an abstract reduction relation _▷_ and an equivalence
relation _≈_ on the same type, where two reducts of a common source may
agree only up to _≈_ rather than up to the identity type. Ordinary
confluence then fails, and what holds is confluence modulo _≈_.

For instance, when a ≈ b but a ≠ b, the peak

  [(₀,a),(₁,b),(₀,b)]  ▷  [(₀,b)]     and     ▷  [(₀,a)]

has two reducts that are ≈-related but not identical. We derive the
Church-Rosser property modulo _≈_ from two local hypotheses,

 * local confluence modulo _≈_, in the form of a one-step diamond, and
 * coherence of _≈_ with reduction, written ▷-respects-≈,

with no termination assumption, following the argument of
Relations.ChurchRosser. The reduction and the relation are abstract, so
nothing here is specific to groups.


{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan

module EGroups.ChurchRosserModulo
        {𝓤 𝓥 : Universe}
        {X : 𝓤 ̇ }
        (_▷_ : X → X → 𝓤 ̇ )
        (_≈_ : X → X → 𝓥 ̇ )
        (≈r  : reflexive  _≈_)
        (≈s  : symmetric  _≈_)
        (≈t  : transitive _≈_)
       where

open import Relations.SRTclosure


The reflexive-transitive closure of _▷_ gives reduction, and its
symmetric-reflexive-transitive closure gives convertibility. Notice that
_≈_ is not added to the closure. Convertibility is then generated by
_▷_ alone, and so lives in the universe 𝓤 of the reduction,
independently of the universe 𝓥 of _≈_.


_▷⋆_ : X → X → 𝓤 ̇
_▷⋆_ = rt-closure _▷_

_∿_ : X → X → 𝓤 ̇
_∿_ = srt-closure _▷_


We abbreviate the "reducts up to _≈_" conclusion.


_≋_ : X → X → 𝓤 ⊔ 𝓥 ̇
x ≋ y = Σ z₀ ꞉ X , Σ z₁ ꞉ X , (x ▷⋆ z₀) × (y ▷⋆ z₁) × (z₀ ≈ z₁)

does-not-reduce : X → 𝓤 ̇
does-not-reduce x = (z : X) → ¬ (x ▷ z)

▷⋆-from-irreducible : (x y : X) → does-not-reduce x → x ▷⋆ y → x = y
▷⋆-from-irreducible x x nx (0      , refl)      = refl
▷⋆-from-irreducible x y nx (succ m , z , d , i) = 𝟘-elim (nx z d)


We now state the two local hypotheses.


module _
        (Church-Rosser≈
          : (x y₀ y₁ : X)
          → x ▷ y₀
          → x ▷ y₁
          → (y₀ ≈ y₁)
          + (Σ z₀ ꞉ X , Σ z₁ ꞉ X , (y₀ ▷ z₀) × (y₁ ▷ z₁) × (z₀ ≈ z₁)))
        (▷-respects-≈
          : (x x' y : X)
          → x ≈ x'
          → x ▷ y
          → Σ y' ꞉ X , (x' ▷ y') × (y ≈ y'))
       where


Coherence lifts from single steps to reduction sequences. If x ≈ x'
and x reduces to y, then x' reduces to some y' with y ≈ y'.


 ▷-respects-≈⋆ : (x x' y : X)
                → x ≈ x'
                → x ▷⋆ y
                → Σ y' ꞉ X , (x' ▷⋆ y') × (y ≈ y')
 ▷-respects-≈⋆ x x' y e (m , i) = f m x x' y e i
  where
   f : (m : ℕ) (x x' y : X)
     → x ≈ x'
     → iteration _▷_ m x y
     → Σ y' ꞉ X , (x' ▷⋆ y') × (y ≈ y')
   f 0        x x' x  e refl        = x' , rt-reflexive _▷_ x' , e
   f (succ m) x x' y  e (z , d , i) = γ (▷-respects-≈ x x' z e d)
    where
     γ : (Σ z' ꞉ X , (x' ▷ z') × (z ≈ z')) → Σ y' ꞉ X , (x' ▷⋆ y') × (y ≈ y')
     γ (z' , d' , ez) = δ (f m z z' y ez i)
      where
       δ : (Σ y' ꞉ X , (z' ▷⋆ y') × (y ≈ y')) → Σ y' ꞉ X , (x' ▷⋆ y') × (y ≈ y')
       δ (y' , r , ey) =
        y' ,
        rt-transitive _▷_ x' z' y' (rt-extension _▷_ x' z' d') r ,
        ey


The strip lemma modulo _≈_ says that a single reduction step and a
reduction sequence from a common source have reducts that agree
up to _≈_.


 Church-Rosser⋆-modulo : (x y₀ y₁ : X) → x ▷ y₀ → x ▷⋆ y₁ → y₀ ≋ y₁
 Church-Rosser⋆-modulo x y₀ y₁ b (m , i) = f m x y₀ y₁ b i
  where
   f : (m : ℕ) (x y₀ y₁ : X) → x ▷ y₀ → iteration _▷_ m x y₁ → y₀ ≋ y₁
   f 0        x y₀ x  b refl        = y₀ , y₀ ,
                                      rt-reflexive _▷_ y₀ ,
                                      rt-extension _▷_ x y₀ b ,
                                      ≈r y₀
   f (succ m) x y₀ y₁ b (w , d , i) = γ (Church-Rosser≈ x y₀ w b d)
    where
     γ : (y₀ ≈ w)
       + (Σ z₀ ꞉ X , Σ z₁ ꞉ X , (y₀ ▷ z₀) × (w ▷ z₁) × (z₀ ≈ z₁))
       → y₀ ≋ y₁
     γ (inl e) = δ (▷-respects-≈⋆ w y₀ y₁ (≈s y₀ w e) (m , i))
      where
       δ : (Σ y' ꞉ X , (y₀ ▷⋆ y') × (y₁ ≈ y')) → y₀ ≋ y₁
       δ (y' , r , ey) = y' , y₁ , r , rt-reflexive _▷_ y₁ , ≈s y₁ y' ey
     γ (inr (z₀ , z₁ , d₀ , d₁ , e)) = δ (f m w z₁ y₁ d₁ i)
      where
       δ : z₁ ≋ y₁ → y₀ ≋ y₁
       δ (c₀ , c₁ , r₁ , r₂ , ec) = ε (▷-respects-≈⋆ z₁ z₀ c₀ (≈s z₀ z₁ e) r₁)
        where
         ε : (Σ d ꞉ X , (z₀ ▷⋆ d) × (c₀ ≈ d)) → y₀ ≋ y₁
         ε (d , r₃ , ed) =
          d ,
          c₁ ,
          rt-transitive _▷_ y₀ z₀ d (rt-extension _▷_ y₀ z₀ d₀) r₃ ,
          r₂ ,
          ≈t d c₀ c₁ (≈s c₀ d ed) ec


Church-Rosser modulo _≈_ says that convertible points have reducts that
agree up to _≈_. This is the setoid counterpart of from-∿.


 Church-Rosser-modulo : (x y : X) → x ∿ y → x ≋ y
 Church-Rosser-modulo x y (m , e) = f m x y e
  where
   f : (m : ℕ) (x y : X) → iteration (s-closure _▷_) m x y → x ≋ y
   f 0        x x refl        = x , x ,
                                rt-reflexive _▷_ x , rt-reflexive _▷_ x , ≈r x
   f (succ m) x y (z , st , i) = γ st (f m z y i)
    where
     γ : s-closure _▷_ x z → z ≋ y → x ≋ y
     γ (inl d) (t₀ , t₁ , zt₀ , yt₁ , et) =
      t₀ , t₁ , rt-transitive _▷_ x z t₀ (rt-extension _▷_ x z d) zt₀ , yt₁ , et
     γ (inr d) (t₀ , t₁ , zt₀ , yt₁ , et) =
      δ (Church-Rosser⋆-modulo z x t₀ d zt₀)
      where
       δ : x ≋ t₀ → x ≋ y
       δ (a₀ , a₁ , xa₀ , t₀a₁ , ea) = ε (▷-respects-≈⋆ t₀ t₁ a₁ et t₀a₁)
        where
         ε : (Σ c ꞉ X , (t₁ ▷⋆ c) × (a₁ ≈ c)) → x ≋ y
         ε (c , t₁c , eac) = a₀ , c ,
                             xa₀ ,
                             rt-transitive _▷_ y t₁ c yt₁ t₁c ,
                             ≈t a₀ a₁ c ea eac


We derive the consequence that we will need later. If two
▷-irreducible points are convertible, they are already ≈-related. This
is the setoid replacement for the fact that convertible normal forms
are equal.


 irreducibles-related-by-∿-are-≈ : (x y : X)
                                 → does-not-reduce x
                                 → does-not-reduce y
                                 → x ∿ y
                                 → x ≈ y
 irreducibles-related-by-∿-are-≈ x y nx ny e = γ (Church-Rosser-modulo x y e)
  where
   γ : x ≋ y → x ≈ y
   γ (z₀ , z₁ , r₀ , r₁ , ez) =
    transport (x ≈_) (▷⋆-from-irreducible y z₁ ny r₁ ⁻¹)
     (transport (_≈ z₁) (▷⋆-from-irreducible x z₀ nx r₀ ⁻¹) ez)