Martin Escardo, 6th December 2018
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
module Slice.IdentityViaSIP
(๐ฃ : Universe)
{๐ค : Universe}
{X : ๐ค ฬ }
where
open import UF.Base
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.Equiv
open import UF.EquivalenceExamples
open import UF.FunExt
open import UF.Univalence
open import UF.UA-FunExt
open import UF.StructureIdentityPrinciple
open import Slice.Construction ๐ฃ
_โ_ : ๐ X โ ๐ X โ ๐ฃ โ ๐ค ฬ
l โ m = ฮฃ e ๊ source l โ source m , family l ๏ผ family m โ โ e โ
๐-Id : is-univalent ๐ฃ โ (l m : ๐ X) โ (l ๏ผ m) โ (l โ m)
๐-Id ua = ๏ผ-is-โโ'
where
open gsip
๐ฃ (๐ฃ โ ๐ค) ua
(ฮป P โ P โ X)
(ฮป {l m (f , e) โ family l ๏ผ family m โ f})
(ฮป l โ refl)
(ฮป P ฮต ฮด โ id)
(ฮป A ฯ ฯ
โ refl-left-neutral)
โ-gives-๏ผ : is-univalent ๐ฃ โ {l m : ๐ X} โ (l โ m) โ l ๏ผ m
โ-gives-๏ผ ua = โ ๐-Id ua _ _ โโปยน
_โยท_ : ๐ X โ ๐ X โ ๐ฃ โ ๐ค ฬ
l โยท m = ฮฃ e ๊ source l โ source m , family l โผ family m โ โ e โ
๐-Idยท : is-univalent ๐ฃ
โ funext ๐ฃ ๐ค
โ (l m : ๐ X) โ (l ๏ผ m) โ (l โยท m)
๐-Idยท ua fe l m = (๐-Id ua l m) โ (ฮฃ-cong (ฮป e โ โ-funext fe (family l) (family m โ โ e โ)))
\end{code}