如何将标准应用于Isabelle中的所有子目标?

如何将标准应用于Isabelle中的所有子目标?,isabelle,Isabelle,为了证明等式“A=B”,可以证明两个包含项“A”⊆ “B”和“B”⊆ A”。现在,我使用“标准”方法将此目标转换为“在A中固定x并显示x在B中”的目标。然而,我不知道如何在所有子目标上做到这一点 我怎样才能在伊莎贝尔身上做到这一点呢?我决定在我的回答中添加她的评论 如果导入HOL-Eisbach.Eisbach,则可以使用apply(所有è标准›) 如果一个方法的应用导致一个目标产生多个目标,那么可以使用分号(结构组成:见Isar ref第6.4节)将下一种方法应用于所有新兴子目标,即 lem

为了证明等式“A=B”,可以证明两个包含项“A”⊆ “B”和“B”⊆ A”。现在,我使用“标准”方法将此目标转换为“在A中固定x并显示x在B中”的目标。然而,我不知道如何在所有子目标上做到这一点

我怎样才能在伊莎贝尔身上做到这一点呢?

我决定在我的回答中添加她的评论

如果导入
HOL-Eisbach.Eisbach
,则可以使用
apply(所有è标准›)


如果一个方法的应用导致一个目标产生多个目标,那么可以使用分号
(结构组成:见Isar ref第6.4节)将下一种方法应用于所有新兴子目标,即

lemma "(A::'a set) = B ∧ (C::'a set) = D"
  apply (intro conjI; standard; standard)
  oops
  

顺便说一句,我不认为重复使用
标准
被认为是一种很好的风格。例如,对于您的用例,通常我使用

lemma "(A::'a set) = B"
  apply(intro subset_antisym subsetI)
  oops
希望您能够很容易地看到如何将此方法同时应用于多个子目标


伊莎贝尔版本:伊莎贝尔2020



我不明白你所有的问题。您是否熟悉证明方法表达式()或寻找更奇特的东西?如果你只是想把最初的目标分解成通常的子目标,我建议你从
proof-safe
开始@谢谢你的评论,请不要删除它。这是一个很好的参考!另一方面,;正如下面所解释的那样,这项工作(也在您的参考资料中进行了解释。另一个选项:如果您导入
HOL-Eisbach.Eisbach
,您可以使用
apply(allèstandard›)
@peq,我在我的答案中添加了您的评论:我希望您不介意。如果您将其作为明确的答案发布,我将尝试对其进行投票(如果我没有忘记)。