23
26
------------------------------------------------------------------------
24
27
-- Properties of operations
26
Associative : Op₂ A → Set
29
Associative : Op₂ A → Set _
27
30
Associative _∙_ = ∀ x y z → ((x ∙ y) ∙ z) ≈ (x ∙ (y ∙ z))
29
Commutative : Op₂ A → Set
32
Commutative : Op₂ A → Set _
30
33
Commutative _∙_ = ∀ x y → (x ∙ y) ≈ (y ∙ x)
32
LeftIdentity : A → Op₂ A → Set
35
LeftIdentity : A → Op₂ A → Set _
33
36
LeftIdentity e _∙_ = ∀ x → (e ∙ x) ≈ x
35
RightIdentity : A → Op₂ A → Set
38
RightIdentity : A → Op₂ A → Set _
36
39
RightIdentity e _∙_ = ∀ x → (x ∙ e) ≈ x
38
Identity : A → Op₂ A → Set
41
Identity : A → Op₂ A → Set _
39
42
Identity e ∙ = LeftIdentity e ∙ × RightIdentity e ∙
41
LeftZero : A → Op₂ A → Set
44
LeftZero : A → Op₂ A → Set _
42
45
LeftZero z _∙_ = ∀ x → (z ∙ x) ≈ z
44
RightZero : A → Op₂ A → Set
47
RightZero : A → Op₂ A → Set _
45
48
RightZero z _∙_ = ∀ x → (x ∙ z) ≈ z
47
Zero : A → Op₂ A → Set
50
Zero : A → Op₂ A → Set _
48
51
Zero z ∙ = LeftZero z ∙ × RightZero z ∙
50
LeftInverse : A → Op₁ A → Op₂ A → Set
53
LeftInverse : A → Op₁ A → Op₂ A → Set _
51
54
LeftInverse e _⁻¹ _∙_ = ∀ x → (x ⁻¹ ∙ x) ≈ e
53
RightInverse : A → Op₁ A → Op₂ A → Set
56
RightInverse : A → Op₁ A → Op₂ A → Set _
54
57
RightInverse e _⁻¹ _∙_ = ∀ x → (x ∙ (x ⁻¹)) ≈ e
56
Inverse : A → Op₁ A → Op₂ A → Set
59
Inverse : A → Op₁ A → Op₂ A → Set _
57
60
Inverse e ⁻¹ ∙ = LeftInverse e ⁻¹ ∙ × RightInverse e ⁻¹ ∙
59
_DistributesOverˡ_ : Op₂ A → Op₂ A → Set
62
_DistributesOverˡ_ : Op₂ A → Op₂ A → Set _
60
63
_*_ DistributesOverˡ _+_ =
61
64
∀ x y z → (x * (y + z)) ≈ ((x * y) + (x * z))
63
_DistributesOverʳ_ : Op₂ A → Op₂ A → Set
66
_DistributesOverʳ_ : Op₂ A → Op₂ A → Set _
64
67
_*_ DistributesOverʳ _+_ =
65
68
∀ x y z → ((y + z) * x) ≈ ((y * x) + (z * x))
67
_DistributesOver_ : Op₂ A → Op₂ A → Set
70
_DistributesOver_ : Op₂ A → Op₂ A → Set _
68
71
* DistributesOver + = (* DistributesOverˡ +) × (* DistributesOverʳ +)
70
_IdempotentOn_ : Op₂ A → A → Set
73
_IdempotentOn_ : Op₂ A → A → Set _
71
74
_∙_ IdempotentOn x = (x ∙ x) ≈ x
73
Idempotent : Op₂ A → Set
76
Idempotent : Op₂ A → Set _
74
77
Idempotent ∙ = ∀ x → ∙ IdempotentOn x
76
IdempotentFun : Op₁ A → Set
79
IdempotentFun : Op₁ A → Set _
77
80
IdempotentFun f = ∀ x → f (f x) ≈ f x
79
_Absorbs_ : Op₂ A → Op₂ A → Set
82
_Absorbs_ : Op₂ A → Op₂ A → Set _
80
83
_∙_ Absorbs _∘_ = ∀ x y → (x ∙ (x ∘ y)) ≈ x
82
Absorptive : Op₂ A → Op₂ A → Set
85
Absorptive : Op₂ A → Op₂ A → Set _
83
86
Absorptive ∙ ∘ = (∙ Absorbs ∘) × (∘ Absorbs ∙)
85
Involutive : Op₁ A → Set
88
Involutive : Op₁ A → Set _
86
89
Involutive f = ∀ x → f (f x) ≈ x