Questions tagged «proof-assistants»

证明助手是一个应用程序,可以帮助人们构造机器检查过的证明。

3
浅嵌入与深嵌入
在将逻辑编码到诸如Coq或Isabelle的证明助手中时,需要在使用浅埋和深埋之间进行选择。在浅层嵌入中,逻辑公式直接写在定理证明者的逻辑中,而在深层嵌入中,逻辑公式表示为数据类型。 各种方法的优点和局限性是什么? 是否有任何指南可用于确定使用哪个? 是否可以任何系统的方式在两种表示形式之间切换? 作为动机,我想将各种与安全性相关的逻辑编码到Coq中,并想知道不同方法的优缺点。

3
证明助手中的“策略”如何工作?
问题:“策略”在证明助手中如何工作?它们似乎是指定如何将术语重写为等效术语的方法(对于“等效”的某些定义)。大概有正式的规则,我如何才能知道它们是什么以及它们如何工作?他们所涉及的不仅仅是减少Beta的顺序选择吗? 关于我的兴趣的背景:几个月前,我决定想学习形式数学。我之所以选择类型理论,是因为从初步研究来看,它看起来像《做事的正确方法》(tm Way to Do Things,tm),并且因为它似乎使编程和数学统一起来非常有趣。我认为我最终的目标是能够使用和理解像Coq这样的证明助手(我认为特别是能够使用依赖类型,因为我对表示矩阵类型之类的东西感到好奇)。我开始了解的很少,甚至不了解基本的函数式编程,但是我的进展缓慢。我已阅读并理解了大量的类型和编程语言(Pierce),并了解了一些Haskell和ML。


1
证明检查器错误是否使主要证明无效?
大多数(全部?)证明助手有时会修复健全性错误。但是,从我所看到的那些错误中,通常很难无意间遇到这些错误,并且在修复该错误之前证明的结果通常会在修复之后出现。 按强度顺序的三个问题: 如此完善的错误修复程序是否曾经导致主要证明失败而又没有修改证明? 如果(1)为真,是否需要对证明进行重大修改? 如果(2)为真,是否有人由于稳健性错误而证明了一个错误的主定理? 我将“主要”的定义留给其他人使用。

1
是否有适用于TCS定理的合理的自动证明系统?
假设我想形式化图灵关于暂停问题的证明,以便机器可以对其进行检查。一些著名的自动定理证明系统包括Mizar,Coq和HOL4。我下载了Coq并进行了实验,但是它没有用于Turing机器的库。我本来想自己编写代码,但发现该教程缺乏,而且语言难以掌握。 我的问题是:是否有一个自动定理证明者,通常能很好地证明涉及图灵机的定理?如果可以使用已经存在的库来形式化证明停止问题的不确定性的证明,那么我将认为这样的一个定理证明者“很好”。如果相对容易拿起它,我会认为更好。(据记录,我通常不会遇到编程语言方面的困难。) 谢谢, 菲利浦

1
Feit-Thompson定理形式化中有趣的算法?
看起来乔治•贡迪耶(George Gonthier)和他的合作者已经完成了奇阶定理的形式化。 在早期关于“四色定理”的工作中,Gonthier发明了一堆特别适合形式验证的新算法(主要是BDD和图形算法的变体)。既然他说过他将继续在有限群论的研究中使用这种小规模的反射验证方式,我想知道在此开发过程中开发了哪些新的算法技巧?

5
对计算机辅助的NP完整性证明感到好奇
在Thomas J. Schaefer的“可满足性问题的复杂性”一文中,作者提到 This raises the intriguing possibility of computer-assisted NP-completeness proofs. Once the researcher has established the basic framework for simulating conjunctions of clauses, the relational complexity could be explored with the help of a computer. The computer would be instructed to randomly generate various input configurations and test …


1
证明Coq中的证明无关紧要?
有没有办法证明Coq中的以下定理? Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2. 编辑:尝试简要说明“什么证明无关紧要”(如果我错了或不正确,请纠正我) 基本思想是,在命题世界(或PropCoq中的排序)中,您(并且应该)真正关心的是命题的可证明性,而不是它的证明,可能有很多(或没有)。如果您有多个证明,从可证明性的角度来看,它们在证明相同命题的意义上是相等的。因此,它们的区别是无关紧要的。这不同于来看,你真正关心的两个词的区别,计算点例如,基本上,你不想让两个居民bool类型(或Set在勒柯克的话),即true和false相等。但是,如果将它们放入Prop,它们将被平等对待。


