功能外延与依赖功能是否一致?
Is functional extensionality with dependent functions consistent?
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 书中的一个练习,我不得不定义它,但我不确定这样做是否正确。我认为这应该是一致的,但我目前没有很好的推理方法所以我想在这里问一下。
是的。使用公理 K,从属函数外延性很容易从 non-dependent 推导出来。也许这也有效--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))))
在任何情况下,依赖函数的外延性已被许多模型验证,包括 set-theoretical 模型、单价模型、关系模型等。不 支持的模型功能扩展性并不常见。
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 书中的一个练习,我不得不定义它,但我不确定这样做是否正确。我认为这应该是一致的,但我目前没有很好的推理方法所以我想在这里问一下。
是的。使用公理 K,从属函数外延性很容易从 non-dependent 推导出来。也许这也有效--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))))
在任何情况下,依赖函数的外延性已被许多模型验证,包括 set-theoretical 模型、单价模型、关系模型等。不 支持的模型功能扩展性并不常见。