Coq中的Lift存在主义

Coq中的Lift存在主义,coq,Coq,这个引理能在Coq中被证明吗 Lemma liftExists : forall (P : nat -> nat -> Prop), (forall n:nat, exists p:nat, P n p) -> exists (f : nat -> nat), forall n:nat, P n (f n). 简单的destruct不会编译,因为我们无法消除sortProp中存在的对象,以生成sortSet中的函数f 如果Coq不能证明这个引理,那么对于所有n:

这个引理能在Coq中被证明吗

Lemma liftExists : forall (P : nat -> nat -> Prop),
  (forall n:nat, exists p:nat, P n p)
  -> exists (f : nat -> nat), forall n:nat, P n (f n).
简单的
destruct
不会编译,因为我们无法消除sort
Prop
中存在的对象
,以生成sort
Set
中的函数
f


如果Coq不能证明这个引理,那么对于所有n:nat,p:nat,p
的意义是什么?在构造数学中,它意味着函数
f
的存在,但我的印象是,我们永远不会在Coq中看到这个函数
f
,即使在排序
Prop
中也不会,如上所述。

它在Coq中是不可证明的,因为在集合中消除Prop的限制。至于哲学上的“意义”,我不确定是否有人对此有很好的说法。
forall n:nat,exists p:nat,pn p
的居民是返回一对
p
和证明的函数,但除此之外,他们还是一个在编译程序时可以忽略的函数,因为您知道没有任何东西会查看返回的值

因此,在某种程度上,Prop-vs-Set系统是一种更有效地编译程序的方法,但实际上这也用于逻辑属性。在Coq中,道具类型是非决定性的,而集合类型不是,即使如此,假设道具的排除中间法则是一个公理也是一致的,为了证明这是一致的,你可以求助于一个“”,在这里,你通过忽略所有信息来解释道具中的类型,除非它们是否有人居住。从经典逻辑的角度来看(你所关心的只是真值),这是有道理的,但如果你对构造性数学感兴趣,那就有点奇怪了