Spectral/algebra/ses.hlean
2017-02-16 23:00:55 -05:00

136 lines
4.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/-
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