aboutsummaryrefslogtreecommitdiff
path: root/plugins/extraction/ExtrHaskellZNum.v
diff options
context:
space:
mode:
authorPierre Letouzey2015-06-22 14:53:31 +0200
committerPierre Letouzey2015-06-22 14:53:31 +0200
commit29fcfc4f8bc1bfbdfbae0c07850aed65f6c3eb04 (patch)
tree1e2edfae22c9f90ae4eceb8cf081df88a98b981e /plugins/extraction/ExtrHaskellZNum.v
parent6bec099f8487b9d3ec5c44079cf69d3474c73b91 (diff)
parent4b6b4d8cdd12902d166504ec3d96ca94705d81f6 (diff)
Merge branch 'v8.5' into trunk
Diffstat (limited to 'plugins/extraction/ExtrHaskellZNum.v')
-rw-r--r--plugins/extraction/ExtrHaskellZNum.v19
1 files changed, 19 insertions, 0 deletions
diff --git a/plugins/extraction/ExtrHaskellZNum.v b/plugins/extraction/ExtrHaskellZNum.v
new file mode 100644
index 0000000000..3f645db9b1
--- /dev/null
+++ b/plugins/extraction/ExtrHaskellZNum.v
@@ -0,0 +1,19 @@
+(**
+ * Efficient (but uncertified) extraction of usual [Z] functions
+ * into equivalent versions in Haskell's Prelude that are defined
+ * for any [Num] typeclass instances. Useful in combination with
+ * [Extract Inductive Z] that maps [Z] onto a Haskell type that
+ * implements [Num].
+ *)
+
+Require Import ZArith.
+Require Import EqNat.
+
+Extract Inlined Constant Z.add => "(Prelude.+)".
+Extract Inlined Constant Z.sub => "(Prelude.-)".
+Extract Inlined Constant Z.mul => "(Prelude.*)".
+Extract Inlined Constant Z.div => "Prelude.div".
+Extract Inlined Constant Z.max => "Prelude.max".
+Extract Inlined Constant Z.min => "Prelude.min".
+Extract Inlined Constant Z_ge_lt_dec => "(Prelude.>=)".
+Extract Inlined Constant Z_gt_le_dec => "(Prelude.>)".