Coq中Haskell的ftp://new.web.com/new.ear]等于什么?
总的来说,我发现围绕排序感到困惑的Coq标准库。
我希望对排序后的列表进行某种“公理化”,并希望可以提供排序功能。
但是,事实并非如此。
sortBy,它使用关系Variable R : A -> A -> Prop.
,但是此R
上没有限制。我本来希望可以订购,但是不存在这样的东西。
还有另一个带有“ There is a theory of a "Sorted list"”的文件,需要传递一个新模块。
没有提供诸如sortBy
之类的助手的“高级”版本。
是否可以使用sortBy
的某些实现,还是需要手动创建它?
答案 0 :(得分:3)
Coq标准库中的MergeSort module完成了您所需要的。它像Haskell中的sortBy
一样工作,除了传递一个封装了订购功能的模块以及该功能是合计的证明,而不是传递订购功能并获得特殊的排序。请参阅模块文档底部的示例。
答案 1 :(得分:2)
Mathetical Components library除了Coq标准库外,还具有合并排序的实现。它称为sort
,位于模块mathcomp.path
中。它的签名是forall T : Type, (T -> T -> bool) -> list T -> list T
,它更接近原始的sortBy
。