summaryrefslogtreecommitdiff
path: root/src/gen_lib/sail_values.lem
diff options
context:
space:
mode:
authorChristopher Pulte2016-09-21 10:42:09 +0100
committerChristopher Pulte2016-09-21 10:42:09 +0100
commitb73a7daa6d2b661659ecf066d25d146cadaec1e8 (patch)
tree47748211890234c43e13eec2611c97ed68d9e45d /src/gen_lib/sail_values.lem
parentea2d92c84d879719f44b3f4bf3c9dfabd8d8ea29 (diff)
fixes
Diffstat (limited to 'src/gen_lib/sail_values.lem')
-rw-r--r--src/gen_lib/sail_values.lem28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gen_lib/sail_values.lem b/src/gen_lib/sail_values.lem
index 0f6aa5ee..3914bdef 100644
--- a/src/gen_lib/sail_values.lem
+++ b/src/gen_lib/sail_values.lem
@@ -23,6 +23,8 @@ let bitwise_not_bit = function
end
let (~) = bitwise_not_bit
+
+val pow : integer -> integer -> integer
let pow m n = m ** (natFromInteger n)
@@ -496,3 +498,29 @@ let bitwise_not_range_bit n = bitwise_not (to_vec defaultDir n)
let mask (n,Vector bits start dir) =
let current_size = List.length bits in
Vector (drop (current_size - (natFromInteger n)) bits) (if dir then 0 else (n-1)) dir
+
+
+
+
+(* this is for a temporary workaround int/nat/integer/natural issues*)
+
+class (subInteger 'a)
+ val toInteger : 'a -> integer
+end
+
+
+instance (subInteger integer)
+ let toInteger = id
+end
+
+instance (subInteger int)
+ let toInteger = integerFromInt
+end
+
+instance (subInteger nat)
+ let toInteger = integerFromNat
+end
+
+instance (subInteger natural)
+ let toInteger = integerFromNatural
+end