我想使用一些证明助手来编写数学证明。一切都将使用一阶逻辑(具有相等性)和自然推导来编写。背景是集合论(ZF)。例如,我怎么写以下证明?
公理:
定理:
也就是说,空集是唯一的。
使用纸和笔完成此任务对我来说是微不足道的,但是我真正需要的是一个软件来帮助我检查正确性的证明。
谢谢。
我想使用一些证明助手来编写数学证明。一切都将使用一阶逻辑(具有相等性)和自然推导来编写。背景是集合论(ZF)。例如,我怎么写以下证明?
公理:
定理:
也就是说,空集是唯一的。
使用纸和笔完成此任务对我来说是微不足道的,但是我真正需要的是一个软件来帮助我检查正确性的证明。
谢谢。
Answers:
Coq和Isabelle都可以做到这一点。
[Coq]这是一篇讨论如何在CoIC中基于ZIC编码ZFC的论文。
本杰明·沃纳(Benjamin Werner):“类型中的集合”,“集合中的类型”(1997)。 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709
[伊莎贝尔] ZF有一个图书馆。
http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/ZF/index.html
从对Kaveh的建议的评论中移开
首先,您需要选择一个证明助手。Coq是我使用的,但是还有很多其他的。Coq基于高阶逻辑(所谓的归纳微积分)。其他证明助手基于一阶逻辑,因此可能更适合您的需求(对上述注释取模)。
然后,您需要致力于学习证明助手。链接的文档是使用Coq入门的教程。成为一名Coq专家需要多年的奉献精神和实践,但是简单的定理可以在一个下午得到证明。学习Coq或其他任何证明助手的关键是做证明,例如链接论文中的证明。仅仅阅读论文将无济于事,因为不能在纸面上很好地传达与证明助手互动的全部经验。
几天之内,您应该就能对上述简单定理进行编码,并对其进行证明。不要期望我们会为您做这件事。这样您将一无所获。
当您成功证明这些定理时,请随时在此处发布答案,并可能对您的经历发表一些评论。
你准备好接受挑战了吗?
戴夫·克拉克(Dave Clarke)建议了Coq,但实际上伊莎贝尔(Isabelle)似乎是一个更好的主意,因为它具有针对ZF的库。伊莎贝尔(Isabelle)也非常成熟,其中包括各种战术和扩展。
我个人没有使用过Mizar,但它也可能很好。
我该如何写以下证明?
在Isabelle / ZF中,您可以编写如下内容
theory csthquestion imports Main
begin
theorem empty_unique:
shows "\<forall> x.\<forall>y.(\<forall>z. (z\<notin>x)) \<and> (\<forall>z.(z\<notin>y)) \<longrightarrow> x=y"
by auto
end
如您所见,Isabelle自动证明了这一点。当然,如果您确实需要,可以写出更详细的证明。
这个定理是我的DC Proof 2.0软件随附的教程中的一个有效示例(请参见示例11)。从我的网站http://www.dcproof.com免费下载。