Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Devalapurkar & Haine #1157

Open
wants to merge 81 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
93d7248
t
aljungstrom Feb 1, 2022
b4b6efb
m
aljungstrom Feb 1, 2022
cc6ced2
done
aljungstrom Apr 24, 2023
e8244ac
duplicate
aljungstrom Apr 24, 2023
aadde33
wups
aljungstrom Apr 24, 2023
17f3fc1
rme
aljungstrom Apr 24, 2023
9341710
ganea stuff
aljungstrom Jun 2, 2023
52429ff
Merge branch 'newM'
aljungstrom Jun 8, 2023
ea75092
w
aljungstrom Jun 8, 2023
3acc6b8
w
aljungstrom Jun 8, 2023
227b10b
w
aljungstrom Jun 8, 2023
9d1915d
fix
aljungstrom Jan 17, 2024
c034578
stuff
aljungstrom Jan 18, 2024
2fef4ef
stuff
aljungstrom Jan 22, 2024
2b8b5fd
more
aljungstrom Jan 22, 2024
74596b5
..
aljungstrom Jan 23, 2024
5e8b305
done?
aljungstrom Jan 23, 2024
74a8521
wups
aljungstrom Jan 23, 2024
7875e3e
wups
aljungstrom Jan 23, 2024
7313a31
wups
aljungstrom Jan 23, 2024
b7716a4
fixes
aljungstrom Jan 23, 2024
f7524eb
ugh...
aljungstrom Jan 23, 2024
e47bad5
wups
aljungstrom Jan 24, 2024
9071481
stuff
aljungstrom Jan 31, 2024
f4745a2
Merge remote-tracking branch 'origin/master'
aljungstrom Jan 31, 2024
ea5fefd
stuff
aljungstrom Feb 25, 2024
b694120
stuff
aljungstrom Feb 26, 2024
ae6e813
stuf
aljungstrom Feb 26, 2024
df55d55
More
aljungstrom Feb 29, 2024
42d6b77
stuff
aljungstrom Feb 29, 2024
54c7919
stuff
aljungstrom Mar 1, 2024
53bb0f2
stuff
aljungstrom Mar 3, 2024
a3bb47e
done?
aljungstrom Mar 3, 2024
4ba3c8e
stuff
aljungstrom Mar 3, 2024
a3f6a9e
merge
aljungstrom Mar 3, 2024
6e259af
cleanup
aljungstrom Mar 3, 2024
b1f9e1d
readme
aljungstrom Mar 4, 2024
2d3fe1c
wups
aljungstrom Mar 4, 2024
1b005a6
ugh
aljungstrom Mar 4, 2024
ac5249e
wups
aljungstrom Mar 4, 2024
3e53282
broken code
aljungstrom Mar 4, 2024
beccacd
ojdå
aljungstrom Mar 4, 2024
3784dcd
comments
aljungstrom May 2, 2024
eb6b12e
Pointed
aljungstrom May 7, 2024
87fa4c0
done?
aljungstrom May 7, 2024
afe51a4
p2
aljungstrom May 8, 2024
dac2fd3
stuff
aljungstrom May 23, 2024
77623bb
wip...
aljungstrom May 27, 2024
c7acbee
stuff
aljungstrom May 29, 2024
e4f4003
almost
aljungstrom May 31, 2024
6bc3664
pretty much done
aljungstrom May 31, 2024
0cb5678
cleaning
aljungstrom Jun 4, 2024
73afa8e
cleaning
aljungstrom Jun 4, 2024
787f34f
connected done?
aljungstrom Jun 4, 2024
46482af
connected clean
aljungstrom Jun 4, 2024
1dff2d5
merge
aljungstrom Jun 4, 2024
10aea90
minor
aljungstrom Jun 4, 2024
e13f9ab
Merge remote-tracking branch 'master/master' into cellular_pointed
aljungstrom Sep 16, 2024
5dae632
fixes
aljungstrom Sep 16, 2024
b4e74c1
Susp is Pushout 1 <- X -> 1
Trebor-Huang Aug 11, 2024
d0a06cd
pushout along identity
Trebor-Huang Aug 11, 2024
313b74e
Use pushout squares for cofibInl-⋁
Trebor-Huang Aug 11, 2024
54038ae
join inclusions are null
Trebor-Huang Aug 11, 2024
fa2da1a
projection functions
Trebor-Huang Aug 11, 2024
90f1ca9
Remove redundant definition
Trebor-Huang Aug 11, 2024
4bc6517
Pushout⋁≃Unit
Trebor-Huang Aug 11, 2024
9d50340
Susp (X∙ ⋀ Y∙) ≡ join X Y
Trebor-Huang Aug 11, 2024
72a7557
Universes
Trebor-Huang Aug 11, 2024
f9fc7e3
Use PushoutSquare instead
Trebor-Huang Aug 12, 2024
dac0c0e
Pushout using Unit*
Trebor-Huang Aug 12, 2024
a4b23dd
Rename
Trebor-Huang Aug 15, 2024
98bbb7a
tweak
Trebor-Huang Aug 17, 2024
dee0c56
extend commutative squares
Trebor-Huang Aug 17, 2024
51fa7d0
Remove my version in favor of the other
Trebor-Huang Sep 19, 2024
08a56c4
Oddly specific sigma lemma
Trebor-Huang Sep 19, 2024
c983de7
Splitting of loopspace
Trebor-Huang Sep 19, 2024
d99570a
Hilton–Milnor
Trebor-Huang Sep 19, 2024
f0d49bc
James
Trebor-Huang Sep 19, 2024
a181af8
Merge remote-tracking branch 'origin/master' into devalapurkar-haine
Trebor-Huang Sep 19, 2024
54a2b1f
Fix whitespace
Trebor-Huang Sep 19, 2024
01fa420
safe flags
Trebor-Huang Sep 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Cubical/Foundations/Pointed/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,14 @@ compPathlEquiv∙ : {A : Type ℓ} {a b c : A} {q : b ≡ c} (p : a ≡ b)
fst (compPathlEquiv∙ p) = compPathlEquiv p
snd (compPathlEquiv∙ p) = refl

