Isabelle 证明A==>;B==>;C==>;B在伊莎贝尔
我对证明感到困惑Isabelle 证明A==>;B==>;C==>;B在伊莎贝尔,isabelle,Isabelle,我对证明感到困惑 A ==> B ==> C ==> B 在伊莎贝尔。显然你可以 apply simp 但我如何用规则来证明这一点呢 或者,是否有方法转储使用的规则simp?谢谢。您可以启用简化器跟踪;一般来说,你可以和伊莎贝尔一起做→ 设置→ 追踪→ 追踪简化者,我不知道杰迪特的事 编辑:在这种情况下,simp跟踪没有多大帮助,因为simp不使用重写规则来解决这个问题,相反,它“看到”前提中的A、B和C,并得出结论,在该语句的上下文中,它可以重写A=True,B=Tru
A ==> B ==> C ==> B
在伊莎贝尔。显然你可以
apply simp
但我如何用规则来证明这一点呢
或者,是否有方法转储使用的规则
simp
?谢谢。您可以启用简化器跟踪;一般来说,你可以和伊莎贝尔一起做→ 设置→ 追踪→ 追踪简化者,我不知道杰迪特的事
编辑:在这种情况下,simp跟踪没有多大帮助,因为simp
不使用重写规则来解决这个问题,相反,它“看到”前提中的A、B和C,并得出结论,在该语句的上下文中,它可以重写A=True
,B=True
,和C=True
,然后它将目标B
重写为True
,您就完成了
然而,证明这类陈述的“正常”方式是使用假设
方法,该方法将目标与前提相匹配,在本例中为B
。可能也有一种方法可以使用规则来证明这一点,但这将是不必要的复杂<代码>假设
使用假设
,这反过来只是非常基本的函数Thm.假设
的包装,因此这可以被认为是Isabelle中最基本的证明方法之一。
因此,只要根据假设编写
如果你真的想了解证据是如何工作的,那么你应该先忘掉有趣的策略和自动推理工具
Isabelle/Pure的语句A==>B=>C==>B
(使用这个特殊的=>
连接词)立即是正确的,因此它在Isabelle/Isar中的证明是:
lemma "A ==> B ==> C ==> B" .
就是这样,就是
(它用this
缩写,但是this
实际上在这里是空的)
因为稍微不那么空洞的证明使用了实际的Isabelle/HOL连接词,您可以通过标准的引入或消除步骤来处理这些连接词。例如,像这样:
lemma "A --> B --> C --> B"
proof
show "B --> C --> B"
proof
assume b: B
show "C --> B"
proof
show B by (rule b)
qed
qed
qed
但这也没什么意思:你建立了一个无聊的暗示,然后分解,直到你完成
要找到更有趣的Isabelle/Isar证据,只需进行一些web搜索,或者查看系统附带的源代码。
下面是一个完全任意的示例:
手册也有很多,实际上太多了。曼纽尔提供的信息不准确。在适当的Isar证明中,您几乎从未通过假设看到,
,这已经隐含在证明的结尾中。感谢您的解决方案和建议!:-)