137 lines
4.7 KiB
Text
137 lines
4.7 KiB
Text
|
/-
|
|||
|
Copyright (c) 2017 Egbert Rijke. All rights reserved.
|
|||
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|||
|
Authors: Egbert Rijke
|
|||
|
|
|||
|
Exact couple, derived couples, and so on
|
|||
|
-/
|
|||
|
|
|||
|
import algebra.group_theory hit.set_quotient types.sigma types.list types.sum .quotient_group .subgroup
|
|||
|
|
|||
|
open eq algebra is_trunc set_quotient relation sigma sigma.ops prod prod.ops sum list trunc function group trunc
|
|||
|
equiv is_equiv
|
|||
|
|
|||
|
structure is_exact {A B C : AbGroup} (f : A →g B) (g : B →g C) :=
|
|||
|
( im_in_ker : Π(a:A), g (f a) = 1)
|
|||
|
( ker_in_im : Π(b:B), (g b = 1) → image_subgroup f b)
|
|||
|
|
|||
|
structure SES (A B C : AbGroup) :=
|
|||
|
( f : A →g B)
|
|||
|
( g : B →g C)
|
|||
|
( Hf : is_embedding f)
|
|||
|
( Hg : is_surjective g)
|
|||
|
( ex : is_exact f g)
|
|||
|
|
|||
|
definition SES_of_inclusion {A B : AbGroup} (f : A →g B) (Hf : is_embedding f) : SES A B (quotient_ab_group (image_subgroup f)) :=
|
|||
|
begin
|
|||
|
have Hg : is_surjective (ab_qg_map (image_subgroup f)),
|
|||
|
from is_surjective_ab_qg_map (image_subgroup f),
|
|||
|
fapply SES.mk,
|
|||
|
exact f,
|
|||
|
exact ab_qg_map (image_subgroup f),
|
|||
|
exact Hf,
|
|||
|
exact Hg,
|
|||
|
fapply is_exact.mk,
|
|||
|
intro a,
|
|||
|
fapply qg_map_eq_one, fapply tr, fapply fiber.mk, exact a, reflexivity,
|
|||
|
intro b, intro p,
|
|||
|
fapply rel_of_ab_qg_map_eq_one, assumption
|
|||
|
end
|
|||
|
|
|||
|
definition SES_of_surjective_map {B C : AbGroup} (g : B →g C) (Hg : is_surjective g) : SES (ab_kernel g) B C :=
|
|||
|
begin
|
|||
|
fapply SES.mk,
|
|||
|
exact ab_kernel_incl g,
|
|||
|
exact g,
|
|||
|
exact is_embedding_ab_kernel_incl g,
|
|||
|
exact Hg,
|
|||
|
fapply is_exact.mk,
|
|||
|
intro a, induction a with a p, exact p,
|
|||
|
intro b p, fapply tr, fapply fiber.mk, fapply sigma.mk, exact b, exact p, reflexivity,
|
|||
|
end
|
|||
|
|
|||
|
structure hom_SES {A B C A' B' C' : AbGroup} (ses : SES A B C) (ses' : SES A' B' C') :=
|
|||
|
( hA : A →g A')
|
|||
|
( hB : B →g B')
|
|||
|
( hC : C →g C')
|
|||
|
( htpy1 : hB ∘g (SES.f ses) ~ (SES.f ses') ∘g hA)
|
|||
|
( htpy2 : hC ∘g (SES.g ses) ~ (SES.g ses') ∘g hB)
|
|||
|
|
|||
|
--definition quotient_SES {A B C : AbGroup} (ses : SES A B C) :
|
|||
|
-- quotient_ab_group (image_subgroup (SES.f ses)) ≃g C :=
|
|||
|
-- begin
|
|||
|
-- fapply ab_group_first_iso_thm B C (SES.g ses),
|
|||
|
-- end
|
|||
|
|
|||
|
-- 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 :=
|
|||
|
begin
|
|||
|
exact (codomain_surjection_is_quotient (SES.g ses) (SES.Hg ses))
|
|||
|
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) :=
|
|||
|
begin
|
|||
|
reflexivity
|
|||
|
end
|
|||
|
|
|||
|
section short_exact_sequences
|
|||
|
parameters {A B C A' B' C' : AbGroup}
|
|||
|
(ses : SES A B C) (ses' : SES A' B' C')
|
|||
|
(hA : A →g A') (hB : B →g B') (htpy1 : hB ∘g (SES.f ses) ~ (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 g' := SES.g ses'
|
|||
|
local abbreviation ex' := SES.ex ses'
|
|||
|
local abbreviation q' := ab_qg_map (kernel_subgroup g')
|
|||
|
local abbreviation α := quotient_codomain_SES ses
|
|||
|
local abbreviation α' := quotient_codomain_SES ses'
|
|||
|
|
|||
|
include htpy1
|
|||
|
|
|||
|
-- 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') :=
|
|||
|
begin
|
|||
|
fapply ab_group_quotient_homomorphism B B' (kernel_subgroup g) (kernel_subgroup g') hB,
|
|||
|
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,
|
|||
|
rewrite [p⁻¹],
|
|||
|
rewrite [htpy1 a],
|
|||
|
fapply is_exact.im_in_ker ex' (hA a)
|
|||
|
end
|
|||
|
|
|||
|
local abbreviation k := quotient_extend_SES
|
|||
|
|
|||
|
definition quotient_extend_SES_square : k ∘g (ab_qg_map (kernel_subgroup g)) ~ (ab_qg_map (kernel_subgroup g')) ∘g hB :=
|
|||
|
begin
|
|||
|
fapply quotient_group_compute
|
|||
|
end
|
|||
|
|
|||
|
definition right_extend_SES : C →g C' :=
|
|||
|
α' ∘g k ∘g α⁻¹ᵍ
|
|||
|
|
|||
|
local abbreviation hC := right_extend_SES
|
|||
|
|
|||
|
definition right_extend_hom_SES : hom_SES ses ses' :=
|
|||
|
begin
|
|||
|
fapply hom_SES.mk,
|
|||
|
exact hA,
|
|||
|
exact hB,
|
|||
|
exact hC,
|
|||
|
exact htpy1,
|
|||
|
exact calc
|
|||
|
hC ∘g g ~ hC ∘g α ∘g q : by reflexivity
|
|||
|
... ~ α' ∘g k ∘g α⁻¹ᵍ ∘g α ∘g q : by reflexivity
|
|||
|
... ~ α' ∘g k ∘g q : by exact hwhisker_left (α' ∘g k) (hwhisker_right q (left_inv α))
|
|||
|
... ~ α' ∘g q' ∘g hB : by exact hwhisker_left α' (quotient_extend_SES_square)
|
|||
|
... ~ g' ∘g hB : by reflexivity
|
|||
|
end
|
|||
|
|
|||
|
end short_exact_sequences
|