quotient_extend_unique_SES

This commit is contained in:
Egbert Rijke 2017-03-02 17:11:06 -05:00
parent 78512444e8
commit 7e8f183133
2 changed files with 117 additions and 25 deletions

View file

@ -243,18 +243,31 @@ namespace group
exact K g exact K g
end end
definition ab_gelim_unique {K : subgroup_rel A} (f : A →g B) (H : Π (a :A), K a → f a = 1) (k : quotient_ab_group K →g B)
: ( k ∘g ab_qg_map K ~ f) → k ~ quotient_group_elim f H :=
begin
fapply gelim_unique,
end
definition qg_universal_property (f : G →g G') (H : Π⦃g⦄, N g → f g = 1) : definition qg_universal_property (f : G →g G') (H : Π⦃g⦄, N g → f g = 1) :
is_contr (Σ(g : quotient_group N →g G'), g ∘g qg_map N = f) := is_contr (Σ(g : quotient_group N →g G'), g ∘g qg_map N ~ f) :=
begin begin
fapply is_contr.mk, fapply is_contr.mk,
-- give center of contraction -- give center of contraction
{ fapply sigma.mk, exact quotient_group_elim f H, apply homomorphism_eq, exact quotient_group_compute f H }, { fapply sigma.mk, exact quotient_group_elim f H, exact quotient_group_compute f H },
-- give contraction -- give contraction
{ intro pair, induction pair with g p, fapply sigma_eq, { intro pair, induction pair with g p, fapply sigma_eq,
{esimp, apply homomorphism_eq, symmetry, exact gelim_unique f H g (homotopy_of_homomorphism_eq p)}, {esimp, apply homomorphism_eq, symmetry, exact gelim_unique f H g p},
{fapply is_prop.elimo} } {fapply is_prop.elimo} }
end end
definition ab_qg_universal_property {K : subgroup_rel A} (f : A →g B) (H : Π (a :A), K a → f a = 1) :
is_contr ((Σ(g : quotient_ab_group K →g B), g ∘g ab_qg_map K ~ f) ) :=
begin
fapply qg_universal_property,
exact H
end
------------------------------------------------ ------------------------------------------------
-- FIRST ISOMORPHISM THEOREM -- FIRST ISOMORPHISM THEOREM
------------------------------------------------ ------------------------------------------------

View file

