如何将标准应用于伊莎贝尔的所有子目标?
How to apply standard to all subgoals in Isabelle?
要证明等式 "A = B" 可以证明两个包含 "A ⊆ B" 和 "B ⊆ A"。现在,我正在使用方法 "standard" 将此目标转换为目标 "fix x in A and show x is in B"。但是,我不知道如何在所有子目标上执行此操作。
我如何在 Isabelle 中执行此操作?
我决定将 peq 的评论添加到我的回答中
if you import HOL-Eisbach.Eisbach
you can use apply(all‹standard›)
如果由于应用一种方法而从一个目标中出现多个目标,则可以使用分号;
(结构组成:参见 Isar-ref 中的第 6.4 节)来应用下一个方法所有新出现的子目标,即
lemma "(A::'a set) = B ∧ (C::'a set) = D"
apply (intro conjI; standard; standard)
oops
附带一提,我不认为standard
的重复应用被认为是一种很好的风格。例如,对于您的用例,通常我使用
lemma "(A::'a set) = B"
apply(intro subset_antisym subsetI)
oops
希望您能够轻松了解如何同时将此方法应用于多个子目标。
伊莎贝尔版本:伊莎贝尔2020
要证明等式 "A = B" 可以证明两个包含 "A ⊆ B" 和 "B ⊆ A"。现在,我正在使用方法 "standard" 将此目标转换为目标 "fix x in A and show x is in B"。但是,我不知道如何在所有子目标上执行此操作。
我如何在 Isabelle 中执行此操作?
我决定将 peq 的评论添加到我的回答中
if you import
HOL-Eisbach.Eisbach
you can useapply(all‹standard›)
如果由于应用一种方法而从一个目标中出现多个目标,则可以使用分号;
(结构组成:参见 Isar-ref 中的第 6.4 节)来应用下一个方法所有新出现的子目标,即
lemma "(A::'a set) = B ∧ (C::'a set) = D"
apply (intro conjI; standard; standard)
oops
附带一提,我不认为standard
的重复应用被认为是一种很好的风格。例如,对于您的用例,通常我使用
lemma "(A::'a set) = B"
apply(intro subset_antisym subsetI)
oops
希望您能够轻松了解如何同时将此方法应用于多个子目标。
伊莎贝尔版本:伊莎贝尔2020