Isabelle 再次,传递闭包和身份

Isabelle 再次,传递闭包和身份,isabelle,Isabelle,我还有另一个定理,我无法在Isabelle中证明,涉及恒等式和传递闭包 具体如下: lemma "r ⊆ Id ⟹ r^* = Id" lemma "r ⊆ Id ⟹r^* = Id" apply (rule equalityI) apply (rule subrelI) apply (erule rtrancl_induct) apply (blast+) done 更新:使用应用样式,我有以下几点: lemma "r ⊆ Id ⟹ r^* = Id" lemma "r

我还有另一个定理,我无法在Isabelle中证明,涉及恒等式和传递闭包

具体如下:

lemma "r ⊆ Id ⟹ r^* = Id"
lemma "r ⊆ Id ⟹r^* = Id"
  apply (rule equalityI)
  apply (rule subrelI)
  apply (erule rtrancl_induct)
  apply (blast+)
done
更新:使用应用样式,我有以下几点:

lemma "r ⊆ Id ⟹ r^* = Id"
lemma "r ⊆ Id ⟹r^* = Id"
  apply (rule equalityI)
  apply (rule subrelI)
  apply (erule rtrancl_induct)
  apply (blast+)
done

在Isar中如何做到这一点?

您的问题似乎更多的是如何将apply样式的证明转化为适当的Isar。对于您拥有的特定示例,可以按如下方式执行。正如你在书中提到的

lemma "r ⊆ Id ⟹ r^* = Id"
参考假设存在困难
r⊆ Id
。构造这个证明的标准Isar方法如下。我们开始通过

proof -
其中
-
表示不应使用初始规则。这只是为了能够明确地陈述假设

  assume *: "r ⊆ Id"
  show "r^* = Id"
此外,我们为假设命名为
*
。或者,我们可以用不同的方式来表述整个引理

lemma
  assumes *: "r ⊆ Id"
  shows "r^* = Id"
这样可以节省一级嵌套。不管怎样,正如你所说,集合的相等性也是标准的,即:

proof
  show "r^* ⊆ Id"
  proof (rule subrelI)
    fix x y
    assume "(x, y) ∈ r^*"
    then show "(x, y) ∈ Id"
      using * by (induct) blast+
上面这一行是我们使用假设的地方(或者,我们可以通过
èr逐字引用假设)⊆ Id›
或通过为以下事实引入的隐式名称
assms
假设
)。最后,我们将:

  qed
next
  show "Id ⊆ r^*" by blast
qed

请先告诉我们你已经尝试了什么。再说一次:你如何在纸上证明这一点?顺便说一句:那就不要把这篇文章作为回答,而是写评论或者更新你原来的文章。我把你的评论添加到了你原来的问题中。很快就会有答案。同样,我们使用你提到的证明等式的标准方法。一方面是琐碎的;另一方面是使用假设进行归纳。我已经在第二阶段尝试过了,我能够用命令进行推理并证明它,但我无法将推理形式化为Isar证据。现在我想知道Isar的证据是什么;在Isar中,我无法使用我的假设“r”⊆ Id’。命令模式证明给出:引理“r”⊆ 身份证件⟹r^*=Id“应用(规则等式i)应用(规则subrelI)应用(erule rtrancl_induct)通过(blast+)这很好。谢谢