偶尔有一个引理,try0
崩溃了Isabelle / JEdit。过程ID上只有kill -9
可用。
当我在相同的情况下拨打try
时,Isabelle / JEdit再次崩溃。
在这种情况下是否可以调用try
而不运行try0
的所有内容(或者忽略所有证明try0
会调用的内容)?
(我做了一些谷歌搜索,但找不到任何相关内容。)
答案 0 :(得分:1)
从isar-ref.pdf,第267页,它在try0
和try
上提供了以下注释:
solve_direct
,quickcheck
,try0
,sledgehammer
的组合来证明或反驳子目标, nitpick
)。因此,如果说明在Isar参考手册中完整,那么try
为try0
加上两个证明,solve_direct
和sledgehammer
,以及两个反例查找器,{{ 1}}和quickcheck
。
据我所知,要不运行nitpick
的投标人,您必须单独运行try0
和solve_direct
。
如果sledgehammer
悬挂PIDE,那么它很可能会进入某种类型的错误循环,其中try0
中的Auto Methods
启用也会导致这些循环,因为它会执行某些操作类似于Plugin Options / Isabelle
。
我经历过两种循环,在那里我只记得下面列出的第二个循环挂起PIDE:
try0
或调用simp
的方法引起的simp
规则循环,例如simp
,auto
,force
,{{1 }和fastforce
。要停止无限循环,我只需要删除命令。slowsimp
调用bestsimp
引起的blast
次循环。对于这些类型,它要么立即发生,要么在我让命令运行5秒左右之后发生。您可以尝试缩小哪种自动校样方法导致auto
和blast
挂起PIDE。
您可以获得这样使用的try0
方法的列表(我不知道它显示的证明列表是否完整):
try
从该列表中,如果try0
正在循环,您知道有lemma "False"
try0
(*Trying "simp", "auto", "fast", "fastforce", "force", "blast", "metis",
"linarith", and "presburger"...*)
oops
规则循环(或apply(simp)
规则需要很长时间才能完成),这会使{{1} }},simp
和simp
循环,因为他们调用auto
。
如果fastforce
正在循环播放,则可能是force
或simp
,因为auto
可以调用其中的每一个,因此您可以尝试simp
看问blast
是否有问题。
使用Isabelle2013-2,对我来说,PIDE的挂起是因为auto
,因为它调用了apply(blast)
。据说,这已经为下一个版本修复了。
答案 1 :(得分:1)
我把它作为第二个答案,因为它已经足够不同了。
我正在浏览存储库更改,这导致我发现以下与try
和try0
相关的Isabelle2013-2 ML文件(但是没有完全锁定,因为我列出了其他文件显示事情正在发生变化):
文件try.ML
给出了这一行来源:
val get_tools : theory -> tool list
我想,使用ML,一个人可以获得try
使用的工具列表,但如果是这样,那么它可能与isar-ref.pdf
的另一个答案中给出的描述相对应。
基本上,有try
调用其他工具sledgehammer
,这些工具有自己的特殊功能,try0
的使用是其工具库solve_direct
的一部分,然后是try0
使用的全自动校对方法,列于try0.ML
。
try0.ML
部分中引用try0.ML
中列出的大多数自动校对方法
现在对于管道中的一些更改,取自最新文件或更改集:
从最新的存储库try0
中,它提供了try0.ML
将尝试的证明方法列表。如果您查看上面的Isabelle2013-2 False
,您会发现在尝试证明val full_attrs = (SOME "simp", SOME "intro", SOME "elim", SOME "dest");
val clas_attrs = (NONE, SOME "intro", SOME "elim", SOME "dest");
val simp_attrs = (SOME "add", NONE, NONE, NONE);
val metis_attrs = (SOME "", SOME "", SOME "", SOME "");
val no_attrs = (NONE, NONE, NONE, NONE);
(* name * ((all_goals, run_if_auto_try), (simp, intro, elim, dest) *)
val named_methods =
[("simp", ((false, true), simp_attrs)),
("auto", ((true, true), full_attrs)),
("blast", ((false, true), clas_attrs)),
("metis", ((false, true), metis_attrs)),
("linarith", ((false, true), no_attrs)),
("presburger", ((false, true), no_attrs)),
("algebra", ((false, true), no_attrs)),
("fast", ((false, false), clas_attrs)),
("fastforce", ((false, false), full_attrs)),
("force", ((false, false), full_attrs)),
("meson", ((false, false), metis_attrs))]
时,该文件中给出的列表与其他答案中显示的方法列表相同。
此处有一些额外的自动校对方法,目前Isabelle2013-2尚未尝试过。
{{1}}