diff options
| author | Peter Sewell | 2015-07-19 11:56:37 +0100 |
|---|---|---|
| committer | Peter Sewell | 2015-07-19 11:56:37 +0100 |
| commit | 6ec7a914921c02d15f02451fac0db00a7961cf28 (patch) | |
| tree | a3e5a753b1dbd184da1feba6ebefdb336a8e3035 /src/lem_interp/interp_interface.lem | |
| parent | 91b89f4e737a026b2287b5a96a086e6a8d858c75 (diff) | |
abbreviate printing of memory values <=9
Diffstat (limited to 'src/lem_interp/interp_interface.lem')
| -rw-r--r-- | src/lem_interp/interp_interface.lem | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem index bc3f7d7b..3c79ed5e 100644 --- a/src/lem_interp/interp_interface.lem +++ b/src/lem_interp/interp_interface.lem @@ -1029,6 +1029,24 @@ val memory_byte_of_byte : byte -> memory_byte let memory_byte_of_byte = byte_lifted_of_byte +(* to and from nat *) + +(* this natFromBoolList could move to the Lem word.lem library *) +val natFromBoolList : list bool -> nat +let rec natFromBoolListAux (acc : nat) (bl : list bool) = + match bl with + | [] -> acc + | (true :: bl') -> natFromBoolListAux ((acc * 2) + 1) bl' + | (false :: bl') -> natFromBoolListAux (acc * 2) bl' + end +let natFromBoolList bl = + natFromBoolListAux 0 (List.reverse bl) + + +val nat_of_bit_list : list bit -> nat +let nat_of_bit_list b = + natFromBoolList (List.reverse (List.map bit_to_bool b)) + (* natFromBoolList takes a list with LSB first, for consistency with rest of Lem word library, so we reverse it. twice. *) (* to and from integer *) |
