我是 vim 粉丝,但只有 emacs 才有这个Isabelle / HOL环境。 jEdit 很棒,但我不能使用
using [[simp_trace=true]]
喜欢 emacs 。
如何在 jEdit 中启用“跟踪”?
答案 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)”的跟踪不会产生任何输出。