summaryrefslogtreecommitdiff
path: root/backends/lean/Base
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/lean/Base
parentc6247e0c103cc1dc95c2a63ae01602c4a1208dc4 (diff)
Update the extraction to handle casts between integers/bools
Diffstat (limited to '')
-rw-r--r--backends/lean/Base/Primitives/Scalar.lean4
1 files changed, 4 insertions, 0 deletions
diff --git a/backends/lean/Base/Primitives/Scalar.lean b/backends/lean/Base/Primitives/Scalar.lean
index db522df2..a8eda6d5 100644
--- a/backends/lean/Base/Primitives/Scalar.lean
+++ b/backends/lean/Base/Primitives/Scalar.lean
@@ -411,6 +411,10 @@ def Scalar.or {ty : ScalarTy} (x : Scalar ty) (y : Scalar ty) : Scalar ty :=
def Scalar.cast {src_ty : ScalarTy} (tgt_ty : ScalarTy) (x : Scalar src_ty) : Result (Scalar tgt_ty) :=
Scalar.tryMk tgt_ty x.val
+-- This can't fail, but for now we make all casts faillible (easier for the translation)
+def Scalar.cast_bool (tgt_ty : ScalarTy) (x : Bool) : Result (Scalar tgt_ty) :=
+ Scalar.tryMk tgt_ty (if x then 1 else 0)
+
-- The scalar types
-- We declare the definitions as reducible so that Lean can unfold them (useful
-- for type class resolution for instance).