The configuration options for bv_decide
.
- timeout : Nat
The number of seconds that the SAT solver is run before aborting.
- trimProofs : Bool
Whether to run the trimming algorithm on LRAT proofs.
- binaryProofs : Bool
Whether to use the binary LRAT proof format. Currently set to false and ignored on Windows due to a bug in CaDiCal.
- acNf : Bool
Canonicalize with respect to associativity and commutativitiy.
- andFlattening : Bool
Split hypotheses of the form
h : (x && y) = true
intoh1 : x = true
andh2 : y = true
. This has synergy potential with embedded constraint substitution. - embeddedConstraintSubst : Bool
Look at all hypotheses of the form
h : x = true
, ifx
occurs in another hypothesis substitute it withtrue
. - graphviz : Bool
Output the AIG of bv_decide as graphviz into a file called aig.gv in the working directory of the Lean process.
- maxSteps : Nat
The maximum number of subexpressions to visit when performing simplification.
Instances For
This tactic works just like bv_decide
but skips calling a SAT solver by using a proof that is
already stored on disk. It is called with the name of an LRAT file in the same directory as the
current Lean file:
bv_check "proof.lrat"
Equations
- One or more equations did not get rendered due to their size.
Instances For
Close fixed-width BitVec
and Bool
goals by obtaining a proof from an external SAT solver and
verifying it inside Lean. The solvable goals are currently limited to the Lean equivalent of
QF_BV
:
example : ∀ (a b : BitVec 64), (a &&& b) + (a ^^^ b) = a ||| b := by
intros
bv_decide
If bv_decide
encounters an unknown definition it will be treated like an unconstrained BitVec
variable. Sometimes this enables solving goals despite not understanding the definition because
the precise properties of the definition do not matter in the specific proof.
If bv_decide
fails to close a goal it provides a counter-example, containing assignments for all
terms that were considered as variables.
In order to avoid calling a SAT solver every time, the proof can be cached with bv_decide?
.
If solving your problem relies inherently on using associativity or commutativity, consider enabling
the bv.ac_nf
option.
Note: bv_decide
uses ofReduceBool
and thus trusts the correctness of the code generator.
Instances For
Suggest a proof script for a bv_decide
tactic call. Useful for caching LRAT proofs.
Instances For
Run the normalization procedure of bv_decide
only. Sometimes this is enough to solve basic
BitVec
goals already.
Instances For
Auxiliary attribute for builtin bv_normalize
simprocs.