Logic Elim在Coq证明助手中的双重否定假设?

Logic Elim在Coq证明助手中的双重否定假设?,logic,coq,proof,Logic,Coq,Proof,谁能解释一下为什么我们必须在elim Ha.之后证明~A 在“elim Ha”之前 之后 这是否意味着~~A true,~A true->A true 据我所知,我只知道规则~E是~A true,A true->False true在Coq中,~p是p->False的符号。如果我没有弄错的话,在形状~P的假设上使用elim与直接使用False\rect(您可以打印False\rect以获取更多信息)作为输入是一样的 这样做,你对Coq说“我知道p成立,所以使用p->False,我可以推导出Fal

谁能解释一下为什么我们必须在elim Ha.之后证明
~A

在“elim Ha”之前

之后

这是否意味着
~~A true,~A true->A true


据我所知,我只知道规则
~E
~A true,A true->False true
在Coq中,
~p
p->False的符号。如果我没有弄错的话,在形状
~P
的假设上使用
elim
与直接使用
False\rect
(您可以
打印False\rect
以获取更多信息)作为输入是一样的


这样做,你对Coq说“我知道
p
成立,所以使用
p->False
,我可以推导出
False
”的证明,它通过矛盾实现了目标。这就是为什么每次您
elim
a
~P
,Coq都会要求您提供
P
的证明。在你的例子中,
P
~A

你想用经典逻辑吗?因为Coq的逻辑默认是直觉的。你需要添加一个公理,使之成为经典<代码>~~A/\~A->A
直观上是有效的,但
~~A->A
不是<代码>~(~~A->A)在直觉上是有效的。
1 subgoals
 A : Prop
 Ha : ~ ~ A
______________________________________(1/1)
 A
1 subgoals
 A : Prop
 Ha : ~ ~ A
______________________________________(1/1)
 ~ A