命题逻辑的案例区分

时间:2015-07-28 13:35:31

标签: logic isabelle

我想证明

P ==> P

通过案例区分,了解后者。

lemma "P ⟹ P"
proof (cases P)

goal (2 subgoals):
1. P ⟹ P ⟹ P
2. P ⟹ ¬ P ⟹ P

我不太确定我是否想要这些。我想假设P是真的然后通过假设显示P是真的,然后假设不是P并且通过假设证明不是P.就像在真值表中一样。

第二个子目标中的非P看起来很奇怪,是否可以证明?

 assume P then show P by assumption

 Successful attempt to solve goal by exported rule:
 (P) ⟹ P 

next

goal (1 subgoal):
 1. P ⟹ ¬ P ⟹ P

 assume P assume "¬P" then show "¬P" by (rule HOL.FalseE)

这完全不好。

如何将P而不是P作为案例?

1 个答案:

答案 0 :(得分:1)

P而非P已经 你的案件。如果你写“案例P”,Isabelle将当前目标复制到第一个假设和第二个新子目标的假设中。如果以这种方式使用,目标的右侧不受案例方法的影响。

在您的情况下,您不必在第二个子目标中证明¬P,但您可以将其用作案例命名引入的附加假设。

显然你无法在第二个子目标中证明P来自¬P。幸运的是,全局假设P仍然存在,因此这两个案例仍​​然从P证明P,这与在没有案例命运的情况下已经是正常的;)。

如果你想通过让Isabelle直接插入变量的可能值来证明某事,你可以尝试:

  lemma "P ⟹ P"
  proof (induct P) 

  goal (2 subgoals):
  1. True ⟹ True
  2. False ⟹ False