q package:sbv
Monad for querying a solver.
A new data-type that we expect to use in an uninterpreted fashion in
the backend SMT solver.
Negation of a quantified formula. This operation essentially lifts
sNot to quantified formulae. Note that you can achieve the same
using
sNot . quantifiedBool, but that will hide
the quantifiers, so prefer this version if you want to keep them
around.
Turn a quantified boolean into a regular boolean. That is, this
function turns an exists/forall quantified formula to a simple boolean
that can be used as a regular boolean value. An example is:
quantifiedBool $ \(Forall x) (Exists y) -> y .> (x :: SInteger)
is equivalent to
sTrue. You can think of this function as
performing quantifier-elimination: It takes a quantified formula, and
reduces it to a simple boolean that is equivalent to it, but has no
quantifiers.
No messages what-so-ever for successful steps. (Will print if
something fails)
If
verbose is
True, print the message, useful for
debugging messages in custom queries. Note that
redirectVerbose
will be respected: If a file redirection is given, the output will go
to the file.
NB. For a version which generalizes over the underlying monad, see
queryDebug
A quick-check step, taking number of tests.
A quick-check step, with specific quick-check args.
Mark the end of a calculational proof.
Helper to turn quantified formula to a regular boolean. We can think
of this as quantifier elimination, hence the name
qe.
Helper for turning an invariant predicate to a boolean.