Isabelle / HOL中的错误消息

时间:2017-02-10 07:48:47

标签: isabelle

当应用错误的策略或错误的扣除规则时,错误消息通常过于笼统:

Failed to apply initial proof method⌂

我正在使用伊莎贝尔来教导自然演绎。当Isabelle抱怨时,一些学生会改变规则/策略,而不会反映错误的可能原因。我认为,更详细的错误信息可能是伊莎贝尔学习过程的一部分。

如何使这些错误消息对学生友好?这是否需要编辑源代码,还是可以通过定义更具表现力的自然演绎策略进行管理?

1 个答案:

答案 0 :(得分:3)

伊莎贝尔的战术可以被认为是目标国家的可链接的非确定性转变。这意味着一般来说难以回答特定导致战术失败的问题,并且在伊莎贝尔的战术体系中没有机制来跟踪这些信息。但是,可以相对容易地修改现有策略,以便他们可以选择输出一些跟踪信息。

但是,我不知道这些信息应该是什么。有一些简单的策略,例如rule,其中应用它失败的原因始终是它给出的规则不能与目标(以及可能链接的事实)统一,并且有类似的简单策略,如{{1 },introdrulefruleerule。有时使用elim可以很好地调试这种与统一相关的问题,每次统一失败时都会打印一些跟踪信息。

对于declare [[unify_trace_failure]]simp,由于这些方法可以执行多少不同的事情,因此情况不太清楚。从本质上讲,当证明方法根本无法应用时,它意味着“autosimp无法为此目标做任何事情”。对于auto,这包括简化,拆分,线性算术,以及可能还有很多我忘记的事情。对于simp,它还包括具有特定搜索深度的经典推理。当这些方法失败时,人们不能轻易说出具体的问题。

如果出现问题,某些专门的策略会打印更具体的错误消息,例如: autosat有时会在找到目标的反例后打印一条特殊的错误消息,但我甚至无法想象smtsimp等更有用的输出看起来像。如果您有任何想法,请告诉我。

我认为这个问题无法通过错误消息真正解决;一个人必须简单地了解一个人更好地使用的系统和策略,并了解他们做什么以及何时失败。也许最好有一种常用战术的目录来提及这些事情。