work on translation from reduced cohomology to unreduced cohomology

This commit is contained in:
Floris van Doorn 2017-07-04 12:57:46 +01:00
parent a34a639e80
commit 36cce7acda
7 changed files with 231 additions and 139 deletions

View file

@ -1,7 +1,7 @@
-- Authors: Floris van Doorn -- Authors: Floris van Doorn
import homotopy.EM algebra.category.functor.equivalence types.pointed2 ..pointed_pi ..pointed import homotopy.EM algebra.category.functor.equivalence types.pointed2 ..pointed_pi ..pointed
..move_to_lib ..move_to_lib .susp
open eq equiv is_equiv algebra group nat pointed EM.ops is_trunc trunc susp function is_conn open eq equiv is_equiv algebra group nat pointed EM.ops is_trunc trunc susp function is_conn
@ -518,33 +518,6 @@ namespace EM
equivalence.mk (EM_cfunctor (n+2)) (is_equivalence_EM_cfunctor n) equivalence.mk (EM_cfunctor (n+2)) (is_equivalence_EM_cfunctor n)
end category end category
/- move -/
open trunc_index
definition is_trunc_succ_of_is_trunc_loop (n : ℕ₋₂) (A : Type*) (H : is_trunc (n.+1) (Ω A))
(H2 : is_conn 0 A) : is_trunc (n.+2) A :=
begin
apply is_trunc_succ_of_is_trunc_loop, apply minus_one_le_succ,
refine is_conn.elim -1 _ _, exact H
end
lemma is_trunc_of_is_trunc_loopn (m n : ) (A : Type*) (H : is_trunc n (Ω[m] A))
(H2 : is_conn m A) : is_trunc (m + n) A :=
begin
revert A H H2; induction m with m IH: intro A H H2,
{ rewrite [nat.zero_add], exact H },
rewrite [succ_add],
apply is_trunc_succ_of_is_trunc_loop,
{ apply IH,
{ apply is_trunc_equiv_closed _ !loopn_succ_in },
apply is_conn_loop },
exact is_conn_of_le _ (zero_le_of_nat (succ m))
end
lemma is_trunc_of_is_set_loopn (m : ) (A : Type*) (H : is_set (Ω[m] A))
(H2 : is_conn m A) : is_trunc m A :=
is_trunc_of_is_trunc_loopn m 0 A H H2
definition pequiv_EMadd1_of_loopn_pequiv_EM1 {G : AbGroup} {X : Type*} (n : ) (e : Ω[n] X ≃* EM1 G) definition pequiv_EMadd1_of_loopn_pequiv_EM1 {G : AbGroup} {X : Type*} (n : ) (e : Ω[n] X ≃* EM1 G)
[H1 : is_conn n X] : X ≃* EMadd1 G n := [H1 : is_conn n X] : X ≃* EMadd1 G n :=
begin begin
@ -563,6 +536,25 @@ namespace EM
abstract (EM1_functor_gcompose φ φ⁻¹ᵍ)⁻¹* ⬝* EM1_functor_phomotopy proof right_inv φ qed ⬝* abstract (EM1_functor_gcompose φ φ⁻¹ᵍ)⁻¹* ⬝* EM1_functor_phomotopy proof right_inv φ qed ⬝*
EM1_functor_gid H end EM1_functor_gid H end
definition is_contr_EM1 {G : Group} (H : is_contr G) : is_contr (EM1 G) :=
is_contr_of_is_conn_of_is_trunc
(is_trunc_succ_succ_of_is_trunc_loop _ _ (is_trunc_equiv_closed _ !loop_EM1) _) !is_conn_EM1
definition is_contr_EMadd1 (n : ) {G : AbGroup} (H : is_contr G) : is_contr (EMadd1 G n) :=
begin
induction n with n IH,
{ exact is_contr_EM1 H },
{ have is_contr (ptrunc (n+2) (psusp (EMadd1 G n))), from _,
exact this }
end
definition is_contr_EM (n : ) {G : AbGroup} (H : is_contr G) : is_contr (K G n) :=
begin
cases n with n,
{ exact H },
{ exact is_contr_EMadd1 n H }
end
definition EMadd1_pequiv_EMadd1 (n : ) {G H : AbGroup} (φ : G ≃g H) : EMadd1 G n ≃* EMadd1 H n := definition EMadd1_pequiv_EMadd1 (n : ) {G H : AbGroup} (φ : G ≃g H) : EMadd1 G n ≃* EMadd1 H n :=
pequiv.MK (EMadd1_functor φ n) (EMadd1_functor φ⁻¹ᵍ n) pequiv.MK (EMadd1_functor φ n) (EMadd1_functor φ⁻¹ᵍ n)
abstract (EMadd1_functor_gcompose φ⁻¹ᵍ φ n)⁻¹* ⬝* EMadd1_functor_phomotopy proof left_inv φ qed n ⬝* abstract (EMadd1_functor_gcompose φ⁻¹ᵍ φ n)⁻¹* ⬝* EMadd1_functor_phomotopy proof left_inv φ qed n ⬝*
@ -577,4 +569,12 @@ namespace EM
{ exact EMadd1_pequiv_EMadd1 n φ } { exact EMadd1_pequiv_EMadd1 n φ }
end end
definition ppi_EMadd1 {X : Type*} (Y : X → Type*) (n : ) :
(Π*(x : X), EMadd1 (πag[n+2] (Y x)) (n+1)) ≃* EMadd1 (πag[n+2] (Π*(x : X), Y x)) (n+1) :=
begin
exact sorry
end
--EM_spectrum (πₛ[s] (spi X Y)) k ≃* spi X (λx, EM_spectrum (πₛ[s] (Y x))) k
end EM end EM

