2017-06-28 12:14:48 +00:00
|
|
|
|
import .spectrum .EM
|
|
|
|
|
|
|
|
|
|
open int trunc eq is_trunc lift unit pointed equiv is_equiv algebra EM
|
|
|
|
|
namespace spectrum
|
|
|
|
|
|
|
|
|
|
definition trunc_int.{u} (k : ℤ) (X : Type.{u}) : Type.{u} :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k, exact trunc k X,
|
|
|
|
|
cases k with k, exact trunc -1 X,
|
|
|
|
|
exact lift unit
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition ptrunc_int.{u} (k : ℤ) (X : pType.{u}) : pType.{u} :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k, exact ptrunc k X,
|
|
|
|
|
exact plift punit
|
|
|
|
|
end
|
2017-06-28 14:21:11 +00:00
|
|
|
|
-- NB the carrier of ptrunc_int k X is not definitionally
|
|
|
|
|
-- equal to trunc_int k (carrier X)
|
2017-06-28 12:14:48 +00:00
|
|
|
|
|
|
|
|
|
definition ptrunc_int_pequiv_ptrunc_int (k : ℤ) {X Y : Type*} (e : X ≃* Y) :
|
|
|
|
|
ptrunc_int k X ≃* ptrunc_int k Y :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k,
|
|
|
|
|
exact ptrunc_pequiv_ptrunc k e,
|
|
|
|
|
exact !pequiv_plift⁻¹ᵉ* ⬝e* !pequiv_plift
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition ptrunc_int_change_int {k l : ℤ} (X : Type*) (p : k = l) :
|
|
|
|
|
ptrunc_int k X ≃* ptrunc_int l X :=
|
|
|
|
|
pequiv_ap (λn, ptrunc_int n X) p
|
|
|
|
|
|
|
|
|
|
definition loop_ptrunc_int_pequiv (k : ℤ) (X : Type*) :
|
|
|
|
|
Ω (ptrunc_int (k+1) X) ≃* ptrunc_int k (Ω X) :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k,
|
|
|
|
|
exact loop_ptrunc_pequiv k X,
|
|
|
|
|
cases k with k,
|
|
|
|
|
change Ω (ptrunc 0 X) ≃* plift punit,
|
|
|
|
|
exact !loop_pequiv_punit_of_is_set ⬝e* !pequiv_plift,
|
|
|
|
|
exact loop_pequiv_loop !pequiv_plift⁻¹ᵉ* ⬝e* !loop_punit ⬝e* !pequiv_plift
|
|
|
|
|
end
|
|
|
|
|
|
2017-06-28 14:21:11 +00:00
|
|
|
|
definition strunc [constructor] (k : ℤ) (E : spectrum) : spectrum :=
|
2017-06-28 12:14:48 +00:00
|
|
|
|
spectrum.MK (λ(n : ℤ), ptrunc_int (k + n) (E n))
|
|
|
|
|
(λ(n : ℤ), ptrunc_int_pequiv_ptrunc_int (k + n) (equiv_glue E n) ⬝e*
|
|
|
|
|
(loop_ptrunc_int_pequiv (k + n) (E (n+1)))⁻¹ᵉ* ⬝e*
|
|
|
|
|
loop_pequiv_loop (ptrunc_int_change_int _ (add.assoc k n 1)))
|
|
|
|
|
|
2017-06-28 14:21:11 +00:00
|
|
|
|
definition strunc_change_int [constructor] {k l : ℤ} (E : spectrum) (p : k = l) :
|
|
|
|
|
strunc k E →ₛ strunc l E :=
|
2017-06-28 12:14:48 +00:00
|
|
|
|
begin induction p, reflexivity end
|
|
|
|
|
|
2017-06-28 14:21:11 +00:00
|
|
|
|
definition is_trunc_int.{u} (k : ℤ) (X : Type.{u}) : Type.{u} :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k,
|
|
|
|
|
{ -- case ≥ 0
|
|
|
|
|
exact is_trunc k X },
|
|
|
|
|
{ cases k with k,
|
|
|
|
|
{ -- case = -1
|
|
|
|
|
exact is_trunc -1 X },
|
|
|
|
|
{ -- case < -1
|
|
|
|
|
exact lift unit } }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition is_trunc_int_change_int {k l : ℤ} (X : Type) (p : k = l)
|
|
|
|
|
: is_trunc_int k X → is_trunc_int l X :=
|
|
|
|
|
begin induction p, exact id end
|
|
|
|
|
|
|
|
|
|
definition is_strunc (k : ℤ) (E : spectrum) : Type :=
|
|
|
|
|
Π (n : ℤ), is_trunc_int (k + n) (E n)
|
|
|
|
|
|
|
|
|
|
definition is_strunc_change_int {k l : ℤ} (E : spectrum) (p : k = l)
|
|
|
|
|
: is_strunc k E → is_strunc l E :=
|
|
|
|
|
begin induction p, exact id end
|
|
|
|
|
|
|
|
|
|
definition is_trunc_trunc_int (k : ℤ) (X : Type)
|
|
|
|
|
: is_trunc_int k (trunc_int k X) :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k,
|
|
|
|
|
{ -- case ≥ 0
|
|
|
|
|
exact is_trunc_trunc k X },
|
|
|
|
|
{ cases k with k,
|
|
|
|
|
{ -- case = -1
|
|
|
|
|
exact is_trunc_trunc -1 X },
|
|
|
|
|
{ -- case < -1
|
|
|
|
|
exact up unit.star } }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition is_trunc_ptrunc_int (k : ℤ) (X : pType)
|
|
|
|
|
: is_trunc_int k (ptrunc_int k X) :=
|
|
|
|
|
begin
|
|
|
|
|
induction k with k k,
|
|
|
|
|
{ -- case ≥ 0
|
|
|
|
|
exact is_trunc_trunc k X },
|
|
|
|
|
{ cases k with k,
|
|
|
|
|
{ -- case = -1
|
|
|
|
|
apply is_trunc_lift, apply is_trunc_unit },
|
|
|
|
|
{ -- case < -1
|
|
|
|
|
exact up unit.star } }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition is_strunc_strunc (k : ℤ) (E : spectrum)
|
|
|
|
|
: is_strunc k (strunc k E) :=
|
|
|
|
|
λ n, is_trunc_ptrunc_int (k + n) (E n)
|
|
|
|
|
|
|
|
|
|
definition is_strunc_EM_spectrum (G : AbGroup)
|
|
|
|
|
: is_strunc 0 (EM_spectrum G) :=
|
|
|
|
|
begin
|
|
|
|
|
intro n, induction n with n n,
|
|
|
|
|
{ -- case ≥ 0
|
|
|
|
|
apply is_trunc_int_change_int (EM G n) (zero_add n)⁻¹,
|
|
|
|
|
apply is_trunc_EM },
|
|
|
|
|
{ cases n,
|
|
|
|
|
{ -- case = -1
|
|
|
|
|
apply is_trunc_loop, exact ab_group.is_set_carrier G },
|
|
|
|
|
{ -- case < -1
|
|
|
|
|
exact up unit.star }}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
definition trivial_shomotopy_group_of_is_strunc (E : spectrum)
|
|
|
|
|
{n k : ℤ} (K : is_strunc n E) (H : n < k)
|
|
|
|
|
: is_contr (πₛ[k] E) :=
|
|
|
|
|
sorry
|
|
|
|
|
|
2017-06-28 12:14:48 +00:00
|
|
|
|
end spectrum
|