Commit Graph

1209 Commits

Author SHA1 Message Date
Brian Huffman
3b524e1ae5 Fix test output for issue093.
Since #171 was fixed in b77dd2a8, the tests and proofs
are run in the order they appear in the source file.
2016-05-31 10:34:51 -07:00
Brian Huffman
0623fdcc63 Evaluate types of predicates before checking their validity
Fixes #339.
2016-05-31 10:15:12 -07:00
Rob Dockins
db28a2f719 Fix a bug that somtimes mixed up the length with the element type of
a comprehension match statement.
2016-05-31 08:54:36 -07:00
Rob Dockins
bdcfdd39a1 Update benchmarks for new interpreters 2016-05-30 23:07:05 -07:00
Rob Dockins
e69f790661 Add a utility function for forcing internal thunks in interpreter values. 2016-05-30 22:06:11 -07:00
Rob Dockins
9075c98f36 Make the implementation of "random" in the symbolic simulator more lazy.
We only want to panic if the thunk is acutally forced.
2016-05-30 22:04:26 -07:00
Rob Dockins
2d19a3d39c Fix a bug with the implementation of extractWord for symbolic values. 2016-05-30 22:02:29 -07:00
Rob Dockins
cd515efdb1 Test suite maintenance 2016-05-30 18:16:45 -07:00
Rob Dockins
33710b6d25 Update unit test golden outputs 2016-05-30 17:51:08 -07:00
Rob Dockins
a54c4b0952 Implement the 'trace' primitive in the symbolic simulator.
When executing symbolically, the trace primitive produces no
output, and merely forces its first two arguments.
2016-05-30 17:48:24 -07:00
Rob Dockins
b518336885 Merge branch 'master' of cryptol into new-eval 2016-05-30 17:25:10 -07:00
Rob Dockins
906f1fe325 Merge branch 'master' of github.com:GaloisInc/cryptol 2016-05-30 17:04:44 -07:00
Rob Dockins
d6c3121678 Complete the implementation of symbolic evaluator primitives.
This involves generalizing some of the concrete evaluator primitives
and reimplementing others in terms of SBV primitives.
2016-05-30 17:02:08 -07:00
Trevor Elliott
a139c4e1d1 Fixes #304 2016-05-27 22:00:43 -07:00
Trevor Elliott
7976026789 Update test output renamer errors 2016-05-27 18:50:27 -07:00
Trevor Elliott
a490600df5 Fix overlap errors in the renamer
* The MultipleSyms error should only show up when the import environment
  contains duplicate symbols, and should be triggered lazily.
* Environments that have had errors reported should be rewritten to no longer
  produce those errors during renameVar/renameType

