Skip to content

Commit 9f7db10

Browse files
committed
Try new definition for equivalences
1 parent a4f934d commit 9f7db10

File tree

5 files changed

+54
-77
lines changed

5 files changed

+54
-77
lines changed

src/Algebra/Construct/Quotient/Group.agda

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,26 @@ open NormalSubgroup N
2929
infix 0 _by_
3030

3131
data _≋_ (x y : Carrier) : Set (c ⊔ ℓ ⊔ c′) where
32-
_by_ : g x // y ≈ ι g x ≋ y
32+
_by_ : g ι g ∙ x ≈ y x ≋ y
3333

3434
≋-refl : Reflexive _≋_
35-
≋-refl {x} = N.ε by begin
36-
x // x ≈⟨ inverseʳ x ⟩
37-
ε ≈⟨ ι.ε-homo ⟨
38-
ι N.ε ∎
35+
≋-refl {x} = N.ε by trans (∙-congʳ ι.ε-homo) (identityˡ x)
3936

4037
≋-sym : Symmetric _≋_
41-
≋-sym {x} {y} (g by x//y≈ιg) = g N.⁻¹ by begin
42-
y // x ≈⟨ ⁻¹-anti-homo-// x y ⟨
43-
(x // y) ⁻¹ ≈⟨ ⁻¹-cong x//y≈ιg ⟩
44-
ι g ⁻¹ ≈⟨ ι.⁻¹-homo g ⟨
45-
ι (g N.⁻¹) ∎
46-
38+
≋-sym {x} {y} (g by ιg∙x≈y) = g N.⁻¹ by begin
39+
ι (g N.⁻¹) ∙ y ≈⟨ ∙-cong (ι.⁻¹-homo g) (sym ιg∙x≈y) ⟩
40+
ι g ⁻¹ ∙ (ι g ∙ x) ≈⟨ assoc (ι g ⁻¹) (ι g) x ⟨
41+
(ι g ⁻¹ ∙ ι g) ∙ x ≈⟨ ∙-congʳ (inverseˡ (ι g)) ⟩
42+
ε ∙ x ≈⟨ identityˡ x ⟩
43+
x ∎
4744

4845
≋-trans : Transitive _≋_
49-
≋-trans {x} {y} {z} (g by x//y≈ιg) (h by y//z≈ιh) = g N.∙ h by begin
50-
x // z ≈⟨ ∙-congʳ (identityʳ x) ⟨
51-
x ∙ ε // z ≈⟨ ∙-congʳ (∙-congˡ (inverseˡ y)) ⟨
52-
x ∙ (y \\ y) // z ≈⟨ ∙-congʳ (assoc x (y ⁻¹) y) ⟨
53-
(x // y) ∙ y // z ≈⟨ assoc (x // y) y (z ⁻¹) ⟩
54-
(x // y) ∙ (y // z) ≈⟨ ∙-cong x//y≈ιg y//z≈ιh ⟩
55-
ι g ∙ ι h ≈⟨ ι.∙-homo g h ⟨
56-
ι (g N.∙ h) ∎
46+
≋-trans {x} {y} {z} (g by ιg∙x) (h by ιh∙y) = h N.∙ g by begin
47+
ι (h N.∙ g) ∙ x ≈⟨ ∙-congʳ (ι.∙-homo h g) ⟩
48+
(ι h ∙ ι g) ∙ x ≈⟨ assoc (ι h) (ι g) x ⟩
49+
ι h ∙ (ι g ∙ x) ≈⟨ ∙-congˡ ιg∙x ⟩
50+
ι h ∙ y ≈⟨ ιh∙y ⟩
51+
z ∎
5752

5853
≋-isEquivalence : IsEquivalence _≋_
5954
≋-isEquivalence = record
@@ -63,38 +58,39 @@ data _≋_ (x y : Carrier) : Set (c ⊔ ℓ ⊔ c′) where
6358
}
6459

6560
≈⇒≋ : _≈_ ⇒ _≋_
66-
≈⇒≋ {x} {y} x≈y = N.ε by begin
67-
x // y ≈⟨ x≈y⇒x∙y⁻¹≈ε x≈y ⟩
68-
ε ≈⟨ ι.ε-homo ⟨
69-
ι N.ε ∎
61+
≈⇒≋ {x} {y} x≈y = N.ε by trans (∙-cong ι.ε-homo x≈y) (identityˡ y)
7062

7163
open AlgDefs _≋_
7264

7365
≋-∙-cong : Congruent₂ _∙_
74-
≋-∙-cong {x} {y} {u} {v} (g by x//y≈ιg) (h by u//v≈ιh) = g N.∙ normal h y .proj₁ by begin
75-
x ∙ u // y ∙ v ≈⟨ ∙-congˡ (⁻¹-anti-homo-∙ y v) ⟩
76-
x ∙ u ∙ (v ⁻¹ ∙ y ⁻¹) ≈⟨ assoc (x ∙ u) (v ⁻¹) (y ⁻¹) ⟨
77-
(x ∙ u // v) // y ≈⟨ ∙-congʳ (assoc x u (v ⁻¹)) ⟩
78-
x ∙ (u // v) // y ≈⟨ ∙-congʳ (∙-congˡ u//v≈ιh) ⟩
79-
x ∙ ι h // y ≈⟨ ∙-congʳ (∙-congˡ (identityˡ (ι h))) ⟨
80-
x ∙ (ε ∙ ι h) // y ≈⟨ ∙-congʳ (∙-congˡ (∙-congʳ (inverseˡ y))) ⟨
81-
x ∙ ((y \\ y) ∙ ι h) // y ≈⟨ ∙-congʳ (∙-congˡ (assoc (y ⁻¹) y (ι h))) ⟩
82-
x ∙ (y \\ y ∙ ι h) // y ≈⟨ ∙-congʳ (assoc x (y ⁻¹) (y ∙ ι h)) ⟨
83-
(x // y) ∙ (y ∙ ι h) // y ≈⟨ assoc (x // y) (y ∙ ι h) (y ⁻¹) ⟩
84-
(x // y) ∙ (y ∙ ι h // y) ≈⟨ ∙-cong x//y≈ιg (proj₂ (normal h y)) ⟩
85-
ι g ∙ ι (normal h y .proj₁) ≈⟨ ι.∙-homo g (normal h y .proj₁) ⟨
86-
ι (g N.∙ normal h y .proj₁) ∎
66+
≋-∙-cong {x} {y} {u} {v} (g by ιg∙x≈y) (h by ιh∙u≈v) = g N.∙ h′ by begin
67+
ι (g N.∙ h′) ∙ (x ∙ u) ≈⟨ ∙-congʳ (ι.∙-homo g h′) ⟩
68+
(ι g ∙ ι h′) ∙ (x ∙ u) ≈⟨ assoc (ι g) (ι h′) (x ∙ u) ⟩
69+
ι g ∙ (ι h′ ∙ (x ∙ u)) ≈⟨ ∙-congˡ (assoc (ι h′) x u) ⟨
70+
ι g ∙ ((ι h′ ∙ x) ∙ u) ≈⟨ ∙-congˡ (∙-congʳ x∙ιh≈ιh′∙x) ⟨
71+
ι g ∙ ((x ∙ ι h) ∙ u) ≈⟨ ∙-congˡ (assoc x (ι h) u) ⟩
72+
ι g ∙ (x ∙ (ι h ∙ u)) ≈⟨ assoc (ι g) x (ι h ∙ u) ⟨
73+
(ι g ∙ x) ∙ (ι h ∙ u) ≈⟨ ∙-cong ιg∙x≈y ιh∙u≈v ⟩
74+
y ∙ v ∎
75+
where
76+
h′ : N.Carrier
77+
h′ = normal h x .proj₁
78+
x∙ιh≈ιh′∙x : x ∙ ι h ≈ ι h′ ∙ x
79+
x∙ιh≈ιh′∙x = normal h x .proj₂
80+
8781

8882
≋-⁻¹-cong : Congruent₁ _⁻¹
89-
≋-⁻¹-cong {x} {y} (g by x//y≈ιg) = normal (g N.⁻¹) (y ⁻¹) .proj₁ by begin
90-
x ⁻¹ ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (identityˡ (x ⁻¹)) ⟨
91-
(ε ∙ x ⁻¹) ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (∙-congʳ (inverseʳ (y ⁻¹))) ⟨
92-
((y ⁻¹ ∙ y ⁻¹ ⁻¹) ∙ x ⁻¹) ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (assoc (y ⁻¹) ((y ⁻¹) ⁻¹) (x ⁻¹)) ⟩
93-
y ⁻¹ ∙ (y ⁻¹ ⁻¹ ∙ x ⁻¹) ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (∙-congˡ (⁻¹-anti-homo-∙ x (y ⁻¹))) ⟨
94-
y ⁻¹ ∙ (x ∙ y ⁻¹) ⁻¹ ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (∙-congˡ (⁻¹-cong x//y≈ιg)) ⟩
95-
y ⁻¹ ∙ ι g ⁻¹ ∙ y ⁻¹ ⁻¹ ≈⟨ ∙-congʳ (∙-congˡ (ι.⁻¹-homo g)) ⟨
96-
y ⁻¹ ∙ ι (g N.⁻¹) ∙ y ⁻¹ ⁻¹ ≈⟨ proj₂ (normal (g N.⁻¹) (y ⁻¹)) ⟩
97-
ι (normal (g N.⁻¹) (y ⁻¹) .proj₁) ∎
83+
≋-⁻¹-cong {x} {y} (g by ιg∙x≈y) = g′ by begin
84+
ι g′ ∙ x ⁻¹ ≈⟨ x⁻¹∙ιg⁻¹≈ιg′∙x⁻¹ ⟨
85+
x ⁻¹ ∙ ι (g N.⁻¹) ≈⟨ ∙-congˡ (ι.⁻¹-homo g) ⟩
86+
x ⁻¹ ∙ ι g ⁻¹ ≈⟨ ⁻¹-anti-homo-∙ (ι g) x ⟨
87+
(ι g ∙ x) ⁻¹ ≈⟨ ⁻¹-cong ιg∙x≈y ⟩
88+
y ⁻¹ ∎
89+
where
90+
g′ : N.Carrier
91+
g′ = normal (g N.⁻¹) (x ⁻¹) .proj₁
92+
x⁻¹∙ιg⁻¹≈ιg′∙x⁻¹ : x ⁻¹ ∙ ι (g N.⁻¹) ≈ ι g′ ∙ x ⁻¹
93+
x⁻¹∙ιg⁻¹≈ιg′∙x⁻¹ = normal (g N.⁻¹) (x ⁻¹) .proj₂
9894

9995
quotientIsGroup : IsGroup _≋_ _∙_ ε _⁻¹
10096
quotientIsGroup = record

src/Algebra/Construct/Quotient/Ring.agda

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,20 @@ open import Algebra.Construct.Quotient.Group +-group normalSubgroup public
1919
renaming (≋-∙-cong to ≋-+-cong; ≋-⁻¹-cong to ≋‿-‿cong)
2020

2121
open import Algebra.Definitions _≋_
22+
open import Algebra.Properties.Semiring semiring
2223
open import Algebra.Properties.Ring R
2324
open import Algebra.Structures
2425
open import Level
2526
open import Relation.Binary.Reasoning.Setoid setoid
2627

2728
≋-*-cong : Congruent₂ _*_
28-
≋-*-cong {x} {y} {u} {v} (j by x-y≈ιj) (k by u-v≈ιk) = j I.*ᵣ u I.+ᴹ y I.*ₗ k by begin
29-
x * u - y * v ≈⟨ +-congʳ (+-identityʳ (x * u)) ⟨
30-
x * u + 0# - y * v ≈⟨ +-congʳ (+-congˡ (-‿inverseˡ (y * u))) ⟨
31-
x * u + (- (y * u) + y * u) - y * v ≈⟨ +-congʳ (+-assoc (x * u) (- (y * u)) (y * u)) ⟨
32-
((x * u - y * u) + y * u) - y * v ≈⟨ +-assoc (x * u - y * u) (y * u) (- (y * v)) ⟩
33-
(x * u - y * u) + (y * u - y * v) ≈⟨ +-cong ([y-z]x≈yx-zx u x y) (x[y-z]≈xy-xz y u v) ⟨
34-
(x - y) * u + y * (u - v) ≈⟨ +-cong (*-congʳ x-y≈ιj) (*-congˡ u-v≈ιk) ⟩
35-
ι j * u + y * ι k ≈⟨ +-cong (ι.*ᵣ-homo u j) (ι.*ₗ-homo y k) ⟨
36-
ι (j I.*ᵣ u) + ι (y I.*ₗ k) ≈⟨ ι.+ᴹ-homo (j I.*ᵣ u) (y I.*ₗ k) ⟨
37-
ι (j I.*ᵣ u I.+ᴹ y I.*ₗ k) ∎
29+
≋-*-cong {x} {y} {u} {v} (j by ιj+x≈y) (k by ιk+u≈v) = ι j I.*ₗ k I.+ᴹ j I.*ᵣ u I.+ᴹ x I.*ₗ k by begin
30+
ι (ι j I.*ₗ k I.+ᴹ j I.*ᵣ u I.+ᴹ x I.*ₗ k) + x * u ≈⟨ +-congʳ (ι.+ᴹ-homo (ι j I.*ₗ k I.+ᴹ j I.*ᵣ u) (x I.*ₗ k)) ⟩
31+
ι (ι j I.*ₗ k I.+ᴹ j I.*ᵣ u) + ι (x I.*ₗ k) + x * u ≈⟨ +-congʳ (+-congʳ (ι.+ᴹ-homo (ι j I.*ₗ k) (j I.*ᵣ u))) ⟩
32+
ι (ι j I.*ₗ k) + ι (j I.*ᵣ u) + ι (x I.*ₗ k) + x * u ≈⟨ +-congʳ (+-cong (+-cong (ι.*ₗ-homo (ι j) k) (ι.*ᵣ-homo u j)) (ι.*ₗ-homo x k)) ⟩
33+
ι j * ι k + ι j * u + x * ι k + x * u ≈⟨ binomial-expansion (ι j) x (ι k) u ⟨
34+
(ι j + x) * (ι k + u) ≈⟨ *-cong ιj+x≈y ιk+u≈v ⟩
35+
y * v ∎
3836

3937
quotientRawRing : RawRing c (c ⊔ ℓ ⊔ c′)
4038
quotientRawRing = record

src/Algebra/Ideal.agda

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,7 @@ record Ideal c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) where
3636
; ι-monomorphism = ι.+ᴹ-isGroupMonomorphism
3737
; normal = λ n g record
3838
{ fst = n
39-
; snd = begin
40-
g + ι n - g ≈⟨ +-assoc g (ι n) (- g) ⟩
41-
g + (ι n - g) ≈⟨ +-congˡ (+-comm (ι n) (- g)) ⟩
42-
g + (- g + ι n) ≈⟨ +-assoc g (- g) (ι n) ⟨
43-
g - g + ι n ≈⟨ +-congʳ (-‿inverseʳ g) ⟩
44-
0# + ι n ≈⟨ +-identityˡ (ι n) ⟩
45-
ι n ∎
39+
-- this ends up a lot simpler now
40+
; snd = +-comm g (ι n)
4641
}
4742
}

src/Algebra/NormalSubgroup.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ record NormalSubgroup c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) wh
2525
ι : RawGroup.Carrier N Carrier
2626
ι-monomorphism : IsGroupMonomorphism N rawGroup ι
2727
-- every element of N commutes in G
28-
normal : n g ∃[ n′ ] g ∙ ι n ∙ g ⁻¹ ≈ ι n′
28+
normal : n g ∃[ n′ ] g ∙ ι n ≈ ι n′ ∙ g
2929

3030
module N = RawGroup N
3131
module ι = IsGroupMonomorphism ι-monomorphism

src/Data/Integer/ModularArithmetic.agda

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,8 @@ module _ .{{_ : NonZero m}} where
3838

3939
from-% : {x y} x % m ≡ y % m x ≋ y
4040
from-% {x} {y} x%m≡y%m = x / m - y / m by begin
41-
x - y ≡⟨ ≡.cong₂ _-_ (a≡a%n+[a/n]*n x m) (a≡a%n+[a/n]*n y m) ⟩
42-
(+ (x % m) + (x / m) * m) - (+ (y % m) + (y / m) * m) ≡⟨ ≡.cong (λ z (+ (x % m) + (x / m) * m) + z) (neg-distrib-+ (+ (y % m)) ((y / m) * m)) ⟩
43-
(+ (x % m) + (x / m) * m) + (- + (y % m) - (y / m) * m) ≡⟨ +-assoc (+ (x % m) + (x / m) * m) (- + (y % m)) (- ((y / m) * m)) ⟨
44-
((+ (x % m) + (x / m) * m) - + (y % m)) - (y / m) * m ≡⟨ ≡.cong (λ z z - (y / m) * m) (+-assoc (+ (x % m)) ((x / m) * m) (- + (y % m))) ⟩
45-
(+ (x % m) + ((x / m) * m - + (y % m))) - (y / m) * m ≡⟨ ≡.cong (λ z (+ (x % m) + z) - (y / m) * m) (+-comm ((x / m) * m) (- + (y % m))) ⟩
46-
(+ (x % m) + (- + (y % m) + (x / m) * m)) - (y / m) * m ≡⟨ ≡.cong (λ z z - (y / m) * m) (+-assoc (+ (x % m)) (- + (y % m)) ((x / m) * m)) ⟨
47-
((+ (x % m) - + (y % m)) + (x / m) * m) - (y / m) * m ≡⟨ +-assoc (+ (x % m) - + (y % m)) ((x / m) * m) (- ((y / m) * m)) ⟩
48-
(+ (x % m) - + (y % m)) + ((x / m) * m - (y / m) * m) ≡⟨ ≡.cong₂ (λ a b (+ a - + (y % m)) + ((x / m) * m + b)) x%m≡y%m (neg-distribˡ-* (y / m) m) ⟩
49-
(+ (y % m) - + (y % m)) + ((x / m) * m + - (y / m) * m) ≡⟨ ≡.cong₂ _+_ (+-inverseʳ (+ (y % m))) (≡.sym (*-distribʳ-+ m (x / m) (- (y / m)))) ⟩
50-
0ℤ + (x / m - y / m) * m ≡⟨ +-identityˡ ((x / m - y / m) * m) ⟩
51-
(x / m - y / m) * m ∎
41+
(x / m - y / m) * m + x ≡⟨ {!!}
42+
y ∎
5243
where open ≡-Reasoning
5344

5445
to-% : {x y} x ≋ y x % m ≡ y % m
@@ -91,6 +82,3 @@ _≋?_ : Decidable _≋_
9182
_≋?_ with ℕ.nonZero? ∣ m ∣
9283
... | yes p = _≋?′_ {{p}}
9384
... | no ¬p = {!!}
94-
95-
96-

0 commit comments

Comments
 (0)