Isabelle FOL部分规则应用程序
让我们假设我们有这样一种方式的变体Isabelle FOL部分规则应用程序,isabelle,first-order-logic,isar,Isabelle,First Order Logic,Isar,让我们假设我们有这样一种方式的变体 lemma invDed: ‹(A-->B)==>(A==>B)› apply(rule mp) apply assumption apply assumption done 它能用来证明这个定理吗?(我的意思是A:=A、B:=A和A-->A,我们使用它们,就好像之前证明过一样) 若否,原因为何?我知道证明这个定理的其他几种方法(“应用假设”或弗雷格命题演算公理的五步证明),但我对证明机制的细微差别感兴趣 我有一个规则,现在
lemma invDed: ‹(A-->B)==>(A==>B)›
apply(rule mp)
apply assumption
apply assumption
done
它能用来证明这个定理吗?(我的意思是A:=A、B:=A和A-->A,我们使用它们,就好像之前证明过一样)
若否,原因为何?我知道证明这个定理的其他几种方法(“应用假设”或弗雷格命题演算公理的五步证明),但我对证明机制的细微差别感兴趣
我有一个规则,现在我想获得另一个[可接受的]规则,有什么问题吗?使用
规则的应用程序
仅适用于最右边的元蕴涵(==>
)后面的公式。因此,您将得到以下类似的结果,这不是很有帮助:
lemma myid2: "A==>A"
proof (rule invDed[where A=A and B=A])
show "A ⟹ A ⟶ A"
by (rule imp_refl)
show "A ⟹ A"
by assumption
qed
如果旋转前提(使用下面的[rotated]
修饰符完成)使其具有A=>(A-->B)=>(B)
,则可以使用erule
应用它:
lemma myid2: "A==>A"
apply (erule invDed[rotated])
apply (rule imp_refl)
done
你试过什么?然后会发生什么,与您的期望有什么不同?
lemma myid2: "A==>A"
apply (erule invDed[rotated])
apply (rule imp_refl)
done