coq - 在 Coq 中证明一个假设是另一个假设的否定

标签 coq proof

例如我有这两个假设(一个是另一个的否定)

H : forall e : R, e > 0 -> exists p : X, B e x p -> ~ F p
H0 : exists e : R, e > 0 -> forall p : X, B e x p -> F p

目标

False

如何证明?

最佳答案

你不能,因为 H0 不是 H 的否定。正确的说法是

Definition R := nat.
Parameter X: Type.
Parameter T: Type.
Parameter x: T.
Parameter B : R -> T -> X -> Prop.
Parameter F : X -> Prop.

Lemma foobar: forall (H: forall e : R, e > 0 -> exists p : X, B e x p -> ~ F p)
  (H0:  exists e: R, e > 0 /\ forall p: X, B e x p /\ F p), False.
Proof.
intros H H0.
destruct H0 as [e [he hforall]].
destruct (H e he) as [p hp].
destruct (hforall p) as [hB hF].
exact (hp hB hF).
Qed.

关于coq - 在 Coq 中证明一个假设是另一个假设的否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32882779/

相关文章:

proof - 使用 coq,尝试证明树上的简单引理

coq - coq 中的模简化

haskell - 功能证明(Haskell)

graph - 二部连通图证明

algorithm - "get it"是如何证明的?

syntax-error - Coq let 子句中的多个赋值

implicit - Coq:设置默认隐式参数

coq proof : tactic absurd, 它是如何工作的?

algorithm - Codeforces问题: Boxers (rated 1500)正确性证明

big-o - (log n)^k = O(n)?对于 k 大于或等于 1