我试图使用一组有限的规则来证明Isabelle使用apply
方法的引理。这组规则包含disj_not1
(P --> Q) = (\<not> P \/ Q)
。
我有了子目标(P --> Q) ==> (\<not> P \/ Q)
,所以我想&#39;啊哈!这是我使用我的disj_not1
&#39;的地方。但不幸的是,disj_not1
是一个&#39;当且仅当&#39;}规则不是&#39;如果&#39;规则和伊莎贝尔的对象。然而,“当且仅仅是因为&#39;规则应该足以证明它(真的绰绰有余)。这是可能的,如果是的话,怎么办呢?
答案 0 :(得分:3)
有subst
方法。 apply (subst foo)
将通过使用右侧的相应实例重写目标中规则左侧的第一个实例来应用等式规则。您可以使用subst (2 3)
指定其他匹配项,例如重写第二次和第三次出现。为了重写当前目标的假设,您需要subst (asm)
。要在假设中重写第二个匹配项,请写subst (asm) (2)
。
答案 1 :(得分:1)
在这种情况下,我有时会做的是以临时方式创建所需规则,如下所示:
apply (rule disj_not1 [THEN iffD1])
其中iffD1
是事实
?Q = ?P ⟹ ?Q ⟹ ?P
如果您需要从右到左的方向,则可以改为使用iffD2
。