Jon Sterling, started 24th March 2023
Based on the comments of MartΓn EscardΓ³ on the HoTT Mailing List:
https://groups.google.com/g/homotopytypetheory/c/FfiZj1vrkmQ/m/GJETdy0AAgAJ
This module defines a "semistrict" version of the identity type, i.e. one for
which the composition is definitionally associative and unital but for which the
interchange laws are weak.
\begin{code}
{-# OPTIONS --safe --without-K #-}
module UF.SemistrictIdentity where
open import MLTT.Spartan
open import UF.Base
open import UF.Equiv
open import UF.FunExt
open import UF.IdentitySystems
module _ {A : π€ Μ } where
_οΌβ_ : (x y : A) β π€ Μ
x οΌβ y = (z : A) β z οΌ x β z οΌ y
refl-s : {x : A} β x οΌβ x
refl-s z p = p
_ββ_ : {x y z : A} (p : x οΌβ y) (q : y οΌβ z) β x οΌβ z
(p ββ q) _ = q _ β p _
infixl 10 _ββ_
module _ {x y : A} (p : x οΌβ y) where
refl-s-left-unit : refl-s ββ p οΌ p
refl-s-left-unit = refl
refl-s-right-unit : p ββ refl-s οΌ p
refl-s-right-unit = refl
module _ {u v w x : A} (p : u οΌβ v) (q : v οΌβ w) (r : w οΌβ x) where
ββ-assoc : p ββ (q ββ r) οΌ (p ββ q) ββ r
ββ-assoc = refl
module _ {x y : A} where
to-οΌβ : x οΌ y β x οΌβ y
to-οΌβ p z q = q β p
from-οΌβ : x οΌβ y β x οΌ y
from-οΌβ p = p _ refl
module _ (fe : funext π€ π€) where
to-οΌβ-is-equiv : is-equiv to-οΌβ
prβ (prβ to-οΌβ-is-equiv) = from-οΌβ
prβ (prβ to-οΌβ-is-equiv) q =
dfunext fe Ξ» z β
dfunext fe (lem z)
where
lem : (z : A) (p : z οΌ x) β p β q x refl οΌ q z p
lem .x refl = refl-left-neutral
prβ (prβ to-οΌβ-is-equiv) = from-οΌβ
prβ (prβ to-οΌβ-is-equiv) refl = refl
to-οΌβ-equiv : (x οΌ y) β (x οΌβ y)
prβ to-οΌβ-equiv = to-οΌβ
prβ to-οΌβ-equiv = to-οΌβ-is-equiv
οΌβ-id-sys : funext π€ π€ β Unbiased-Id-Sys π€ A
οΌβ-id-sys fe = from-path-characterization.id-sys _οΌβ_ (to-οΌβ-equiv fe)
\end{code}