Skip to content

Commit 77fed0b

Browse files
[Add] Consequences of associativity for Semigroups (#2688)
* Adds reasonig combinator for semigroup * Adds reasonig combinator for semigroup * Adds reasonig combinator for semigroup * Adds reasonig combinator for semigroup * Add some more missing reasoning combinators * add module Extends * rename SemiGroup to Semigroup * fix-whitespace * Update CHANGELOG.md Co-authored-by: jamesmckinna <[email protected]> * New names * improve syntx * fix-whitespace * Name changes * Names change * Space * Proof of assoc with PUshes and Pulles * Proof of assoc with PUshes and Pulles * white space * Update src/Algebra/Properties/Semigroup/Reasoning.agda Co-authored-by: jamesmckinna <[email protected]> * Reasoning to Semigroup and explicit variables * fix bug * space * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * Update CHANGELOG.md Co-authored-by: jamesmckinna <[email protected]> * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * Update src/Algebra/Properties/Semigroup.agda Co-authored-by: jamesmckinna <[email protected]> * variables * update CHANGELOG * Explicit varaibles * remove white space * update Changelog and minor improvments --------- Co-authored-by: jamesmckinna <[email protected]>
1 parent 327ec79 commit 77fed0b

File tree

2 files changed

+90
-1
lines changed

2 files changed

+90
-1
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,29 @@ Additions to existing modules
239239
∣ˡ-preorder : Preorder a ℓ _
240240
```
241241

242+
* In `Algebra.Properties.Semigroup` adding consequences for associativity for semigroups
243+
244+
```
245+
uv≈w⇒xu∙v≈xw : ∀ x → (x ∙ u) ∙ v ≈ x ∙ w
246+
uv≈w⇒u∙vx≈wx : ∀ x → u ∙ (v ∙ x) ≈ w ∙ x
247+
uv≈w⇒u[vx∙y]≈w∙xy : ∀ x y → u ∙ ((v ∙ x) ∙ y) ≈ w ∙ (x ∙ y)
248+
uv≈w⇒x[uv∙y]≈x∙wy : ∀ x y → x ∙ (u ∙ (v ∙ y)) ≈ x ∙ (w ∙ y)
249+
uv≈w⇒[x∙yu]v≈x∙yw : ∀ x y → (x ∙ (y ∙ u)) ∙ v ≈ x ∙ (y ∙ w)
250+
uv≈w⇒[xu∙v]y≈x∙wy : ∀ x y → ((x ∙ u) ∙ v) ∙ y ≈ x ∙ (w ∙ y)
251+
uv≈w⇒[xy∙u]v≈x∙yw : ∀ x y → ((x ∙ y) ∙ u) ∙ v ≈ x ∙ (y ∙ w)
252+
uv≈w⇒xu∙vy≈x∙wy : ∀ x y → (x ∙ u) ∙ (v ∙ y) ≈ x ∙ (w ∙ y)
253+
uv≈w⇒xy≈z⇒u[vx∙y]≈wz : ∀ z → x ∙ y ≈ z → u ∙ ((v ∙ x) ∙ y) ≈ w ∙ z
254+
uv≈w⇒x∙wy≈x∙[u∙vy] : x ∙ (w ∙ y) ≈ x ∙ (u ∙ (v ∙ y))
255+
[uv∙w]x≈u[vw∙x] : ((u ∙ v) ∙ w) ∙ x ≈ u ∙ ((v ∙ w) ∙ x)
256+
[uv∙w]x≈u[v∙wx] : ((u ∙ v) ∙ w) ∙ x ≈ u ∙ (v ∙ (w ∙ x))
257+
[u∙vw]x≈uv∙wx : (u ∙ (v ∙ w)) ∙ x ≈ (u ∙ v) ∙ (w ∙ x)
258+
[u∙vw]x≈u[v∙wx] : (u ∙ (v ∙ w)) ∙ x ≈ u ∙ (v ∙ (w ∙ x))
259+
uv∙wx≈u[vw∙x] : (u ∙ v) ∙ (w ∙ x) ≈ u ∙ ((v ∙ w) ∙ x)
260+
uv≈wx⇒yu∙v≈yw∙x : ∀ y → (y ∙ u) ∙ v ≈ (y ∙ w) ∙ x
261+
uv≈wx⇒u∙vy≈w∙xy : ∀ y → u ∙ (v ∙ y) ≈ w ∙ (x ∙ y)
262+
uv≈wx⇒yu∙vz≈yw∙xz : ∀ y z → (y ∙ u) ∙ (v ∙ z) ≈ (y ∙ w) ∙ (x ∙ z)
263+
```
264+
242265
* In `Algebra.Properties.Semigroup.Divisibility`:
243266
```agda
244267
∣ˡ-trans : Transitive _∣ˡ_

src/Algebra/Properties/Semigroup.agda

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,16 @@ open import Algebra using (Semigroup)
1010

1111
module Algebra.Properties.Semigroup {a ℓ} (S : Semigroup a ℓ) where
1212

13+
open import Data.Product.Base using (_,_)
14+
1315
open Semigroup S
16+
using (Carrier; _∙_; _≈_; setoid; trans ; refl; sym; assoc; ∙-cong; ∙-congˡ; ∙-congʳ)
1417
open import Algebra.Definitions _≈_
15-
open import Data.Product.Base using (_,_)
18+
using (Alternative; LeftAlternative; RightAlternative; Flexible)
19+
20+
private
21+
variable
22+
u v w x y z : Carrier
1623

1724
x∙yz≈xy∙z : x y z x ∙ (y ∙ z) ≈ (x ∙ y) ∙ z
1825
x∙yz≈xy∙z x y z = sym (assoc x y z)
@@ -28,3 +35,62 @@ alternative = alternativeˡ , alternativeʳ
2835

2936
flexible : Flexible _∙_
3037
flexible x y = assoc x y x
38+
39+
module _ (uv≈w : u ∙ v ≈ w) where
40+
uv≈w⇒xu∙v≈xw : x (x ∙ u) ∙ v ≈ x ∙ w
41+
uv≈w⇒xu∙v≈xw x = trans (assoc x u v) (∙-congˡ uv≈w)
42+
43+
uv≈w⇒u∙vx≈wx : x u ∙ (v ∙ x) ≈ w ∙ x
44+
uv≈w⇒u∙vx≈wx x = trans (sym (assoc u v x)) (∙-congʳ uv≈w)
45+
46+
uv≈w⇒u[vx∙y]≈w∙xy : x y u ∙ ((v ∙ x) ∙ y) ≈ w ∙ (x ∙ y)
47+
uv≈w⇒u[vx∙y]≈w∙xy x y = trans (∙-congˡ (assoc v x y)) (uv≈w⇒u∙vx≈wx (x ∙ y))
48+
49+
uv≈w⇒x[uv∙y]≈x∙wy : x y x ∙ (u ∙ (v ∙ y)) ≈ x ∙ (w ∙ y)
50+
uv≈w⇒x[uv∙y]≈x∙wy x y = ∙-congˡ (uv≈w⇒u∙vx≈wx y)
51+
52+
uv≈w⇒[x∙yu]v≈x∙yw : x y (x ∙ (y ∙ u)) ∙ v ≈ x ∙ (y ∙ w)
53+
uv≈w⇒[x∙yu]v≈x∙yw x y = trans (assoc x (y ∙ u) v) (∙-congˡ (uv≈w⇒xu∙v≈xw y))
54+
55+
uv≈w⇒[xu∙v]y≈x∙wy : x y ((x ∙ u) ∙ v) ∙ y ≈ x ∙ (w ∙ y)
56+
uv≈w⇒[xu∙v]y≈x∙wy x y = trans (∙-congʳ (uv≈w⇒xu∙v≈xw x)) (assoc x w y)
57+
58+
uv≈w⇒[xy∙u]v≈x∙yw : x y ((x ∙ y) ∙ u) ∙ v ≈ x ∙ (y ∙ w)
59+
uv≈w⇒[xy∙u]v≈x∙yw x y = trans (∙-congʳ (assoc x y u)) (uv≈w⇒[x∙yu]v≈x∙yw x y )
60+
61+
module _ (uv≈w : u ∙ v ≈ w) where
62+
63+
uv≈w⇒xu∙vy≈x∙wy : x y (x ∙ u) ∙ (v ∙ y) ≈ x ∙ (w ∙ y)
64+
uv≈w⇒xu∙vy≈x∙wy x y = uv≈w⇒xu∙v≈xw (uv≈w⇒u∙vx≈wx uv≈w y) x
65+
66+
uv≈w⇒xy≈z⇒u[vx∙y]≈wz : x y x ∙ y ≈ z u ∙ ((v ∙ x) ∙ y) ≈ w ∙ z
67+
uv≈w⇒xy≈z⇒u[vx∙y]≈wz x y xy≈z = trans (∙-congˡ (uv≈w⇒xu∙v≈xw xy≈z v)) (uv≈w⇒u∙vx≈wx uv≈w _)
68+
69+
uv≈w⇒x∙wy≈x∙[u∙vy] : x ∙ (w ∙ y) ≈ x ∙ (u ∙ (v ∙ y))
70+
uv≈w⇒x∙wy≈x∙[u∙vy] = sym (uv≈w⇒x[uv∙y]≈x∙wy uv≈w _ _)
71+
72+
module _ u v w x where
73+
[uv∙w]x≈u[vw∙x] : ((u ∙ v) ∙ w) ∙ x ≈ u ∙ ((v ∙ w) ∙ x)
74+
[uv∙w]x≈u[vw∙x] = uv≈w⇒[xu∙v]y≈x∙wy refl u x
75+
76+
[uv∙w]x≈u[v∙wx] : ((u ∙ v) ∙ w) ∙ x ≈ u ∙ (v ∙ (w ∙ x))
77+
[uv∙w]x≈u[v∙wx] = uv≈w⇒[xy∙u]v≈x∙yw refl u v
78+
79+
[u∙vw]x≈uv∙wx : (u ∙ (v ∙ w)) ∙ x ≈ (u ∙ v) ∙ (w ∙ x)
80+
[u∙vw]x≈uv∙wx = trans (sym (∙-congʳ (assoc u v w))) (assoc (u ∙ v) w x)
81+
82+
[u∙vw]x≈u[v∙wx] : (u ∙ (v ∙ w)) ∙ x ≈ u ∙ (v ∙ (w ∙ x))
83+
[u∙vw]x≈u[v∙wx] = uv≈w⇒[x∙yu]v≈x∙yw refl u v
84+
85+
uv∙wx≈u[vw∙x] : (u ∙ v) ∙ (w ∙ x) ≈ u ∙ ((v ∙ w) ∙ x)
86+
uv∙wx≈u[vw∙x] = uv≈w⇒xu∙vy≈x∙wy refl u x
87+
88+
module _ (uv≈wx : u ∙ v ≈ w ∙ x) where
89+
uv≈wx⇒yu∙v≈yw∙x : y (y ∙ u) ∙ v ≈ (y ∙ w) ∙ x
90+
uv≈wx⇒yu∙v≈yw∙x y = trans (uv≈w⇒xu∙v≈xw uv≈wx y) (sym (assoc y w x))
91+
92+
uv≈wx⇒u∙vy≈w∙xy : y u ∙ (v ∙ y) ≈ w ∙ (x ∙ y)
93+
uv≈wx⇒u∙vy≈w∙xy y = trans (uv≈w⇒u∙vx≈wx uv≈wx y) (assoc w x y)
94+
95+
uv≈wx⇒yu∙vz≈yw∙xz : y z (y ∙ u) ∙ (v ∙ z) ≈ (y ∙ w) ∙ (x ∙ z)
96+
uv≈wx⇒yu∙vz≈yw∙xz y z = trans (uv≈w⇒xu∙v≈xw (uv≈wx⇒u∙vy≈w∙xy z) y) (sym (assoc y w (x ∙ z)))

0 commit comments

Comments
 (0)