View file

@ -43,7 +43,7 @@ definition ordinary_parametrized_cohomology [reducible] {X : Type*} (G : X → A
parametrized_cohomology (λx, EM_spectrum (G x)) n parametrized_cohomology (λx, EM_spectrum (G x)) n
definition unreduced_parametrized_cohomology {X : Type} (Y : X → spectrum) (n : ) : AbGroup := definition unreduced_parametrized_cohomology {X : Type} (Y : X → spectrum) (n : ) : AbGroup :=
@parametrized_cohomology X₊ (λx, option.cases_on x sunit Y) n @parametrized_cohomology X₊ (add_point_spectrum Y) n
definition unreduced_ordinary_parametrized_cohomology [reducible] {X : Type} (G : X → AbGroup) definition unreduced_ordinary_parametrized_cohomology [reducible] {X : Type} (G : X → AbGroup)
(n : ) : AbGroup := (n : ) : AbGroup :=
@ -78,7 +78,6 @@ definition parametrized_cohomology_isomorphism_shomotopy_group_spi {X : Type*} (
{n m : } (p : -m = n) : pH^n[(x : X), Y x] ≃g πₛ[m] (spi X Y) := {n m : } (p : -m = n) : pH^n[(x : X), Y x] ≃g πₛ[m] (spi X Y) :=
sorry sorry
/- functoriality -/ /- functoriality -/
definition cohomology_functor [constructor] {X X' : Type*} (f : X' →* X) (Y : spectrum) definition cohomology_functor [constructor] {X X' : Type*} (f : X' →* X) (Y : spectrum)
@ -118,7 +117,7 @@ definition cohomology_isomorphism_right (X : Type*) {Y Y' : spectrum} (e : Πn,
: H^n[X, Y] ≃g H^n[X, Y'] := : H^n[X, Y] ≃g H^n[X, Y'] :=
sorry sorry
definition parametrized_cohomology_isomorphism_right (X : Type*) {Y Y' : X → spectrum} definition parametrized_cohomology_isomorphism_right {X : Type*} {Y Y' : X → spectrum}
(e : Πx n, Y x n ≃* Y' x n) (n : ) (e : Πx n, Y x n ≃* Y' x n) (n : )
: pH^n[(x : X), Y x] ≃g pH^n[(x : X), Y' x] := : pH^n[(x : X), Y x] ≃g pH^n[(x : X), Y' x] :=
sorry sorry
@ -127,9 +126,19 @@ definition ordinary_cohomology_isomorphism_right (X : Type*) {G G' : AbGroup} (e
(n : ) : oH^n[X, G] ≃g oH^n[X, G'] := (n : ) : oH^n[X, G] ≃g oH^n[X, G'] :=
cohomology_isomorphism_right X (EM_spectrum_pequiv e) n cohomology_isomorphism_right X (EM_spectrum_pequiv e) n
definition ordinary_parametrized_cohomology_isomorphism_right (X : Type*) {G G' : X → AbGroup} definition ordinary_parametrized_cohomology_isomorphism_right {X : Type*} {G G' : X → AbGroup}
(e : Πx, G x ≃g G' x) (n : ) : opH^n[(x : X), G x] ≃g opH^n[(x : X), G' x] := (e : Πx, G x ≃g G' x) (n : ) : opH^n[(x : X), G x] ≃g opH^n[(x : X), G' x] :=
parametrized_cohomology_isomorphism_right X (λx, EM_spectrum_pequiv (e x)) n parametrized_cohomology_isomorphism_right (λx, EM_spectrum_pequiv (e x)) n
definition uopH_isomorphism_opH {X : Type} (G : X → AbGroup) (n : ) :
uopH^n[(x : X), G x] ≃g opH^n[(x : X₊), add_point_AbGroup G x] :=
parametrized_cohomology_isomorphism_right
begin
intro x n, induction x with x,
{ symmetry, apply EM_spectrum_trivial, },
{ reflexivity }
end
n
/- suspension axiom -/ /- suspension axiom -/

View file

@ -1,7 +1,7 @@
import ..algebra.module_exact_couple .strunc .cohomology import ..algebra.module_exact_couple .strunc .cohomology
open eq spectrum trunc is_trunc pointed int EM algebra left_module fiber lift equiv is_equiv open eq spectrum trunc is_trunc pointed int EM algebra left_module fiber lift equiv is_equiv
cohomology group sigma unit cohomology group sigma unit is_conn
set_option pp.binder_types true set_option pp.binder_types true
/- Eilenberg MacLane spaces are the fibers of the Postnikov system of a type -/ /- Eilenberg MacLane spaces are the fibers of the Postnikov system of a type -/
@ -19,7 +19,7 @@ begin
end end
section section
open nat is_conn group open nat group
definition pfiber_postnikov_map (A : Type*) (n : ) : definition pfiber_postnikov_map (A : Type*) (n : ) :
pfiber (postnikov_map A n) ≃* EM_type A (n+1) := pfiber (postnikov_map A n) ≃* EM_type A (n+1) :=
begin begin
@ -76,10 +76,30 @@ definition postnikov_smap [constructor] (X : spectrum) (k : ) :
strunc k X →ₛ strunc (k - 1) X := strunc k X →ₛ strunc (k - 1) X :=
strunc_elim (str (k - 1) X) (is_strunc_strunc_pred X k) strunc_elim (str (k - 1) X) (is_strunc_strunc_pred X k)
/-
we could try to prove that postnikov_smap is homotopic to postnikov_map, although the types
are different enough, that even stating it will be quite annoying
-/
definition pfiber_postnikov_smap (A : spectrum) (n : ) (k : ) : definition pfiber_postnikov_smap (A : spectrum) (n : ) (k : ) :
pfiber (postnikov_smap A n k) ≃* EM_spectrum (πₛ[n] A) k := sfiber (postnikov_smap A n) k ≃* EM_spectrum (πₛ[n] A) k :=
begin begin
exact sorry exact sorry
/- symmetry, apply spectrum_pequiv_of_nat_succ_succ, clear k, intro k,
apply EMadd1_pequiv k,
{ exact sorry
-- refine _ ⬝g shomotopy_group_strunc n A,
-- exact chain_complex.LES_isomorphism_of_trivial_cod _ _
-- (trivial_homotopy_group_of_is_trunc _ (self_lt_succ n))
-- (trivial_homotopy_group_of_is_trunc _ (le_succ _))
},
{ exact sorry --apply is_conn_fun_trunc_elim, apply is_conn_fun_tr
},
{ -- have is_trunc (n+1) (ptrunc n.+1 A), from !is_trunc_trunc,
-- have is_trunc ((n+1).+1) (ptrunc n A), by do 2 apply is_trunc_succ, apply is_trunc_trunc,
-- apply is_trunc_pfiber
exact sorry
}-/
end end
section atiyah_hirzebruch section atiyah_hirzebruch
@ -121,8 +141,8 @@ section atiyah_hirzebruch
(λn s, πₛ[n] (sfiber (postnikov_smap (spi X Y) s))) ⟹ᵍ (λn, πₛ[n] (strunc s₀ (spi X Y))) := (λn s, πₛ[n] (sfiber (postnikov_smap (spi X Y) s))) ⟹ᵍ (λn, πₛ[n] (strunc s₀ (spi X Y))) :=
converges_to_sequence _ s₀ (λn, n - 1) atiyah_hirzebruch_lb atiyah_hirzebruch_ub converges_to_sequence _ s₀ (λn, n - 1) atiyah_hirzebruch_lb atiyah_hirzebruch_ub
lemma spi_EM_spectrum (k s : ) : lemma spi_EM_spectrum (k n : ) :
EM_spectrum (πₛ[s] (spi X Y)) k ≃* spi X (λx, EM_spectrum (πₛ[s] (Y x))) k := EM_spectrum (πₛ[n] (spi X Y)) k ≃* spi X (λx, EM_spectrum (πₛ[n] (Y x))) k :=
sorry sorry
definition atiyah_hirzebruch_convergence : definition atiyah_hirzebruch_convergence :
@ -142,30 +162,23 @@ section atiyah_hirzebruch
apply ptrunc_pequiv, exact is_strunc_spi s₀ Y H k, apply ptrunc_pequiv, exact is_strunc_spi s₀ Y H k,
end end
--{X : Type*} (Y : X → spectrum) (s₀ : ) (H : Πx, is_strunc s₀ (Y x))
end atiyah_hirzebruch end atiyah_hirzebruch
section unreduced_atiyah_hirzebruch section unreduced_atiyah_hirzebruch
open option
definition unreduced_atiyah_hirzebruch_convergence {X : Type} (Y : X → spectrum) (s₀ : ) definition unreduced_atiyah_hirzebruch_convergence {X : Type} (Y : X → spectrum) (s₀ : )
(H : Πx, is_strunc s₀ (Y x)) : (H : Πx, is_strunc s₀ (Y x)) :
(λn s, uopH^-n[(x : X), πₛ[s] (Y x)]) ⟹ᵍ (λn, upH^-n[(x : X), Y x]) := (λn s, uopH^-n[(x : X), πₛ[s] (Y x)]) ⟹ᵍ (λn, upH^-n[(x : X), Y x]) :=
converges_to_g_isomorphism converges_to_g_isomorphism
(@atiyah_hirzebruch_convergence X₊ (add_point_spectrum Y) s₀ (is_strunc_add_point_spectrum H)) (@atiyah_hirzebruch_convergence X₊ (add_point_spectrum Y) s₀ (is_strunc_add_point_spectrum H))
begin begin
intro n s, exact sorry intro n s, refine _ ⬝g !uopH_isomorphism_opH⁻¹ᵍ,
-- refine _ ⬝g (parametrized_cohomology_isomorphism_shomotopy_group_spi _ idp)⁻¹ᵍ, apply ordinary_parametrized_cohomology_isomorphism_right,
-- apply shomotopy_group_isomorphism_of_pequiv, intro k, intro x,
-- refine pfiber_postnikov_smap (spi X Y) s k ⬝e* _, apply shomotopy_group_add_point_spectrum
-- apply spi_EM_spectrum
end end
begin begin
intro n, exact sorry intro n, reflexivity
-- refine _ ⬝g (parametrized_cohomology_isomorphism_shomotopy_group_spi _ idp)⁻¹ᵍ,
-- apply shomotopy_group_isomorphism_of_pequiv, intro k,
-- apply ptrunc_pequiv, exact is_strunc_spi s₀ Y H k,
end end
end unreduced_atiyah_hirzebruch end unreduced_atiyah_hirzebruch
@ -178,28 +191,28 @@ section serre
postfix `₊ₒ`:(max+1) := add_point_over postfix `₊ₒ`:(max+1) := add_point_over
/- NOTE: we need unreduced cohomology, maybe also define aityah_hirzebruch for unreduced cohomology -/
include H include H
definition serre_convergence : -- definition serre_convergence :
(λn s, uopH^-n[(x : X), uH^-s[F x, Y]]) ⟹ᵍ (λn, uH^-n[Σ(x : X), F x, Y]) := -- (λn s, uopH^-n[(x : X), uH^-s[F x, Y]]) ⟹ᵍ (λn, uH^-n[Σ(x : X), F x, Y]) :=
proof -- proof
converges_to_g_isomorphism -- converges_to_g_isomorphism
(atiyah_hirzebruch_convergence (λx, sp_cotensor (F₊ₒ x) Y) s₀ -- (unreduced_atiyah_hirzebruch_convergence
(λx, is_strunc_sp_cotensor s₀ (F₊ₒ x) H)) -- (λx, sp_cotensor (F x) Y) s₀
begin -- (λx, is_strunc_sp_cotensor s₀ (F x) H))
exact sorry -- begin
-- intro n s, -- exact sorry
-- apply ordinary_parametrized_cohomology_isomorphism_right, -- -- intro n s,
-- intro x, -- -- apply ordinary_parametrized_cohomology_isomorphism_right,
-- exact (cohomology_isomorphism_shomotopy_group_sp_cotensor _ _ idp)⁻¹ᵍ, -- -- intro x,
end -- -- exact (cohomology_isomorphism_shomotopy_group_sp_cotensor _ _ idp)⁻¹ᵍ,
begin -- end
intro n, exact sorry -- begin
-- refine parametrized_cohomology_isomorphism_shomotopy_group_spi _ idp ⬝g _, -- intro n, exact sorry
-- refine _ ⬝g (cohomology_isomorphism_shomotopy_group_sp_cotensor _ _ idp)⁻¹ᵍ, -- -- refine parametrized_cohomology_isomorphism_shomotopy_group_spi _ idp ⬝g _,
-- apply shomotopy_group_isomorphism_of_pequiv, intro k, -- -- refine _ ⬝g (cohomology_isomorphism_shomotopy_group_sp_cotensor _ _ idp)⁻¹ᵍ,
end -- -- apply shomotopy_group_isomorphism_of_pequiv, intro k,
qed -- end
-- qed
end serre end serre
/- TODO: πₛ[n] (strunc 0 (spi X Y)) ≃g H^n[X, λx, Y x] -/ /- TODO: πₛ[n] (strunc 0 (spi X Y)) ≃g H^n[X, λx, Y x] -/

View file

@ -253,11 +253,34 @@ namespace spectrum
-- Equivalences of prespectra -- Equivalences of prespectra
------------------------------ ------------------------------
definition spectrum_pequiv_of_pequiv_succ {E F : spectrum} (n : ) (e : E (n + 1) ≃* F (n + 1)) :
E n ≃* F n :=
equiv_glue E n ⬝e* loop_pequiv_loop e ⬝e* (equiv_glue F n)⁻¹ᵉ*
definition spectrum_pequiv_of_nat {E F : spectrum} (e : Π(n : ), E n ≃* F n) (n : ) : definition spectrum_pequiv_of_nat {E F : spectrum} (e : Π(n : ), E n ≃* F n) (n : ) :
E n ≃* F n := E n ≃* F n :=
begin begin
have Πn, E (n + 1) ≃* F (n + 1) → E n ≃* F n, induction n with n n,
from λk f, equiv_glue E k ⬝e* loop_pequiv_loop f ⬝e* (equiv_glue F k)⁻¹ᵉ*, exact e n,
induction n with n IH,
{ exact spectrum_pequiv_of_pequiv_succ -[1+0] (e 0) },
{ exact spectrum_pequiv_of_pequiv_succ -[1+succ n] IH }
end
-- definition spectrum_pequiv_of_nat_add {E F : spectrum} (m : )
-- (e : Π(n : ), E (n + m) ≃* F (n + m)) : Π(n : ), E n ≃* F n :=
-- begin
-- apply spectrum_pequiv_of_nat,
-- refine nat.rec_down _ m e _,
-- intro n f m, cases m with m,
-- end
definition is_contr_spectrum_of_nat {E : spectrum} (e : Π(n : ), is_contr (E n)) (n : ) :
is_contr (E n) :=
begin
have Πn, is_contr (E (n + 1)) → is_contr (E n),
from λn H, @(is_trunc_equiv_closed_rev -2 !equiv_glue) (is_contr_loop_of_is_contr H),
induction n with n n, induction n with n n,
exact e n, exact e n,
induction n with n IH, induction n with n IH,
@ -338,18 +361,6 @@ namespace spectrum
definition psp_sphere : gen_prespectrum + := definition psp_sphere : gen_prespectrum + :=
psp_susp bool.pbool psp_susp bool.pbool
------------------------------
-- Contractible spectrum
------------------------------
definition sunit.{u} [constructor] : spectrum.{u} :=
spectrum.MK (λn, plift punit) (λn, pequiv_of_is_contr _ _ _ _)
open option
definition add_point_spectrum {X : Type} (Y : X → spectrum) : X₊ → spectrum
| (some x) := Y x
| none := sunit
/--------------------- /---------------------
Homotopy groups Homotopy groups
---------------------/ ---------------------/
@ -756,6 +767,29 @@ spectrify_fun (smash_prespectrum_fun f g)
/- Cofibers and stability -/ /- Cofibers and stability -/
------------------------------
-- Contractible spectrum
------------------------------
definition sunit.{u} [constructor] : spectrum.{u} :=
spectrum.MK (λn, plift punit) (λn, pequiv_of_is_contr _ _ _ _)
definition shomotopy_group_sunit.{u} (n : ) : πₛ[n] sunit.{u} ≃g trivial_ab_group_lift.{u} :=
have H : 0 <[] 2, from !zero_lt_succ,
isomorphism_of_is_contr (@trivial_homotopy_group_of_is_trunc _ _ _ !is_trunc_lift H)
!is_trunc_lift
open option
definition add_point_spectrum [unfold 3] {X : Type} (Y : X → spectrum) : X₊ → spectrum
| (some x) := Y x
| none := sunit
definition shomotopy_group_add_point_spectrum {X : Type} (Y : X → spectrum) (n : ) :
Π(x : X₊), πₛ[n] (add_point_spectrum Y x) ≃g add_point_AbGroup (λ (x : X), πₛ[n] (Y x)) x
| (some x) := by reflexivity
| none := shomotopy_group_sunit n
/- The Eilenberg-MacLane spectrum -/ /- The Eilenberg-MacLane spectrum -/
definition EM_spectrum /-[constructor]-/ (G : AbGroup) : spectrum := definition EM_spectrum /-[constructor]-/ (G : AbGroup) : spectrum :=
@ -765,6 +799,12 @@ spectrify_fun (smash_prespectrum_fun f g)
EM_spectrum G n ≃* EM_spectrum H n := EM_spectrum G n ≃* EM_spectrum H n :=
spectrum_pequiv_of_nat (λk, EM_pequiv_EM k e) n spectrum_pequiv_of_nat (λk, EM_pequiv_EM k e) n
definition EM_spectrum_trivial.{u} (n : ) :
EM_spectrum trivial_ab_group_lift.{u} n ≃* trivial_ab_group_lift.{u} :=
pequiv_of_is_contr _ _
(is_contr_spectrum_of_nat (λk, is_contr_EM k !is_trunc_lift) n)
!is_trunc_lift
/- Wedge of prespectra -/ /- Wedge of prespectra -/
open fwedge open fwedge

View file

@ -1,6 +1,6 @@
import homotopy.susp types.pointed2 import homotopy.susp types.pointed2 ..move_to_lib
open susp eq pointed function is_equiv lift equiv open susp eq pointed function is_equiv lift equiv is_trunc
namespace susp namespace susp
variables {X X' Y Y' Z : Type*} variables {X X' Y Y' Z : Type*}
@ -90,4 +90,42 @@ namespace susp
... ≃* psusp (plift.{u v} A) : by exact psusp_pequiv (pequiv_plift.{u v} A) ... ≃* psusp (plift.{u v} A) : by exact psusp_pequiv (pequiv_plift.{u v} A)
end end
definition is_contr_susp [instance] (A : Type) [H : is_contr A] : is_contr (susp A) :=
begin
apply is_contr.mk north,
intro x, induction x,
reflexivity,
exact merid !center,
apply eq_pathover_constant_left_id_right, apply square_of_eq,
exact whisker_left idp (ap merid !eq_of_is_contr)
end
definition is_contr_psusp [instance] (A : Type) [H : is_contr A] : is_contr (psusp A) :=
is_contr_susp A
definition psusp_pelim2 {X Y : Type*} {f g : ⅀ X →* Y} (p : f ~* g) : ((loop_psusp_pintro X Y) f) ~* ((loop_psusp_pintro X Y) g) :=
pwhisker_right (loop_psusp_unit X) (Ω⇒ p)
variables {A₀₀ A₂₀ A₀₂ A₂₂ : Type*}
{f₁₀ : A₀₀ →* A₂₀} {f₁₂ : A₀₂ →* A₂₂}
{f₀₁ : A₀₀ →* A₀₂} {f₂₁ : A₂₀ →* A₂₂}
-- rename: psusp_functor_psquare
definition suspend_psquare (p : psquare f₁₀ f₁₂ f₀₁ f₂₁) : psquare (⅀→ f₁₀) (⅀→ f₁₂) (⅀→ f₀₁) (⅀→ f₂₁) :=
sorry
definition susp_to_loop_psquare (f₁₀ : A₀₀ →* A₂₀) (f₁₂ : A₀₂ →* A₂₂) (f₀₁ : psusp A₀₀ →* A₀₂) (f₂₁ : psusp A₂₀ →* A₂₂) : (psquare (⅀→ f₁₀) f₁₂ f₀₁ f₂₁) → (psquare f₁₀ (Ω→ f₁₂) ((loop_psusp_pintro A₀₀ A₀₂) f₀₁) ((loop_psusp_pintro A₂₀ A₂₂) f₂₁)) :=
begin
intro p,
refine pvconcat _ (ap1_psquare p),
exact loop_psusp_unit_natural f₁₀
end
definition loop_to_susp_square (f₁₀ : A₀₀ →* A₂₀) (f₁₂ : A₀₂ →* A₂₂) (f₀₁ : A₀₀ →* Ω A₀₂) (f₂₁ : A₂₀ →* Ω A₂₂) : (psquare f₁₀ (Ω→ f₁₂) f₀₁ f₂₁) → (psquare (⅀→ f₁₀) f₁₂ ((psusp_pelim A₀₀ A₀₂) f₀₁) ((psusp_pelim A₂₀ A₂₂) f₂₁)) :=
begin
intro p,
refine pvconcat (suspend_psquare p) _,
exact psquare_transpose (loop_psusp_counit_natural f₁₂)
end
end susp end susp

View file

@ -1,7 +1,6 @@
-- definitions, theorems and attributes which should be moved to files in the HoTT library -- definitions, theorems and attributes which should be moved to files in the HoTT library
import homotopy.sphere2 homotopy.cofiber homotopy.wedge hit.prop_trunc hit.set_quotient eq2 types.pointed2 import homotopy.sphere2 homotopy.cofiber homotopy.wedge hit.prop_trunc hit.set_quotient eq2 types.pointed2
.homotopy.susp
open eq nat int susp pointed pmap sigma is_equiv equiv fiber algebra trunc pi group open eq nat int susp pointed pmap sigma is_equiv equiv fiber algebra trunc pi group
is_trunc function sphere unit prod bool is_trunc function sphere unit prod bool
@ -294,9 +293,6 @@ namespace trunc
{ apply idp_con } { apply idp_con }
end end
definition is_trunc_of_eq {n m : ℕ₋₂} (p : n = m) {A : Type} (H : is_trunc n A) : is_trunc m A :=
transport (λk, is_trunc k A) p H
definition is_trunc_ptrunc_of_is_trunc [instance] [priority 500] (A : Type*) definition is_trunc_ptrunc_of_is_trunc [instance] [priority 500] (A : Type*)
(n m : ℕ₋₂) [H : is_trunc n A] : is_trunc n (ptrunc m A) := (n m : ℕ₋₂) [H : is_trunc n A] : is_trunc n (ptrunc m A) :=
is_trunc_trunc_of_is_trunc A n m is_trunc_trunc_of_is_trunc A n m
@ -326,6 +322,38 @@ namespace trunc
end trunc end trunc
namespace is_trunc
open trunc_index is_conn
definition is_trunc_of_eq {n m : ℕ₋₂} (p : n = m) {A : Type} (H : is_trunc n A) : is_trunc m A :=
transport (λk, is_trunc k A) p H
definition is_trunc_succ_succ_of_is_trunc_loop (n : ℕ₋₂) (A : Type*) (H : is_trunc (n.+1) (Ω A))
(H2 : is_conn 0 A) : is_trunc (n.+2) A :=
begin
apply is_trunc_succ_of_is_trunc_loop, apply minus_one_le_succ,
refine is_conn.elim -1 _ _, exact H
end
lemma is_trunc_of_is_trunc_loopn (m n : ) (A : Type*) (H : is_trunc n (Ω[m] A))
(H2 : is_conn m A) : is_trunc (m + n) A :=
begin
revert A H H2; induction m with m IH: intro A H H2,
{ rewrite [nat.zero_add], exact H },
rewrite [succ_add],
apply is_trunc_succ_succ_of_is_trunc_loop,
{ apply IH,
{ apply is_trunc_equiv_closed _ !loopn_succ_in },
apply is_conn_loop },
exact is_conn_of_le _ (zero_le_of_nat (succ m))
end
lemma is_trunc_of_is_set_loopn (m : ) (A : Type*) (H : is_set (Ω[m] A))
(H2 : is_conn m A) : is_trunc m A :=
is_trunc_of_is_trunc_loopn m 0 A H H2
end is_trunc
namespace sigma namespace sigma
-- definition sigma_pathover_equiv_of_is_prop {A : Type} {B : A → Type} {C : Πa, B a → Type} -- definition sigma_pathover_equiv_of_is_prop {A : Type} {B : A → Type} {C : Πa, B a → Type}
@ -381,6 +409,14 @@ namespace group
reflexivity reflexivity
end end
open option
definition add_point_AbGroup [unfold 3] {X : Type} (G : X → AbGroup) : X₊ → AbGroup
| (some x) := G x
| none := trivial_ab_group_lift
definition isomorphism_of_is_contr {G H : Group} (hG : is_contr G) (hH : is_contr H) : G ≃g H :=
trivial_group_of_is_contr G ⬝g (trivial_group_of_is_contr H)⁻¹ᵍ
end group open group end group open group
namespace function namespace function
@ -419,35 +455,6 @@ namespace is_conn
end is_conn end is_conn
namespace is_trunc
open trunc_index is_conn
definition is_trunc_succ_succ_of_is_trunc_loop (n : ℕ₋₂) (A : Type*) (H : is_trunc (n.+1) (Ω A))
(H2 : is_conn 0 A) : is_trunc (n.+2) A :=
begin
apply is_trunc_succ_of_is_trunc_loop, apply minus_one_le_succ,
refine is_conn.elim -1 _ _, exact H
end
lemma is_trunc_of_is_trunc_loopn (m n : ) (A : Type*) (H : is_trunc n (Ω[m] A))
(H2 : is_conn m A) : is_trunc (m +[] n) A :=
begin
revert A H H2; induction m with m IH: intro A H H2,
{ rewrite [nat.zero_add], exact H },
rewrite [succ_add],
apply is_trunc_succ_succ_of_is_trunc_loop,
{ apply IH,
{ apply is_trunc_equiv_closed _ !loopn_succ_in },
apply is_conn_loop },
exact is_conn_of_le _ (zero_le_of_nat (succ m))
end
lemma is_trunc_of_is_set_loopn (m : ) (A : Type*) (H : is_set (Ω[m] A))
(H2 : is_conn m A) : is_trunc m A :=
is_trunc_of_is_trunc_loopn m 0 A H H2
end is_trunc
namespace misc namespace misc
open is_conn open is_conn
@ -801,34 +808,16 @@ begin
rewrite trans_refl rewrite trans_refl
end end
definition psusp_pelim2 {X Y : Type*} {f g : ⅀ X →* Y} (p : f ~* g) : ((loop_psusp_pintro X Y) f) ~* ((loop_psusp_pintro X Y) g) :=
pwhisker_right (loop_psusp_unit X) (Ω⇒ p)
namespace pointed namespace pointed
definition to_homotopy_pt_mk {A B : Type*} {f g : A →* B} (h : f ~ g) definition to_homotopy_pt_mk {A B : Type*} {f g : A →* B} (h : f ~ g)
(p : h pt ⬝ respect_pt g = respect_pt f) : to_homotopy_pt (phomotopy.mk h p) = p := (p : h pt ⬝ respect_pt g = respect_pt f) : to_homotopy_pt (phomotopy.mk h p) = p :=
to_right_inv !eq_con_inv_equiv_con_eq p to_right_inv !eq_con_inv_equiv_con_eq p
variables {A₀₀ A₂₀ A₀₂ A₂₂ : Type*} variables {A₀₀ A₂₀ A₀₂ A₂₂ : Type*}
{f₁₀ : A₀₀ →* A₂₀} {f₁₂ : A₀₂ →* A₂₂} {f₁₀ : A₀₀ →* A₂₀} {f₁₂ : A₀₂ →* A₂₂}
{f₀₁ : A₀₀ →* A₀₂} {f₂₁ : A₂₀ →* A₂₂} {f₀₁ : A₀₀ →* A₀₂} {f₂₁ : A₂₀ →* A₂₂}
definition psquare_transpose (p : psquare f₁₀ f₁₂ f₀₁ f₂₁) : psquare f₀₁ f₂₁ f₁₀ f₁₂ := p⁻¹* definition psquare_transpose (p : psquare f₁₀ f₁₂ f₀₁ f₂₁) : psquare f₀₁ f₂₁ f₁₀ f₁₂ := p⁻¹*
definition suspend_psquare (p : psquare f₁₀ f₁₂ f₀₁ f₂₁) : psquare (⅀→ f₁₀) (⅀→ f₁₂) (⅀→ f₀₁) (⅀→ f₂₁) :=
sorry
definition susp_to_loop_psquare (f₁₀ : A₀₀ →* A₂₀) (f₁₂ : A₀₂ →* A₂₂) (f₀₁ : psusp A₀₀ →* A₀₂) (f₂₁ : psusp A₂₀ →* A₂₂) : (psquare (⅀→ f₁₀) f₁₂ f₀₁ f₂₁) → (psquare f₁₀ (Ω→ f₁₂) ((loop_psusp_pintro A₀₀ A₀₂) f₀₁) ((loop_psusp_pintro A₂₀ A₂₂) f₂₁)) :=
begin
intro p,
refine pvconcat _ (ap1_psquare p),
exact loop_psusp_unit_natural f₁₀
end
definition loop_to_susp_square (f₁₀ : A₀₀ →* A₂₀) (f₁₂ : A₀₂ →* A₂₂) (f₀₁ : A₀₀ →* Ω A₀₂) (f₂₁ : A₂₀ →* Ω A₂₂) : (psquare f₁₀ (Ω→ f₁₂) f₀₁ f₂₁) → (psquare (⅀→ f₁₀) f₁₂ ((psusp_pelim A₀₀ A₀₂) f₀₁) ((psusp_pelim A₂₀ A₂₂) f₂₁)) :=
begin
intro p,
refine pvconcat (suspend_psquare p) _,
exact psquare_transpose (loop_psusp_counit_natural f₁₂)
end
end pointed end pointed

View file

@ -195,6 +195,9 @@ namespace pointed
definition is_contr_loop (A : Type*) [is_set A] : is_contr (Ω A) := definition is_contr_loop (A : Type*) [is_set A] : is_contr (Ω A) :=
is_contr.mk idp (λa, !is_prop.elim) is_contr.mk idp (λa, !is_prop.elim)
definition is_contr_loop_of_is_contr {A : Type*} (H : is_contr A) : is_contr (Ω A) :=
is_contr_loop A
definition is_contr_punit [instance] : is_contr punit := definition is_contr_punit [instance] : is_contr punit :=
is_contr_unit is_contr_unit