Isabelle 伊莎贝尔:不使用try0运行try命令

Isabelle 伊莎贝尔:不使用try0运行try命令,isabelle,Isabelle,偶尔会有一个引理,try0使Isabelle/JEdit崩溃。只有进程id上的kill-9起作用 当我在同样的情况下调用try时,Isabelle/JEdit再次崩溃 在这种情况下,是否可以调用try中的所有内容而不运行try0(或者忽略try0将调用的所有内容) (我做了一些谷歌搜索,但找不到任何相关内容。)在第267页,它给出了关于try0和try的以下注释: try0尝试使用标准证明方法(自动、simp、blast等)组合证明子目标。通过simp:、intro:、elim:、dest:提

偶尔会有一个引理,
try0
使Isabelle/JEdit崩溃。只有进程id上的
kill-9
起作用

当我在同样的情况下调用
try
时,Isabelle/JEdit再次崩溃

在这种情况下,是否可以调用
try
中的所有内容而不运行
try0
(或者忽略
try0
将调用的所有内容)

(我做了一些谷歌搜索,但找不到任何相关内容。)

在第267页,它给出了关于
try0
try
的以下注释:

  • try0尝试使用标准证明方法(自动、simp、blast等)组合证明子目标。通过simp:、intro:、elim:、dest:提供的其他事实将传递给适当的证明方法
  • try尝试使用验证和反驳的组合来证明或反驳子目标(
    solve\u direct
    quickcheck
    try0
    大锤
    挑剔
因此,如果Isar参考手册中的描述是完整的,那么
try
就是
try0
加上两个校准器,
solve\u direct
sledgehammer
,以及两个反例查找器,
quickcheck
nitpick

要不运行
try0
的校准仪,据我所知,您必须分别运行
solve\u direct
sledgehammer

如果
try0
挂起了PIDE,那么它很可能会进入某种类型的坏循环,在
Plugin Options/Isabelle
中启用
Auto-Methods
也会导致这些循环,因为它的作用类似于
try0

我经历过两种循环,我只记得下面列出的第二种循环挂起了PIDE:

  • simp
    规则循环由
    simp
    或调用
    simp
    的方法引起,如
    auto
    force
    fastforce
    slowsimp
    bestsimp
    。要停止无限循环,我只需删除该命令
  • blast
    auto
    调用
    blast
    引起的循环。对于这种情况,它要么立即发生,要么在我让命令运行5秒钟左右之后发生
  • 您可以尝试缩小导致
    try0
    try
    挂起PIDE的自动校对方法的范围

    您可以获得一个类似这样使用的
    try0
    方法列表(我不知道它显示的校准器列表是否完整):

    从该列表中,如果
    apply(simp)
    正在循环,您知道有一个
    simp
    规则循环(或者
    simp
    规则需要很长时间才能完成),这将使
    自动
    fastforce
    force
    循环,因为它们调用
    simp

    如果
    auto
    是循环,那么它可能是
    simp
    blast
    ,因为
    auto
    可以调用其中的每一个,所以您可以尝试
    apply(blast)
    来查看
    blast
    是否是问题所在


    对于Isabelle2013-2,对我来说,PIDE的挂起是因为
    auto
    ,因为它调用
    blast
    。据推测,这在下一版本中已经修复。

    我将此作为第二个答案,因为它已经足够不同了

    我浏览了存储库的更改,这使我找到了以下与
    try
    try0
    相关的Isabelle 2013-2 ML文件(但不要完全锁定,因为我列出了其他文件以显示正在更改的内容):

    文件
    try.ML
    给出了这行源代码:

    val get_tools : theory -> tool list
    
    我想,使用ML,一个人可以得到
    try
    使用的工具列表,但如果是这样,那么它可能与
    isar-ref.pdf
    中的另一个答案中给出的描述相对应

    基本上,有调用其他工具的
    try
    sledgehammer
    做它自己特殊的事情,
    try0
    的使用是它的武器库的一部分,
    solve\u direct
    ,然后是
    try0
    使用的全自动证明方法,这些方法列在
    try0.ML

    try0.ML
    中列出的大多数自动验证方法在章节中引用

    • 9.3简化器[187]
    • 9.4.4全自动方法[211]
    • 12.7模型消除和分辨率[263],以及
    • 12.8通过Gröbner基进行代数推理[263]
    现在,对于即将进行的一些更改,请参考最新的文件或更改集:

    • 变更集:
    • 变更集:
    从最新的存储库
    try0.ML
    ,它给出了
    try0
    将尝试的证明方法列表。如果您查看上面的Isabelle2013-2
    try0.ML
    ,您将看到该文件中给出的列表与试图证明
    False
    时另一个答案中显示的方法列表相同

    在这里,有一些额外的自动证明方法,目前还没有在Isabelle 2013-2中尝试

    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))]
    
    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))]