@ -3,7 +3,9 @@ Copyright (c) 2017 Egbert Rijke. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE. Released under Apache 2.0 license as described in the file LICENSE.
Authors: Egbert Rijke Authors: Egbert Rijke
Exact couple, derived couples, and so on Basic facts about short exact sequences.
At the moment, it only covers short exact sequences of abelian groups, but this should be extended to short exact sequences in any abelian category.
-/ -/
import algebra.group_theory hit.set_quotient types.sigma types.list types.sum .quotient_group .subgroup import algebra.group_theory hit.set_quotient types.sigma types.list types.sum .quotient_group .subgroup
@ -38,6 +40,18 @@ definition SES_of_inclusion {A B : AbGroup} (f : A →g B) (Hf : is_embedding f)
fapply rel_of_ab_qg_map_eq_one, assumption fapply rel_of_ab_qg_map_eq_one, assumption
end end
definition SES_of_subgroup {B : AbGroup} (S : subgroup_rel B) : SES (ab_subgroup S) B (quotient_ab_group S) :=
begin
fapply SES.mk,
exact incl_of_subgroup S,
exact ab_qg_map S,
exact is_embedding_incl_of_subgroup S,
exact is_surjective_ab_qg_map S,
fapply is_exact.mk,
intro a, fapply ab_qg_map_eq_one, induction a with b p, exact p,
intro b p, fapply tr, fapply fiber.mk, fapply sigma.mk b, fapply rel_of_ab_qg_map_eq_one, exact p, reflexivity,
end
definition SES_of_surjective_map {B C : AbGroup} (g : B →g C) (Hg : is_surjective g) : SES (ab_kernel g) B C := definition SES_of_surjective_map {B C : AbGroup} (g : B →g C) (Hg : is_surjective g) : SES (ab_kernel g) B C :=
begin begin
fapply SES.mk, fapply SES.mk,
@ -57,6 +71,15 @@ structure hom_SES {A B C A' B' C' : AbGroup} (ses : SES A B C) (ses' : SES A' B'
( htpy1 : hB ∘g (SES.f ses) ~ (SES.f ses') ∘g hA) ( htpy1 : hB ∘g (SES.f ses) ~ (SES.f ses') ∘g hA)
( htpy2 : hC ∘g (SES.g ses) ~ (SES.g ses') ∘g hB) ( htpy2 : hC ∘g (SES.g ses) ~ (SES.g ses') ∘g hB)
section ses
parameters {A B C : AbGroup} (ses : SES A B C)
local abbreviation f := SES.f ses
local notation `g` := SES.g ses
local abbreviation ex := SES.ex ses
local abbreviation q := ab_qg_map (kernel_subgroup g)
local abbreviation B_mod_A := quotient_ab_group (kernel_subgroup g)
--definition quotient_SES {A B C : AbGroup} (ses : SES A B C) : --definition quotient_SES {A B C : AbGroup} (ses : SES A B C) :
-- quotient_ab_group (image_subgroup (SES.f ses)) ≃g C := -- quotient_ab_group (image_subgroup (SES.f ses)) ≃g C :=
-- begin -- begin
@ -65,34 +88,63 @@ structure hom_SES {A B C A' B' C' : AbGroup} (ses : SES A B C) (ses' : SES A' B'
-- definition pre_right_extend_SES (to separate the following definition and replace C with B/A) -- definition pre_right_extend_SES (to separate the following definition and replace C with B/A)
definition quotient_codomain_SES {A B C : AbGroup} (ses : SES A B C) : quotient_ab_group (kernel_subgroup (SES.g ses)) ≃g C := definition quotient_codomain_SES : B_mod_A ≃g C :=
begin begin
exact (codomain_surjection_is_quotient (SES.g ses) (SES.Hg ses)) exact (codomain_surjection_is_quotient g (SES.Hg ses))
end end
definition quotient_triangle_SES {A B C : AbGroup} (ses : SES A B C) : (quotient_codomain_SES ses) ∘g (ab_qg_map (kernel_subgroup (SES.g ses))) ~ (SES.g ses) := local abbreviation α := quotient_codomain_SES
definition quotient_triangle_SES : α ∘g q ~ g :=
begin begin
reflexivity reflexivity
end end
section short_exact_sequences definition quotient_triangle_extend_SES {C': AbGroup} (k : B →g C') :
parameters {A B C A' B' C' : AbGroup} (Σ (h : C →g C'), h ∘g g ~ k) ≃ (Σ (h' : B_mod_A →g C'), h' ∘g q ~ k) :=
(ses : SES A B C) (ses' : SES A' B' C') begin
(hA : A →g A') (hB : B →g B') (htpy1 : hB ∘g (SES.f ses) ~ (SES.f ses') ∘g hA) fapply equiv.mk,
intro pair, induction pair with h H,
fapply sigma.mk, exact h ∘g α, intro b,
exact H b,
fapply adjointify,
intro pair, induction pair with h' H', fapply sigma.mk,
exact h' ∘g α⁻¹ᵍ,
intro b,
exact calc
h' (α⁻¹ᵍ (g b)) = h' (α⁻¹ᵍ (α (q b))) : by reflexivity
... = h' (q b) : by exact hwhisker_left h' (left_inv α) (q b)
... = k b : by exact H' b,
intro pair, induction pair with h' H', fapply sigma_eq, esimp, fapply homomorphism_eq, fapply hwhisker_left h' (left_inv α), esimp, fapply is_prop.elimo, fapply pi.is_trunc_pi, intro a, fapply is_trunc_eq,
intro pair, induction pair with h H, fapply sigma_eq, esimp, fapply homomorphism_eq, fapply hwhisker_left h (right_inv α),
esimp, fapply is_prop.elimo, fapply pi.is_trunc_pi, intro a, fapply is_trunc_eq,
end
parameters {A' B' C' : AbGroup}
(ses' : SES A' B' C')
(hA : A →g A') (hB : B →g B') (htpy1 : hB ∘g f ~ (SES.f ses') ∘g hA)
local abbreviation f := SES.f ses
local abbreviation g := SES.g ses
local abbreviation ex := SES.ex ses
local abbreviation q := ab_qg_map (kernel_subgroup g)
local abbreviation f' := SES.f ses' local abbreviation f' := SES.f ses'
local abbreviation g' := SES.g ses' local notation `g'` := SES.g ses'
local abbreviation ex' := SES.ex ses' local abbreviation ex' := SES.ex ses'
local abbreviation q' := ab_qg_map (kernel_subgroup g') local abbreviation q' := ab_qg_map (kernel_subgroup g')
local abbreviation α := quotient_codomain_SES ses local abbreviation α' := quotient_codomain_SES
local abbreviation α' := quotient_codomain_SES ses'
include htpy1 include htpy1
definition quotient_extend_unique_SES : is_contr (Σ (hC : C →g C'), hC ∘g g ~ g' ∘g hB) :=
begin
fapply @(is_trunc_equiv_closed_rev _ (quotient_triangle_extend_SES (g' ∘g hB))),
fapply ab_qg_universal_property,
intro b, intro K,
have k : trunctype.carrier (image_subgroup f b), from is_exact.ker_in_im ex b K,
induction k, induction a with a p,
induction p,
refine (ap g' (htpy1 a)) ⬝ _,
fapply is_exact.im_in_ker ex' (hA a)
end
/-
-- We define a group homomorphism B/ker(g) →g B'/ker(g'), keeping in mind that ker(g)=A and ker(g')=A'. -- We define a group homomorphism B/ker(g) →g B'/ker(g'), keeping in mind that ker(g)=A and ker(g')=A'.
definition quotient_extend_SES : quotient_ab_group (kernel_subgroup g) →g quotient_ab_group (kernel_subgroup g') := definition quotient_extend_SES : quotient_ab_group (kernel_subgroup g) →g quotient_ab_group (kernel_subgroup g') :=
begin begin
@ -118,13 +170,8 @@ definition right_extend_SES : C →g C' :=
local abbreviation hC := right_extend_SES local abbreviation hC := right_extend_SES
definition right_extend_hom_SES : hom_SES ses ses' := definition right_extend_SES_square : hC ∘g g ~ g' ∘ hB :=
begin begin
fapply hom_SES.mk,
exact hA,
exact hB,
exact hC,
exact htpy1,
exact calc exact calc
hC ∘g g ~ hC ∘g α ∘g q : by reflexivity hC ∘g g ~ hC ∘g α ∘g q : by reflexivity
... ~ α' ∘g k ∘g α⁻¹ᵍ ∘g α ∘g q : by reflexivity ... ~ α' ∘g k ∘g α⁻¹ᵍ ∘g α ∘g q : by reflexivity
@ -133,4 +180,36 @@ definition right_extend_hom_SES : hom_SES ses ses' :=
... ~ g' ∘g hB : by reflexivity ... ~ g' ∘g hB : by reflexivity
end end
end short_exact_sequences local abbreviation htpy2 := right_extend_SES_square
definition right_extend_SES_unique_map_aux (hC' : C →g C') (htpy2' : g' ∘g hB ~ hC' ∘g g) : k ∘g q ~ α'⁻¹ᵍ ∘g hC' ∘g α ∘g q :=
begin
exact calc
k ∘g q ~ q' ∘g hB : by reflexivity
... ~ α'⁻¹ᵍ ∘g α' ∘g q' ∘g hB : by exact hwhisker_right (q' ∘g hB) (homotopy.symm (left_inv α'))
... ~ α'⁻¹ᵍ ∘g g' ∘g hB : by reflexivity
... ~ α'⁻¹ᵍ ∘g hC' ∘g g : by exact hwhisker_left (α'⁻¹ᵍ) htpy2'
... ~ α'⁻¹ᵍ ∘g hC' ∘g α ∘g q : by reflexivity
end
definition right_extend_SES_unique_map (hC' : C →g C') (htpy2' : hC' ∘g g ~ g' ∘g hB) : hC ~ hC' :=
begin
exact calc
hC ~ α' ∘g k ∘g α⁻¹ᵍ : by reflexivity
... ~ α' ∘g α'⁻¹ᵍ ∘g hC' ∘g α ∘g α⁻¹ᵍ :
... ~ hC' ∘g α ∘g α⁻¹ᵍ : _
... ~ hC' : _
end
definition right_extend_hom_SES : hom_SES ses ses' :=
begin
fapply hom_SES.mk,
exact hA,
exact hB,
exact hC,
exact htpy1,
exact htpy2
end
-/
end ses