Isabelle 伊莎贝尔:在“之间切换”;“结构化”;及;“应用样式”;证明

Isabelle 伊莎贝尔:在“之间切换”;“结构化”;及;“应用样式”;证明,isabelle,isar,Isabelle,Isar,《伊莎贝尔》中有两种类型的证明:旧的“应用”类型,即证明只是一系列的证据 apply (this method) apply (that method) 语句,以及新的“结构化”Isar样式。就我自己而言,我发现两者都很有用;“apply”风格更简洁,对于无趣的技术引理也更方便,而“structured”风格对于主要定理更方便 有时我喜欢从一种风格切换到另一种风格,中档风格。从“应用”样式切换到“结构化”样式很容易:我只需插入 proof - 在我的申请链中。我的问题是:如何从“结构化”样

《伊莎贝尔》中有两种类型的证明:旧的“应用”类型,即证明只是一系列的证据

apply (this method) 
apply (that method)
语句,以及新的“结构化”Isar样式。就我自己而言,我发现两者都很有用;“apply”风格更简洁,对于无趣的技术引理也更方便,而“structured”风格对于主要定理更方便

有时我喜欢从一种风格切换到另一种风格,中档风格。从“应用”样式切换到“结构化”样式很容易:我只需插入

proof -
在我的申请链中。我的问题是:如何从“结构化”样式切换回“应用”样式

举一个更具体的例子:假设我有五个子目标。我发布了一些“应用”指令来发送前两个子目标。然后我开始进行结构化的证明,以省去第三个。我还有两个子目标:如何为这些返回到“应用”样式?

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

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

最后,您当然可以在结构化证明中使用
fix
/
假设
/
显示
并继续使用“应用”样式重新陈述您的目标。但是您必须分别为每个剩余的子目标执行此操作,因此这可能有点乏味。默认的案例名称
goal1
goal2
等对打字有一定帮助,但这样的证明通常很难维护(特别是当
apply\u end
更改
goal
的目标编号时)