|
|
1
26
如果你喜欢“编程”的话 combinatory logic
这种翻译的可能性由 Curry-Howard correspondence .
( ± β ) ± 但是,在否定不是问题的一部分的情况下,如果您已经在函数式编程或组合逻辑方面进行了实践,那么所提到的自动翻译(和反向翻译)可能会有所帮助。 当然,还有其他帮助,我们可以留在逻辑领域内:
至于定理证明者,据我所知,他们中的一些人的能力得到了扩展,以便他们能够利用交互式人工协助。例如。 Coq 就是这样。 附录让我们看一个例子。如何证明 α ± ?
让我们证明一个定理: ± ± 对任何人来说都是可以推断的 提议 让我们介绍以下符号和缩写,发展“证明演算”:
树形图表示法: Axiom方案Verum ex quolibet:
Axiom方案链规则:
证明树
让我们看一下证明的树形图表示:
铬
±
±
±
,
]
[
±
,
â
]
证明公式让我们看一个更简洁(代数?微积分?)的证明: ( 铬 ± , ± ± , VEQ , ± â ± ) VEQ , ± ± ± 因此,我们可以用一个公式表示证明树:
证明演算 ,其中公理表示为 基组合子 ,并且波南斯方式被记为纯粹的 其“前提”子办公室: 例1VEQ , : ± â â ±
苦艾 ± 为陈述提供证据,即 ± ± 这是可以推断的。 VEQ ± , ± ± α ± 用 ± , ± ± â ± VEQ ± , ± â ± : ( ± ± ) 意思是 用 , ± ± 为陈述提供证据,即 ± ( ± ± ) 这是可以推断的。 例4, : ( â γ ) ( ± ) ± γ 意思是 链规 用 ± , ± ± β ) ± â γ 例5铬 ± ± â , ± : [ ( ± ± ) ± ] ( ± ± â ± ) ± ± 意思是 链规 ± , ± α , ± ( ± â ± ) ± ] ( â ± ) â ± ± 这是可以推断的。 例6, ± , α VEQ , α : ( ± ± â ± ) ±
如果我们联合起来 铬 ± , α , 和 VEQ , ± â ± 假肢 ,然后我们得到一个证明,证明以下陈述:( ± â ± ) ± â ± 这是可以推断的。 例7铬 ± , ± , ± VEQ ± ± α ) VEQ ± , ± : ± 如果我们结合计算机证明( , ± ± , ± )连同 VEQ ± ± ± (via 假肢 ),然后我们得到一个更复杂的证明。这证明了以下说法: ± â ± 这是可以推断的。 组合逻辑虽然以上这些确实为期望定理提供了一个证明,但它似乎很不直观。看不出人们是如何“找到”证据的。
非类型组合逻辑Combinatory logic 也可以看作是一种极简的函数式编程语言。尽管其极简主义,它完全图灵完成,但更重要的是,人们可以编写相当直观和复杂的程序,即使在这种看似模糊的语言中,以模块化和可重用的方式,通过从“正常”函数编程和一些代数见解中获得的一些实践。 添加键入规则组合逻辑也有类型化的变体。语法中增加了类型,甚至除了减少规则之外,还增加了类型规则。
申请的打字规则:
符号和缩写
咖喱霍华德信件可以看出,在证明演算和这种类型的组合逻辑中,“模式”是同构的。
但好处是什么?为什么我们要把问题转化为组合逻辑?一、 就我个人而言,我觉得它有时很有用,因为函数式编程是一个有大量文献的东西,并且应用于实际问题中。当人们被迫在每天的编程任务和实践中使用它时,他们可以习惯它。函数编程实践中的一些技巧和提示可以很好地用于组合逻辑约简。如果一个“转移”的实践在组合逻辑中发展,那么它也可以在Hilbert系统中找到证明。 外部链接
链接(或书籍)如何学习直接在组合逻辑中编程的方法和实践:
|
|
2
7
|
|
|
3
5
在希尔伯特微积分中寻找证明是非常困难的。
|
|
|
4
3
|
|
5
2
我用 Polish notation . 既然你引用了维基百科,我们假设我们的基础是 1 CpCqp。 2 CCPCRCCPQCPR。 3 CCNpNqCqp。 我们想证明 NCaNb |-a。 我使用定理证明器 Prover9 . 所以,我们需要把所有内容都括起来。此外,Prover9的变量为go(x、y、z、u、w、v5、v6、…、vn)。所有其他符号都被解释为函数、关系或谓词。所有的公理在它们之前都需要一个谓词符号“P”,我们可以认为它的意思是“它是可证明的……”或者更简单地说是“可证明的”。Prover9中的所有句子都需要以句号结尾。因此,公理1、公理2和公理3分别成为: 1p(C(x,C(y,x)))。 2p(C(C(x,C(y,z)),C(C(x,y),C(x,z)))。 3p(C(C(N(x),N(y)),C(y,x)))。 我们可以把统一替换和分离的规则结合到统一规则中 condensed detachment . 在Prover9中,我们可以表示为: -P(C(x,y))|-P(x)| P(y)。 “|”表示逻辑析取,“-”表示否定。证明人用矛盾来证明。这条用文字表述的规则可以解释为“如果x是可证明的,那么y是可证明的,或者x不是可证明的,或者y是可证明的。”因此,如果它认为如果x是可证明的,那么y是可证明的,那么第一个析取就失败了。如果它认为x是可证明的,那么第二个析取失败。所以,如果,如果x,那么y是可证明的,如果x是可证明的,那么第三个间断,即y是可证明的,遵循规则。
P(N(C(a,N(b)))。 假设Prover9将“a”和“b”解释为 函数,从而有效地将它们转换为常量。我们也希望把P(a)作为我们的目标。 现在,我们还可以使用各种定理证明策略“调优”Prover9,如加权、共振、子公式、选择给定比率、电平饱和(甚至发明我们自己的)。我将稍微使用提示策略,将所有假设(包括推理规则)和目标转换为提示。我还将把最大权重降低到40,并将最大变量数设为5。
这是它给我的证据:
|
|
|
Muhammad Umer · 为什么这个随机数猜谜游戏模拟产生5.8 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
D W · Python-将浮点数从2转换为10到100位小数 1 年前 |
|
|
Bartol · 确定python龟图形中的角度 1 年前 |
|
|
randomAlgo · 将弹簧设置为相同长度的成本最低 1 年前 |
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 2 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |