功能扩展性与相关功能是否一致?

时间:2019-05-25 11:58:21

标签: agda

postulate
  extensionality : ∀ {A B : Set} {f g : A → B}
    → (∀ (x : A) → f x ≡ g x)
      -----------------------
    → f ≡ g

我知道上面的定义是一致的,但是如果稍加改动会怎样呢?

postulate
  extensionality' : ∀ {A : Set} {B : A → Set} {f g : (x : A) → B x}
    → (∀ (x : A) → f x ≡ g x)
      -----------------------
    → f ≡ g

我必须定义此名称才能解决PLFA书籍中的一项练习,但是我不确定这样做是否正确。我认为这应该是一致的,但是我目前尚无一个很好的理由对此进行推理,因此我想在这里提出。

1 个答案:

答案 0 :(得分:3)

是的。使用Axiom K,可以很容易地从非依赖函数中衍生出依赖函数的可扩展性。也许这也可行--without-K;我没有尝试过,也没有看过它是否在文献中。

open import Relation.Binary.PropositionalEquality
import Relation.Binary.HeterogeneousEquality as H
open import Data.Product

postulate funext : ∀ {A B : Set}{f g : A → B} → (∀ x → f x ≡ g x) → f ≡ g

funext' : ∀ {A : Set}{B : A → Set}{f g : ∀ a → B a} → (∀ x → f x ≡ g x) → f ≡ g
funext' {A}{B}{f}{g} h =
    H.≅-to-≡ (H.cong (λ f x → proj₂ (f x)) (H.≡-to-≅ (funext λ a → cong (a ,_) (h a))))

在任何情况下,依赖函数的可扩展性都可以通过许多模型进行验证,包括集理论模型,单价模型,关系模型等。支持函数扩展性的模型并不常见。 / p>