Commit Graph

982 Commits

Author SHA1 Message Date
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
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
Robert Dockins
9d11fd4485 Fix typo in error constructor name 2016-05-06 14:33:02 -07:00
Robert Dockins
64b8a17c7b Fall back onto unification in more cases when typechecking explicit sequences.
Fixes #274
2016-05-06 13:29:49 -07:00
Robert Dockins
92c3b43db8 Add keywords to the REPL autocompletion list.
In particular, the following keywords will now be suggested by
the REPL autocompletion:
  else, if, let, then, where

These, I believe, are the only keywords which can be entered at
the command line.

Fixes #144
2016-05-05 13:54:49 -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
b6a83d7cb8 Make a friendlier, non-panic error message for cases where patterns
introduce nontrivial constraints.

Fixes #290
2016-05-04 17:38:16 -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
Robert Dockins
59cfe03e54 Update the parser to handle '#' patterns as a special case.
This partially addresses issue #304.
2016-05-04 13:54:00 -07:00
Robert Dockins
94f29f46d5 Add Fixity information to Name and the PPName class.
This allows access to fixity information when pretty-printing
Parser AST, even after the rearranging that is done by the renamer.

Fixes #318
2016-05-03 17:45:10 -07:00
Robert Dockins
bcb9b1dac1 Fix a boneheaded syntax error 2016-05-03 17:06:32 -07:00
Robert Dockins
21f5993730 Load the Prelude even if a command-line module fails to load.
Fixes #313
2016-05-03 15:24:34 -07:00
Robert Dockins
53eef3ed4a Improve the printing of some panic messages. 2016-05-03 12:00:37 -07:00
Dylan McNamee
ab279f01d5 incorporating typos and other improvements to docs 2016-04-27 11:52:09 -07:00
Dylan McNamee
b92cdcccda file cleanup 2016-04-21 13:54:52 -07:00
Dylan McNamee
04e22d8dd6 command appendix 2016-04-21 13:53:02 -07:00
Dylan McNamee
623b847094 merging changes to docs 2016-04-19 11:41:55 -07:00
Joseph Kiniry
0ba8d97c8a Removed extra 's'. 2016-04-18 15:16:39 -07:00
Joseph Kiniry
849fecead8 Merge branch 'master' of github.com:GaloisInc/cryptol 2016-04-18 15:15:58 -07:00
Joseph Kiniry
d43fcc9ebe Whitespace tweak. 2016-04-18 15:15:56 -07:00
Thomas M. DuBuisson
8b577828f6 Simplify constraints of Minilock prims.
Cryptol 2.3-alpha couldn't math, but thanks to @yav's hard work, Cryptol 2.3 and
later can math!  So with our new found powers comes great simplification.  Not
all is perfect, much like Dori-Mic's situation, but things are much better.
See the width constraints in SCrypt.cry for areas that could be improved with
some semi-obvious statements (forall x. 1 + width x >= width (x - 1)).
2016-04-12 15:53:12 -07:00
Trevor Elliott
cf979723b7 Fixes #322
Just needed to recurse through the parens and infix cases in `appTys`.
2016-04-07 21:26:21 -07:00
Brian Huffman
b875edae1a Fix typos in comments 2016-04-04 08:54:55 -07:00
Robert Dockins
739755c7ca Squash some space leaks dealing with substituions. 2016-04-01 17:32:15 -07:00
Sergei Trofimovich
ab43c275d4 tweak for deepseq-generics-0.2
deepseq-generics-0.2 stopped reexporting NFData from deepseq.
Patch imports it explicitly.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
2016-03-25 14:35:55 +00:00
Trevor Elliott
b8e6f6a43a Change emitS to consume Text 2016-03-18 22:26:05 -07:00
Trevor Elliott
5a82fd07e9 Performance updates in the renamer 2016-03-18 21:15:52 -07:00
Brian Huffman
b77dd2a82a :prove checks properties in the order they appear in the source.
Also add a regression test. Fixes #171.
2016-03-10 11:36:41 -05:00
Trevor Elliott
76c381d245 Remove SupplyM
SupplyM wasn't strictly necessary, so remove it.
2016-03-09 10:10:38 -08:00