------------------------------------------------------------------------ -- The Agda standard library -- -- Some basic properties of Quasigroup ------------------------------------------------------------------------ {-# OPTIONS --cubical-compatible --safe #-} open import Algebra.Bundles using (Quasigroup) module Algebra.Properties.Quasigroup {q₁ q₂} (Q : Quasigroup q₁ q₂) where open Quasigroup Q open import Algebra.Definitions _≈_ open import Relation.Binary.Reasoning.Setoid setoid open import Data.Product.Base using (_,_) cancelˡ : LeftCancellative _∙_ cancelˡ x y z eq = begin y ≈⟨ leftDividesʳ x y x \\ (x y) ≈⟨ \\-congˡ eq x \\ (x z) ≈⟨ leftDividesʳ x z z cancelʳ : RightCancellative _∙_ cancelʳ x y z eq = begin y ≈⟨ rightDividesʳ x y (y x) // x ≈⟨ //-congʳ eq (z x) // x ≈⟨ rightDividesʳ x z z cancel : Cancellative _∙_ cancel = cancelˡ , cancelʳ y≈x\\z : x y z x y z y x \\ z y≈x\\z x y z eq = begin y ≈⟨ leftDividesʳ x y x \\ (x y) ≈⟨ \\-congˡ eq x \\ z x≈z//y : x y z x y z x z // y x≈z//y x y z eq = begin x ≈⟨ rightDividesʳ y x (x y) // y ≈⟨ //-congʳ eq z // y