Logic 将道具与类型匹配,但不排除中间

Logic 将道具与类型匹配,但不排除中间,logic,coq,Logic,Coq,Coq仅在返回类型为Prop时才接受匹配Prop的证明(即仅生成另一证明)。据我所知,这避免了以下悖论: Require Import Hurkens. Inductive BoolProp : Prop := | falseP : BoolProp | trueP : BoolProp. Axiom b2p : BoolProp -> Prop. Axiom b2p_spec : b2p falseP = False /\ b2p trueP = True. Axiom EM : f

Coq仅在返回类型为
Prop
时才接受
匹配
Prop
的证明(即仅生成另一证明)。据我所知,这避免了以下悖论:

Require Import Hurkens.

Inductive BoolProp : Prop :=
| falseP : BoolProp | trueP : BoolProp.

Axiom b2p : BoolProp -> Prop.
Axiom b2p_spec : b2p falseP = False /\ b2p trueP = True.
Axiom EM : forall P:Prop, P \/ ~P.

Definition p2b (P : Prop) : BoolProp :=
  match EM P with
  | or_introl _ => trueP
  | or_intror _ => falseP
  end.

Lemma crash : False.
Proof.
  destruct b2p_spec. 
  apply (NoRetractFromSmallPropositionToProp.paradox BoolProp p2b b2p).
  intros. unfold p2b in H1. destruct (EM A).
  exact a. exfalso. rewrite H in H1. exact H1.
  intros. unfold p2b. destruct (EM A). rewrite H0. trivial. contradiction.
Qed.
match
限制阻止了直接定义
b2p
,我必须对其进行公理化,以证明
False

但请注意,我还假设排除的中间
EM
。Coq希望与之兼容,这样人们就可以做古典逻辑。然而,如果我想保持建设性并在没有任何公理的情况下使用Coq,那么允许
匹配
Prop
Type
是否存在矛盾的风险?在上面的例子中,
falseP
trueP
将通过这种
匹配
被证明是不同的,因此证明不相关将被驳斥。然后经典的Coq集合理论模型将不再有效,我们将需要另一个模型


请注意,我不是问Coq为什么引入
Prop
,或者Coq做了什么设计选择,或者
Prop
的预期用途是什么(我想我知道这些部分),而是一个关于
Prop

的理论问题。这不是一个答案,只是我头脑中的一个想法,但它太长了,无法发表评论

Prop
是非指示性的,即给定任何类型
A
B:A->Prop
,所有x,bx
的类型
都在
Prop

如果在消除到
类型
时允许
匹配
启用
属性
,则每个类型都应同构于一个命题,如下所示:

Inductive AsProp (A : Type) : Prop :=
  | i : forall x : A, AsProp A.
现在,我认为我们应该能够通过使用禁止的
匹配
来显示
I:A->ia
有一个倒数

但现在我们已经非常接近于证明
类型
也是非指示性的,不是吗?这将是一个问题,因为Coquand的结果是,一个包含另一个不确定宇宙的不确定宇宙是不一致的


老实说,我不知道如何获得所有类型的不确定性,否则这可能是一个答案。

Hurkens模块包含各种“悖论”,特别是“大宇宙不是道具的缩回”是否回答了您的问题@李耀霞:我想没有。这个悖论告诉我们没有满射
Prop->Type
。我的问题是关于函数
P->T
,带有
P:Prop
T:Type
。我也不要求它们是满射的。我怀疑你可以削弱NoRetractFromTypeToProp的假设,只要求等价而不是相等。(您的回答表明,每个宇宙都是等同的,即每个宇宙U都包含一个与所有X:U,P X
相当的类型)另外请注意,您的归纳在标准库中,名称为