Commit Graph

1162 Commits

Author SHA1 Message Date
Iavor S. Diatchki
8c36992904 Merge pull request #344 from adrianherrera/enhancement/MISTY1
Crytol spec for MISTY1 cipher
2016-07-18 11:19:53 -07:00
Austin Seipp
e197497059 lib/extras: add iterate
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2016-07-18 09:01:45 +00:00
Robert Dockins
5d1e1948d8 Add test case to demonstrate tracing, as discussed in issue 68.
The new evaluator allows us to have more direct control over
evaluation order, and makes it straightforward to implement tracing
primitives.  There are two new primitives 'trace' and 'traceVal' in the
Cryptol prelude that produce tracing output when evaluated.
Fixes #68
2016-07-13 15:09:56 -07:00
Robert Dockins
e001310299 Add test cases for issue 138. Fixed by new evaluator.
Fixes #138
2016-07-13 15:00:00 -07:00
Robert Dockins
3d68677d42 Add test case for issue #268. Fixed by the evaluator rewrite
Fixes #268
2016-07-13 14:40:44 -07:00
Robert Dockins
869670b2af Add test case for issue #334. This issue is fixed by the evaluator rewrite.
Fixes #334
2016-07-13 14:36:26 -07:00
robdockins
93a1628d53 Merge pull request #338 from robdockins/new-eval
New monadic evaluator, now with fewer nontermination bugs!
2016-07-13 14:27:38 -07:00
Robert Dockins
c60be15873 Add 'trace' and 'traceVal' to the primitive operations lists in the documentation. 2016-07-13 14:21:29 -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
222c6edd82 Additional haddock improvements 2016-07-13 14:07:45 -07:00
Robert Dockins
89b9d55af7 Further comment improvements 2016-07-13 12:46:05 -07:00
Robert Dockins
1e57a2dfc7 Squash warnings and improve comments. 2016-07-13 11:27:30 -07:00
Robert Dockins
73d6a68c67 Merge branch 'new-eval' of github.com:robdockins/cryptol into new-eval 2016-07-13 09:54:24 -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
Brian Huffman
c2e0cc5839 Remove unused AES functions. Fixes #352. 2016-07-07 14:40:08 -07:00
Adam C. Foltzer
8352132c14 Merge branch 'release/2.4.0' 2016-07-06 16:21:06 -07:00
Adam C. Foltzer
3c25c096a7 clean up build a bit 2016-07-06 16:20:01 -07:00
Thomas M. DuBuisson
8485f28a6b Add necessary type arguments to scytale example. 2016-07-05 15:07:14 -07:00
Adam C. Foltzer
054a3e2248 instantiate Scytale diameter
Fixes #349
2016-07-05 14:42:59 -07:00
Ryan Scott
117dc0a931 Put bench/data/*.cry in extra-source-files 2016-07-05 09:58:50 -07:00
Adam C. Foltzer
2c428804bc remove splitBy and update documentation
Closes #291
2016-07-05 09:58:49 -07:00
Adam C. Foltzer
78cacc4d3e Merge pull request #333 from RyanGlScott/master
Put bench/data/*.cry in extra-source-files
2016-07-05 08:49:53 -07:00
Adam C. Foltzer
6fd99ff3ab clean up build a bit 2016-06-27 14:59:10 -07:00
Robert Dockins
e0dc226787 Make random value generation work on a slightly larger class of types.
Simplify types when calculating random generators to avoid spurrious
failures.
2016-06-25 12:45:01 -07:00
Brian Huffman
2cface6f31 Parser disallows declarations like "f x # y = y".
Fixes #342.
2016-06-16 17:05:59 -07:00
Rob Dockins
cbdbe35a89 Tweak the thunk strategy for the evaulator, and make sure to
eta-expand word values when necessary.
2016-06-13 22:14:28 -07:00
Rob Dockins
88b6ae5bfa Squash some incomplete pattern match warnings 2016-06-13 22:12:16 -07:00
Robert Dockins
8ecb6898a6 Merge remote-tracking branch 'github/new-eval' into new-eval 2016-06-13 16:45:44 -07:00
Robert Dockins
c18df5df40 Fix up some most-merge problems 2016-06-13 16:43:25 -07:00
Robert Dockins
c3c1bb2c74 Merge branch 'master' into new-eval-merge 2016-06-13 16:29:36 -07:00
Robert Dockins
37fea4cd9d Remove the lexCompare case for infinite streams, which should never occur. 2016-06-13 16:23:39 -07:00
Robert Dockins
3f934ae27f Delete the unused cvt function 2016-06-13 16:02:27 -07:00
Rob Dockins
b9464335b9 Plug a space leak in the implementation of random sequences 2016-06-12 22:43:37 -07:00
Robert Dockins
98a9e16944 Move to directly pattern matching on the new type evaluation datatype
instead of using helper destructor functions.
2016-06-09 14:19:12 -04:00
Robert Dockins
d2789c0214 Start manually merging Brian's changes regarding type values and evaluation 2016-06-09 13:30:51 -04:00
Robert Dockins
b95b734b74 Refactoring of how bits and words are handled in the interpreters.
The major change in this patch is to add a new type of 'WordValue'
which is always used to represent finite sequences of bits.  A word
value is either a packed word, or a sequence of lazy bits.  The 'VSeq'
constructor, in constrast, is now never used for a finite sequence of
bits.

This avoids certain thorny problems that arise when trying to faithfully
implement the lazy semantics of Cryptol.  We now do not have to commit
to a value at type '[n]' being represented as a packed word or as an
unpacked word until relatively late.  This allows us to perform type-directed
eta-expansion at every recursive call before we know how words will be represented.

This patch fixes all the outstanding strictness bugs that I know of.

Unfortunately, we seem to lose some ground on performance.  The new evaluator
is now about 5% slower than the old one on the AES benchmark, and quite a bit
slower on the SHA1 benchmark.  Fortunately, the use if LRU caches for memoization
of sequences seems to keep heap usage to manageable levels; so programs generally
complete, even if they take a long time.
2016-06-09 08:31:23 -04:00
Adam C. Foltzer
20965a0b0b fully qualify cygpath to avoid weird hemlock error 2016-06-08 16:56:22 -07:00
Adam C. Foltzer
921b50a1a9 add GHC 8 stackage nightly 2016-06-07 14:29:20 -07:00
Adam C. Foltzer
76be770d83 clean up 7.8-isms 2016-06-07 13:40:15 -07:00
Adrian Herrera
bedeeb0883 Crytol spec for MISTY1 cipher (as described in RFC 2994) 2016-06-07 22:42:16 +10:00
Brian Huffman
1e3d1f642a New evalType function works on either kind * or #
Cryptol.Eval.Type now provides three evaluation functions
for types:

  evalType    :: EvalEnv -> Type -> Either Nat' TValue
  evalValType :: EvalEnv -> Type -> TValue
  evalNumType :: EvalEnv -> Type -> Nat'

evalValType requires the type to have kind *.
evalNumType requires the type to have kind #.
evalType works on a Cryptol types of either kind.
2016-06-06 15:43:22 -07:00
Brian Huffman
9fb3d53d88 TValue represents only value types; Nat' is for size types
We now have separate evalType and evalNumType functions
for use with kind * and #, respectively.
2016-06-06 15:10:31 -07:00
Brian Huffman
38f143abcc Pattern match on TValues instead of discriminator functions 2016-06-06 13:31:44 -07:00
Brian Huffman
4de0580d1c Redefine type TValue as an inductive datatype.
This mostly takes care of issue #343, but some problems
remain:

- There is no TValue representation for newtypes
- Many incomplete pattern warnings in Symbolic/Prims.hs
2016-06-06 11:36:14 -07:00
Robert Dockins
99526f5700 Merge branch 'master' of github.com:GaloisInc/cryptol into new-eval 2016-06-01 15:22:09 -07:00
Adam C. Foltzer
7c9d2a5158 tweak JSON deriving for cryptol-server 2016-05-31 16:11:50 -07:00
Adam C. Foltzer
875d78800f add note about Z3 on 64-bit Linux 2016-05-31 15:47:50 -07:00
Trevor Elliott
e974a1159b Correct the printing of names with the parsed AST
Fixes #340
2016-05-31 14:04:05 -07:00
Trevor Elliott
3d67018c70 Ignore the bytes output of issue220 2016-05-31 11:53:38 -07:00
Trevor Elliott
3c59bf3231 Update the test output for mono-bind test 4
The type variable name was the only change.
2016-05-31 11:51:01 -07:00