Questions tagged «proof-assistants»

允许创建正式证明的应用程序。他们通过查找部分证据并检查完整的证据来帮助用户。

6
学习自动定理证明
我正在独自学习自动定理证明 / SMT求解器 / 证明助手,并从此处开始发布有关该过程的一系列问题。 请注意,如果没有(数学)逻辑的背景知识,就很难轻易消化这些主题。如果您对基本术语有疑问,请继续阅读,例如M. Huth和M. Ryan 撰写的《计算机科学中的逻辑》(特别是第一,第二和第四章),或者P撰写的《数学逻辑与类型理论导论》。安德鲁斯。 有关高阶逻辑(HOL)的简短介绍,请参见此处。 我看着考克(Coq),并阅读了伊莎贝尔(Isabelle)简介的第一章;自动定理证明的类型 我认识Prolog已有几十年了,现在正在学习F#,因此ML,O'Caml和LISP很有用。Haskell是另一种野兽。 我有以下书籍 艾伦·罗宾逊和安德烈·冯科夫编辑的《自动推理手册》 约翰·哈里森(John Harrison)的“实用逻辑和自动推理手册” Franz Baader和Tobias Nipkow撰写的“术语重写和所有内容” Coq和Isabelle有什么区别? 我应该学习Isabelle还是Coq,或者两者都学习? 首先学习Isabelle或Coq有优势吗? 在此处找到系列的下一个问题。

2
具有嵌套组件的归纳类型的递归定义
考虑归纳类型,它在嵌套但严格为正的位置中具有一些递归出现。例如,具有节点的有限分支的树使用通用列表数据结构来存储子级。 Inductive LTree : Set := Node : list LTree -> LTree. 通过对树和树列表进行递归来定义这些树的递归函数的幼稚方法不起作用。这是带有size计算节点数的函数的示例。 Fixpoint size (t : LTree) : nat := match t with Node l => 1 + (size_l l) end with size_l (l : list LTree) : nat := match l with | nil => 0 | cons …

1
自动定理证明的类型
我正在独自学习自动定理证明 / SMT求解器 / 证明助手,并从此处开始发布有关该过程的一系列问题。 哪些相关的自动定理证明是正确的?我找到了定理证明的评论 这仍然是最新的吗? 哪些仍然非常活跃,即,哪些人目前正在创建它的小组之外使用? 在此处找到系列的下一个问题。

