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
的目标编号时)