coq - 弱排除中间意味着摩根定律的合取

标签 coq

我目前正在阅读 Gert Smolka 的书Computational Type Theory and Interactive Theorem Proving with Coq,第 75 页上有一个练习 9.3.14.b 要求我证明“弱排中律”定义为:

Definition WXM : Prop := forall (X:Prop), ~X \/ ~~X.

暗示摩根定律的合取:

Definition MGC : Prop := forall (X Y:Prop), ~(X/\Y) -> ~X \/ ~Y.      (* <- always true *)

Lemma L1 : WXM -> MGC
Proof.
Admitted.

我已经尝试解决这个问题有一段时间了,但没有成功。假设WXM~(X/\Y) 对于一些 Prop X Y,面对目标 ~ X\/~Y,我做了一个案例 分析(在 XY 上应用 WXM)。在 4 个案例中,有 3 个是立即调度的,但我留下了第 4 个案例,并附加了 ~~X~~Y 的假设。 直观上 ~~X~~Y 表示 XY 是“弱真”,你会希望得出结论 X//Y 也是弱真(即,由于假设 ~( 而显示 ~~(X/\Y) 导致矛盾X/\Y))。然而,我无法下结论。 我不想放弃,但也想继续读这本书。有谁知道这个问题的答案吗?

最佳答案

这里不需要考虑这四种情况,因为人们已经否定了目标中的析取,从而在选择要证明哪个析取时可以使用一些术语。得到例如~Q~~Q 案例足以证明引理。

我不确定如何在不展示解决方案的情况下进一步解释这种直觉。

Goal
  (forall P : Prop, ~ P \/ ~ ~ P) ->
  (forall P Q : Prop, ~ (P /\ Q) -> ~ P \/ ~ Q).
Proof.
intros wlem P Q npq.
destruct (wlem Q) as [nq | nnq].
- right; trivial.
- left; intros p.
  apply nnq; intros q.
  apply npq; split; trivial.
Qed.

关于coq - 弱排除中间意味着摩根定律的合取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62621279/

相关文章:

coq - 与范畴论打交道

coq - "Non strictly positive occurrence of ..."

c++ - 有没有办法证明我的 C++ 程序的属性?

computer-science - 如何运行雅典娜 |公鸡 |伊莎贝尔远程编码?

coq - 符号/和||有什么作用在 Coq 中代表?

coq - 导入 QArith 后定义产品类型

ocaml - __ 在从 Coq 中提取的 Ocaml 中

recursion - Coq新手: How to iterate trough binary-tree in Coq

coq - 避免在假设和目标中应用策略的重复代码

ocaml - coq 8.11.0 与 ocaml 4.10 不兼容?