Isabelle:在“结构化”和“应用式”证明之间切换

时间:2013-12-12 14:29:00

标签: isabelle isar

Isabelle有两种证明形式:旧的“应用”风格,证明只是一个链条

apply (this method) 
apply (that method)

陈述,以及新的“结构化”Isar风格。我自己,我发现它们都很有用; “应用”风格更简洁,对于无趣的技术引理也很方便,而“结构化”风格对于主要定理来说很方便。

有时候我喜欢从一种风格切换到另一种风格,中间证明。从“应用”样式切换到“结构化”样式很简单:我只需插入

proof -

在我的应用链中。我的问题是:如何从“结构化”风格切换回“应用”风格?

举一个更具体的例子:假设我有五个子目标。我发布一些“申请”指令来发送前两个子目标。然后我发布了一个结构化的证据来免除第三个。我还有两个子目标:如何为这些恢复“应用”风格?

1 个答案:

答案 0 :(得分:3)

您可以使用apply_end代替apply在结构化校样中继续“应用”样式,但这在实践中很少见,只有在探索性工作中才能看到。在一个精确的证明中,您只需选择值得Isar证明的子目标,并在qed之后的一个方法调用中完成所有剩余的子目标,因为不需要按任何特定顺序处理子目标。

或者,您可以在使用defer开始结构化校样之前使用proof,并以“应用”方式立即继续使用其他子目标,即,您将结构化校样的目标推迟到最后

最后,您当然可以使用fix / assume / show在结构化校对中重新陈述您的目标,并在那里继续使用“应用”样式。但是你必须分别对每个剩余的子目标执行此操作,因此这可能有点单调乏味。默认案例名称goal1goal2等对输入有所帮助,但此类证据通常难以维护(尤其是apply_end更改goal<n>的目标编号时)。