{-# OPTIONS --type-in-type
    #-}

open import NeilPrelude

module Cancellative {A : Set} {B : Set} {C : Set}

       (_⊕_ : A  B  C)

       (cancL : CancellativeL _⊕_)
       (cancR : CancellativeR _⊕_)

  where

⊕canc : CancellativeL _⊕_
⊕canc = cancL

canc⊕ : CancellativeR _⊕_
canc⊕ = cancR

⊕⊕canc : {a₁ a₂ : A}  {b₁ b₂ : B}  a₁  b₁  a₁  b₂  a₂  b₁  a₂  b₂
⊕⊕canc = cong2L _⊕_  ⊕canc

canc⊕⊕ : {a₁ a₂ : A}  {b₁ b₂ : B}  a₁  b₁  a₂  b₁  a₁  b₂  a₂  b₂
canc⊕⊕ = cong2R _⊕_  canc⊕