@@ -17,7 +17,7 @@ open import Function.Base using (_$_)
17
17
open import Relation.Binary.Reasoning.Setoid setoid
18
18
19
19
------------------------------------------------------------------------
20
- -- Export properties of abelian groups
20
+ -- Re-export abelian group properties for addition
21
21
22
22
open AbelianGroupProperties +-abelianGroup public
23
23
renaming
@@ -36,6 +36,12 @@ open AbelianGroupProperties +-abelianGroup public
36
36
; ⁻¹-∙-comm to -‿+-comm
37
37
)
38
38
39
+ x+x≈x⇒x≈0 : ∀ x → x + x ≈ x → x ≈ 0#
40
+ x+x≈x⇒x≈0 x eq = +-identityˡ-unique x x eq
41
+
42
+ ------------------------------------------------------------------------
43
+ -- Consequences of distributivity
44
+
39
45
-‿distribˡ-* : ∀ x y → - (x * y) ≈ - x * y
40
46
-‿distribˡ-* x y = sym $ begin
41
47
- x * y ≈⟨ +-identityʳ (- x * y) ⟨
@@ -58,17 +64,21 @@ open AbelianGroupProperties +-abelianGroup public
58
64
- (x * y) + 0# ≈⟨ +-identityʳ (- (x * y)) ⟩
59
65
- (x * y) ∎
60
66
61
- x+x≈x⇒x≈0 : ∀ x → x + x ≈ x → x ≈ 0#
62
- x+x≈x⇒x≈0 x eq = +-identityˡ-unique x x eq
67
+ [-x][-y]≈xy : ∀ x y → - x * - y ≈ x * y
68
+ [-x][-y]≈xy x y = begin
69
+ - x * - y ≈⟨ -‿distribˡ-* x (- y) ⟨
70
+ - (x * - y) ≈⟨ -‿cong (-‿distribʳ-* x y) ⟨
71
+ - (- (x * y)) ≈⟨ -‿involutive (x * y) ⟩
72
+ x * y ∎
63
73
64
74
x[y-z]≈xy-xz : ∀ x y z → x * (y - z) ≈ x * y - x * z
65
75
x[y-z]≈xy-xz x y z = begin
66
76
x * (y - z) ≈⟨ distribˡ x y (- z) ⟩
67
- x * y + x * - z ≈⟨ +-congˡ (sym ( -‿distribʳ-* x z)) ⟩
77
+ x * y + x * - z ≈⟨ +-congˡ (-‿distribʳ-* x z) ⟨
68
78
x * y - x * z ∎
69
79
70
80
[y-z]x≈yx-zx : ∀ x y z → (y - z) * x ≈ (y * x) - (z * x)
71
81
[y-z]x≈yx-zx x y z = begin
72
82
(y - z) * x ≈⟨ distribʳ x y (- z) ⟩
73
- y * x + - z * x ≈⟨ +-congˡ (sym ( -‿distribˡ-* z x)) ⟩
83
+ y * x + - z * x ≈⟨ +-congˡ (-‿distribˡ-* z x) ⟨
74
84
y * x - z * x ∎
0 commit comments