0

我试图证明以下引理:

lemma myLemma6: "(∀x. A(x) ∧ B(x))= ((∀x. A(x)) ∧ (∀x. B(x)))"

我试图从消除 forall 量词开始,所以这就是我尝试过的:

lemma myLemma6: "(∀x. A(x) ∧ B(x))= ((∀x. A(x)) ∧ (∀x. B(x)))"
  apply(rule iffI)
  apply ( erule_tac x="x" in allE)
  apply (rule allE)
  (*goal now: get rid of conj on both sides and the quantifiers on right*)
  apply (erule conjE) (*isn't conjE supposed to be used with elim/erule?*)
  apply (rule allI)
  apply (assumption)
  
  
  apply ( rule conjI) (*at this point, the following starts to make no sense... *)
    
   apply (rule conjE) (*should be erule?*)
   apply ( rule conjI)
   apply ( rule conjI)

  ...

最后我刚刚开始根据之前申请的结果采取行动,但对我来说似乎是错误的,可能是因为一开始有一些错误......有人可以向我解释我的错误以及如何正确完成这个证明?

提前致谢

4

1 回答 1

3

在这个早期阶段消除全称量词并不是一个好主意,因为你甚至没有任何可以插入的值(x你给出的那个不在那个时候的范围内,这就是为什么它被打印出来Isabelle/jEdit 中的橙色背景)。

完成后,iffI您有两个目标:

goal (2 subgoals):
 1. ∀x. A x ∧ B x ⟹ (∀x. A x) ∧ (∀x. B x)
 2. (∀x. A x) ∧ (∀x. B x) ⟹ ∀x. A x ∧ B x

现在让我们关注第一个。您应该首先应用右侧的引入规则,即conjIallI。这让你有了

goal (3 subgoals):
 1. ⋀x. ∀x. A x ∧ B x ⟹ A x
 2. ⋀x. ∀x. A x ∧ B x ⟹ B x
 3. (∀x. A x) ∧ (∀x. B x) ⟹ ∀x. A x ∧ B x

现在您可以应用allE实例化 withx并且第一个目标变为⋀x. A x ∧ B x ⟹ A x,然后您可以使用erule conjEand解决该问题assumption。第二个目标的作用类似。

对于最后一个目标,也是类似的:先应用引入规则,然后应用消除规则,然后assumption就完成了。

当然,Isabelle 的所有标准证明者(例如auto, forceblast甚至简单的证明者metis, mesoniprover都可以轻松自动解决这个问题,但这可能不是您想要的。

于 2021-01-15T17:10:55.903 回答