首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命题等式的可判性

命题等式的可判性
EN

Stack Overflow用户
提问于 2015-12-16 05:34:46
回答 1查看 88关注 0票数 2

agda中的两个术语被认为是定义相等的,当它们都具有相同的范式时-我认为-命题相等只是定义相等的数据类型表示-我猜-;那么命题相等不应该是可确定的吗?也就是说,我们可以编写一个类型化的函数看起来合理吗

∀{A : Set} → (x y : A) → Dec(x ≡ y)

我有点明白,我们不能写这样的函数,因为我们不能对参数进行模式匹配,但我“觉得”这应该是可能的:再说一次,只需简化为标准形式并检查语法一致性。

任何洞察力都会有所帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-12-16 15:57:25

中的两个项具有相同的范式时,称它们在定义上是精确相等的

最高可达αη转换。

和命题等式只是定义等式的数据类型表示

命题相等表示“在实例化一些自由变量后,这两个术语将变得绝对相等”(" some“可以是0,也可以是全部) (" instantiate”也可以不同)。

例如。

代码语言:javascript
复制
double-double : (n : ℕ) -> n + n ≡ 2 * n

显然,n + n在语法上不等于2 * n,但是对于任何规范n (0, 1, 2...),n + n的结果在语法上等于2 * n的结果--这就是double-double所说的。“对于任何规范的n”这一部分迫使我们通过归纳来证明double-double (尽管,在更复杂的系统中,定义等式是基于超级编译的,或者有一个内置的验证器,n + n在定义上与2 * n是绝对相等的)。

但有时归纳假设应该是什么样子并不明显,例如当你需要推广一个方程时。正如您可能期望的那样,没有“这是任意的东西可以证明吗?”的决策过程。因此命题相等性是不可判定的。此外,你既不能证明也不能反驳像这样的陈述

代码语言:javascript
复制
(λ n -> 1 + n) ≡ (λ n -> n + 1)

不需要额外的假设。

但是,您确实可以检查语法等价性:

代码语言:javascript
复制
_≟_ : ∀ {α} {A : Set α} -> (x y : A) -> Maybe (x ≡ y)

它说“如果两个术语在句法上相等,那么它们在命题上是相等的,否则我们不知道它们在命题上是否相等”。但是Agda没有这样的内置功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34299828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档