module axiom.funext where
open import basic.prelude
private variable ℓ ℓ' ℓ'' : Level
postulate
  funExt : {A : Type ℓ} {B : A → Type ℓ'} {f₀ f₁ : (a : A) → B a}
    → ((a : A) → f₀ a ≡ f₁ a) → f₀ ≡ f₁
funExt' : {A : Type ℓ} {B : A → Type ℓ'} {f₀ f₁ : (a : A) → B a}
  → ({a : A} → f₀ a ≡ f₁ a) → f₀ ≡ f₁
funExt' p = funExt λ _ → p
postulate
  funExt♭ : {@♭ ℓ : Level} {ℓ' : Level}
     {@♭ A : Type ℓ} {B : @♭ A → Type ℓ'}
     {f₀ f₁ : (@♭ a : A) → B a}
     → ((@♭ a : A) → f₀ a ≡ f₁ a) → f₀ ≡ f₁
funExt♭' : {@♭ ℓ : Level} {ℓ' : Level}
   {@♭ A : Type ℓ} {B : @♭ A → Type ℓ'}
   {f₀ f₁ : (@♭ a : A) → B a}
   → ({@♭ a : A} → f₀ a ≡ f₁ a) → f₀ ≡ f₁
funExt♭' h = funExt♭ λ _ → h