-- Pointed version of Σ-cong-equiv-snd
Σ-cong-equiv-snd∙ : ∀ {ℓ ℓ'} {A : Type ℓ} {B₁ B₂ : A → Type ℓ'}
→ {a : A} {b₁ : B₁ a} {b₂ : B₂ a}
→ (e : ∀ a → B₁ a ≃ B₂ a)
→ fst (e a) b₁ ≡ b₂
→ Path (Pointed _) (Σ A B₁ , a , b₁) (Σ A B₂ , a , b₂)
Σ-cong-equiv-snd∙ e p = ua∙ (Σ-cong-equiv-snd e) (ΣPathP (refl , p))

-- a pointed map is constant iff its non-pointed part is constant
constantPointed≡ : {A B : Pointed ℓ} (f : A →∙ B)
→ fst f ≡ fst (const∙ A B) → f ≡ const∙ A B
Expand Down
87 changes: 87 additions & 0 deletions Cubical/HITs/James/Stable.agda
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{-# OPTIONS --safe #-}

{-
The stable version of the James splitting:
ΣΩΣX ≃ ΣX ⋁ Σ(X ⋀ ΩΣX)
-}

open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Path
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Pointed
open import Cubical.Foundations.Transport
open import Cubical.Foundations.Univalence
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Function

open import Cubical.Data.Sigma
open import Cubical.Data.Unit

open import Cubical.HITs.Susp
open import Cubical.HITs.Susp.SuspProduct
open import Cubical.HITs.Pushout
open import Cubical.HITs.Pushout.Flattening
open import Cubical.HITs.Wedge
open import Cubical.HITs.SmashProduct

open import Cubical.Homotopy.Loopspace

module Cubical.HITs.James.Stable {ℓ} (X∙@(X , x₀) : Pointed ℓ) where

module ContrPushout where
Code : Pushout (terminal X) (terminal X) → Type ℓ
Code x = inl _ ≡ x

ΩΣX = Code (inl _)
ΩΣX∙ : Pointed _
ΩΣX∙ = ΩΣX , refl

α : X × ΩΣX → ΩΣX
α (x , p) = (p ∙ push x) ∙ sym (push x₀)

open FlatteningLemma
(terminal X) (terminal X)
(Code ∘ inl) (Code ∘ inr)
(pathToEquiv ∘ cong (inl tt ≡_) ∘ push)

pushoutEq : Pushout Σf Σg ≃ Pushout snd α
pushoutEq = pushoutEquiv _ _ _ _
(idEquiv (X × ΩΣX)) (ΣUnit _)
(ΣUnit _ ∙ₑ compPathrEquiv (sym (push x₀)))
refl (funExt λ (x , p)
→ cong (_∙ sym (push x₀)) (substInPathsL (push x) p))

Code≡E : ∀ x → Code x ≡ E x
Code≡E (inl _) = refl
Code≡E (inr _) = refl
Code≡E (push a i) j = uaη (cong Code (push a)) (~ j) i

isContrΣE : isContr (Σ _ E)
isContrΣE = subst isContr (Σ-cong-snd Code≡E) (isContrSingl (inl tt))

isContrPushout : isContr (Pushout snd α)
isContrPushout = isOfHLevelRespectEquiv _ (flatten ∙ₑ pushoutEq) isContrΣE

open ContrPushout

LoopSuspSquare : commSquare
LoopSuspSquare = record
{ sp = record { f1 = snd ; f3 = α }
; P = Unit* {ℓ}
; comm = refl }

LoopSuspPushoutSquare : PushoutSquare
LoopSuspPushoutSquare = (LoopSuspSquare , isContr→≃Unit* isContrPushout .snd)

open PushoutPasteLeft LoopSuspPushoutSquare
(λ _ → lift {j = ℓ} tt) _ _ (funExt merid)

cofib-snd-James : cofib (λ (r : X × ΩΣX) → snd r) ≃ Susp ΩΣX
cofib-snd-James = pushoutSwitchEquiv
∙ₑ pushoutEquiv snd _ snd _
(idEquiv _) (idEquiv _) Unit≃Unit* refl refl
∙ₑ (_ , isPushoutRightSquare→isPushoutTotSquare
(SuspPushoutSquare _ _ ΩΣX))

StableJames : Susp ΩΣX ≃ Susp∙ X ⋁ Susp∙ (X∙ ⋀ ΩΣX∙)
StableJames = invEquiv cofib-snd-James ∙ₑ cofib-snd X∙ (ΩΣX , refl)
9 changes: 9 additions & 0 deletions Cubical/HITs/Join/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ private
variable
ℓ ℓ' : Level

-- the inclusion maps are null-homotopic
join-inl-null : {X : Pointed ℓ} {Y : Pointed ℓ'} (x : typ X)
→ Path (join (typ X) (typ Y)) (inl x) (inl (pt X))
join-inl-null {X = X} {Y} x = push x (pt Y) ∙ sym (push (pt X) (pt Y))

join-inr-null : {X : Pointed ℓ} {Y : Type ℓ'} (y : Y)
→ Path (join (typ X) Y) (inr y) (inl (pt X))
join-inr-null {X = X} y = sym (push (pt X) y)

open Iso

-- Characterisation of function type join A B → C
Expand Down
60 changes: 60 additions & 0 deletions Cubical/HITs/Pushout/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,28 @@ pushoutSwitchEquiv = isoToEquiv (iso f inv leftInv rightInv)
leftInv = λ {(inl x) → refl; (inr x) → refl; (push a i) → refl}
rightInv = λ {(inl x) → refl; (inr x) → refl; (push a i) → refl}


{-
Direct proof that pushout along the identity gives an equivalence.
-}
pushoutIdfunEquiv : ∀ {ℓ ℓ'} {X : Type ℓ} {Y : Type ℓ'} (f : X → Y)
→ Y ≃ Pushout f (idfun X)
pushoutIdfunEquiv f = isoToEquiv (iso inl inv leftInv λ _ → refl)
where
inv : Pushout f (idfun _) → _
inv (inl y) = y
inv (inr x) = f x
inv (push x i) = f x

leftInv : section inl inv
leftInv (inl y) = refl
leftInv (inr x) = push x
leftInv (push a i) j = push a (i ∧ j)

pushoutIdfunEquiv' : ∀ {ℓ ℓ'} {X : Type ℓ} {Y : Type ℓ'} (f : X → Y)
→ Y ≃ Pushout (idfun X) f
pushoutIdfunEquiv' f = compEquiv (pushoutIdfunEquiv _) pushoutSwitchEquiv

{-
Definition of pushout diagrams
-}
Expand Down Expand Up @@ -809,6 +831,44 @@ module _ {ℓ₀ ℓ₂ ℓ₄ ℓP : Level} where
PushoutSquare : Type (ℓ-suc ℓ*)
PushoutSquare = Σ commSquare isPushoutSquare

module _ {ℓ₀ ℓ₂ ℓ₄ ℓP ℓP' : Level}
{P' : Type ℓP'} where
open commSquare
extendCommSquare : (sk : commSquare {ℓ₀} {ℓ₂} {ℓ₄} {ℓP})
→ (sk .P → P') → commSquare
extendCommSquare sk f = record
{ sp = sk .sp
; P = P'
; inlP = f ∘ sk .inlP
; inrP = f ∘ sk .inrP
; comm = cong (f ∘_) (sk .comm)
}

extendPushoutSquare : (sk : PushoutSquare {ℓ₀} {ℓ₂} {ℓ₄} {ℓP})
→ (e : sk .fst .P ≃ P') → PushoutSquare
extendPushoutSquare sk e = (extendCommSquare (sk .fst) (e .fst) ,
subst isEquiv H (compEquiv (_ , sk .snd) e .snd))
where
H : e .fst ∘ _ ≡ _
H = funExt λ
{ (inl x) → refl
; (inr x) → refl
; (push a i) → refl }

-- Pushout itself fits into a pushout square
pushoutToSquare : 3-span {ℓ} {ℓ'} {ℓ''} → PushoutSquare
pushoutToSquare sp = record {
sp = sp ;
P = spanPushout sp ;
inlP = inl ;
inrP = inr ;
comm = funExt push
} , subst isEquiv (λ {
_ (inl x) → inl x ;
_ (inr x) → inr x ;
_ (push a j) → push a j
}) (idIsEquiv _)

-- Rotations of commutative squares and pushout squares
module _ {ℓ₀ ℓ₂ ℓ₄ ℓP : Level} where
open commSquare
Expand Down
7 changes: 1 addition & 6 deletions Cubical/HITs/SmashProduct/Base.agda
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,8 @@ commK (gluer b x) = refl

--- Alternative definition

i∧ : {A : Pointed ℓ} {B : Pointed ℓ'} → A ⋁ B → (typ A) × (typ B)
i∧ {A = A , ptA} {B = B , ptB} (inl x) = x , ptB
i∧ {A = A , ptA} {B = B , ptB} (inr x) = ptA , x
i∧ {A = A , ptA} {B = B , ptB} (push tt i) = ptA , ptB

_⋀_ : Pointed ℓ → Pointed ℓ' → Type (ℓ-max ℓ ℓ')
A ⋀ B = Pushout {A = (A ⋁ B)} (λ _ → tt) i∧
A ⋀ B = Pushout {A = (A ⋁ B)} (λ _ → tt) ⋁↪

_⋀∙_ : Pointed ℓ → Pointed ℓ' → Pointed (ℓ-max ℓ ℓ')
A ⋀∙ B = (A ⋀ B) , (inl tt)
Expand Down
39 changes: 39 additions & 0 deletions Cubical/HITs/Susp/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ open import Cubical.Foundations.Pointed
open import Cubical.Foundations.Pointed.Homogeneous
open import Cubical.Foundations.GroupoidLaws
open import Cubical.Foundations.Function
open import Cubical.Foundations.Univalence

open import Cubical.Data.Bool
open import Cubical.Data.Sigma
open import Cubical.Data.Unit

open import Cubical.HITs.Join
open import Cubical.HITs.Susp.Base
open import Cubical.HITs.Pushout
open import Cubical.Homotopy.Loopspace

private
Expand Down Expand Up @@ -73,6 +76,42 @@ Susp≃joinBool = isoToEquiv Susp-iso-joinBool
Susp≡joinBool : ∀ {ℓ} {A : Type ℓ} → Susp A ≡ join A Bool
Susp≡joinBool = isoToPath Susp-iso-joinBool

-- Here Unit* types are more convenient for general A
SuspSquare : ∀ {ℓ} ℓ' ℓ'' (A : Type ℓ) → commSquare
SuspSquare ℓ' ℓ'' A = record
{ sp = record { A2 = A ; A0 = Unit* {ℓ'} ; A4 = Unit* {ℓ''} }
; P = Susp A
; inlP = λ _ → north
; inrP = λ _ → south
; comm = funExt merid
}

SuspPushoutSquare : ∀ {ℓ} ℓ' ℓ'' (A : Type ℓ)
→ isPushoutSquare (SuspSquare ℓ' ℓ'' A)
SuspPushoutSquare ℓ' ℓ'' A = isoToIsEquiv (iso _ inverse rInv lInv)
where
inverse : _
inverse north = inl _
inverse south = inr _
inverse (merid a i) = push a i

rInv : _
rInv north = refl
rInv south = refl
rInv (merid a i) = refl

lInv : _
lInv (inl x) = refl
lInv (inr x) = refl
lInv (push a i) = refl

Susp≃PushoutSusp* : ∀ {ℓ ℓ' ℓ''} {A : Type ℓ} → Susp A ≃ Pushout _ _
Susp≃PushoutSusp* {ℓ} {ℓ'} {ℓ''} {A} = invEquiv (_ , SuspPushoutSquare ℓ' ℓ'' A)

Susp≡PushoutSusp* : ∀ {ℓ ℓ' ℓ''} {A : Type _} → Susp A ≡ Pushout _ _
Susp≡PushoutSusp* {ℓ} {ℓ'} {ℓ''} = ua
(Susp≃PushoutSusp* {ℓ-max ℓ (ℓ-max ℓ' ℓ'')} {ℓ'} {ℓ''})

congSuspIso : ∀ {ℓ ℓ'} {A : Type ℓ} {B : Type ℓ'} → Iso A B → Iso (Susp A) (Susp B)
fun (congSuspIso is) = suspFun (fun is)
inv (congSuspIso is) = suspFun (inv is)
Expand Down
Loading
Loading