【问题标题】:Coq - How to prove eqb_neq?Coq - 如何证明 eqb_neq?
【发布时间】:2023-06-22 14:01:01
【问题描述】:

我正在努力证明eqb_neq

Theorem eqb_neq : forall x y : nat,
  x =? y = false <-> x <> y.

这是我目前的证明状态:

在证明过程中,我到达了最后一步,我只需要证明附加辅助定理:

Theorem eqb_false_helper : forall n m : nat,
    n <> m -> S n <> S m.

我尝试了多种策略,但现在我什至不确定是否可以证明这个辅助定理。

我不确定如何使用归纳法证明基本情况:

我还能尝试什么? eqb_neq 或辅助定理的任何提示?

谢谢

【问题讨论】:

  • 恳请您不要在公共论坛上发布(部分)SF 练习的解决方案。如果您可以重新发布您的问题以删除您的证明,我们很乐意为您提供帮助。

标签: coq proof coqide


【解决方案1】:

如果你不展开,你的辅助定理实际上非常简单:

Theorem eqb_false_helper : forall n m : nat,
    n <> m -> S n <> S m.
Proof.
unfold not; intros.
apply H; injection H0; intro; assumption.
Qed.

你实际上只需要证明S n = S m -&gt; False,你假设n = m -&gt; False,因此你可以证明S n = S m -&gt; n = m,这就是注入假设S n = S m

【讨论】: