Brian Huffman
ab000984d2
Remove redundant prelude functions not
, extend
, and extendSigned
.
...
These were recently moved here from Cryptol::Extras. They are duplicates
of existing functions `complement`, `zext`, and `sext`.
See #427 .
2018-05-24 14:41:09 -07:00
Brian Huffman
960143668d
Formatting code and comments in Cryptol.cry.
2018-05-24 13:23:26 -07:00
Aaron Tomb
99f3fdbf37
Merge Cryptol/Extras.cry with Cryptol.cry
...
Closes #427 .
2018-05-23 15:55:05 -07:00
Brian Huffman
e8a941ecbd
Add prelude docstrings for 'head' and 'last'.
2018-04-18 17:01:24 -07:00
Brian Huffman
3be72ae2cb
Replace indexing primitives (!!) and (@@) with cryptol implementations.
2018-04-18 16:50:39 -07:00
Brian Huffman
2cdf9bd159
Replace primitives pmult, pmod, pdiv with cryptol implementations.
2018-04-15 06:56:20 -07:00
Brian Huffman
5cd9141fe7
Add functions head
and last
to Cryptol prelude. Fixes #465 .
...
Also fix regression test output.
2018-03-16 15:10:36 -07:00
Brian Huffman
951eebb8e2
Add more documentation of Cryptol prelude primitives.
2017-11-15 11:37:06 -08:00
Rob Dockins
c0699e2d62
Change the fixity levels of (||) and (&&).
...
This advances the next step in the plan described in issue #241 .
2017-10-02 14:56:33 -07:00
Brian Huffman
cce32a4868
Merge branch 'master' into integer
...
This brings the Logic and Zero type classes into the integer branch.
2017-09-28 13:18:27 -07:00
Brian Huffman
b03f1ae0c2
Add class Zero
with zero :: {a} (Zero a) => a
.
...
Shift operators also have a `Zero` constraint on the element type.
2017-09-15 16:37:44 -07:00
Brian Huffman
d1305b2860
Add 'Logic' typeclass with operations complement, &&, ||, ^, zero.
...
Left and right shift operations also gain a Logic constraint,
since they shift in zero values.
2017-09-15 13:33:56 -07:00
Brian Huffman
5d73b5d405
Merge branch 'master' into integer
...
This involved plenty of non-trivial merge edits to fix compilation errors.
# Conflicts:
# src/Cryptol/Eval.hs
# src/Cryptol/Eval/Value.hs
# src/Cryptol/Prims/Eval.hs
# src/Cryptol/Symbolic/Prims.hs
# src/Cryptol/Symbolic/Value.hs
# src/Cryptol/TypeCheck/AST.hs
2017-09-13 14:28:04 -07:00
Robert Dockins
cefc67a149
Implement signed division and remainder as methods of the Arith class.
...
Clarify the documentation that division is "round toward 0" division.
2017-08-16 17:34:22 -07:00
Robert Dockins
987e4a0c3b
Implement the type-level support required for the new SignedCmp
class.
...
This class will represent types that can be meaningfully compared for
signed bitvector equality. It lifts the comparison operations on
nonempty bitvectors through tuples, records and finite sequences via
lexicographic order.
2017-08-07 12:37:46 -07:00
Robert Dockins
2b9e5a2421
Add signed and unsigned bitvector extensions
2017-08-04 17:04:29 -07:00
Robert Dockins
9a3b64e088
Fix the definition of the signed borrow function
2017-08-04 17:03:23 -07:00
Robert Dockins
e3dd83066e
Rename signed bitvector operations to put the $
at the end
2017-08-04 17:02:10 -07:00
Robert Dockins
a68b835d51
Add operations for signed arithmetic, and carry condition testing.
2017-08-02 16:39:07 -07:00
Iavor S. Diatchki
0985508bbc
Add fin
constraints on the message mart of trace.
2017-06-16 09:58:11 -07:00
Brian Huffman
9a267b1f0c
Removed definition of binary infix (~) from Cryptol prelude. Fixes #423 .
...
This change partially reverts changeset c620cbf2
, which fixed #296 ,
which was about supporting `:t (~)` in the REPL.
As of this change, `:t (~)` will no longer work in the REPL.
The regression test for issue #296 is removed.
2017-05-24 09:39:50 -07:00
Brian Huffman
007c74cd97
Update doc-strings to mention syntactic sugar for complement and sequences.
2017-05-24 09:09:28 -07:00
Brian Huffman
67e730a07c
Merge branch 'master' into integer
2016-09-20 16:04:02 -07:00
Brian Huffman
dafd48cad0
Simplify type of primitive function 'pmult'. Fixes #366 .
...
Old: (fin a, fin b) => [a] -> [b] -> [max 1 (a + b) - 1]
New: (fin a, fin b) => [1 + a] -> [1 + b] -> [1 + a + b]
2016-09-20 15:13:40 -07:00
Brian Huffman
e4f958fbfa
Add primitives 'toInteger' and 'fromInteger'
...
These do not yet work with symbolic arguments. We will
need to first add support for these to SBV.
2016-08-19 10:17:36 -07:00
Brian Huffman
cb53109f33
Add primitive integer : {val} (fin val) => Integer
2016-08-18 14:26:29 -07:00
Robert Dockins
28d4f1d3fe
Modify 'updates' and 'updatesEnd' to take the indices and values
...
as separate vector arguments, rather than as a single vector
argument of pairs.
2016-08-16 14:36:46 -07:00
Robert Dockins
64267f51ac
Add the short-cutting boolean operators (/\), (\/), and (==>)
...
to the Cryptol prelude. This is in service of eventually addressing
issue #241 .
2016-08-12 17:12:34 -07:00
Robert Dockins
af0db1af38
Fix minor typo in the Cryptol prelude that was messing up the
...
help text for (!!)
2016-08-12 16:13:32 -07:00
Robert Dockins
785687a67f
Add new vector update primitives 'update' and 'updateEnd' which update
...
vectors at indices starting from the beginning/end of the vector,
respectively.
Included in this patch are implementations of these primitives
for the concrete evaluator. Symbolic primitives are TODO.
2016-08-12 12:10:48 -07:00
Brian Huffman
5b63ea2ad0
Add infix precedence declaration for (%). Fixes #362 .
2016-08-09 08:25:26 -07:00
Robert Dockins
e0611c250d
More explict comments for the 'trace' and 'traceVal' Prelude operations.
2016-07-13 14:16:33 -07:00
Robert Dockins
998bddc7a7
Merge remote-tracking branch 'origin/master' into new-eval
...
Fix some minor conflicts in the test suite.
Conflicts:
tests/issues/issue002.icry.fails
tests/issues/issue148.icry.stdout
tests/issues/issue198.icry.stdout
tests/issues/issue214.icry.stdout
tests/issues/issue290v2.icry.stdout
tests/issues/issue312.icry.fails
2016-07-12 14:58:53 -07:00
Adam C. Foltzer
2c428804bc
remove splitBy
and update documentation
...
Closes #291
2016-07-05 09:58:49 -07:00
Robert Dockins
e31b4ba57d
WIP. Improve performance of the new evaluator.
...
To get acceptable performance, we need to be pretty aggressive about
using word representations instead of list-of-bits. Unfortunately,
with the new evaluator, this means we force things to be more strict
than is correct.
We are also still slower than the current evaluator. It is not
clear where the problems are.
2016-05-13 17:21:51 -07:00
Robert Dockins
7e968d2d18
WIP. New monadic Cryptol interpreter.
...
The concrete evaluator now seems to be working correctly,
but seems to suffer from major performace problems.
2016-05-12 18:44:06 -07:00
Robert Dockins
38946745c3
Add the 'lg2' type function as a synonym.
...
Fixes #248
2016-05-04 17:54:08 -07:00
Robert Dockins
c620cbf237
Update the parser to allow prefix operators in more places.
...
This allows us to define (~) as a prefix operator symbol synonym
for `complement`.
Fixes #296 .
2016-05-04 16:26:36 -07:00
Brian Huffman
1322156d28
Remove trailing whitespace
2016-02-19 10:08:20 -08:00
Adam C. Foltzer
4d3fc9a413
Update copyright dates and add missing headers
2016-01-19 18:19:35 -08:00
Adam C. Foltzer
da6916702b
split new Prelude definitions into Extras module
...
The definitions added in #299 cause a regression in Prelude typechecking
performance. Until we sort out the performance, we'll keep these
definitions in the module `Cryptol::Extras`.
2016-01-19 18:19:24 -08:00
Adam C. Foltzer
07da2018b7
switch to more portable seeding for random
...
The `random` primitive previously took a `[32]` seed, but this causes
inconsistency between 32-bit and 64-bit platforms when the seed is large
enough to wrap around in GHC's representation of an `Int`. This patch
switches to an API that seeds directly with four 64-bit words, and so
should behave the same way on our supported platforms.
2016-01-19 18:17:34 -08:00
Thomas M. DuBuisson
68f71ed3b3
Add some Haskell-like prelude functions.
...
Implication (==>), not, and, or, all, any, map, foldl, sum, scanl, extend,
extendSigned, foldr, scanr, zip, zipWith, repeat, curry, uncurry, and elem.
Rationale:
I've had to implement these functions several times for different problems.
While my problems were admittedly toy, not cryptographic, the functions are
generally applicable and unlikely to clash with many, if any, preexisting
operations of different semantic meaning.
2016-01-19 18:15:49 -08:00
Brian Huffman
e87d0469ab
Fix incorrect docstrings for polynomial operations
...
pmult, pdiv, and pmod are not specific to GF(2^^8);
they work on polynomials of arbitrary size with
elements drawn from GF(2).
2015-12-31 09:46:13 -08:00
Thomas M. DuBuisson
6a7477ba6c
Half-fix but not quite issue #256 (Bool ~> Bit).
...
We should probably discuss why we want to call things "Bool" if this was
more concious than incidental. That and change the documentation to
match.
2015-07-03 14:19:56 -07:00
Trevor Elliott
9b7e46724c
Give 100 fixity levels, and fix prelude fixity again
...
Also fix issue198, which had been accidentally updated while failing
2015-06-10 11:55:54 -07:00
Trevor Elliott
9305e769d4
Properly resolve constraint fixity
2015-06-09 14:18:25 -07:00
Trevor Elliott
3fc9d66fc1
Change the precedence of xor
2015-06-09 09:35:35 -07:00
Trevor Elliott
e119b72efd
More fixity, and add back special error messages
2015-06-08 17:54:02 -07:00
Trevor Elliott
0eefd18437
More consistent output in the REPL
2015-06-08 17:36:41 -07:00