Spectral/cohomology/gysin.hlean
2018-11-13 19:36:35 -05:00

182 lines
9.4 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.

/- the construction of the Gysin sequence using the Serre spectral sequence -/
-- author: Floris van Doorn
import .serre
open eq pointed is_trunc is_conn is_equiv equiv sphere fiber chain_complex left_module spectrum nat
prod nat int algebra function spectral_sequence fin group
namespace cohomology
universe variable u
/-
Given a pointed map E →* B with as fiber the sphere S^{n+1} and an abelian group A.
The only nontrivial differentials in the spectral sequence of this map are the following
differentials on page n:
d_m = d_(m-1,n+1)^n : E_(m-1,n+1)^n → E_(m+n+1,0)^n
Note that ker d_m = E_(m-1,n+1)^∞ and coker d_m = E_(m+n+1,0)^∞.
Each diagonal on the ∞-page has at most two nontrivial groups, which means that
coker d_{m-1} and ker d_m are the only two nontrivial groups building up D_{m+n}^∞,
where D^∞ is the abutment of the spectral sequence.
This gives the short exact sequences:
coker d_{m-1} → D_{m+n}^∞ → ker d_m
We can splice these SESs together to get a LES
... E_(m+n,0)^n → D_{m+n}^∞ → E_(m-1,n+1)^n → E_(m+n+1,0)^n → D_{m+n+1}^∞ ...
Now we have
E_(p,q)^n = E_(p,q)^0 = H^p(B; H^q(S^{n+1}; A)) = H^p(B; A) if q = n+1 or q = 0
and
D_{n}^∞ = H^n(E; A)
This gives the Gysin sequence
... H^{m+n}(B; A) → H^{m+n}(E; A) → H^{m-1}(B; A) → H^{m+n+1}(B; A) → H^{m+n+1}(E; A) ...
-/
definition gysin_trivial_Epage {E B : pType.{u}} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) (r : ) (p q : ) (hq : q ≠ 0)
(hq' : q ≠ of_nat (n+1)):
is_contr (convergent_spectral_sequence.E (serre_spectral_sequence_map_of_is_conn pt f
(EM_spectrum A) 0 (is_strunc_EM_spectrum A) HB) r (p, q)) :=
begin
intros, apply is_contr_E, apply is_contr_ordinary_cohomology, esimp,
refine is_contr_equiv_closed_rev _ (unreduced_ordinary_cohomology_sphere_of_neq A hq' hq),
apply group.equiv_of_isomorphism, apply unreduced_ordinary_cohomology_isomorphism, exact e⁻¹ᵉ*
end
definition gysin_trivial_Epage2 {E B : pType.{u}} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) (r : ) (p q : ) (hq : q > n+1) :
is_contr (convergent_spectral_sequence.E (serre_spectral_sequence_map_of_is_conn pt f
(EM_spectrum A) 0 (is_strunc_EM_spectrum A) HB) r (p, q)) :=
begin
intros, apply gysin_trivial_Epage HB f e A r p q,
{ intro h, subst h, apply not_lt_zero (n+1), exact lt_of_of_nat_lt_of_nat hq },
{ intro h, subst h, exact lt.irrefl _ hq }
end
definition gysin_sequence' {E B : pType.{u}} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) : module_chain_complex r -3 :=
let c := serre_spectral_sequence_map_of_is_conn pt f (EM_spectrum A) 0
(is_strunc_EM_spectrum A) HB in
let cn : is_normal c := !is_normal_serre_spectral_sequence_map_of_is_conn in
have deg_d_x : Π(m : ), deg (convergent_spectral_sequence.d c n) ((m - 1) - 1, n + 1) =
(n + m - 0, 0),
begin
intro m, refine deg_d_normal_eq cn _ _ ⬝ _,
refine prod_eq _ !add.right_inv,
refine ap (λx, x + (n+2)) !sub_sub ⬝ _,
refine add.comm4 m (- 2) n 2 ⬝ _,
refine ap (λx, x + 0) !add.comm
end,
have trivial_E : Π(r : ) (p q : ) (hq : q ≠ 0) (hq' : q ≠ of_nat (n+1)),
is_contr (convergent_spectral_sequence.E c r (p, q)),
from gysin_trivial_Epage HB f e A,
have trivial_E' : Π(r : ) (p q : ) (hq : q > n+1),
is_contr (convergent_spectral_sequence.E c r (p, q)),
from gysin_trivial_Epage2 HB f e A,
left_module.LES_of_SESs _ _ _ (λm, convergent_spectral_sequence.d c n (m - 1, n + 1))
begin
intro m,
fapply short_exact_mod_isomorphism,
rotate 3,
{ fapply short_exact_mod_of_is_contr_submodules
(convergence_0 c (n + m) (λm, neg_zero)),
{ exact zero_lt_succ n },
{ intro k Hk0 Hkn, apply trivial_E, exact λh, Hk0 (of_nat.inj h),
exact λh, Hkn (of_nat.inj h), }},
{ symmetry, refine Einf_isomorphism c (n+1) _ _ ⬝lm
convergent_spectral_sequence.α c n (n + m - 0, 0) ⬝lm
isomorphism_of_eq (ap (graded_homology _ _) _) ⬝lm
!graded_homology_isomorphism ⬝lm
homology_isomorphism_cokernel_module _ _ _,
{ intros r Hr, apply trivial_E', apply of_nat_lt_of_nat_of_lt,
rewrite [zero_add], exact lt_succ_of_le Hr },
{ intros r Hr, apply is_contr_E, apply is_normal.normal2 cn,
refine lt_of_le_of_lt (le_of_eq (ap (λx : × , 0 + pr2 x) (is_normal.normal3 cn r))) _,
esimp, rewrite [-sub_eq_add_neg], apply sub_lt_of_pos, apply of_nat_lt_of_nat_of_lt,
apply succ_pos },
{ exact (deg_d_x m)⁻¹ },
{ intro x, apply @eq_of_is_contr, apply is_contr_E,
apply is_normal.normal2 cn,
refine lt_of_le_of_lt (@le_of_eq _ _ _ (ap (pr2 ∘ deg (convergent_spectral_sequence.d c n))
(deg_d_x m) ⬝ ap pr2 (deg_d_normal_eq cn _ _))) _,
refine lt_of_le_of_lt (le_of_eq (zero_add (-(n+1)))) _,
apply neg_neg_of_pos, apply of_nat_succ_pos }},
{ reflexivity },
{ symmetry,
refine Einf_isomorphism c (n+1) _ _ ⬝lm
convergent_spectral_sequence.α c n (n + m - (n+1), n+1) ⬝lm
graded_homology_isomorphism_kernel_module _ _ _ _ ⬝lm
isomorphism_of_eq (ap (graded_kernel _) _),
{ intros r Hr, apply trivial_E', apply of_nat_lt_of_nat_of_lt,
apply lt_add_of_pos_right, apply zero_lt_succ },
{ intros r Hr, apply is_contr_E, apply is_normal.normal2 cn,
refine lt_of_le_of_lt (le_of_eq (ap (λx : × , (n+1)+pr2 x) (is_normal.normal3 cn r))) _,
esimp, rewrite [-sub_eq_add_neg], apply sub_lt_right_of_lt_add,
apply of_nat_lt_of_nat_of_lt, rewrite [zero_add], exact lt_succ_of_le Hr },
{ apply trivial_image_of_is_contr, rewrite [deg_d_inv_eq],
apply trivial_E', apply of_nat_lt_of_nat_of_lt,
apply lt_add_of_pos_right, apply zero_lt_succ },
{ refine prod_eq _ rfl, refine ap (add _) !neg_add ⬝ _,
refine add.comm4 n m (-n) (- 1) ⬝ _,
refine ap (λx, x + _) !add.right_inv ⬝ !zero_add }}
end
definition gysin_sequence'_zero {E B : Type*} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) (m : ) :
gysin_sequence' HB f e A (m, 0) ≃lm LeftModule_int_of_AbGroup (uoH^m+n+1[B, A]) :=
let c := serre_spectral_sequence_map_of_is_conn pt f (EM_spectrum A) 0
(is_strunc_EM_spectrum A) HB in
let cn : is_normal c := !is_normal_serre_spectral_sequence_map_of_is_conn in
begin
refine LES_of_SESs_zero _ _ m ⬝lm _,
transitivity convergent_spectral_sequence.E c n (m+n+1, 0),
exact isomorphism_of_eq (ap (convergent_spectral_sequence.E c n)
(deg_d_normal_eq cn _ _ ⬝ prod_eq (add.comm4 m (- 1) n 2) (add.right_inv (n+1)))),
refine E_isomorphism0 _ _ _ ⬝lm
lm_iso_int.mk (unreduced_ordinary_cohomology_isomorphism_right _ _ _),
{ intros r hr, apply is_contr_ordinary_cohomology,
refine is_contr_equiv_closed_rev
(equiv_of_isomorphism (cohomology_change_int _ _ _ ⬝g uoH^≃r+1[e⁻¹ᵉ*, A]))
(unreduced_ordinary_cohomology_sphere_of_neq_nat A _ _),
{ exact !zero_sub ⬝ ap neg (deg_d_normal_pr2 cn r) ⬝ !neg_neg },
{ apply ne_of_lt, apply add_lt_add_right, exact hr },
{ apply succ_ne_zero }},
{ intros r hr, apply is_contr_ordinary_cohomology,
refine is_contr_equiv_closed_rev
(equiv_of_isomorphism (cohomology_change_int _ _ (!zero_add ⬝ deg_d_normal_pr2 cn r)))
(is_contr_ordinary_cohomology_of_neg _ _ _),
{ rewrite [-neg_zero], apply neg_lt_neg, apply of_nat_lt_of_nat_of_lt, apply zero_lt_succ }},
{ exact uoH^≃ 0[e⁻¹ᵉ*, A] ⬝g unreduced_ordinary_cohomology_sphere_zero _ _ (succ_ne_zero n) }
end
definition gysin_sequence'_one {E B : Type*} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) (m : ) :
gysin_sequence' HB f e A (m, 1) ≃lm LeftModule_int_of_AbGroup (uoH^m - 1[B, A]) :=
let c := serre_spectral_sequence_map_of_is_conn pt f (EM_spectrum A) 0
(is_strunc_EM_spectrum A) HB in
let cn : is_normal c := !is_normal_serre_spectral_sequence_map_of_is_conn in
begin
refine LES_of_SESs_one _ _ m ⬝lm _,
refine E_isomorphism0 _ _ _ ⬝lm
lm_iso_int.mk (unreduced_ordinary_cohomology_isomorphism_right _ _ _),
{ intros r hr, apply is_contr_ordinary_cohomology,
refine is_contr_equiv_closed_rev
(equiv_of_isomorphism uoH^≃_[e⁻¹ᵉ*, A])
(unreduced_ordinary_cohomology_sphere_of_gt _ _),
{ apply lt_add_of_pos_right, apply zero_lt_succ }},
{ intros r hr, apply is_contr_ordinary_cohomology,
refine is_contr_equiv_closed_rev
(equiv_of_isomorphism (cohomology_change_int _ _ _ ⬝g uoH^≃n-r[e⁻¹ᵉ*, A]))
(unreduced_ordinary_cohomology_sphere_of_neq_nat A _ _),
{ refine ap (add _) (deg_d_normal_pr2 cn r) ⬝ add_sub_comm n 1 r 1 ⬝ !add_zero ⬝ _,
symmetry, apply of_nat_sub, exact le_of_lt hr },
{ apply ne_of_lt, exact lt_of_le_of_lt (nat.sub_le n r) (lt.base n) },
{ apply ne_of_gt, exact nat.sub_pos_of_lt hr }},
{ refine uoH^≃n+1[e⁻¹ᵉ*, A] ⬝g unreduced_ordinary_cohomology_sphere _ _ (succ_ne_zero n) }
end
-- todo: maybe rewrite n+m to m+n (or above rewrite m+n+1 to n+m+1 or n+(m+1))?
definition gysin_sequence'_two {E B : Type*} {n : } (HB : is_conn 1 B) (f : E →* B)
(e : pfiber f ≃* sphere (n+1)) (A : AbGroup) (m : ) :
gysin_sequence' HB f e A (m, 2) ≃lm LeftModule_int_of_AbGroup (uoH^n+m[E, A]) :=
LES_of_SESs_two _ _ m
end cohomology