Fixes #337
2016-05-27 18:37:57 -07:00
Trevor Elliott
2f21dd509a Remove the generic-trie dependency 2016-05-27 17:05:16 -07:00
Brian Huffman
c6144bd332 Update output for tests 256 and 335
The :t command now parenthesizes the term when needed.
2016-05-27 16:25:14 -07:00
Brian Huffman
f6a2462306 :t prints un-renamed parsed AST. Fixes #336. 2016-05-27 16:01:55 -07:00
Brian Huffman
d7b117a8ce Use a type-appropriate function argument name 2016-05-27 16:00:59 -07:00
Brian Huffman
bfc8062c69 Avoid extra shadowing warnings when renaming comprehensions
Fixes #286.
2016-05-27 15:39:41 -07:00
Aaron Tomb
3658c0962b Fix build with GHC 7.8
Hide an extra symbol from MonadLib.
2016-05-25 13:44:51 -07:00
Trevor Elliott
0393c8c54d Fixes #335
The local type bindings from type annotations in patterns were not being
processed correctly, and built-in type/type-functions were getting shadowed in
binders.
2016-05-24 11:58:55 -07:00
Brian Huffman
e0e382aa22 Fix typo in comment 2016-05-24 08:22:28 -07:00
Brian Huffman
df27f577a4 Fix typo in comment, whitespace 2016-05-24 08:21:55 -07:00
Ryan Scott
f1a45163a4 Put bench/data/*.cry in extra-source-files 2016-05-20 15:04:53 -04:00
Rob Dockins
bdc4bae638 Update (<<) and (>>) in the symbolic evaluator 2016-05-16 14:52:18 -07:00
Rob Dockins
7415e06c72 Back out changes that delayed applying substituions when composing.
Although this does reduce garbage produced when evaluating, it is a
major slowdown on some typechecking tasks (in particular, the typechecking
of large arrays of literals).
2016-05-16 14:00:08 -07:00
Rob Dockins
3209e59fc5 Back out changes that delayed applying substituions when composing.
Although this does reduce garbage produced when evaluating, it is a
major slowdown on some typechecking tasks (in particular, the typechecking
of large arrays of literals).
2016-05-16 13:58:06 -07:00
Rob Dockins
3f5877e9de Start reimplementing the symbolic interpreter primitives based
on the generalized operations from the concrete simulator.
2016-05-15 22:40:01 -07:00
Rob Dockins
1b51f0edf4 generalize the 'zero' operation 2016-05-15 22:34:06 -07:00
Rob Dockins
da4a458aed Generalize unary logic operations. Also fix a bug where
complement was not poperly truncating bitvector values.
2016-05-15 22:31:40 -07:00
Rob Dockins
0b2189a0cf generalize logic binary operations 2016-05-15 22:24:07 -07:00
Rob Dockins
31105f23b7 Generalize unary arithmetic operations 2016-05-15 22:19:23 -07:00
Rob Dockins
8a2a06fabc Generalize binary arithmetic operations 2016-05-15 22:14:50 -07:00
Rob Dockins
cecdb08179 Further generalize evaluation code for use in both the concrete
and symbolic evaluators.
2016-05-15 21:55:41 -07:00
Rob Dockins
122a147085 Start generalizing evaluator code to be used in both the
concrete and symbolic evaluators.
2016-05-15 21:28:21 -07:00
Rob Dockins
6d681f5bb5 Make bitwise and shifting operations less aggressive about forcing
bitsequences.

This fixes some over-stricness bugs.  It does have a mesaurable
performance impact on some programs, but seems acceptable.
2016-05-15 10:03:44 -07:00
Rob Dockins
94be64747b Have enumeration primitives directly calculate their values
instead of computing a list and indexing into it.
2016-05-15 09:47:07 -07:00
Rob Dockins
637c7599a8 Minor cleanup in Cryptol.Eval 2016-05-15 09:38:33 -07:00
Rob Dockins
5e989309cb Fix the behavior of 'memoMap' to save more work.
Previously, there was a mistake in this definition that was throwing
away potentially-useful work.  We now preserve that work and get a bit
performance improvement as a result.
2016-05-15 09:13:06 -07:00
Rob Dockins
0893de3683 Merge branch 'master' of /home/robert/work/cryptol into new-eval 2016-05-15 00:19:11 -07:00
Rob Dockins
9018cceba5 Tweak substituions again to avoid expensive flattening operations 2016-05-15 00:13:19 -07:00
Rob Dockins
98eee0a0ef Fix some bugs with the new substitution representation 2016-05-14 20:39:53 -07:00
Rob Dockins
c94e4b5b07 Change the representation of type substitutions.
Now, substitions are explicitly a sequence of maps from variables
to types.  This means that composing substitions is nearly trivial
because the structure of maps does not need to be rebuilt.  Instead,
we traverse the sequence of maps when substituions are applied.

This significantly reduces the garbage produced by type substituion.
2016-05-14 19:40:49 -07:00
Rob Dockins
28890090dd Change the representation of type substitutions.
Now, substitions are explicitly a sequence of maps from variables
to types.  This means that composing substitions is nearly trivial
because the structure of maps does not need to be rebuilt.  Instead,
we traverse the sequence of maps when substituions are applied.

This significantly reduces the garbage produced by type substituion.
2016-05-14 19:36:06 -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
Iavor S. Diatchki
48642ea282 Fix bogus simplification. 2016-05-12 15:43:31 -07:00
Brian Huffman
70459264ab Use hang and sep instead of hsep to print counterexamples.
Fixes #329.
2016-05-11 09:26:57 -07:00