Coq 与萨姆布尔的宇宙不一致性
我定义并证明了以下引理:Coq 与萨姆布尔的宇宙不一致性,coq,Coq,我定义并证明了以下引理: NM.In k m -> {NM.In k m0}+{NM.In k m1}. 我还可以证明一个对称引理: {NM.In k m0}+{NM.In k m1} -> NM.In k m 但是,当我尝试将它们合并为一个时: NM.In k m <-> {NM.In k m0}+{NM.In k m1}. 如何解决这个问题?正如Daniel指出的,问题在于,连接词只将命题作为参数,而sumbool生活在集合中。有几种方法
NM.In k m -> {NM.In k m0}+{NM.In k m1}.
我还可以证明一个对称引理:
{NM.In k m0}+{NM.In k m1} -> NM.In k m
但是,当我尝试将它们合并为一个时:
NM.In k m <-> {NM.In k m0}+{NM.In k m1}.
如何解决这个问题?正如Daniel指出的,问题在于,
连接词只将命题作为参数,而sumbool
生活在集合中。有几种方法可以避免这种情况:您可以用或替换sumbool
,或者用计算相关的连接词替换iff
:
Variables A B C : Prop.
Check (({A} + {B} -> C) * (C -> {A} + {B}))%type.
这不是一个真正的宇宙不一致,而是一个类型不匹配:
又称为iff
只接受Prop
参数。impl
也是Prop->Prop->Prop
但是->
不是impl
-它是一个接受任何类型的内置函数(事实上,A->B
是forall的内置语法糖:A,B
)
Variables A B C : Prop.
Check (({A} + {B} -> C) * (C -> {A} + {B}))%type.