代码之家  ›  专栏  ›  技术社区  ›  Siddharth Bhat

COQ列表排序实践和排序?

  •  2
  • Siddharth Bhat  · 技术社区  · 7 年前

    哈斯克尔的 sortBy 在Coq?

    总的来说,我发现coq标准库在排序方面有点混乱。

    我希望有一个排序列表的“公理化”,以及不同类型的可用性,我可以提供排序函数。

    然而,情况似乎并非如此。

    • There is a theory of a "Sorted list" ,它使用关系 Variable R : A -> A -> Prop. ,但没有 限制 关于这个 R 是的。我本以为这是一个命令,但没有这样的事情存在。

    • 有另一个文件带有“ mergesort implementation “,这需要传递一个新模块。

    • 没有“更高级别”的版本提供诸如 sortBy 是的。

    是否有一些 肮脏的 我可以使用,还是需要手动创建?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Rob Blanco    7 年前

    这个 MergeSort module 在coq标准库中做您需要的事情。它工作起来像 sortBy 在haskell中,除了传递一个ordering函数和获取特殊排序之外,还传递了一个封装ordering函数的模块,以及该函数是total的证明。请参阅模块文档底部的示例。

        2
  •  2
  •   Arthur Azevedo De Amorim    7 年前

    除了COQ标准库之外, Mathetical Components library 还有一个合并排序的实现。它被称为 sort ,它位于模块中 mathcomp.path 是的。它的签名是 forall T : Type, (T -> T -> bool) -> list T -> list T ,更接近原稿 sortBy 是的。