module FunExt where open import Prelude ---------------------------------------------------------------------- -- Postulated function extensionality ---------------------------------------------------------------------- postulate funext : {l m : Level} {A : Set l} {B : A → Set m} {f g : (x : A) → B x} (_ : ∀ x → f x ≡ g x) → ------------------- f ≡ g ---------------------------------------------------------------------- -- Function extensionality with instance arguments ---------------------------------------------------------------------- instance-funext : {l m : Level} {A : Set l} {B : A → Set m} {f g : {{x : A}} → B x} (_ : ∀ x → f {{x}} ≡ g {{x}}) → -------------------------------------- (λ{{x}} → f {{x}}) ≡ (λ{{x}} → g {{x}}) instance-funext {A = A} {B} {f} {g} e = ap inst (funext {f = λ x → f{{x}}} {g = λ x → g{{x}}} e) where inst : ((x : A) → B x) → {{x : A}} → B x inst f {{x}} = f x