要证明我正在伊莎贝尔(Isabelle)工作的事实,我需要3和5是质数的事实。建立这个最简单的方法是什么?
答案 0 :(得分:1)
有一些简化规则可以使简化程序自动执行此操作:
lemma "prime (5 :: nat)"
by simp
对于较大的数字(例如137
),这将需要几秒钟,而对于较大的数字,则完全无法使用。
您也可以使用eval
而不是simp
,它会通过Isabelle的评估预言来评估Standard ML中的语句,然后将结果重新解释为Isabelle中的一个定理。根据您询问的对象,这可能不如simp
可信。
最后,形式证明的存档中Pratt Certificates上的条目还提供了称为pratt
的证明方法,该方法可以使用Pratt自动证明数字的素数证书。这比使用simp
的效率略高,但对于真正大的数字仍然不是很好。
在任何情况下,对于5和7这样的小数字,by simp
都是解决之道。
请注意,您必须输入类型,即prime (5 :: nat)
或prime (7 :: int)
。如果仅写prime 5
,则推断为5的类型太笼统。例如,prime (5 :: real)
是 not true,因为字段不包含质数。