Logic 将道具与类型匹配,但不排除中间
Coq仅在返回类型为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
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
相当的类型)另外请注意,您的归纳在标准库中,名称为
。