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}