{-# OPTIONS --without-K #-}
module segal.composition.l4.core where
open import equality
open import function.isomorphism
open import level
open import sum
open import hott.level
open import segal.preliminaries
open import segal.composition.l1
open import segal.composition.l2
open import segal.composition.l3
module _ {i} (W : Wild₃ i) where
open WildOps₃ W
IsWild₄ : Set i
IsWild₄ = {a b c d e : obj 𝓒}
→ (f : hom 𝓒 a b) → (g : hom 𝓒 b c)
→ (h : hom 𝓒 c d) → (k : hom 𝓒 d e)
→ assoc₁ (g ∘ f) h k · assoc₁ f g (k ∘ h)
≡ ap (λ u → k ∘ u) (assoc₁ f g h)
· assoc₁ f (h ∘ g) k
· ap (λ u → u ∘ f) (assoc₁ g h k)
module _ {i} (X : Segal₃ i) where
open SegalOps₃ X
Horn-4-1 = Σ X₀ λ x0 → Σ X₀ λ x1 → Σ X₀ λ x2 → Σ X₀ λ x3 → Σ X₀ λ x4
→ Σ (X₁ x0 x1) λ x01 → Σ (X₁ x0 x2) λ x02
→ Σ (X₁ x0 x3) λ x03 → Σ (X₁ x0 x4) λ x04
→ Σ (X₁ x1 x2) λ x12 → Σ (X₁ x1 x3) λ x13
→ Σ (X₁ x1 x4) λ x14 → Σ (X₁ x2 x3) λ x23
→ Σ (X₁ x2 x4) λ x24 → Σ (X₁ x3 x4) λ x34
→ Σ (X₂' x01 x02 x12) λ x012 → Σ (X₂' x01 x03 x13) λ x013
→ Σ (X₂' x01 x04 x14) λ x014 → Σ (X₂' x02 x03 x23) λ x023
→ Σ (X₂' x02 x04 x24) λ x024 → Σ (X₂' x03 x04 x34) λ x034
→ Σ (X₂' x12 x13 x23) λ x123 → Σ (X₂' x12 x14 x24) λ x124
→ Σ (X₂' x13 x14 x34) λ x134 → Σ (X₂' x23 x24 x34) λ x234
→ X₃' x012 x013 x023 x123 × X₃' x012 x014 x024 x124
× X₃' x013 x014 x034 x134 × X₃' x123 x124 x134 x234
Spine-4 = Σ X₀ λ x0 → Σ X₀ λ x1 → Σ X₀ λ x2 → Σ X₀ λ x3 → Σ X₀ λ x4
→ X₁ x0 x1 × X₁ x1 x2 × X₁ x2 x3 × X₁ x3 x4
Filler₄ = (x0 x1 x2 x3 x4 : X₀)
→ (x01 : X₁ x0 x1) (x02 : X₁ x0 x2)
→ (x03 : X₁ x0 x3) (x04 : X₁ x0 x4)
→ (x12 : X₁ x1 x2) (x13 : X₁ x1 x3)
→ (x14 : X₁ x1 x4) (x23 : X₁ x2 x3)
→ (x24 : X₁ x2 x4) (x34 : X₁ x3 x4)
→ (x012 : X₂' x01 x02 x12) (x013 : X₂' x01 x03 x13)
→ (x014 : X₂' x01 x04 x14) (x023 : X₂' x02 x03 x23)
→ (x024 : X₂' x02 x04 x24) (x034 : X₂' x03 x04 x34)
→ (x123 : X₂' x12 x13 x23) (x124 : X₂' x12 x14 x24)
→ (x134 : X₂' x13 x14 x34) (x234 : X₂' x23 x24 x34)
→ X₃' x012 x013 x023 x123 → X₃' x012 x014 x024 x124
→ X₃' x013 x014 x034 x134 → X₃' x023 x024 x034 x234
→ X₃' x123 x124 x134 x234 → Set i
SegalCondition₄ : Filler₄ → Set _
SegalCondition₄ X₄ = (h : Horn-4-1)
→ let (x0 , x1 , x2 , x3 , x4 , x01 , x02 , x03 , x04 , x12 , x13 , x14 , x23 , x24 , x34 ,
x012 , x013 , x014 , x023 , x024 , x034 , x123 , x124 , x134 , x234 ,
x0123 , x0124 , x0134 , x1234) = h
in contr (Σ (X₃' x023 x024 x034 x234) λ x0234
→ X₄ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
x0123 x0124 x0134 x0234 x1234)
IsSegal₄ : Set (lsuc i)
IsSegal₄ = Σ Filler₄ SegalCondition₄
private
module spine-horn-iso-tmp {i} (X : Segal₃ i) where
open SegalOps₃ X
spine-horn₄ : Spine-4 X ≅ Horn-4-1 X
spine-horn₄ = begin
Spine-4 X
≅⟨ add-contr (λ {(x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34)
→ Σ-contr (hf₂ (x1 , x2 , x3 , x12 , x23)) λ { (x13 , x123)
→ Σ-contr (hf₂ (x2 , x3 , x4 , x23 , x34)) λ { (x24 , x234)
→ Σ-contr (hf₂ (x1 , x2 , x4 , x12 , x24)) λ { (x14 , x124)
→ Σ-contr (hf₃ (x1 , x2 , x3 , x4 ,
x12 , x13 , x14 , x23 , x24 , x34 ,
x123 , x124 , x234)) λ { (x134 , x1234)
→ Σ-contr (hf₂ (x0 , x1 , x2 , x01 , x12)) λ { (x02 , x012)
→ Σ-contr (hf₂ (x0 , x1 , x3 , x01 , x13)) λ { (x03 , x013)
→ Σ-contr (hf₂ (x0 , x1 , x4 , x01 , x14)) λ { (x04 , x014)
→ Σ-contr (hf₃ (x0 , x1 , x2 , x3 ,
x01 , x02 , x03 , x12 , x13 , x23 ,
x012 , x013 , x123)) λ { (x023 , x0123)
→ Σ-contr (hf₃ (x0 , x1 , x2 , x4 ,
x01 , x02 , x04 , x12 , x14 , x24 ,
x012 , x014 , x124)) λ { (x024 , x0124)
→ (hf₃ (x0 , x1 , x3 , x4 ,
x01 , x03 , x04 , x13 , x14 , x34 ,
x013 , x014 , x134)) } } } } } } } } } }) ⟩
( Σ (Spine-4 X) λ s
→ let (x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34) = s
in Σ (Σ (X₁ x1 x3) λ x13 → X₂' x12 x13 x23) λ { (x13 , x123)
→ Σ (Σ (X₁ x2 x4) λ x24 → X₂' x23 x24 x34) λ { (x24 , x234)
→ Σ (Σ (X₁ x1 x4) λ x14 → X₂' x12 x14 x24) λ { (x14 , x124)
→ Σ (Σ (X₂' x13 x14 x34) λ x134 → X₃' x123 x124 x134 x234) λ { (x134 , x1234)
→ Σ (Σ (X₁ x0 x2) λ x02 → X₂' x01 x02 x12) λ { (x02 , x012)
→ Σ (Σ (X₁ x0 x3) λ x03 → X₂' x01 x03 x13) λ { (x03 , x013)
→ Σ (Σ (X₁ x0 x4) λ x04 → X₂' x01 x04 x14) λ { (x04 , x014)
→ Σ (Σ (X₂' x02 x03 x23) λ x023 → X₃' x012 x013 x023 x123) λ { (x023 , x0123)
→ Σ (Σ (X₂' x02 x04 x24) λ x024 → X₃' x012 x014 x024 x124) λ { (x024 , x0124)
→ (Σ (X₂' x03 x04 x34) λ x034 → X₃' x013 x014 x034 x134) } } } } } } } } } )
≅⟨ record
{ to = λ { ((x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34) ,
(x13 , x123) , (x24 , x234) , (x14 , x124) , (x134 , x1234) ,
(x02 , x012) , (x03 , x013) , (x04 , x014) , (x023 , x0123) ,
(x024 , x0124) , (x034 , x0134))
→ (x0 , x1 , x2 , x3 , x4 , x01 , x02 , x03 , x04 , x12 , x13 ,
x14 , x23 , x24 , x34 , x012 , x013 , x014 , x023 , x024 ,
x034 , x123 , x124 , x134 , x234 , x0123 , x0124 , x0134 , x1234) }
; from = λ { (x0 , x1 , x2 , x3 , x4 , x01 , x02 , x03 , x04 , x12 , x13 ,
x14 , x23 , x24 , x34 , x012 , x013 , x014 , x023 , x024 ,
x034 , x123 , x124 , x134 , x234 , x0123 , x0124 , x0134 , x1234)
→ ((x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34) ,
(x13 , x123) , (x24 , x234) , (x14 , x124) , (x134 , x1234) ,
(x02 , x012) , (x03 , x013) , (x04 , x014) , (x023 , x0123) ,
(x024 , x0124) , (x034 , x0134)) }
; iso₁ = λ _ → refl
; iso₂ = λ _ → refl } ⟩
Horn-4-1 X
∎ where open ≅-Reasoning
module _ {i} (W : Wild₃ i) where
private X = invert≅ segal-wild₃ W
open SegalOps₃ X
open WildOps₃ W
private
module spine-horn-tmp where
open spine-horn-iso-tmp
f : Spine-4 X → Horn-4-1 X
f (x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34) =
(x0 , x1 , x2 , x3 , x4 , x01 , x02 , x03 , x04 , x12 , x13 ,
x14 , x23 , x24 , x34 , x012 , x013 , x014 , x023 , x024 ,
x034 , x123 , x124 , x134 , x234 , x0123 , x0124 , x0134 , x1234)
where
lem : ∀ {i}{A : Set i}{a b : A}{p : a ≡ b}
→ p · refl · refl ≡ p
lem {p = refl} = refl
x02 = x12 ∘ x01; x012 = refl
x13 = x23 ∘ x12; x123 = refl
x24 = x34 ∘ x23; x234 = refl
x03 = x13 ∘ x01; x013 = refl
x14 = x24 ∘ x12; x124 = refl
x04 = x14 ∘ x01; x014 = refl
x134 = assoc₁ x12 x23 x34; x1234 = lem
x023 = assoc₁ x01 x12 x23; x0123 = lem
x024 = assoc₁ x01 x12 x24; x0124 = lem
x034 = assoc₁ x01 x13 x34 · ap (λ u → u ∘ x01) x134 · x014; x0134 = refl
g : Horn-4-1 X → Spine-4 X
g (x0 , x1 , x2 , x3 , x4 , x01 , x02 , x03 , x04 , x12 , x13 ,
x14 , x23 , x24 , x34 , x012 , x013 , x014 , x023 , x024 ,
x034 , x123 , x124 , x134 , x234 , x0123 , x0124 , x0134 , x1234) =
(x0 , x1 , x2 , x3 , x4 , x01 , x12 , x23 , x34)
α : (s : Spine-4 X) → g (f s) ≡ s
α s = refl
β : (h : Horn-4-1 X) → f (g h) ≡ h
β h = iso⇒inj (sym≅ (spine-horn₄ X)) refl
spine-horn₄ : Spine-4 X ≅ Horn-4-1 X
spine-horn₄ = iso f g α β
where
open spine-horn-tmp