首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coq:去掉`forall`?

Coq:去掉`forall`?
EN

Stack Overflow用户
提问于 2021-08-11 15:06:05
回答 1查看 62关注 0票数 2

我正在努力证明以下定理(假设域为非空域):

代码语言:javascript
复制
Theorem t (A: Set) (P: A -> Prop): (forall a: A, P a) -> (exists a: A, P a).
Proof.
  intros H.

通常,有了forall a: A, P a,我会推导出P c,其中c是一个常量。即forall量词将被消除。一旦完成,我将再次推导exists a,并且我的简单证明将是Qeded。

然而,我找不到正确的方法来消除forall在Coq中的影响。

我是新手,我想知道如何消除Coq中的forall,或者证明上述定理的更好方法是什么?

附言:我已经看过this的答案了,但它似乎与我的问题无关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 15:58:13

与其他逻辑形式不同(例如Isabelle/HOL),在Coq中完全有可能有一个空域。如果你想证明你的陈述,你必须明确地假设A不是空的。这里有一种可能性。

代码语言:javascript
复制
Definition non_empty (A : Type) : Prop :=
  exists x : A, True.

Theorem t (A : Set) (P : A -> Prop) :
  non_empty A ->
  (forall a : A, P a) ->
  (exists a : A, P a).
Proof.
intros [c _] H. exists c. apply H.
Qed.
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68744549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档