250 lines
12 KiB
Text
250 lines
12 KiB
Text
import .spectrum ..colim
|
||
|
||
open eq pointed succ_str is_equiv equiv spectrum.smap seq_colim nat
|
||
|
||
namespace spectrum
|
||
|
||
/- Prespectrification -/
|
||
definition is_sconnected {N : succ_str} {X Y : gen_prespectrum N} (h : X →ₛ Y) : Type :=
|
||
Π (E : gen_spectrum N), is_equiv (λ g : Y →ₛ E, g ∘ₛ h)
|
||
|
||
-- We introduce a prespectrification operation X ↦ prespectrification X, with the goal of implementing spectrification as the sequential colimit of iterated applications of the prespectrification operation.
|
||
definition prespectrification [constructor] {N : succ_str} (X : gen_prespectrum N) : gen_prespectrum N :=
|
||
gen_prespectrum.mk (λ n, Ω (X (S n))) (λ n, Ω→ (glue X (S n)))
|
||
|
||
-- To define the unit η : X → prespectrification X, we need its underlying family of pointed maps
|
||
definition to_prespectrification_pfun {N : succ_str} (X : gen_prespectrum N) (n : N) : X n →* prespectrification X n :=
|
||
glue X n
|
||
|
||
-- And similarly we need the pointed homotopies witnessing that the squares commute
|
||
definition to_prespectrification_psq {N : succ_str} (X : gen_prespectrum N) (n : N) :
|
||
psquare (to_prespectrification_pfun X n) (Ω→ (to_prespectrification_pfun X (S n))) (glue X n)
|
||
(glue (prespectrification X) n) :=
|
||
psquare_of_phomotopy phomotopy.rfl
|
||
|
||
-- We bundle the previous two definitions into a morphism of prespectra
|
||
definition to_prespectrification {N : succ_str} (X : gen_prespectrum N) : X →ₛ prespectrification X :=
|
||
begin
|
||
fapply smap.mk,
|
||
exact to_prespectrification_pfun X,
|
||
exact to_prespectrification_psq X,
|
||
end
|
||
|
||
-- When E is a spectrum, then the map η : E → prespectrification E is an equivalence.
|
||
definition is_sequiv_smap_to_prespectrification_of_is_spectrum {N : succ_str} (E : gen_prespectrum N) (H : is_spectrum E) : is_sequiv_smap (to_prespectrification E) :=
|
||
begin
|
||
intro n, induction E, induction H, exact is_equiv_glue n,
|
||
end
|
||
|
||
-- If η : E → prespectrification E is an equivalence, then E is a spectrum.
|
||
definition is_spectrum_of_is_sequiv_smap_to_prespectrification {N : succ_str} (E : gen_prespectrum N) (H : is_sequiv_smap (to_prespectrification E)) : is_spectrum E :=
|
||
begin
|
||
fapply is_spectrum.mk,
|
||
exact H
|
||
end
|
||
|
||
-- Our next goal is to show that if X is a prespectrum and E is a spectrum, then maps X →ₛ E extend uniquely along η : X → prespectrification X.
|
||
|
||
-- In the following we define the underlying family of pointed maps of such an extension
|
||
definition is_sconnected_to_prespectrification_inv_pfun {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} : (X →ₛ E) → Π (n : N), prespectrification X n →* E n :=
|
||
λ (f : X →ₛ E) n, (equiv_glue E n)⁻¹ᵉ* ∘* Ω→ (f (S n))
|
||
|
||
-- In the following we define the commuting squares of the extension
|
||
definition is_sconnected_to_prespectrification_inv_psq {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} (f : X →ₛ E) (n : N) :
|
||
psquare (is_sconnected_to_prespectrification_inv_pfun f n)
|
||
(Ω→ (is_sconnected_to_prespectrification_inv_pfun f (S n)))
|
||
(glue (prespectrification X) n)
|
||
(glue (gen_spectrum.to_prespectrum E) n)
|
||
:=
|
||
begin
|
||
fapply psquare_of_phomotopy,
|
||
refine (passoc (glue (gen_spectrum.to_prespectrum E) n) (pequiv.to_pmap
|
||
(equiv_glue (gen_spectrum.to_prespectrum E) n)⁻¹ᵉ*) (Ω→ (to_fun f (S n))))⁻¹* ⬝* _,
|
||
refine pwhisker_right (Ω→ (to_fun f (S n))) (pright_inv (equiv_glue E n)) ⬝* _,
|
||
refine _ ⬝* pwhisker_right (glue (prespectrification X) n) ((ap1_pcompose (pequiv.to_pmap (equiv_glue (gen_spectrum.to_prespectrum E) (S n))⁻¹ᵉ*) (Ω→ (to_fun f (S (S n)))))⁻¹*),
|
||
refine pid_pcompose (Ω→ (f (S n))) ⬝* _,
|
||
repeat exact sorry
|
||
end
|
||
|
||
-- Now we bundle the definition into a map (X →ₛ E) → (prespectrification X →ₛ E)
|
||
definition is_sconnected_to_prespectrification_inv {N : succ_str} (X : gen_prespectrum N) (E : gen_spectrum N)
|
||
: (X →ₛ E) → (prespectrification X →ₛ E) :=
|
||
begin
|
||
intro f,
|
||
fapply smap.mk,
|
||
exact is_sconnected_to_prespectrification_inv_pfun f,
|
||
exact is_sconnected_to_prespectrification_inv_psq f
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrification_isretr_pfun {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} (f : prespectrification X →ₛ E) (n : N) : to_fun (is_sconnected_to_prespectrification_inv X E (f ∘ₛ to_prespectrification X)) n ~* to_fun f n := begin exact sorry end
|
||
|
||
definition is_sconnected_to_prespectrification_isretr_psq {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} (f : prespectrification X →ₛ E) (n : N) :
|
||
ptube_v (is_sconnected_to_prespectrification_isretr_pfun f n)
|
||
(Ω⇒ (is_sconnected_to_prespectrification_isretr_pfun f (S n)))
|
||
(glue_square (is_sconnected_to_prespectrification_inv X E (f ∘ₛ to_prespectrification X)) n)
|
||
(glue_square f n)
|
||
:=
|
||
begin
|
||
repeat exact sorry
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrification_isretr {N : succ_str} (X : gen_prespectrum N) (E : gen_spectrum N) (f : prespectrification X →ₛ E) : is_sconnected_to_prespectrification_inv X E (f ∘ₛ to_prespectrification X) = f :=
|
||
begin
|
||
fapply eq_of_shomotopy,
|
||
fapply shomotopy.mk,
|
||
exact is_sconnected_to_prespectrification_isretr_pfun f,
|
||
exact is_sconnected_to_prespectrification_isretr_psq f,
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrification_issec_pfun {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} (g : X →ₛ E) (n : N) :
|
||
to_fun (is_sconnected_to_prespectrification_inv X E g ∘ₛ to_prespectrification X) n ~* to_fun g n
|
||
:=
|
||
begin
|
||
repeat exact sorry
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrification_issec_psq {N : succ_str} {X : gen_prespectrum N} {E : gen_spectrum N} (g : X →ₛ E) (n : N) :
|
||
ptube_v (is_sconnected_to_prespectrification_issec_pfun g n)
|
||
(Ω⇒ (is_sconnected_to_prespectrification_issec_pfun g (S n)))
|
||
(glue_square (is_sconnected_to_prespectrification_inv X E g ∘ₛ to_prespectrification X) n)
|
||
(glue_square g n)
|
||
:=
|
||
begin
|
||
repeat exact sorry
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrification_issec {N : succ_str} (X : gen_prespectrum N) (E : gen_spectrum N) (g : X →ₛ E) :
|
||
is_sconnected_to_prespectrification_inv X E g ∘ₛ to_prespectrification X = g :=
|
||
begin
|
||
fapply eq_of_shomotopy,
|
||
fapply shomotopy.mk,
|
||
exact is_sconnected_to_prespectrification_issec_pfun g,
|
||
exact is_sconnected_to_prespectrification_issec_psq g,
|
||
end
|
||
|
||
definition is_sconnected_to_prespectrify {N : succ_str} (X : gen_prespectrum N) :
|
||
is_sconnected (to_prespectrification X) :=
|
||
begin
|
||
intro E,
|
||
fapply adjointify,
|
||
exact is_sconnected_to_prespectrification_inv X E,
|
||
exact is_sconnected_to_prespectrification_issec X E,
|
||
exact is_sconnected_to_prespectrification_isretr X E
|
||
end
|
||
|
||
-- Conjecture
|
||
definition is_spectrum_of_local (X : gen_prespectrum +ℕ) (Hyp : is_equiv (λ (f : prespectrification (psp_sphere) →ₛ X), f ∘ₛ to_prespectrification (psp_sphere))) : is_spectrum X :=
|
||
begin
|
||
fapply is_spectrum.mk,
|
||
exact sorry
|
||
end
|
||
|
||
/- Spectrification -/
|
||
|
||
open chain_complex
|
||
definition spectrify_type_term {N : succ_str} (X : gen_prespectrum N) (n : N) (k : ℕ) : Type* :=
|
||
Ω[k] (X (n +' k))
|
||
|
||
definition spectrify_type_fun' {N : succ_str} (X : gen_prespectrum N) (n : N) (k : ℕ) :
|
||
Ω[k] (X n) →* Ω[k+1] (X (S n)) :=
|
||
!loopn_succ_in⁻¹ᵉ* ∘* Ω→[k] (glue X n)
|
||
|
||
definition spectrify_type_fun {N : succ_str} (X : gen_prespectrum N) (n : N) (k : ℕ) :
|
||
spectrify_type_term X n k →* spectrify_type_term X n (k+1) :=
|
||
spectrify_type_fun' X (n +' k) k
|
||
|
||
definition spectrify_type_fun_zero {N : succ_str} (X : gen_prespectrum N) (n : N) :
|
||
spectrify_type_fun X n 0 ~* glue X n :=
|
||
!pid_pcompose
|
||
|
||
definition spectrify_type {N : succ_str} (X : gen_prespectrum N) (n : N) : Type* :=
|
||
pseq_colim (spectrify_type_fun X n)
|
||
|
||
/-
|
||
Let Y = spectify X ≡ colim_k Ω^k X (n + k). Then
|
||
Ω Y (n+1) ≡ Ω colim_k Ω^k X ((n + 1) + k)
|
||
... = colim_k Ω^{k+1} X ((n + 1) + k)
|
||
... = colim_k Ω^{k+1} X (n + (k + 1))
|
||
... = colim_k Ω^k X(n + k)
|
||
... ≡ Y n
|
||
-/
|
||
|
||
definition spectrify_type_fun'_succ {N : succ_str} (X : gen_prespectrum N) (n : N) (k : ℕ) :
|
||
spectrify_type_fun' X n (succ k) ~* Ω→ (spectrify_type_fun' X n k) :=
|
||
begin
|
||
refine !ap1_pcompose⁻¹*
|
||
end
|
||
|
||
definition spectrify_pequiv {N : succ_str} (X : gen_prespectrum N) (n : N) :
|
||
spectrify_type X n ≃* Ω (spectrify_type X (S n)) :=
|
||
begin
|
||
refine !pshift_equiv ⬝e* _,
|
||
transitivity pseq_colim (λk, spectrify_type_fun' X (S n +' k) (succ k)),
|
||
fapply pseq_colim_pequiv,
|
||
{ intro n, apply loopn_pequiv_loopn, apply pequiv_ap X, apply succ_str.add_succ },
|
||
{ exact abstract begin intro k,
|
||
refine !passoc⁻¹* ⬝* _, refine pwhisker_right _ (loopn_succ_in_inv_natural (succ k) _) ⬝* _,
|
||
refine !passoc ⬝* _ ⬝* !passoc⁻¹*, apply pwhisker_left,
|
||
refine !apn_pcompose⁻¹* ⬝* _ ⬝* !apn_pcompose, apply apn_phomotopy,
|
||
exact !glue_ptransport⁻¹* end end },
|
||
refine _ ⬝e* !pseq_colim_loop⁻¹ᵉ*,
|
||
exact pseq_colim_equiv_constant (λn, !spectrify_type_fun'_succ),
|
||
end
|
||
|
||
definition spectrify [constructor] {N : succ_str} (X : gen_prespectrum N) : gen_spectrum N :=
|
||
spectrum.MK (spectrify_type X) (spectrify_pequiv X)
|
||
|
||
definition spectrify_map {N : succ_str} {X : gen_prespectrum N} : X →ₛ spectrify X :=
|
||
begin
|
||
fapply smap.mk,
|
||
{ intro n, exact pinclusion _ 0 },
|
||
{ intro n, apply phomotopy_of_psquare,
|
||
refine !pid_pcompose⁻¹* ⬝ph* _,
|
||
refine !passoc ⬝* pwhisker_left _ (pshift_equiv_pinclusion (spectrify_type_fun X n) 0) ⬝* _,
|
||
refine !passoc⁻¹* ⬝* _,
|
||
refine _ ◾* (spectrify_type_fun_zero X n ⬝* !pid_pcompose⁻¹*),
|
||
refine !passoc ⬝* pwhisker_left _ !pseq_colim_pequiv_pinclusion ⬝* _,
|
||
refine pwhisker_left _ (pwhisker_left _ (ap1_pid) ⬝* !pcompose_pid) ⬝* _,
|
||
refine !passoc ⬝* pwhisker_left _ !seq_colim_equiv_constant_pinclusion ⬝* _,
|
||
apply pinv_left_phomotopy_of_phomotopy,
|
||
exact !pseq_colim_loop_pinclusion⁻¹*
|
||
}
|
||
end
|
||
|
||
definition spectrify.elim_n {N : succ_str} {X : gen_prespectrum N} {Y : gen_spectrum N}
|
||
(f : X →ₛ Y) (n : N) : (spectrify X) n →* Y n :=
|
||
begin
|
||
fapply pseq_colim.elim,
|
||
{ intro k, refine !equiv_gluen⁻¹ᵉ* ∘* apn k (f (n +' k)) },
|
||
{ intro k, refine !passoc ⬝* pwhisker_right _ !equiv_gluen_inv_succ ⬝* _,
|
||
refine !passoc ⬝* _, apply pwhisker_left,
|
||
refine !passoc ⬝* _,
|
||
refine pwhisker_left _ ((passoc _ _ (_ ∘* _))⁻¹*) ⬝* _,
|
||
refine pwhisker_left _ !passoc⁻¹* ⬝* _,
|
||
refine pwhisker_left _ (pwhisker_right _ (phomotopy_pinv_right_of_phomotopy (!loopn_succ_in_natural)⁻¹*)⁻¹*) ⬝* _,
|
||
refine pwhisker_right _ !apn_pinv ⬝* _,
|
||
refine (phomotopy_pinv_left_of_phomotopy _)⁻¹*,
|
||
refine apn_psquare k _,
|
||
refine psquare_of_phomotopy !smap.glue_square }
|
||
end
|
||
|
||
definition spectrify.elim {N : succ_str} {X : gen_prespectrum N} {Y : gen_spectrum N}
|
||
(f : X →ₛ Y) : spectrify X →ₛ Y :=
|
||
begin
|
||
fapply smap.mk,
|
||
{ intro n, exact spectrify.elim_n f n },
|
||
{ intro n, exact sorry }
|
||
end
|
||
|
||
definition phomotopy_spectrify.elim {N : succ_str} {X : gen_prespectrum N} {Y : gen_spectrum N}
|
||
(f : X →ₛ Y) (n : N) : spectrify.elim_n f n ∘* spectrify_map n ~* f n :=
|
||
begin
|
||
refine pseq_colim.elim_pinclusion _ _ 0 ⬝* _,
|
||
exact !pid_pcompose
|
||
end
|
||
|
||
definition spectrify_fun {N : succ_str} {X Y : gen_prespectrum N} (f : X →ₛ Y) : spectrify X →ₛ spectrify Y :=
|
||
spectrify.elim ((@spectrify_map _ Y) ∘ₛ f)
|
||
|
||
|
||
end spectrum
|