Commit Graph

1815 Commits

Author SHA1 Message Date
Brian Huffman
dda5d34131 Fix constraints on type of primitive intmod.
The old type did not forbid literals of the invalid type `Z inf`.
2018-06-14 12:24:32 -07:00
Brian Huffman
59104829a0 Rename Cryptol.Utils.PP.<> to avoid clash with Semigroup operator.
The pretty-printing operator `<>` is now called `<.>`.

Cryptol now compiles without warnings on both ghc 8.2 and 8.4.
2018-06-14 10:17:49 -07:00
Brian Huffman
50f54c9610 Fix test output due to addition of new primitive. 2018-06-14 06:22:59 -07:00
Brian Huffman
5ac32d1ad5 Add a variant of the demote primitive for type Z n.
intmod : {val, mn} (fin val, n >= val + 1) => Z n
2018-06-14 06:17:51 -07:00
Brian Huffman
daac41fdec Fix implementation of ^^ on type Z n in symbolic backend. 2018-06-14 06:16:04 -07:00
Brian Huffman
a8f3e189e0 Remove unused import. 2018-06-13 11:57:51 -07:00
Brian Huffman
ea9b0a9194 Make type Z n an instance of class Literal.
instance (fin val, fin m, m >= val + 1) => Literal val (Z m)
2018-06-13 11:55:26 -07:00
Brian Huffman
b3d2851923 Merge branch 'master' into literal-class
# Conflicts:
#	src/Cryptol/TypeCheck/Kind.hs
#	src/Cryptol/TypeCheck/Solve.hs
2018-06-13 11:41:35 -07:00
Brian Huffman
4f1a743585 Remove special cases in evaluator for types Z 0 and Z inf.
These types are now forbidden by the type checker.
2018-06-13 11:32:23 -07:00
Brian Huffman
ec19538a3b Make type Z n a partial type operator, requiring (fin n, n >= 1). 2018-06-13 11:16:46 -07:00
Brian Huffman
9a2437b727 Use size parameter in random value generator for type Integer. 2018-06-13 10:50:58 -07:00
Brian Huffman
30ba719343 Fix exhaustive and random testing for integers-mod-n type. 2018-06-13 09:35:12 -07:00
Brian Huffman
7da2219caf Initial implementation of type Z n (integers mod n).
This covers most of #510, including the type itself and the
class instances, but not any of the new primitive functions.
2018-06-11 18:03:18 -07:00
Brian Huffman
e11806f64a Reimplement comparison primitives by recursion on the TValue. 2018-06-11 16:40:57 -07:00
Brian Huffman
f7b8373a4a Fix incomplete pattern match warnings. 2018-06-11 15:33:46 -07:00
Brian Huffman
4adb4bc13a Remove unused constructors from Parser.AST.Type datatype. 2018-06-11 15:23:09 -07:00
Brian Huffman
9188878c4e Renamer handles built-in types like Integer and Bit using TApp. 2018-06-11 15:03:12 -07:00
Brian Huffman
d5c9a030da Split new modules Fixity and Selector from Cryptol.Parser.AST. 2018-06-11 14:28:49 -07:00
Brian Huffman
7cf26f8653 Remove dead code. 2018-06-11 11:10:53 -07:00
Brian Huffman
083d42ad30 Remove integer-based arguments to logicUnary and logicBinary.
Type `Integer` is not an instance of class `Logic`, so we don't need
to implement logic operations for this type.
2018-06-11 11:04:56 -07:00
Brian Huffman
2228c03565 Simplify case expression. 2018-06-10 12:42:10 -07:00
Brian Huffman
6b3dc6d9d4 For quick-checking integer properties, use a randomized bit width.
The distribution is unbounded, but is biased to smaller bit widths,
and is designed to have an average bit-width of 64.
2018-05-25 11:07:19 -07:00
Brian Huffman
c7d5f51240 Report "untestable type" error when using :exhaust with type Integer. 2018-05-24 17:24:11 -07:00
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
Brian Huffman
7c1de9c133 Add short section to Cryptol book about type Integer.
Fixes #468.
2018-05-24 13:04:10 -07:00
Aaron Tomb
c42a135fce Update tests to account for Cryptol::Extras merge 2018-05-24 09:23:17 -07:00
Aaron Tomb
99f3fdbf37 Merge Cryptol/Extras.cry with Cryptol.cry
Closes #427.
2018-05-23 15:55:05 -07:00
Brian Huffman
ddfe615a14 Document :exhaust command in the cryptol book. Fixes #466. 2018-05-22 15:17:15 -07:00
Brian Huffman
3a4bc6a2af Allow ":set <boolean-flag> = false" and ":set <boolean-flag> = true".
Previously we only allowed enable/disable, on/off, or yes/no.
2018-05-22 15:17:15 -07:00
Iavor Diatchki
9e3f7ec13f Merge branch 'master' of github.com:GaloisInc/cryptol 2018-05-22 14:27:12 -07:00
Iavor Diatchki
a0c15874e2 Factor out panic code into its own little package. 2018-05-22 14:27:03 -07:00
Brian Huffman
9fccc00867 Remove obsolete GF(2) polynomial primitives from reference interpreter. 2018-05-14 17:32:09 -07:00
Brian Huffman
26acdd0dad Pass pretty printing options to printer for reference interpreter.
(The options are not actually used yet.)
2018-05-14 17:03:00 -07:00
Iavor Diatchki
52f335deaa Asllow writing fancier kinds. This is in preparation for type primitives/abstract types. 2018-05-11 16:05:20 -07:00
Iavor Diatchki
e0cbfb1531 Fixup and clean-up checking of non-builting type applications.
Fixes #506
2018-05-11 10:38:00 -07:00
Iavor Diatchki
35ece3c3ed Use a datatype instead of Bool, to be more explicit about what it means. 2018-05-11 10:37:18 -07:00
Iavor Diatchki
2e2ac8c09d Just comments and layout 2018-05-11 10:07:12 -07:00
Iavor Diatchki
812ecec79c Fail if a built-in type has been applied to some arguments.
Fixes #507
2018-05-11 10:05:39 -07:00
Brian Huffman
13363c4c9b fastTypeOf doesn't perform any simplification when substituting types.
This makes it more useful for the saw-core translation, because we
can notice when type coercions need to be applied.
2018-05-10 15:23:53 -07:00
Iavor Diatchki
ec5e84dd37 Add a fin constraint on following matches in a comprehension.
Fixes #505.   It doesn't really make sense to have infinite things
following a finite thing in a comprehension, as there would be a whole
lot of unreachable elements.  Since this is likely an error, we try
to catch it with the types.
2018-05-07 11:52:43 -07:00
Iavor Diatchki
59aa5f11d0 Fix typos 2018-05-07 11:50:51 -07:00
Aaron Tomb
984012a1a4 Don't freeze base version in cabal freeze files 2018-05-04 10:40:31 -07:00
Aaron Tomb
ca982f9f56 Update sbv versions in cabal freeze files 2018-05-04 10:10:26 -07:00
Brian Huffman
62dfa1d58f Use sbv version 7.7. Fixes #486.
Also add regression test for #486.
2018-04-30 09:54:26 -07:00
Brian Huffman
42e89b11ae Make :check work for tests involving type Integer. 2018-04-20 16:00:32 -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
Aaron Tomb
126c384ff6 Avoid most recent version of base-compat
The latest version causes build failures. Ultimately, we should be able
to fix the code to work with newer base-compat versions on various GHC
verions, but this gets builds to work for now.
2018-04-18 10:07:08 -07:00
Brian Huffman
2cdf9bd159 Replace primitives pmult, pmod, pdiv with cryptol implementations. 2018-04-15 06:56:20 -07:00