【发布时间】:2012-09-23 03:09:40
【问题描述】:
我认为到目前为止,我已经阅读了标记为coq 的 81 个问题(如果不是全部的话)的大部分内容。作为 coq 的新手,我无法找到这个非常简单的问题的答案(我相当肯定由于它的基础性而没有在 SO 上被问到)。
我正在做一个家庭作业,为此我需要使用 coq 来证明:
- 给定:P/Q。 ~问
- 证明:P
这是一个足够简单的证明,我可以在纸上做,但我似乎无法让 coq 为我做这个。
我的策略是假设P 和Q 中的每一个都显示P,因此得出结论P 必须成立:
- P / Q [前提]
-
~Q [前提]
- P [假设]
-
P [复制上一行]
Q [假设]
- ~Q [复制上一行]
- [矛盾]
- P [消除矛盾]
- P [消除
\/]
鉴于这是我在纸上证明它的方式,我能够想出以下 coq 代码在 coq 中证明它。遗憾的是,我假设 P、Q 或 ~P 的努力没有通过:
Section Q5.
Variables P Q : Prop.
Hypothesis premise1 : P \/ Q.
Hypothesis premise2 : ~Q.
Goal P.
这是我对下一行的尝试,以及它们产生的错误:
+-----------------+---------------------------------------------------------------------+
| Code | Error |
+-----------------+---------------------------------------------------------------------+
| assumption. | Error: No such assumption. |
| exact P. | The term "P" has type "Prop" while it is expected to have type "P". |
| apply premise1. | Error: Impossible to unify "P \/ Q" with "P". |
| apply P. | Error: Impossible to unify "Prop" with "P". |
+-----------------+---------------------------------------------------------------------+
我很感激任何帮助,因为我已经用尽了我能想到的一切。
【问题讨论】: