Spectral/cohomology/cofiber_sequence.hlean

149 lines
5.7 KiB
Text
Raw Permalink Normal View History

/-
Copyright (c) 2017 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn
Cofiber sequence of a pointed map
-/
import .basic ..homotopy.pushout
open pointed eq cohomology sigma sigma.ops fiber cofiber chain_complex nat succ_str algebra prod group pushout int
namespace cohomology
definition pred_fun {A : → Type*} (f : Πn, A n →* A (n+1)) (n : ) : A (pred n) →* A n :=
begin cases n with n, exact pconst (A 0) (A 0), exact f n end
definition type_chain_complex_snat' [constructor] (A : → Type*) (f : Πn, A n →* A (n+1))
(p : Πn (x : A n), f (n+1) (f n x) = pt) : type_chain_complex - :=
type_chain_complex.mk A (pred_fun f)
begin
intro n, cases n with n, intro x, reflexivity, cases n with n,
intro x, exact respect_pt (f 0), exact p n
end
definition chain_complex_snat' [constructor] (A : → Set*) (f : Πn, A n →* A (n+1))
(p : Πn (x : A n), f (n+1) (f n x) = pt) : chain_complex - :=
chain_complex.mk A (pred_fun f)
begin
intro n, cases n with n, intro x, reflexivity, cases n with n,
intro x, exact respect_pt (f 0), exact p n
end
definition is_exact_at_t_snat' [constructor] {A : → Type*} (f : Πn, A n →* A (n+1))
(p : Πn (x : A n), f (n+1) (f n x) = pt) (q : Πn x, f (n+1) x = pt → fiber (f n) x) (n : )
: is_exact_at_t (type_chain_complex_snat' A f p) (n+2) :=
q n
definition cofiber_sequence_helper [constructor] (v : Σ(X Y : Type*), X →* Y)
: Σ(Y Z : Type*), Y →* Z :=
⟨v.2.1, pcofiber v.2.2, pcod v.2.2⟩
definition cofiber_sequence_helpern (v : Σ(X Y : Type*), X →* Y) (n : )
: Σ(Z X : Type*), Z →* X :=
iterate cofiber_sequence_helper n v
section
universe variable u
parameters {X Y : pType.{u}} (f : X →* Y)
include f
definition cofiber_sequence_carrier (n : ) : Type* :=
(cofiber_sequence_helpern ⟨X, Y, f⟩ n).1
definition cofiber_sequence_fun (n : )
: cofiber_sequence_carrier n →* cofiber_sequence_carrier (n+1) :=
(cofiber_sequence_helpern ⟨X, Y, f⟩ n).2.2
definition cofiber_sequence : type_chain_complex.{0 u} - :=
begin
fapply type_chain_complex_snat',
{ exact cofiber_sequence_carrier },
{ exact cofiber_sequence_fun },
{ intro n x, exact pcod_pcompose (cofiber_sequence_fun n) x }
end
end
section
universe variable u
parameters {X Y : pType.{u}} (f : X →* Y) (H : cohomology_theory.{u})
include f
definition cohomology_groups [reducible] : -3 → AbGroup
| (n, fin.mk 0 p) := H n X
| (n, fin.mk 1 p) := H n Y
| (n, fin.mk k p) := H n (pcofiber f)
-- definition cohomology_groups_pequiv_loop_spaces2 [reducible]
-- : Π(n : -3), ptrunc 0 (loop_spaces2 n) ≃* cohomology_groups n
-- | (n, fin.mk 0 p) := by reflexivity
-- | (n, fin.mk 1 p) := by reflexivity
-- | (n, fin.mk 2 p) := by reflexivity
-- | (n, fin.mk (k+3) p) := begin exfalso, apply lt_le_antisymm H, apply le_add_left end
definition coboundary (n : ) : H (pred n) X →g H n (pcofiber f) :=
H ^→ n (pcofiber_pcod f ∘* pcod (pcod f)) ∘g (Hsusp_neg H n X)⁻¹ᵍ
definition cohomology_groups_fun : Π(n : -3), cohomology_groups (S n) →g cohomology_groups n
| (n, fin.mk 0 p) := proof H ^→ n f qed
| (n, fin.mk 1 p) := proof H ^→ n (pcod f) qed
| (n, fin.mk 2 p) := proof coboundary n qed
| (n, fin.mk (k+3) p) := begin exfalso, apply lt_le_antisymm p, apply le_add_left end
-- definition cohomology_groups_fun_pcohomology_loop_spaces_fun2 [reducible]
-- : Π(n : -3), cohomology_groups_pequiv_loop_spaces2 n ∘* ptrunc_functor 0 (loop_spaces_fun2 n) ~*
-- cohomology_groups_fun n ∘* cohomology_groups_pequiv_loop_spaces2 (S n)
-- | (n, fin.mk 0 p) := by reflexivity
-- | (n, fin.mk 1 p) := by reflexivity
-- | (n, fin.mk 2 p) :=
-- begin
-- refine !pid_pcompose ⬝* _ ⬝* !pcompose_pid⁻¹*,
-- refine !ptrunc_functor_pcompose
-- end
-- | (n, fin.mk (k+3) p) := begin exfalso, apply lt_le_antisymm H, apply le_add_left end
open cohomology_theory
definition cohomology_groups_chain_0 (n : ) (x : H n (pcofiber f)) : H ^→ n f (H ^→ n (pcod f) x) = 1 :=
begin
refine (Hcompose H n (pcod f) f x)⁻¹ ⬝ _,
refine Hhomotopy H n (pcod_pcompose f) x ⬝ _,
exact Hconst H n x
end
definition cohomology_groups_chain_1 (n : ) (x : H (pred n) X) : H ^→ n (pcod f) (coboundary n x) = 1 :=
begin
refine (Hcompose H n (pcofiber_pcod f ∘* pcod (pcod f)) (pcod f) ((Hsusp_neg H n X)⁻¹ᵍ x))⁻¹ ⬝ _,
refine Hhomotopy H n (!passoc ⬝* pwhisker_left _ !pcod_pcompose ⬝* !pcompose_pconst) _ ⬝ _,
exact Hconst H n _
end
definition cohomology_groups_chain_2 (n : ) (x : H (pred n) Y) : coboundary n (H ^→ (pred n) f x) = 1 :=
begin
exact sorry
-- refine ap (H ^→ n (pcofiber_pcod f ∘* pcod (pcod f))) _ ⬝ _,
--Hsusp_neg_inv_natural H n (pcofiber_pcod f ∘* pcod (pcod f)) _
end
definition cohomology_groups_chain : Π(n : -3) (x : cohomology_groups (S (S n))),
cohomology_groups_fun n (cohomology_groups_fun (S n) x) = 1
| (n, fin.mk 0 p) := cohomology_groups_chain_0 n
| (n, fin.mk 1 p) := cohomology_groups_chain_1 n
| (n, fin.mk 2 p) := cohomology_groups_chain_2 n
| (n, fin.mk (k+3) p) := begin exfalso, apply lt_le_antisymm p, apply le_add_left end
definition LES_of_cohomology_groups [constructor] : chain_complex -3 :=
chain_complex.mk (λn, cohomology_groups n) (λn, pmap_of_homomorphism (cohomology_groups_fun n)) cohomology_groups_chain
definition is_exact_LES_of_cohomology_groups : is_exact LES_of_cohomology_groups :=
begin
intro n,
exact sorry
end
end
end cohomology