在当前环境中找不到引用

时间:2012-09-21 22:52:17

标签: scope declaration coq

免责声明:这是作业作业

我是一个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.

这些是我能够提出的解决方案:

  1. Variables Q : Prop.替换为Variables P Q : Prop.。这个问题是P将被假定为一个前提,它不是
  2. 在目标声明之前添加Variables P.。这会导致语法错误。
  3. 我错过了什么吗?我似乎无法弄清楚这一点。

1 个答案:

答案 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.