Martin Escardo 7th December 2018.
Characterization of equality in the lifting via the structure of
identity principle.
\begin{code}
{-# OPTIONS --without-K --exact-split --safe --auto-inline #-}
open import MLTT.Spartan
module Lifting.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 Lifting.Lifting ๐ฃ
_โ_ : ๐ X โ ๐ X โ ๐ฃ โ ๐ค ฬ
l โ m = ฮฃ e ๊ is-defined l โ is-defined m , value l ๏ผ value m โ โ e โ
๐-Id : is-univalent ๐ฃ โ (l m : ๐ X) โ (l ๏ผ m) โ (l โ m)
๐-Id ua = ๏ผ-is-โโ'
where
open gsip-with-axioms'
๐ฃ (๐ฃ โ ๐ค) (๐ฃ โ ๐ค) ๐ฃ ua
(ฮป P โ P โ X)
(ฮป P s โ is-prop P)
(ฮป P s โ being-prop-is-prop (univalence-gives-funext ua))
(ฮป {l m (f , e) โ prโ l ๏ผ prโ m โ f})
(ฮป l โ refl)
(ฮป P ฮต ฮด โ id)
(ฮป A ฯ ฯ
โ refl-left-neutral)
โ-gives-๏ผ : is-univalent ๐ฃ โ {l m : ๐ X} โ (l โ m) โ l ๏ผ m
โ-gives-๏ผ ua = โ ๐-Id ua _ _ โโปยน
\end{code}
When dealing with functions it is often more convenient to work with
pointwise equality, and hence we also consider:
\begin{code}
_โยท_ : ๐ X โ ๐ X โ ๐ฃ โ ๐ค ฬ
l โยท m = ฮฃ e ๊ is-defined l โ is-defined m , value l โผ value 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 (value l) (value m โ โ e โ)))
\end{code}