open import Cubical.Foundations.Prelude hiding (Sub)
open import Cubical.Foundations.Isomorphism
open import Cubical.Foundations.HLevels
module TT.Groupoid.IsoSet (X : hSet ℓ-zero) (Y : X .fst → hSet ℓ-zero) where
import TT.Groupoid.Syntax X Y as G
module S where
open import TT.Set.Syntax X Y public
open import TT.Set.ConPath X Y public
import TT.Groupoid.ToSet X Y as GS
import TT.Set.ToGroupoid X Y as SG
import TT.Groupoid.ToFromSet X Y as GSG
import TT.Set.ToFromGroupoid X Y as SGS
private variable
Γ Δ : G.Con
A : G.Ty Γ
isoCon : Iso G.Con S.Con
isoCon .Iso.fun = GS.⟦_⟧
isoCon .Iso.inv = SG.⟦_⟧
isoCon .Iso.rightInv = SGS.⟦_⟧
isoCon .Iso.leftInv = GSG.⟦_⟧
GSGS-Con : (Γ : G.Con) → cong GS.⟦_⟧ GSG.⟦ Γ ⟧ ≡ SGS.⟦ GS.⟦ Γ ⟧ ⟧
GSGS-Con Γ = S.isSetCon _ _ _ _
isoSub : Iso (G.Sub Δ Γ) (S.Sub GS.⟦ Δ ⟧ GS.⟦ Γ ⟧)
isoSub .Iso.fun = GS.⟦_⟧
isoSub {Δ} {Γ} .Iso.inv γ =
transport (λ i → G.Sub (GSG.⟦ Δ ⟧ i) (GSG.⟦ Γ ⟧ i)) SG.⟦ γ ⟧
isoSub {Δ} {Γ} .Iso.rightInv γ i =
comp (λ j → S.Sub (GSGS-Con Δ i j) (GSGS-Con Γ i j))
(λ where
j (i = i0) →
GS.⟦
transport-filler
(λ i → G.Sub (GSG.⟦ Δ ⟧ i) (GSG.⟦ Γ ⟧ i))
SG.⟦ γ ⟧
j ⟧
j (i = i1) → SGS.⟦ γ ⟧ j)
GS.⟦ SG.⟦ γ ⟧ ⟧
isoSub .Iso.leftInv γ = fromPathP GSG.⟦ γ ⟧
isoTy : Iso (G.Ty Γ) (S.Ty GS.⟦ Γ ⟧)
isoTy .Iso.fun = GS.⟦_⟧
isoTy {Γ} .Iso.inv A = transport (λ i → G.Ty (GSG.⟦ Γ ⟧ i)) SG.⟦ A ⟧
isoTy {Γ} .Iso.rightInv A i =
comp (λ j → S.Ty (GSGS-Con Γ i j))
(λ where
j (i = i0) → GS.⟦ transport-filler (λ i → G.Ty (GSG.⟦ Γ ⟧ i)) SG.⟦ A ⟧ j ⟧
j (i = i1) → SGS.⟦ A ⟧ j)
GS.⟦ SG.⟦ A ⟧ ⟧
isoTy .Iso.leftInv A = fromPathP GSG.⟦ A ⟧
isoTm : Iso (G.Tm Γ A) (S.Tm GS.⟦ Γ ⟧ GS.⟦ A ⟧)
isoTm .Iso.fun = GS.⟦_⟧
isoTm {Γ} {A} .Iso.inv a =
transport (λ i → G.Tm (GSG.⟦ Γ ⟧ i) (GSG.⟦ A ⟧ i)) SG.⟦ a ⟧
isoTm {Γ} {A} .Iso.rightInv a i =
comp
(λ j →
S.Tm
(GSGS-Con Γ i j)
(isSet→SquareP (λ i j → S.isSetTy (GSGS-Con Γ i j))
(λ j → GS.⟦ GSG.⟦ A ⟧ j ⟧)
(λ j → SGS.⟦ GS.⟦ A ⟧ ⟧ j)
(λ i → GS.⟦ SG.⟦ GS.⟦ A ⟧ ⟧ ⟧)
(λ i → GS.⟦ A ⟧)
i j))
(λ where
j (i = i0) →
GS.⟦
transport-filler
(λ i → G.Tm (GSG.⟦ Γ ⟧ i) (GSG.⟦ A ⟧ i))
SG.⟦ a ⟧
j ⟧
j (i = i1) → SGS.⟦ a ⟧ j)
GS.⟦ SG.⟦ a ⟧ ⟧
isoTm .Iso.leftInv a = fromPathP GSG.⟦ a ⟧