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