Spectral/homotopy/cofiber_sequence.hlean

148 lines
5.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 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 .cohomology .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