---
authors:
- Bruno da Rocha Paiva
- Vincent Rahli
date-started: 2023-11-08
---
\begin{code}
{-# OPTIONS --safe --without-K --exact-split #-}
module EffectfulForcing.Internal.ExtensionalEquality where
open import MLTT.Spartan hiding (rec ; _^_) renaming (⋆ to 〈〉)
open import EffectfulForcing.MFPSAndVariations.SystemT
using (type ; ι ; _⇒_ ; 〖_〗)
\end{code}
Extensional equality of System T terms.
\begin{code}
_≡_ : {A : type} → 〖 A 〗 → 〖 A 〗 → 𝓤₀ ̇
_≡_ {ι} n₁ n₂ = n₁ = n₂
_≡_ {σ ⇒ τ} f₁ f₂ = {x₁ x₂ : 〖 σ 〗} → x₁ ≡ x₂ → f₁ x₁ ≡ f₂ x₂
\end{code}
The following explicit version is used to define a nice syntax for the
extensional equality operation.
\begin{code}
≡-syntax : (A : type) → 〖 A 〗 → 〖 A 〗 → 𝓤₀ ̇
≡-syntax A f g = f ≡ g
syntax ≡-syntax A f g = f ≡[ A ] g
\end{code}