3
谓词在类型论中归纳定义中的作用是什么?
我们经常要定义一个对象一∈ ü一种∈üA \in U根据一些推理规则。这些规则表示生成函数FFF,当它是单调的,产生一个至少固定点。我们取是“归纳定义”的。此外,单调性使我们能够以“归纳原理”进行推理,以确定集合何时包含(即,何时属性普遍持有)。μ ˚FμF\mu F甲:= μ ˚F一种:=μFA := \mu F一种一种AFFFA一种AA一种A 在勒柯克这相当于编写定义有明确的介绍条款。尽管此定义表示特定函数,但该函数不一定是单调的。因此,Coq使用一些语法检查来确保定义的“格式正确”。在某种程度上,它拒绝了在引入词类型中出现在负数位置的Inductive一世ñdüCŤ一世vË\mathtt{Inductive}A一种AFFFA一种A (如果到目前为止我的理解存在缺陷,请纠正我!) 首先,关于Coq的一些问题: 1)Coq中的语法检查是否仅用于确保的定义为谓语?(如果是这样,则难辨性是定义定义不正确的唯一方法吗?)还是检查单调性?(相应地,非单调性会杀死它吗?)A一种A 2)这种否定出现是否必然意味着的定义是强制性/非单调性的?还是Coq在这种情况下根本无法验证其定义是否正确?AA一种AA一种A 更一般地说: 3)归纳定义的谓词性与该定义的生成函数的单调性之间有什么关系?它们是同一枚硬币的两个面吗?他们无关吗?非正式地,哪一个更重要?

2
消除Coq证明中的cofix
在尝试使用Coq中的共归类型来证明一些基本属性时,我一直遇到以下问题,但无法解决。我将问题提炼成一个简单的Coq脚本,如下所示。 类型Tree定义了可能无限的树,这些分支带有标记为A类型的元素的分支。不必为A的所有元素定义分支。值Univ是一棵无穷树,其中所有A分支始终被定义。isUniv测试给定的树是否等于Univ。引理指出Univ确实满足isUniv。 Parameter A : Set. CoInductive Tree: Set := Node : (A -> option Tree) -> Tree. Definition derv (a : A) (t: Tree): option Tree := match t with Node f => f a end. CoFixpoint Univ : Tree := Node (fun _ => Some Univ). CoInductive isUniv …

2
证明助手在复杂性理论研究中的用途?
考虑到像STOC这样的会议所涵盖的主题,是否有任何算法或复杂性研究人员积极使用COQ或Isabelle?如果是这样,他们如何在研究中使用它?我认为大多数人不会使用此类工具,因为证明水平太低。是否有人以对他们的研究至关重要的方式使用这些证明助手,而不是一个很好的补充? 我很感兴趣,因为我可能会开始学习其中一种工具,并且在减少,正确或运行时间证明的背景下学习它们会很有趣。

1
如何在Coq中的两个参数上归纳定义一个函数?
我如何才能说服Coq以下给出的递归函数终止?该函数带有两个归纳参数。从直觉上讲,由于任何一个参数都已分解,因此递归终止。 具体来说,该函数将两棵树作为输入。 Inductive Tree := | Tip: Tree | Bin: Tree -> Tree -> Tree. 在“树”上,我喜欢执行以下归纳样式。 Inductive TreePair := | TipTip : TreePair | TipBin : Tree -> Tree -> TreePair | BinTip : Tree -> Tree -> TreePair | BinBin : TreePair -> TreePair -> TreePair. Fixpoint pair (l …

6
数学写作证明助手
我想使用一些证明助手来编写数学证明。一切都将使用一阶逻辑(具有相等性)和自然推导来编写。背景是集合论(ZF)。例如,我怎么写以下证明? 公理:∀ X ∀ ÿ(x = y↔ ∀ ž(z∈ X ↔ ž∈ ÿ))∀x∀y(x=y↔∀z(z∈x↔z∈y))\forall x\forall y(x=y\leftrightarrow\forall z(z\in x\leftrightarrow z\in y)) 定理:∀ X ∀ ÿ(∀ ž(z∉ X )∧ ∀ Ž(z∉ ÿ)→ x = y)∀x∀y(∀z(z∉x)∧∀z(z∉y)→x=y)\forall x\forall y(\forall z(z\notin x)\land\forall z(z\notin y)\rightarrow x=y) 也就是说,空集是唯一的。 使用纸和笔完成此任务对我来说是微不足道的,但是我真正需要的是一个软件来帮助我检查正确性的证明。 谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.