Martin Escardo, 31st October 2025.
\begin{code}
{-# OPTIONS --safe --without-K #-}
module UF.DependentEquality where
open import MLTT.Spartan
dependent-Id : {X : 𝓤 ̇ } (Y : X → 𝓥 ̇ )
{x₀ x₁ : X}
→ x₀ = x₁
→ Y x₀
→ Y x₁
→ 𝓥 ̇
dependent-Id Y refl y₀ y₁ = (y₀ = y₁)
infix -1 dependent-Id
syntax dependent-Id Y e y₀ y₁ = y₀ =⟦ Y , e ⟧ y₁
dependent-Id-via-transport : {X : 𝓤 ̇ } (Y : X → 𝓥 ̇ )
{x₀ x₁ : X}
(e : x₀ = x₁)
{y₀ : Y x₀}
{y₁ : Y x₁}
→ (y₀ =⟦ Y , e ⟧ y₁) = (transport Y e y₀ = y₁)
dependent-Id-via-transport Y refl = refl
\end{code}