changeset 259:b53eedf6dfb1

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 29 May 2022 17:46:47 +0900
parents ea5087692f7e
children 26c0d50e455f
files src/FundamentalHomomorphism.agda
diffstat 1 files changed, 96 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/FundamentalHomomorphism.agda	Sun May 29 12:36:07 2022 +0900
+++ b/src/FundamentalHomomorphism.agda	Sun May 29 17:46:47 2022 +0900
@@ -30,30 +30,83 @@
   field
      sub : Carrier → Carrier 
      subgroup  : IsGroupHomomorphism (Group→Raw G) (Group→Raw G) sub
-     normal : ( g n : Carrier  ) → g ∙  sub n  ≈ sub n ∙ g
+     commute : ( g n : Carrier  ) → g ∙  sub n  ≈ sub n ∙ g
+
+open import Relation.Binary.Morphism.Structures
+
+import Relation.Binary.Reasoning.Setoid as EqReasoning
+
+
+f-cong : (G : Group c l ) → (f :  Group.Carrier G → Group.Carrier G )
+  → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f →  {x y : Group.Carrier G } → (Group._≈_ G) x y → (Group._≈_ G) (f x) (f y)
+f-cong G f homo eq = IsRelHomomorphism.cong ( IsMagmaHomomorphism.isRelHomomorphism
+           ( IsMonoidHomomorphism.isMagmaHomomorphism ( IsGroupHomomorphism.isMonoidHomomorphism homo))) eq
+
+f-homo : (G : Group c l ) → (f :  Group.Carrier G → Group.Carrier G )
+  → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f → (x y : Group.Carrier G )
+  → Group._≈_ G (f ( Group._∙_ G x  y ))  ( Group._∙_ G (f x)  (f y))
+f-homo G f homo = IsMagmaHomomorphism.homo (IsMonoidHomomorphism.isMagmaHomomorphism ( IsGroupHomomorphism.isMonoidHomomorphism homo))
+
+f-ε : (G : Group c l ) → (f :  Group.Carrier G → Group.Carrier G )
+  → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f → Group._≈_  G (f ( Group.ε G )) (Group.ε G)
+f-ε G f homo = IsMonoidHomomorphism.ε-homo ( IsGroupHomomorphism.isMonoidHomomorphism homo)
+
+f-inv : (G : Group c l ) → (f :  Group.Carrier G → Group.Carrier G )
+  → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f → (x : Group.Carrier G) → Group._≈_  G (f ( Group._⁻¹ G x )) (Group._⁻¹ G (f x ))
+f-inv G f homo = IsGroupHomomorphism.⁻¹-homo homo
+
+p01 : (G : Group c l ) → (f :  Group.Carrier G → Group.Carrier G )
+   → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f
+   → IsGroupHomomorphism (Group→Raw G) (Group→Raw G) f
+p01 G f homo = record {
+     isMonoidHomomorphism = record {
+          isMagmaHomomorphism = record {
+             isRelHomomorphism = record { cong = λ {x} {y} eq → p02 x y eq } 
+           ; homo = p03 
+          }
+        ; ε-homo = p04
+       }
+   ; ⁻¹-homo = p05
+ } where
+    open Group G
+    p02 : (x y : Carrier ) → x ≈ y → f x ≈ f y
+    p02 x y =  f-cong G f homo 
+    p03 : (x y : Carrier ) → f ( x ∙ y ) ≈ f x ∙ f y
+    p03 =  f-homo G f homo 
+    p04 : f ( ε ) ≈ ε
+    p04 =  f-ε G f homo 
+    p05 : (x : Carrier) → f ( x ⁻¹ ) ≈ (f x ) ⁻¹
+    p05 = f-inv G f homo
+
 
 data Coset (G : Group c l)  (K : NormalSubGroup G) :  Group.Carrier G → Set ( c  Level.⊔  l ) where
     coset : (a b : Group.Carrier G ) → Coset G K ( Group._∙_ G a (NormalSubGroup.sub K b) )
-    cscong : {a b : Group.Carrier G } → Group._≈_ G a b → Coset G K a → Coset G K b
+    cscong : {a b : Group.Carrier G } → Group._≈_ G (NormalSubGroup.sub K a) (NormalSubGroup.sub K b) → Coset G K a → Coset G K b
 
 record CosetCarrier (G : Group c l)  (K : NormalSubGroup G) :  Set ( c  Level.⊔  l ) where  
   field
     r :  Group.Carrier G
     isCoset : Coset G K r
 
+open CosetCarrier 
+open NormalSubGroup 
+
 φ :   {G : Group c l} →  {K : NormalSubGroup G} → Group.Carrier G → CosetCarrier G K
