Mercurial > hg > Members > kono > Proof > galois
changeset 258:ea5087692f7e
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 29 May 2022 12:36:07 +0900 |
parents | d500309866da |
children | b53eedf6dfb1 |
files | src/FundamentalHomomorphism.agda src/fundamental.agda |
diffstat | 2 files changed, 91 insertions(+), 82 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/FundamentalHomomorphism.agda Sun May 29 12:36:07 2022 +0900 @@ -0,0 +1,91 @@ +-- fundamental homomorphism theorem +-- + +open import Level hiding ( suc ; zero ) +module FundamentalHomomorphism (c l : Level) where + +open import Algebra +open import Algebra.Structures +open import Algebra.Definitions +open import Data.Product +-- open import Function hiding (id ; flip) +-- open import Function.Inverse as Inverse using (_↔_; Inverse; _InverseOf_) +-- open import Function.LeftInverse using ( _LeftInverseOf_ ) +-- open import Function.Equality using (Π) +open import Relation.Binary.PropositionalEquality +open import Algebra.Morphism.Structures +open GroupMorphisms + +Group→Raw : {c l : Level } → Group c l → RawGroup c l +Group→Raw G = record { + Carrier = Carrier G + ; _≈_ = _≈_ G + ; _∙_ = _∙_ G + ; ε = ε G + ; _⁻¹ = _⁻¹ G + } where open Group + +record NormalSubGroup ( G : Group c l ) : Set ( c Level.⊔ l ) where + open Group G + field + sub : Carrier → Carrier + subgroup : IsGroupHomomorphism (Group→Raw G) (Group→Raw G) sub + normal : ( g n : Carrier ) → g ∙ sub n ≈ sub n ∙ g + +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 + +record CosetCarrier (G : Group c l) (K : NormalSubGroup G) : Set ( c Level.⊔ l ) where + field + r : Group.Carrier G + isCoset : Coset G K r + +φ : {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 : 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 = {!!} } + ; isGroup = record { isMonoid = record { isSemigroup = record { isMagma = record { + isEquivalence = {!!} + ; ∙-cong = {!!} } + ; assoc = {!!} } + ; identity = {!!} } + ; inverse = {!!} + ; ⁻¹-cong = {!!} + } + } where + open Group G + open CosetCarrier + +-- K ⊂ ker(f) +K⊆ker : (G H : Group c l) (K : NormalSubGroup G) (f : Group.Carrier G → Group.Carrier H ) → Set ( c Level.⊔ l ) +K⊆ker G H K f = (k : CosetCarrier G K ) → f (CosetCarrier.r k ) ≈ ε where + open Group H + +record FundamentalHomomorphism (G H : Group c l) + (f : Group.Carrier G → Group.Carrier H ) + (homo : IsGroupHomomorphism (Group→Raw G) (Group→Raw H) f ) + (K : NormalSubGroup G ) : Set ( c Level.⊔ l ) where + open Group H + 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 ) + +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 = {!!} + + +
--- a/src/fundamental.agda Sun May 29 10:09:02 2022 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ --- fundamental homomorphism theorem --- - -open import Level hiding ( suc ; zero ) -module fundamental (c l : Level) where - -open import Algebra -open import Algebra.Structures -open import Algebra.Definitions -open import Data.Product --- open import Function hiding (id ; flip) --- open import Function.Inverse as Inverse using (_↔_; Inverse; _InverseOf_) --- open import Function.LeftInverse using ( _LeftInverseOf_ ) --- open import Function.Equality using (Π) -open import Relation.Binary.PropositionalEquality -open import Algebra.Morphism.Structures -open GroupMorphisms - -Group→Raw : Group c l → RawGroup c l -Group→Raw G = record { - Carrier = Carrier G - ; _≈_ = _≈_ G - ; _∙_ = _∙_ G - ; ε = ε G - ; _⁻¹ = _⁻¹ G - } where open Group - --- record Kernel {G H : Group } (f : Carrier G → Carrier H ) : Set ( c Level.⊔ l ) where --- field --- kernel : Carrier H → Carrier G --- isKernel : (x : Carrier H ) → kernel x ∙ - -record NormalSubGroup ( G : Group c l ) : Set ( c Level.⊔ l ) where - open Group G - field - sub : Carrier → Carrier - subgroup : IsGroupHomomorphism (Group→Raw G) (Group→Raw G) sub - normal : ( g n : Carrier ) → g ∙ sub n ≈ sub n ∙ g - --- open RawGroup G₁ renaming --- (Carrier to A; _≈_ to _≈₁_; _∙_ to _∙_; _⁻¹ to _⁻¹₁; ε to ε₁) --- open RawGroup G₂ renaming --- (Carrier to B; _≈_ to _≈₂_; _∙_ to _◦_; _⁻¹ to _⁻¹₂; ε to ε₂) - -data Coset (G : Group c l) (NS : NormalSubGroup G) : Group.Carrier G → Set c where - coset : (a b : Group.Carrier G ) → Coset G NS ( Group._∙_ G a (NormalSubGroup.sub NS b) ) - -record CosetCarrier (G : Group c l) (NS : NormalSubGroup G) : Set ( c Level.⊔ l ) where - field - r : Group.Carrier G - isCoset : Coset G NS r - -φ : {G : Group c l} → {NS : NormalSubGroup G} → Group.Carrier G → CosetCarrier G NS -φ {G} {NS} x = record { r = NormalSubGroup.sub NS x ; isCoset = p1 } where - p1 : Coset G NS (NormalSubGroup.sub NS x) - p1 = subst (λ k → Coset G NS k ) {!!} (coset {!!} {!!} ) - -Quotient : (G : Group c l) (NS : NormalSubGroup G) → Group ( c Level.⊔ l ) l -Quotient G NS = record { - Carrier = CosetCarrier G NS - ; _≈_ = {!!} - ; _∙_ = {!!} - ; ε = {!!} - ; _⁻¹ = {!!} - ; isGroup = record { isMonoid = record { isSemigroup = record { isMagma = record { - isEquivalence = {!!} - ; ∙-cong = {!!} } - ; assoc = {!!} } - ; identity = {!!} } - ; inverse = {!!} - ; ⁻¹-cong = {!!} - } - } where - open Group G - -record Fundamental (G H : Group c l) - (f : Group.Carrier G → Group.Carrier H ) - (homo : IsGroupHomomorphism (Group→Raw G) (Group→Raw H) f ) - (N : NormalSubGroup G ) : Set ( c Level.⊔ l ) where - field - h : IsGroupHomomorphism (Group→Raw G) (Group→Raw H) f -