{-# OPTIONS --without-K #-}
module segal.identities.l2 where
open import equality
open import function.isomorphism
open import sum
open import segal.composition.l1
open import segal.composition.l2
open import segal.identities.l1
module _ {i} (W : Wild₂ i) where
open WildOps₂ W
record HasId₂' (Wid : HasId₁ 𝓒) : Set i where
constructor mk-id₂'
open HasId₁ Wid public
field
id-λ : (x y : obj 𝓒)(f : hom 𝓒 x y) → id y ∘ f ≡ f
id-ρ : (x y : obj 𝓒)(f : hom 𝓒 x y) → f ∘ id x ≡ f
record HasId₂ : Set i where
constructor mk-id₂
field
has-id₁ : HasId₁ 𝓒
has-id₂' : HasId₂' has-id₁
open HasId₂' has-id₂' public
module _ {i} (X : Segal₂ i) where
open SegalOps₂ X
record HasDeg₂' (Xdeg : HasDeg₁ X|1) : Set i where
constructor mk-deg₂'
open HasDeg₁ Xdeg public
field
s10 : (s : Δ¹ X|1)
→ let (x0 , x1 , x01) = s
in X₂' (s00 x0) x01 x01
s11 : (s : Δ¹ X|1)
→ let (x0 , x1 , x01) = s
in X₂' x01 x01 (s00 x1)
record HasDeg₂ : Set i where
constructor mk-deg₂
field
has-deg₁ : HasDeg₁ X|1
has-deg₂' : HasDeg₂' has-deg₁
open HasDeg₂' has-deg₂' public
module _ {i} {W : Wild₂ i} where
private X = invert≅ segal-wild₂ W
open WildOps₂ W
open SegalOps₂ X
module _ {Wid : HasId₁ 𝓒} where
private Xdeg = invert≅ deg-id₁ Wid
open HasId₁ Wid
open HasDeg₁ Xdeg
deg-id₂' : HasDeg₂' X Xdeg ≅ HasId₂' W Wid
deg-id₂' = record
{ to = λ { (mk-deg₂' s10 s11) → record
{ id-λ = λ x y f → s11 (x , y , f)
; id-ρ = λ x y f → s10 (x , y , f) } }
; from = λ { (mk-id₂' id-λ id-ρ) → record
{ s10 = λ { (x0 , x1 , x01) → id-ρ x0 x1 x01 }
; s11 = λ { (x0 , x1 , x01) → id-λ x0 x1 x01 } } }
; iso₁ = λ _ → refl
; iso₂ = λ _ → refl }
deg-id₂ : HasDeg₂ X ≅ HasId₂ W
deg-id₂ = begin
HasDeg₂ X
≅⟨ record
{ to = λ { (mk-deg₂ a b) → (a , b) }
; from = λ { (a , b) → mk-deg₂ a b }
; iso₁ = λ _ → refl
; iso₂ = λ _ → refl } ⟩
( Σ (HasDeg₁ X|1) (HasDeg₂' X) )
≅⟨ (Σ-ap-iso' deg-id₁ (λ _ → deg-id₂')) ⟩
( Σ (HasId₁ 𝓒) (HasId₂' W) )
≅⟨ record
{ to = λ { (a , b) → mk-id₂ a b }
; from = λ { (mk-id₂ a b) → (a , b) }
; iso₁ = λ _ → refl
; iso₂ = λ _ → refl } ⟩
HasId₂ W
∎
where open ≅-Reasoning