是否可以在 Isar 中编写非自动形式化?

Is it possible to write non-automatic formalizations in Isar?

我有以下内容:

lemma 
  assumes p: "P"
  assumes pimpq: "P⟶Q"
  shows "P∧Q"
proof -
  from pimpq p have q: "Q" by (rule impE)
  from p q show ?thesis by (rule conjI)
qed

我认为这取决于基本推理规则,但阅读 Isar 参考手册第 9.4.3 Structured Methods 节中 rule 的文档后发现它使用了具有各种规则的 Classical Reasoner .并且,用..替换by子句也解决了目标,因此提及消除蕴涵和引入连词并不是必须的。

是否可以在 Isar 中编写严格的形式化,即不使用程序文本中未明确的任何自动化和额外规则?类似于 HOL4 中的前向证明。

如果您不想使用 classical 模块,您可以使用 Pure.rule

lemma 
  assumes p: "P"
  assumes pimpq: "P⟶Q"
  shows "P∧Q"
proof -
  from pimpq p have q: "Q" by (Pure.rule impE)
  from p q show ?thesis by (Pure.rule conjI)
qed

如果您编写 .. Isabelle 将自动 select 一个基于标有 [intro][elim] 属性的词条的规则。

也许你也可以分享你想要在 Isabelle 中重现的 HOL4 证明,这样我们就可以在 Isabelle/HOL.

中提出等效的建议