如何在Isabelle / jEdit中启用“跟踪”

时间:2013-09-26 01:47:40

标签: isabelle

我是 vim 粉丝,但只有 emacs 才有这个Isabelle / HOL环境。 jEdit 很棒,但我不能使用

using [[simp_trace=true]]

喜欢 emacs

如何在 jEdit 中启用“跟踪”?

3 个答案:

答案 0 :(得分:9)

你确实可以在Isabelle / jEdit的证明中使用simp_trace,如下所示:

lemma "(2 :: nat) + 2 = 4"
  using [[simp_trace]]
  apply simp
  done

或者,您可以全局声明它,如下所示:

declare [[simp_trace]]

lemma "(2 :: nat) + 2 = 4"
  apply simp
  done

当光标位于jEdit中的apply simp语句之后时,两者都会在“输出”窗口中为您提供简化器的跟踪。

答案 1 :(得分:6)

如果您需要深度超过1(默认值)的跟踪深度,请按

进行微调
declare [[simp_trace_depth_limit=4]] 

此示例的跟踪深度为4。

答案 2 :(得分:3)

正如其他人所指出的,您可以使用 simp_trace 。但是,您也可以将 simp_trace_new 与“Simplifier Trace”窗口结合使用。这提供了比 simp_trace 更好的输出:

lemma "rev (rev xs) = xs"
  using [[simp_trace_new]]
  apply(induction xs)
  apply(auto)
  done

要查看跟踪,请将光标放在“apply(auto)”上,然后单击“See simplifier trace”。应该打开“简化跟踪”窗口(选项卡)。单击“显示跟踪”,将出现一个新窗口,显示每个子目标的跟踪。

Isabelle / Isar reference提供了更多详细信息:

  

simp_trace_new 控制Isabelle / PIDE应用程序中的简化器跟踪,尤其是Isabelle / jEdit。
  这提供了由简化器执行的重写步骤的分层表示   用户可以通过指定断点,详细程度来配置行为   启用或禁用交互模式   在正常详细程度(默认值)中,只有与断点匹配的规则应用程序才会出现   向用户显示。在完整详细程度中,将记录所有规则应用程序。   交互模式会中断简化器的正常流程并延迟   决定如何通过一些GUI对话框继续用户。

或者您可以指定“使用[[simp_trace_new mode = full]]”link here 要查看简化程序所采取的所有步骤。

注意:在前面的示例中,显示“apply(induction xs)”的跟踪不会产生任何输出。