Since SBV 7.0; allSat is no longer lazy. So, Cryptol's current
implementation is buggy:
Cryptol> :set satNum=2
Cryptol> :sat \x -> x >(3:Integer)
.. Runs forever ..
This pull request fixes the issue:
Cryptol> :set satNum=2
Cryptol> :sat \x -> x>(3:Integer)
(\x -> x > (3 : Integer)) 4 = True
(\x -> x > (3 : Integer)) 5 = True
(Total Elapsed Time: 0.000s, using Z3)
Note that if you set `satNum` to be `all` and if there are indeed an
infinite number of satisfying models, SBV (and thus Cryptol) will still
loop forever. There's really no good way to solve that problem,
unfortunately.
This is to make things build with GHC 8.6, which requires a MonadFail
instance.
Pretty much all of these should end up being `panic`, so perhaps we should
rewrite more of them to call `panic` (instead of using lazy patterns)
With the other formulation, Z3 became really bad at finding any kind
of model. Basically, it would always answer `unsat` or `unknown`.
This is undesirable, because we use models when instantiating things
at the command line. In those cases, however, we probably don't
need the rule at all... Perhaps, we should provide a way to disable
the axioms when we are looking for models?
There doesn't seem to be a general-purpose way to determine architecture
word sizes from CPP as invoked by GHC, so we now fall back on the 32-bit
GMP size limit for unknown architectures. This is always safe, and can
be amended to allow larger words on other architectures as needed.
Closes#542.
It turns out this is not the same probelm as #545, which appears
to be working as expected. It is, however, a related problem,
so we'll say it fixes#545
Parameterized modules are not part of the evaluation context at all,
so now we check that we don't depend on *any* values from them.
Also, now we check both expressions and the schema, and also do
the check when proving not just evaluating.
Hopefully this fixes issue #545
:help with primitive types now uses vertical whitespace to match
the :help output for other types.
Help text for REPL commands can now contain linebreaks.
For quoted Cryptol syntax in docstrings, consistently use singlequotes
(') instead of backquotes (`). Backquotes are sometimes used within
the quoted code, so it's probably best to avoid using them for quotes.
Consistently capitalize and put a period at the end of docstrings.