Coq列表排序惯例和sortBy?

时间:2018-07-09 12:28:07

标签: sorting coq

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的某些实现,还是需要手动创建它?

2 个答案:

答案 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