Martin Escardo 7th December 2018.
Characterization of equality in the lifting via the structure of
identity principle.
\begin{code}
{-# OPTIONS --safe --without-K #-}
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.Construction ๐ฃ
_โ_ : ๐ 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 โ
is-defined-โยท : (l m : ๐ X)
โ l โยท m โ is-defined l โ is-defined m
is-defined-โยท l m = prโ
value-โยท : (l m : ๐ X) (๐ : l โยท m)
โ value l โผ (ฮป x โ value m (โ is-defined-โยท l m ๐ โ x))
value-โยท l m = prโ
Id-to-โยท : (l m : ๐ X) โ (l ๏ผ m) โ (l โยท m)
Id-to-โยท l m refl = (โ-refl (is-defined l)) , (ฮป x โ refl)
๐-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 โ)))
โยท-gives-๏ผ : is-univalent ๐ฃ
โ funext ๐ฃ ๐ค
โ {l m : ๐ X} โ (l โยท m) โ l ๏ผ m
โยท-gives-๏ผ ua fe = โ ๐-Idยท ua fe _ _ โโปยน
\end{code}
Added 8th September 2025.
\begin{code}
โยท-refl : (l : ๐ X) โ l โยท l
โยท-refl l = โ-refl _ , โผ-refl
โยท-sym : (l m : ๐ X) โ l โยท m โ m โยท l
โยท-sym l m (e , d) =
โ-sym e ,
ฮป p โ
value m p ๏ผโจ ap (value m) ((inverses-are-sections' e p)โปยน) โฉ
value m (โ e โ (โ e โโปยน p)) ๏ผโจ (d (โ e โโปยน p))โปยน โฉ
value l (โ e โโปยน p) โ
โยท-trans : (l m n : ๐ X) โ l โยท m โ m โยท n โ l โยท n
โยท-trans l m n (e , d) (e' , d') =
(e โ e') ,
(ฮป p โ value l p ๏ผโจ d p โฉ
value m (โ e โ p) ๏ผโจ d' (โ e โ p) โฉ
value n (โ e' โ (โ e โ p)) ๏ผโจ refl โฉ
value n (โ e โ e' โ p) โ)
\end{code}