4
有人真的创建了一个可以按照规范编写计算机程序的系统吗?
有没有人实际编写过一个可以生成计算机程序的系统(软件或纸上的详细说明以及简单的示例)?余输入,它创建了一个程序,它列出了素数小于10 P - [R 我中号È (X )被简单地定义为 1 &lt; X ∧ ∄ 甲Prime(x)∧x&lt;10Prime(x)∧x&lt;10Prime(x) \wedge x<10Prime(x)Prime(x)Prime(x) 教授说,他们可以,但没有人给出实际完成的例子。1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1<x \wedge \not\exists A\; s.t. 1<A \wedge A<x \wedge x=A\times B,\mbox{ with } A,B\in \mathbb{N}



4
是否有用于证明层次结构的存储库?
我是自学证明的助手,因此决定开始一些基本的证明,然后逐步发展。由于证明基于其他证明,因此形成了层次结构,是否存在证明层次结构的存储库? 我知道我可以选择一个特定的证明助手并分析其库以提取其层次结构,但是,如果我想在链中找到下一个证明以进行证明,那么当它不在库中时,我将无法。 在我的脑海中,我描绘了所有可以使用英语语句表达的已知数学证明(而不是使用图片的证明)的图形(可能是DAG)。这将是主地图(从一个点开始并通过中间点移动到另一点的地图),对于特定的校对助手,将拥有一个主地图的子图。然后,如果要使用在母版上而不在子图上找到的校对助手创建校对,则可以通过比较两个图形来了解为校对助手创建缺少的校对所需的工作。 我知道数学证明不一定很容易转换为与证明助手一起使用,但是对做什么的总体了解比根本没有要好得多。 同样,通过拥有主地图,我可以查看是否存在从一个点到另一个点的多条路径,并选择一条更适合特定证明助手的路径。 编辑 在搜索中,我发现了一些类似的数学函数。我没有在NIST上找到要证明的东西

1
“ CPS”方法严重损害了SML / NJ的性能;所需的推理
在对学习F# 的评论中:使用其他编程语言的哪些书籍可以翻译为F#以学习功能概念?Makarius说: 请注意,“ CPS”方法对SML / NJ中的性能造成了很大的损害。它的物理评估模型违反了硬件中内置的太多假设。如果您采用Isabelle / HOL之类的SML大型符号应用程序,则带有CPS的SML / NJ大约会问世。比传统堆栈的Poly / ML慢100倍。 有人可以解释原因吗?(最好有一些示例)这里是否存在阻抗不匹配?

2
Coq中的定理证明
背景 我正在独自学习帮助,Coq。到目前为止,我已经匆匆完成了Yves Bertot的Coq阅读。现在,我的目标是证明与自然数有关的一些基本结果,并以所谓的除法算法结束。但是,在实现该目标的过程中,我遇到了一些挫折。特别是,以下两个结果已经证明(双关语意)比我最初想象的要困难得多。实际上,经过多次徒劳的尝试之后,我不得不手工证明它们(如下所示)。显然,这并不能帮助我更加精通Coq。这就是为什么我转向这个论坛。我希望这个网站上的某人能够并且愿意帮助我将下面的证明转换为Coq接受的证明。衷心感谢所有帮助! 定理A 对于所有证明:x,y∈Nx,y∈Nx,y \in N x&lt;S(y)⊂x&lt;y∨I(N,x,y)x&lt;S(y)⊂x&lt;y∨I(N,x,y)\begin{equation} x < S(y) \subset x < y \lor \text{I}(N,x,y) \end{equation} 假设。因此,存在一个与 因此,通过(皮亚诺1b和3)x&lt;S(y)x&lt;S(y)x < S(y)z∈Nz∈Nz \in NI(N,x+S(z),S(y))(*)(*)I(N,x+S(z),S(y))\begin{equation} \text{I}(N,x+S(z),S(y)) \tag{*}\end{equation}I(N,x+z,y)I(N,x+z,y)\begin{equation} \text{I}(N,x+z,y) \end{equation} 定义一个谓词Q(u):=(I(N,x+u,y)⊂x&lt;y∨I(N,x,y)Q(u):=(I(N,x+u,y)⊂x&lt;y∨I(N,x,y)\begin{equation} Q(u):=(\text{I}(N,x+u,y) \subset xy¬I(N,x,y)¬I(N,x,y)\neg \text{I}(N,x,y)x&gt;yx&gt;yx>y y&gt;xy&gt;xy>xI(N,x,y)I(N,x,y)\text{I}(N,x,y) 我们使固定并在归纳。当对于所有,我们都有,这证明了基本情况。接下来,假设定理对成立;现在我们要证明的定理。从对的三分法中可以看出三种情况:和。如果,则显然。如果,则(对于所有都是)。最后,假设X 我(Ñ ,0 ,ÿ )0 &lt; Ý ∨ 我(Ñ ,0 ,ÿ )ÿ X 小号(X )X X …

1
类型系统可以用作外部功能的证明助手吗?
鉴于: 具有非常有表现力的类型系统的语言(例如Idris)也可以具有转义机制,例如外部函数接口/ unsafePerformIO。 有一些证明助手可以用来证明用某种语言编写的程序的某些特性,而该语言没有能够表达这些特性的类型系统。 Curry-Howard的对应关系表明,具有给定类型的函数的类型检查成功实现是该类型所表示内容的证明。 可以在母语的类型系统中表达外语代码某些属性的非平凡的证明吗? 例如,假设我有一个名为stable_qsort的C函数,该函数以非常巧妙和高效的方式对数字进行排序,同时保持已经相等的元素的顺序,还有一个Idris程序通过其FFI调用stable_qsort,但是我不相信这种相对晦涩的方法C函数。我可以证明该函数不会在我的Idris代码中对所有输入重新排序相等的元素,而不是使用单独的证明助手吗?
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.