-φ {G} {K} x = record { r = NormalSubGroup.sub K x ; isCoset = p1 } where
-   p1 :  Coset G K (NormalSubGroup.sub K x)
-   p1 = cscong (proj₁ (Group.identity G) (NormalSubGroup.sub K x ) ) (coset (Group.ε G) x )
+φ {G} {K} x = record { r = sub K x ; isCoset = p1 } where
+   open Group G
+   p1 :  Coset G K (sub K x)
+   p1 = cscong 
+     (f-cong G (sub K) (subgroup K) (proj₁ (Group.identity G) (NormalSubGroup.sub K x ) ) )
+     (coset (Group.ε G) x )
 
 -- G / K : Quotient
 _/_ : (G : Group c l)  (K : NormalSubGroup G) → Group ( c  Level.⊔  l ) l
 G / K = record {
      Carrier        = CosetCarrier G K
-     ; _≈_          = λ x y → r x ≈ r y
-     ; _∙_          = λ x y → record { r =  r x ∙ r y ; isCoset = ? }
-     ; ε            = record { r =  ε ; isCoset = {!!} }
-     ; _⁻¹          = λ x → record { r = (r x) ⁻¹  ; isCoset = {!!} }
+     ; _≈_          = λ x y → sub K (r x) ≈ sub K (r y)
+     ; _∙_          = λ x y → record { r =  r x ∙ r y ; isCoset = q01 x y }
+     ; ε            = record { r =  ε ; isCoset = cscong {!!} (coset ε  ε) }
+     ; _⁻¹          = λ x → record { r = (r x) ⁻¹  ; isCoset = cscong {!!} ( coset ε ((r x) ⁻¹ )) }
      ; isGroup = record { isMonoid  = record { isSemigroup = record { isMagma = record {
        isEquivalence = {!!}
        ; ∙-cong = {!!} }
@@ -64,7 +117,20 @@
       } 
    } where 
       open Group G
-      open CosetCarrier 
+      open EqReasoning (Algebra.Group.setoid G)
+      q01 : (x y : CosetCarrier G K ) → Coset G K (r x ∙ r y)
+      q01 x y with isCoset x | isCoset y
+      ... | coset a b | coset c d = cscong q02 ( coset (a ∙ c) (b ∙ d) ) where
+          q02 : sub K (a ∙ c ∙ sub K (b ∙ d)) ≈ sub K (a ∙ sub K b ∙ (c ∙ sub K d))
+          q02 = f-cong G (sub K) (subgroup K) ( begin
+             a ∙ c ∙ sub K (b ∙ d)  ≈⟨ {!!} ⟩
+             a ∙ c ∙ (sub K b ∙ sub K d)  ≈⟨ {!!} ⟩
+             a ∙ (c ∙ sub K b ) ∙ sub K d  ≈⟨ {!!} ⟩
+             a ∙ (sub K b ∙ c ) ∙ sub K d  ≈⟨ {!!} ⟩
+             a ∙ sub K b ∙ (c ∙ sub K d)  ∎  )
+      ... | coset a b | cscong eq x = {!!}
+      ... | cscong eq x | coset a b = {!!}
+      ... | cscong eqx x | cscong eqy y = {!!}
 
 -- K ⊂ ker(f)
 K⊆ker : (G H : Group c l)  (K : NormalSubGroup G) (f : Group.Carrier G → Group.Carrier H ) → Set ( c  Level.⊔  l ) 
@@ -79,13 +145,31 @@
   field
     h : K⊆ker G H K f → CosetCarrier G K → Group.Carrier H
     h-homo : (kf : K⊆ker G H K f ) → IsGroupHomomorphism (Group→Raw (G / K) ) (Group→Raw H) (h kf)
-    uniqune : (kf : K⊆ker G H K f ) → (x : Group.Carrier G)  →  f x ≈ h kf ( φ x )
+    unique : (kf : K⊆ker G H K f ) → (x : Group.Carrier G)  →  f x ≈ h kf ( φ x )
 
 FundamentalHomomorphismTheorm : (G H : Group c l)
     (f : Group.Carrier G → Group.Carrier H )
     (homo : IsGroupHomomorphism (Group→Raw G) (Group→Raw H) f )
     (K : NormalSubGroup G ) → FundamentalHomomorphism G H f homo K
-FundamentalHomomorphismTheorm G H f homo K = {!!}
+FundamentalHomomorphismTheorm G H f homo K = record {
+     h = h
+   ; h-homo = h-homo
+   ; unique = unique
+  } where
+    open Group H
+    h : K⊆ker G H K f → CosetCarrier G K → Group.Carrier H
+    h kf r = {!!}
+    h-homo : (kf : K⊆ker G H K f ) → IsGroupHomomorphism (Group→Raw (G / K) ) (Group→Raw H) (h kf)
+    h-homo kf = record {
+     isMonoidHomomorphism = record {
+          isMagmaHomomorphism = record {
+             isRelHomomorphism = record { cong = λ {x} {y} eq → ? } 
+           ; homo = ? }
+        ; ε-homo = ? }
+       ; ⁻¹-homo = ? }
+    unique : (kf : K⊆ker G H K f ) → (x : Group.Carrier G)  →  f x ≈ h kf ( φ x )
+    unique kf x = {!!}
 
 
 
+