FunExt

Chuangjie Xu 2013 (ported to TypeTopology in 2025)


{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan
open import UF.FunExt using (DN-funext)

module C-Spaces.Preliminaries.FunExt (fe : DN-funext 𝓤₀ 𝓤₀) where

fe² : {X : Set}
      {Y : X → Set}
      {Z : (x : X) → (y : Y x) → Set} →
      {f g : (x : X) → (y : Y x) → Z x y}
    → (∀ x y → f x y = g x y) → f = g
fe² ex = fe (λ x → fe (ex x))

fe³ : {X : Set}
      {Y : X → Set}
      {Z : (x : X) → Y x → Set}
      {W : (x : X) → (y : Y x) → Z x y → Set}
      {f g : (x : X) → (y : Y x) → (z : Z x y) → W x y z}
    → (∀ x y z → f x y z = g x y z) → f = g
fe³ ex = fe (λ x → fe² (ex x))

fe⁴ : {X : Set}
      {Y : X → Set}
      {Z : (x : X) → Y x → Set}
      {W : (x : X) → (y : Y x) → Z x y → Set}
      {U : (x : X) → (y : Y x) → (z : Z x y) → (w : W x y z) → Set}
      {f g : (x : X) → (y : Y x) → (z : Z x y) → (w : W x y z) → U x y z w}
    → (∀ x y z w → f x y z w = g x y z w) → f = g
fe⁴ ex = fe (λ x → fe³ (ex x))

fe⁵ : {X : Set}
      {Y : X → Set}
      {Z : (x : X) → Y x → Set}
      {W : (x : X) → (y : Y x) → Z x y → Set}
      {U : (x : X) → (y : Y x) → (z : Z x y) → W x y z → Set}
      {V : (x : X) → (y : Y x) → (z : Z x y) → (w : W x y z) → U x y z w → Set}
      {f g : (x : X) → (y : Y x) → (z : Z x y) → (w : W x y z) → (u : U x y z w)
           → V x y z w u}
    → (∀ x y z w u → f x y z w u = g x y z w u) → f = g
fe⁵ ex = fe (λ x → fe⁴ (ex x))