我正在寻找一种工具(首选GUI但CLI可以工作),它允许我输入数学表达式,然后对它们进行操作,但限制我只能在数学上有效的操作。此外,该工具必须能够保存会话,然后证明给定的已保存操作集是有效的。
注意:我不正在寻找生成校样的系统,只检查我手动指定的步骤是否有效。 < / p>
我已经使用ACL2进行了类似的操作,并且在某些情况下效果很好但是很难用于其他所有情况。
This little project is my motivation.它是一种D模板类型,允许求解方程式。鉴于这个等式:
(A * B) = C + D / F;
任何一个符号都可以设置为unknown并评估该表达式将导致对该变量的赋值。它的工作原理是将表达式树构建到类型中,然后使用重写规则将其转换为可以针对未知类型的事件。
我需要的是一些验证重写规则的方法。可以通过测试给定某种关系为真的断言来验证它们,另一种也是。
答案 0 :(得分:7)
已经提到了几位美国证明助理(通常采用LISP语法),所以这里有一个以欧洲为中心的列表来补充:
所有这些都是TTY界面的臭名昭着,但Coq和Isabelle为Proof General / Emacs界面提供了很好的支持。此外,Coq还附带了CoqIDE,它基于OCaml / GTK和板载文本小部件。最近的Isabelle包括Isabelle / jEdit Prover IDE,它基于jEdit,并在用户输入时由证明者提供的语义标记进行扩充。
答案 1 :(得分:6)
ACL2是臭名昭着的 - 我们曾经说它是一个专家系统,所以只能由专家来使用,他们必须向Warren Hunt,J Moore或Bob Boyer学习。你需要在ACL2中做的事情真正理解证明系统本身是如何工作的;那么你可以在减少搜索空间的方向上“暗示”它。
但是,还有其他一些系统可以帮助解决这类问题,具体取决于您要做的事情。
如果你想使用连续数学或数论,理想的是Mathematica。问题是你可以用同样数量的钱购买二手车(除非你有资格获得学术许可,这是一个更好的交易。)
类似且免费的东西是Open Maxima,这是Macsyma的扩展。该页面还指出了其他几个像Axiom,我没有经验。
对于数学逻辑运算,来自SRI的PVS。他们在同一个框架中有一些其他很酷的东西,比如模型检查。
答案 2 :(得分:2)
这个领域正在进行研究,它被称为“计算机代数中的定理证明”。
人们正试图将Mathematica,Maple等计算机代数系统的易用性和强大功能与证明系统的逻辑严谨性结合起来。问题是:
计算机代数系统并不严谨。他们往往会忘记一些条件,例如除数不能为0。
证明系统使用起来既困难又乏味(正如您所发现的那样)。
答案 3 :(得分:1)
除了Charlie Martin的链接外,您可能还想查看Maple。我使用这种软件的经验大约有5年了,但我记得当时发现Maple比Mathematica更直观。
答案 4 :(得分:1)
lean prover是通过JS gui互动的。
答案 5 :(得分:0)