Mercurial > hg > Members > kono > Proof > galois
changeset 301:38f4e5d35c8b
Imf
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 07 Sep 2023 10:51:30 +0900 |
parents | 3ca1d0e379d0 |
children | 3812936d52c8 |
files | src/homomorphism.agda |
diffstat | 1 files changed, 68 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/homomorphism.agda Wed Sep 06 16:10:44 2023 +0900 +++ b/src/homomorphism.agda Thu Sep 07 10:51:30 2023 +0900 @@ -1,9 +1,11 @@ +{-# OPTIONS --allow-unsolved-metas #-} + -- fundamental homomorphism theorem -- +module homomorphism where + open import Level hiding ( suc ; zero ) -module homomorphism (c d : Level) where - open import Algebra open import Algebra.Structures open import Algebra.Definitions @@ -49,15 +51,15 @@ -- Set of a ∙ ∃ n ∈ N -- -data IsaN {A : Group c d } (N : NormalSubGroup A) (a : Group.Carrier A ) : (x : Group.Carrier A ) → Set (Level.suc c ⊔ d) where +data IsaN {c d : Level} {A : Group c d } (N : NormalSubGroup A) (a : Group.Carrier A ) : (x : Group.Carrier A ) → Set (Level.suc c ⊔ d) where an : (n x : Group.Carrier A ) → A < A < a ∙ n > ≈ x > → (pn : NormalSubGroup.P N n) → IsaN N a x -record aNeq {A : Group c d } (N : NormalSubGroup A ) (a b : Group.Carrier A) : Set (Level.suc c ⊔ d) where +record aNeq {c d : Level} {A : Group c d } (N : NormalSubGroup A ) (a b : Group.Carrier A) : Set (Level.suc c ⊔ d) where field eq→ : {x : Group.Carrier A} → IsaN N a x → IsaN N b x eq← : {x : Group.Carrier A} → IsaN N b x → IsaN N a x -module AN (A : Group c d) (N : NormalSubGroup A ) where +module AN {c d : Level} (A : Group c d) (N : NormalSubGroup A ) where open Group A open NormalSubGroup N open EqReasoning (Algebra.Group.setoid A) @@ -140,7 +142,7 @@ anxn=yn {x} {y} {n} x=y pn with ayxi x=y pn ... | an n₁ .((A Group.∙ x) n) eq1 pn₁ = gsym eq1 -_/_ : (A : Group c d ) (N : NormalSubGroup A ) → Group c (Level.suc c ⊔ d) +_/_ : {c d : Level} (A : Group c d ) (N : NormalSubGroup A ) → Group c (Level.suc c ⊔ d) _/_ A N = record { Carrier = Group.Carrier A ; _≈_ = aNeq N @@ -229,7 +231,7 @@ a ∎ -- K ⊂ ker(f) -K⊆ker : (G H : Group c d) (K : NormalSubGroup G ) (f : Group.Carrier G → Group.Carrier H ) +K⊆ker : {c d : Level} (G H : Group c d) (K : NormalSubGroup G ) (f : Group.Carrier G → Group.Carrier H ) → Set (Level.suc c ⊔ d) K⊆ker G H K f = (x : Group.Carrier G ) → P x → f x ≈ ε where open Group H @@ -238,7 +240,7 @@ open import Function.Surjection open import Function.Equality -module GK (G : Group c d) (K : NormalSubGroup G ) where +module GK {c d : Level} (G : Group c d) (K : NormalSubGroup G ) where open Group G open NormalSubGroup K open EqReasoning (Algebra.Group.setoid G) @@ -248,13 +250,13 @@ gkε : Group.Carrier (G / K) gkε = Group.ε (G / K) - φ : Group.Carrier G → Group.Carrier (G / K ) + φ : Group.Carrier G → Group.Carrier (G / K ) -- a → aN φ g = g φ-homo : IsGroupHomomorphism (GR G) (GR (G / K)) φ φ-homo = record {⁻¹-homo = λ x → aneq grefl ; isMonoidHomomorphism = record { ε-homo = aneq grefl ; isMagmaHomomorphism = record { homo = λ x y → aneq grefl ; isRelHomomorphism = - record { cong = λ eq → aneq eq } }}} where + record { cong = λ eq → aneq eq } }}} φe : (Algebra.Group.setoid G) Function.Equality.⟶ (Algebra.Group.setoid (G / K)) @@ -262,8 +264,8 @@ gk40 : {i j : Carrier} → i ≈ j → (G / K ) < φ i ≈ φ j > gk40 {i} {j} i=j = aneq i=j - inv-φ : Group.Carrier (G / K ) → Carrier - inv-φ x = ? + inv-φ : Group.Carrier (G / K ) → Carrier -- P (inv-ψ x) + inv-φ x = x φ-surjective : Surjective φe φ-surjective = record { from = record { _⟨$⟩_ = inv-φ ; cong = λ {f} {g} → gk50 f g } @@ -277,7 +279,7 @@ gk01 = ? -record FundamentalHomomorphism (G H : Group c d ) +record FundamentalHomomorphism {c d : Level} (G H : Group c d ) (f : Group.Carrier G → Group.Carrier H ) (homo : IsGroupHomomorphism (GR G) (GR H) f ) (K : NormalSubGroup G ) (kf : K⊆ker G H K f) : Set (Level.suc c ⊔ d) where @@ -290,11 +292,11 @@ unique : (h1 : Group.Carrier (G / K ) → Group.Carrier H) → (homo : IsGroupHomomorphism (GR (G / K)) (GR H) h1 ) → ( (x : Group.Carrier G) → f x ≈ h1 ( GK.φ G K x ) ) → ( ( x : Group.Carrier (G / K)) → h x ≈ h1 x ) -FundamentalHomomorphismTheorm : (G H : Group c d) +FundamentalHomomorphismTheorm : {c d : Level} (G H : Group c d) (f : Group.Carrier G → Group.Carrier H ) - (homo : IsGroupHomomorphism (GR G) (GR H) f ) - (K : NormalSubGroup G ) → (kf : K⊆ker G H K f) → FundamentalHomomorphism G H f homo K kf -FundamentalHomomorphismTheorm G H f homo K kf = record { + (f-homo : IsGroupHomomorphism (GR G) (GR H) f ) + (K : NormalSubGroup G ) → (kf : K⊆ker G H K f) → FundamentalHomomorphism G H f f-homo K kf +FundamentalHomomorphismTheorm {c} {d} G H f f-homo K kf = record { h = h ; h-homo = h-homo ; is-solution = is-solution @@ -304,8 +306,56 @@ open Group H open Gutil H -- open NormalSubGroup K ? - open IsGroupHomomorphism homo + open IsGroupHomomorphism f-homo open EqReasoning (Algebra.Group.setoid H) + + Imf : NormalSubGroup G + Imf = record { + P = λ x → Lift (Level.suc c ⊔ d) (f x ≈ ε) + ; Pε = lift ε-homo + ; P⁻¹ = im01 + ; P≈ = im02 + ; P∙ = im03 + ; Pcomm = im04 + } where + open NormalSubGroup K + GC = Group.Carrier G + im01 : (a : Group.Carrier G) → Lift (Level.suc c ⊔ d) (f a ≈ ε) → Lift (Level.suc c ⊔ d) (f ((G Group.⁻¹) a) ≈ ε) + im01 a (lift fa=e) = lift (begin + f ((G Group.⁻¹) a) ≈⟨ ⁻¹-homo _ ⟩ + f a ⁻¹ ≈⟨ ⁻¹-cong fa=e ⟩ + ε ⁻¹ ≈⟨ gsym ε≈ε⁻¹ ⟩ + ε ∎ ) + im00 : (a : GC) → f a ≈ ε → f ((G Group.⁻¹) a) ≈ ε + im00 a fa=e = begin + f ((G Group.⁻¹) a) ≈⟨ ⁻¹-homo _ ⟩ + f a ⁻¹ ≈⟨ ⁻¹-cong fa=e ⟩ + ε ⁻¹ ≈⟨ gsym ε≈ε⁻¹ ⟩ + ε ∎ + im02 : {a b : GC} → G < a ≈ b > → Lift (Level.suc c ⊔ d) (f a ≈ ε) → Lift (Level.suc c ⊔ d) (f b ≈ ε) + im02 {a} {b} a=b (lift fa=e) = lift ( begin + f b ≈⟨ ⟦⟧-cong (GU.gsym a=b) ⟩ + f a ≈⟨ fa=e ⟩ + ε ∎ ) where + open import Gutil G as GU + im04 : {a b : Group.Carrier G} → Lift (Level.suc c ⊔ d) (f a ≈ ε) → Lift (Level.suc c ⊔ d) + (f ((G Group.∙ b) ((G Group.∙ a) ((G Group.⁻¹) b))) ≈ ε) + im04 {a} {b} (lift fa=e) = lift ( begin + f ( G < b ∙ G < a ∙ (G Group.⁻¹) b > > ) ≈⟨ homo _ _ ⟩ + f b ∙ f ( G < a ∙ (G Group.⁻¹) b > ) ≈⟨ cdr (homo _ _) ⟩ + f b ∙ ( f a ∙ f ((G Group.⁻¹) b )) ≈⟨ cdr (cdr (⁻¹-homo _)) ⟩ + f b ∙ ( f a ∙ f b ⁻¹ ) ≈⟨ cdr (car fa=e) ⟩ + f b ∙ ( ε ∙ f b ⁻¹ ) ≈⟨ solve monoid ⟩ + f b ∙ f b ⁻¹ ≈⟨ proj₂ inverse _ ⟩ + ε ∎ ) + im03 : {a b : Group.Carrier G} → Lift (Level.suc c ⊔ d) (f a ≈ ε) → Lift (Level.suc c ⊔ d) (f b ≈ ε) → + Lift (Level.suc c ⊔ d) (f ((G Group.∙ a) b) ≈ ε) + im03 {a} {b} (lift fa=e) (lift fb=e) = lift (begin + f (G < a ∙ b > ) ≈⟨ homo _ _ ⟩ + f a ∙ f b ≈⟨ ∙-cong fa=e fb=e ⟩ + ε ∙ ε ≈⟨ proj₁ identity _ ⟩ + ε ∎ ) + h : Group.Carrier (G / K ) → Group.Carrier H h r = f ( GK.inv-φ G K r ) h03 : (x y : Group.Carrier (G / K ) ) → h ( (G / K) < x ∙ y > ) ≈ h x ∙ h y