Isabelle 再次,传递闭包和身份
我还有另一个定理,我无法在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
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+)这很好。谢谢