我想到目前为止,我已经阅读了标记为coq的 81 个问题(如果不是全部的话)的大部分内容。作为 coq 的新手,我无法找到这个非常简单的问题的答案(我相当肯定没有在 SO 上问过这个问题,因为它非常基础)。
我正在做一个家庭作业,为此我需要使用 coq 来证明:
- 给定:P/Q。~问
- 证明:P
这是我在纸上做的一个足够简单的证明,但我似乎无法让 coq 为我做这件事。
我的策略是假设每个P
和Q
,显示P
并因此得出结论P
必须成立:
- P / Q [前提]
~Q【前提】
- P [假设]
P [复制上一行]
问 [假设]
- ~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". |
+-----------------+---------------------------------------------------------------------+
我很感激这方面的任何帮助,因为我已经用尽了我能想到的一切。