This module provides the implementation of the bv_decide
frontend itself.
Given:
var2Cnf
: The mapping from AIG to CNF variables.assignments
: A model for the CNF as provided by a SAT solver.aigSize
: The amount of nodes in the AIG that was used to produce the CNF.atomsAssignment
: The mapping of the reflection monad from atom indices toExpr
.
Reconstruct bit by bit which value expression must have had which BitVec
value and return all
expression - pair values.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- bvExpr : Std.Tactic.BVDecide.BVLogicalExpr
- proveFalse : Lean.Expr → Lean.Elab.Tactic.BVDecide.Frontend.M Lean.Expr
- unusedHypotheses : Std.HashSet Lean.FVarId
Instances For
A counter example generated from the bitblaster.
- unusedHypotheses : Std.HashSet Lean.FVarId
The set of unused but potentially relevant hypotheses. Useful for diagnosing spurious counter examples.
- equations : Array (Lean.Expr × Std.Tactic.BVDecide.BVExpr.PackedBitVec)
The actual counter example as a list of equations denoted as
expr = value
pairs.
Instances For
- proof : Lean.Expr
- lratCert : Lean.Elab.Tactic.BVDecide.Frontend.LratCert
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The result of a spurious counter example diagnosis.
- uninterpretedSymbols : Std.HashSet Lean.Expr
- unusedRelevantHypotheses : Std.HashSet Lean.FVarId
Instances For
Equations
Instances For
Equations
- x.run counterExample = do let __discr ← (ReaderT.run x counterExample).run { uninterpretedSymbols := ∅, unusedRelevantHypotheses := ∅ } match __discr with | (fst, issues) => pure issues
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.DiagnosisM.unusedHyps = do let __do_lift ← read pure __do_lift.unusedHypotheses
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.DiagnosisM.equations = do let __do_lift ← read pure __do_lift.equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Diagnose spurious counter examples, currently this checks:
- Whether uninterpreted symbols were used
- Whether all hypotheses which contain any variable that was bitblasted were included
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The result of calling bv_decide
.
If the normalization step was not enough to solve the goal this contains the LRAT proof certificate.
Instances For
Try to close g
using a bitblaster. Return either a CounterExample
if one is found or a Result
if g
is proven.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Call bvDecide'
and throw a pretty error if a counter example ends up being produced.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.