{-# OPTIONS --without-K #-}
module segal.univalence where
open import equality
open import hott.equivalence
open import sum
open import segal.composition
open import segal.identities
module _ {i} (W : Wild₃ i) where
open WildOps₃ W
module _ (Wid : HasId₂ W|2) where
open HasId₂ Wid
LInv : {x y : obj 𝓒} → hom 𝓒 x y → Set i
LInv {x}{y} f = Σ (hom 𝓒 y x) λ g → g ∘ f ≡ id x
RInv : {x y : obj 𝓒} → hom 𝓒 x y → Set i
RInv {x}{y} f = Σ (hom 𝓒 y x) λ g → f ∘ g ≡ id y
IsIso : {x y : obj 𝓒} → hom 𝓒 x y → Set i
IsIso f = LInv f × RInv f
Iso : obj 𝓒 → obj 𝓒 → Set i
Iso x y = Σ (hom 𝓒 x y) IsIso
id-equiv : (x : obj 𝓒) → Iso x x
id-equiv x = id x , (id x , id-λ _ _ (id x))
, (id x , id-λ _ _ (id x))
id-to-iso : (x y : obj 𝓒)
→ (x ≡ y)
→ Iso x y
id-to-iso x .x refl = id-equiv x
IsUnivalent : Set i
IsUnivalent = (x y : obj 𝓒) → weak-equiv (id-to-iso x y)