Skip to content

Commit 880933d

Browse files
committed
Intersection of ideals
1 parent 886bbae commit 880933d

File tree

2 files changed

+144
-0
lines changed

2 files changed

+144
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
------------------------------------------------------------------------
2+
-- Intersection of ideals
3+
--
4+
-- The Agda standard library
5+
------------------------------------------------------------------------
6+
7+
{-# OPTIONS --safe --cubical-compatible #-}
8+
9+
open import Algebra.Bundles
10+
11+
module Algebra.Ideal.Construct.Intersection {c ℓ} (R : Ring c ℓ) where
12+
13+
open Ring R
14+
15+
open import Algebra.NormalSubgroup
16+
import Algebra.NormalSubgroup.Construct.Intersection +-group as NS
17+
open import Algebra.Ideal R
18+
open import Data.Product.Base
19+
open import Function.Base
20+
open import Level
21+
open import Relation.Binary.Reasoning.Setoid setoid
22+
23+
_∩_ : {c₁ ℓ₁ c₂ ℓ₂} Ideal c₁ ℓ₁ Ideal c₂ ℓ₂ Ideal (ℓ ⊔ c₁ ⊔ c₂) ℓ₁
24+
I ∩ J = record
25+
{ I = record
26+
{ Carrierᴹ = NSI.N.Carrier
27+
; _≈ᴹ_ = NSI.N._≈_
28+
; _+ᴹ_ = NSI.N._∙_
29+
; _*ₗ_ = λ r ((i , j) , p) record
30+
{ fst = r I.I.*ₗ i , r J.I.*ₗ j
31+
; snd = begin
32+
I.ι (r I.I.*ₗ i) ≈⟨ I.ι.*ₗ-homo r i ⟩
33+
r * I.ι i ≈⟨ *-congˡ p ⟩
34+
r * J.ι j ≈⟨ J.ι.*ₗ-homo r j ⟨
35+
J.ι (r J.I.*ₗ j) ∎
36+
}
37+
; _*ᵣ_ = λ ((i , j) , p) r record
38+
{ fst = i I.I.*ᵣ r , j J.I.*ᵣ r
39+
; snd = begin
40+
I.ι (i I.I.*ᵣ r) ≈⟨ I.ι.*ᵣ-homo r i ⟩
41+
I.ι i * r ≈⟨ *-congʳ p ⟩
42+
J.ι j * r ≈⟨ J.ι.*ᵣ-homo r j ⟨
43+
J.ι (j J.I.*ᵣ r) ∎
44+
}
45+
; 0ᴹ = NSI.N.ε
46+
; -ᴹ_ = NSI.N._⁻¹
47+
}
48+
; ι = NSI.ι
49+
; ι-monomorphism = record
50+
{ isModuleHomomorphism = record
51+
{ isBimoduleHomomorphism = record
52+
{ +ᴹ-isGroupHomomorphism = NSI.ι.isGroupHomomorphism
53+
; *ₗ-homo = λ r ((i , _) , _) I.ι.*ₗ-homo r i
54+
; *ᵣ-homo = λ r ((i , _) , _) I.ι.*ᵣ-homo r i
55+
}
56+
}
57+
; injective = λ p I.ι.injective p
58+
}
59+
}
60+
where
61+
module I = Ideal I
62+
module J = Ideal J
63+
module NSI = NormalSubgroup (I.normalSubgroup NS.∩ J.normalSubgroup)
64+
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
------------------------------------------------------------------------
2+
-- Intersection of normal subgroups
3+
--
4+
-- The Agda standard library
5+
------------------------------------------------------------------------
6+
7+
{-# OPTIONS --safe --cubical-compatible #-}
8+
9+
open import Algebra.Bundles
10+
11+
module Algebra.NormalSubgroup.Construct.Intersection {c ℓ} (G : Group c ℓ) where
12+
13+
open Group G
14+
15+
open import Algebra.NormalSubgroup G
16+
open import Data.Product.Base
17+
open import Function.Base
18+
open import Level
19+
open import Relation.Binary.Reasoning.Setoid setoid
20+
21+
_∩_ : {c₁ ℓ₁ c₂ ℓ₂} NormalSubgroup c₁ ℓ₁ NormalSubgroup c₂ ℓ₂ NormalSubgroup (ℓ ⊔ c₁ ⊔ c₂) ℓ₁
22+
N ∩ M = record
23+
{ N = record
24+
{ Carrier = Σ[ (a , b) ∈ N.N.Carrier × M.N.Carrier ] N.ι a ≈ M.ι b
25+
; _≈_ = N.N._≈_ on proj₁ on proj₁
26+
; _∙_ = λ ((xₙ , xₘ) , p) ((yₙ , yₘ) , q) record
27+
{ fst = xₙ N.N.∙ yₙ , xₘ M.N.∙ yₘ
28+
; snd = begin
29+
N.ι (xₙ N.N.∙ yₙ) ≈⟨ N.ι.∙-homo xₙ yₙ ⟩
30+
N.ι xₙ ∙ N.ι yₙ ≈⟨ ∙-cong p q ⟩
31+
M.ι xₘ ∙ M.ι yₘ ≈⟨ M.ι.∙-homo xₘ yₘ ⟨
32+
M.ι (xₘ M.N.∙ yₘ) ∎
33+
}
34+
; ε = record
35+
{ fst = N.N.ε , M.N.ε
36+
; snd = begin
37+
N.ι N.N.ε ≈⟨ N.ι.ε-homo ⟩
38+
ε ≈⟨ M.ι.ε-homo ⟨
39+
M.ι M.N.ε ∎
40+
}
41+
; _⁻¹ = λ ((n , m) , p) record
42+
{ fst = n N.N.⁻¹ , m M.N.⁻¹
43+
; snd = begin
44+
N.ι (n N.N.⁻¹) ≈⟨ N.ι.⁻¹-homo n ⟩
45+
N.ι n ⁻¹ ≈⟨ ⁻¹-cong p ⟩
46+
M.ι m ⁻¹ ≈⟨ M.ι.⁻¹-homo m ⟨
47+
M.ι (m M.N.⁻¹) ∎
48+
}
49+
}
50+
; ι = λ ((n , _) , _) N.ι n
51+
; ι-monomorphism = record
52+
{ isGroupHomomorphism = record
53+
{ isMonoidHomomorphism = record
54+
{ isMagmaHomomorphism = record
55+
{ isRelHomomorphism = record
56+
{ cong = N.ι.⟦⟧-cong
57+
}
58+
; homo = λ ((x , _) , _) ((y , _) , _) N.ι.∙-homo x y
59+
}
60+
; ε-homo = N.ι.ε-homo
61+
}
62+
; ⁻¹-homo = λ ((x , _) , _) N.ι.⁻¹-homo x
63+
}
64+
; injective = λ p N.ι.injective p
65+
}
66+
; normal = λ ((n , m) , p) g record
67+
{ fst = record
68+
{ fst = proj₁ (N.normal n g) , proj₁ (M.normal m g)
69+
; snd = begin
70+
N.ι (proj₁ (N.normal n g)) ≈⟨ proj₂ (N.normal n g) ⟨
71+
g ∙ N.ι n ∙ g ⁻¹ ≈⟨ ∙-congʳ (∙-cong refl p) ⟩
72+
g ∙ M.ι m ∙ g ⁻¹ ≈⟨ proj₂ (M.normal m g) ⟩
73+
M.ι (proj₁ (M.normal m g)) ∎
74+
}
75+
; snd = proj₂ (N.normal n g)
76+
}
77+
}
78+
where
79+
module N = NormalSubgroup N
80+
module M = NormalSubgroup M

0 commit comments

Comments
 (0)