-- §──────────────────────────────────────────────────────────────────
-- Modules required for specifying parameters of this module
-- §──────────────────────────────────────────────────────────────────
import Level as L
import Relation.Binary as RB
-- §──────────────────────────────────────────────────────────────────
-- This module
-- §──────────────────────────────────────────────────────────────────
module My.Algebra.Structure.BinaryOperation {𝓁 𝓂 : L.Level} {A : Set 𝓁}
(_≈_ : RB.Rel A 𝓂) where
-- §──────────────────────────────────────────────────────────────────
-- Other required modules
-- §──────────────────────────────────────────────────────────────────
import Algebra.FunctionProperties as AFP
import Data.Product as DP
open DP using (_×_)
open L using (_⊔_)
-- §──────────────────────────────────────────────────────────────────
-- Cancellation
-- §──────────────────────────────────────────────────────────────────
LeftCancellative : AFP.Op₂ A → Set (𝓁 ⊔ 𝓂)
LeftCancellative _∙_ = (a : A) → {x y : A} → (a ∙ x) ≈ (a ∙ y) → x ≈ y
RightCancellative : AFP.Op₂ A → Set (𝓁 ⊔ 𝓂)
RightCancellative _∙_ = (x y : A) → {a : A} → (x ∙ a) ≈ (y ∙ a) → x ≈ y
Cancellative : AFP.Op₂ A → Set (𝓁 ⊔ 𝓂)
Cancellative _∙_ = LeftCancellative _∙_ × RightCancellative _∙_