到目前为止我所拥有的是:
module Foo
postulate P : 'P
postulate NP : 'NP
complexityProof : P = NP
complexityProof = ?complexityProof_rhs
但是在尝试加载文件时,我得到:
When elaborating type of Foo.complexityProof:
When elaborating argument y to type constructor =:
Can't unify
'NP
with
'P
Specifically:
Can't unify
"NP"
with
"P"
有点对这个错误感到惊讶,因为我认为伊德里斯拥有不同的“约翰少校”平等,在=的左侧和右侧有不同的类型。现在有一个不同的符号吗?
答案 0 :(得分:4)
来自文档:
注意:Idris的相等类型可能是异构的,这意味着它是 可以说明可能不同类型的值之间的平等。 但是,伊德里斯将尝试同质案件,除非它没有进行类型检查。
您可能需要使用(〜=〜)显式请求异构相等。
所以我不确定为什么=
不起作用,因为我认为文档试图说异构平等是一种后备,但你可以改为使用~=~
:
module Foo
postulate P : 'P
postulate NP : 'NP
complexityProof : P ~=~ NP
complexityProof = ?complexityProof_rhs