当我在 Isabelle 中说明一个引理时,我经常输入nitpick
,如果这不能给我一个反例。
然后我输入sledgehammer
以尝试自动查找证明。
我想知道:是否可以调用 Nitpick 和 Sledgehammer 以便它们同时运行? 由于 Sledgehammer 已经将我的引理发送给一堆自动证明器,这些证明中的一个实际上不是像 Nitpick 这样的反例调查器吗?
答案 0 :(得分:8)
您可以尝试在Isabelle中使用try
命令;它并行运行sledgehammer
,nitpick
,quickcheck
和其他一些求解器(例如auto
,simp
,force
等) ,给你第一个完成的结果。
例如,运行以下命令:
lemma "(a * (b + 1)) = (a * b + a)"
try
将从nitpick
返回一个反例,表明该定理一般不正确。添加类型约束:
lemma "((a :: nat) * (b + 1)) = (a * b + a)"
try
现在会返回一条消息,告诉您simp
能够解决目标。
最后,将类型约束更改为更具挑战性的32 word
类型(可从Word
中的HOL-Word
获取):
lemma "((a :: 32 word) * (b + 1)) = (a * b + a)"
try
将从大锤返回结果。