aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_CoqProject1
-rw-r--r--src/Util/ZUtil/Sorting.v21
2 files changed, 22 insertions, 0 deletions
diff --git a/_CoqProject b/_CoqProject
index 189469e20..b3d46f06a 100644
--- a/_CoqProject
+++ b/_CoqProject
@@ -6607,6 +6607,7 @@ src/Util/ZUtil/Pow2Mod.v
src/Util/ZUtil/Quot.v
src/Util/ZUtil/Rshi.v
src/Util/ZUtil/Sgn.v
+src/Util/ZUtil/Sorting.v
src/Util/ZUtil/Stabilization.v
src/Util/ZUtil/Tactics.v
src/Util/ZUtil/Testbit.v
diff --git a/src/Util/ZUtil/Sorting.v b/src/Util/ZUtil/Sorting.v
new file mode 100644
index 000000000..1f25ff80b
--- /dev/null
+++ b/src/Util/ZUtil/Sorting.v
@@ -0,0 +1,21 @@
+Require Import Coq.ZArith.ZArith Coq.micromega.Lia.
+Require Import Coq.Sorting.Mergesort Coq.Structures.Orders.
+
+Module Z.
+ Module Order <: TotalLeBool.
+ Definition t := Z.
+ Definition leb := Z.leb.
+ Infix "<=?" := leb.
+ Local Coercion is_true : bool >-> Sortclass.
+ Theorem leb_total : forall a1 a2, a1 <=? a2 \/ a2 <=? a1.
+ Proof. intros x y; destruct (Z.le_ge_cases x y); [ left | right ]; unfold is_true, leb; rewrite Z.leb_le; omega. Qed.
+ End Order.
+
+ Module Sort := Mergesort.Sort Order.
+
+ Notation sort := Sort.sort.
+ Notation Sorted_sort := Sort.Sorted_sort.
+ Notation LocallySorted_sort := Sort.LocallySorted_sort.
+ Notation StronglySorted_sort := Sort.StronglySorted_sort.
+ Notation Permuted_sort := Sort.Permuted_sort.
+End Z.