免责声明:这是作业作业
我是一个coq noob,所以我希望这不是一个重复的问题。我/看了this question,但我的问题似乎还没有答案。
我有以下前提:
P \/ Q
~Q
我需要证明:
P
到目前为止我的coq代码:
Section Q5.
Variables Q : Prop.
Goal P.
Hypothesis premise1 : P \/ Q.
Hypothesis premise2 : ~Q.
当我尝试执行第Goal P.
行时出现以下错误:
错误:在当前环境中找不到引用P.
这些是我能够提出的解决方案:
Variables Q : Prop.
替换为Variables P Q : Prop.
。这个问题是P
将被假定为一个前提,它不是Variables P.
。这会导致语法错误。我错过了什么吗?我似乎无法弄清楚这一点。
答案 0 :(得分:2)
正确的解决方案是1,你期待的问题是错误的。
当你写:
Variable P: Prop.
你不是假设P有人居住(或者说,“P持有”),而只是存在一个名为P的命题,这是一个“声明”,其有效性在此不予考虑。
这与写作非常不同:
Variable p: P.
假设有一个证据“p”表示类型“P”有人居住(如果P具有类型Prop,p是命题P的证明),则假设P为真。
另外,原因是:
Variables P.
导致语法错误,你需要为引入的每个变量提供一个类型(当没有信息引导类型推理引擎时,Coq无法神奇地弄清楚它。)
所以开始你的脚本完全没问题:
Section Q5.
Variables P Q : Prop.
Hypothesis premise1 : P \/ Q.
Hypothesis premise2 : ~Q.
Goal P.