任何人都可以帮助我如何在 coq 中证明这个定理

Can any one help me how to prove this therom in coq

~ (exists x:D, ~ R x)->(forall y:D, R y)

我研究了很久,但是好像不能很好地使用蕴涵的左边部分。

这是我的代码的第一部分:

Parameter D: Set.
Parameter x: D.
Parameter y: D.
Parameter R: D->Prop.
Lemma b:  ~(exists x:D, ~ (R x))->(forall y:D, (R y)).

谁能帮我弄清楚如何编写其余代码?

你的问题有点含糊,因为你没有具体说明 DR 是什么,也没有说明你的证明在哪里。尝试提供一个最小的工作示例,并使用明确的 fail 策略来解决您在证明中遇到的问题。

经典逻辑(你在数学中使用的那个)中,因为你有排除中间规则,你可以总是对某事的真假进行案例分析。在为 直觉逻辑 构建的香草 Coq 中,情况并非如此。如果谓词 R 不可判定(如果每个输入都不是真或假:forall (x:D), R x \/ ~R x),你的结果实际上是 不可证明的,如果类型 D不为空。

尝试将 R 的可判定性添加为假设并对其进行反驳。它或多或少应该遵循这个结构(关键是(R y)是对还是错的案例分析):

Parameter D: Set.
Parameter R: D -> Prop.

Lemma yourGoal :
    (forall x, R x \/ ~ R x) -> (* Decidability of R *)
    ~ ( exists x, ~ (R x) )->
    forall y, (R y).
Proof.
    intros Hdec Hex y. (* naming the hypothesis for convenience *)
    specialize (Hdec y).
    destruct Hdec as [H_Ry_is_true | H_Ry_is_false]. (* case analysis, creates two goals *)
    + (* (R y) is true, which is our goal. *)
        assumption.
    + (* (R y) is false, which contradicts Hex *)
        exfalso. (* transform your goal into False *)
        apply Hex.
        (* should be easy from here, using the [exists] tactic *)
Qed.

Ps:软件基础中提到了这个确切的结果(及其 link 和排除中间值),这是学习 Coq 和逻辑的重要资源:https://softwarefoundations.cis.upenn.edu/lf-current/Logic.html#not_exists_dist