summaryrefslogtreecommitdiff
path: root/backends/coq
diff options
context:
space:
mode:
authorSon Ho2023-12-13 16:54:10 +0100
committerSon Ho2023-12-13 16:54:10 +0100
commitc48859717d847f4492a0c3cc76e8f8b0b38fcc10 (patch)
tree15e16de213825acbb403c8a6d16f0f2e5c0d4618 /backends/coq
parentc6247e0c103cc1dc95c2a63ae01602c4a1208dc4 (diff)
Update the extraction to handle casts between integers/bools
Diffstat (limited to 'backends/coq')
-rw-r--r--backends/coq/Primitives.v4
1 files changed, 4 insertions, 0 deletions
diff --git a/backends/coq/Primitives.v b/backends/coq/Primitives.v
index 99ffe070..84280b96 100644
--- a/backends/coq/Primitives.v
+++ b/backends/coq/Primitives.v
@@ -266,6 +266,10 @@ Axiom scalar_shr : forall ty0 ty1, scalar ty0 -> scalar ty1 -> result (scalar ty
Definition scalar_cast (src_ty tgt_ty : scalar_ty) (x : scalar src_ty) : result (scalar tgt_ty) :=
mk_scalar tgt_ty (to_Z x).
+(* This can't fail, but for now we make all casts faillible (easier for the translation) *)
+Definition scalar_cast_bool (tgt_ty : scalar_ty) (x : bool) : result (scalar tgt_ty) :=
+ mk_scalar tgt_ty (if x then 1 else 0).
+
(** Comparisons *)
Definition scalar_leb {ty : scalar_ty} (x : scalar ty) (y : scalar ty) : bool :=
Z.leb (to_Z x) (to_Z y) .