This module provides the basic infrastructure for the CEGAR (Counter Example Guided Abstraction Refinement) solver.
A hypothesis generated by the CEGAR refinement procedure.
- hyp : Normalize.Hyp
The
Expr-level non-internalized hypothesis. A
Syntax-level regular tactic proof for the hypothesis.A
Syntax-levelgrindtactic proof for the hypothesis. Ifnonewe will usehave : hypand letgrindmodes' automation figure it out.
Instances For
- goal : MVarId
The meta variable that the CEGAR procedure is operating on.
- unusedHypotheses : Std.HashSet Normalize.Hyp
The set of unused hypothesis from the initial pre-processing, used for error messages later on.
- tacticContext : TacticContext
The
bv_decidegeneralTacticContext.
Instances For
State of the UF theory solver.
- congrCache : Std.HashMap Sym.ExprPtr Expr
Cache for congruence lemmas on UF theory atoms.
Instances For
State of the BitVec theory solver.
The AIG built so far, incrementally extended every CEGAR step.
- blastCache : Std.Tactic.BVDecide.BVExpr.Cache self.aig
The bitblasting cached used so far, incrementally extended every CEGAR step.
- cnfCache : Std.Sat.AIG.toCNF.State self.aig
Both the CNF cache and CNF formula built up so far, incrementally extended every CEGAR step.
Instances For
State carried around by our theory solvers.
- funState : FunState
UF theory state.
- bitvecState : BitVecState
BitVec theory state.
- preprocessCaches : Grind.BVDecide.Caches
Caches for the hypothesis preprocessor.
- satSolver : Cadical.Solver
The incremental SAT solver.
Instances For
- satExpr : SatAtBVLogical
The conjunction of all reflected expressions so far.
The queue of facts that will be processed at the beginning of the next CEGAR round.
The collection of hypotheses that have been used so far, used for proof recovery later on.
- didChange : Bool
Whether we should run another iteration of the procedure.
- theoryState : TheoryState
State for our various theory solvers.
- solverTimeBudgetMs : Nat
How many more milliseconds the SAT solver has to run.
- roundBudget : Nat
How many more CEGAR rounds the solver has left.
Instances For
Equations
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getReflectionResult = do let __do_lift ← get let __do_lift_1 ← read pure { satExpr := __do_lift.satExpr, unusedHypotheses := __do_lift_1.unusedHypotheses }
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getDidChange = do let __do_lift ← get pure __do_lift.didChange
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getTheoryState = do let __do_lift ← get pure __do_lift.theoryState
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getUsedHyps = do let __do_lift ← get pure __do_lift.usedHyps
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getTacticContext = do let __do_lift ← read pure __do_lift.tacticContext
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
- Lean.Meta.Tactic.BVDecide.CegarM.getSolverTime = do let __do_lift ← get pure __do_lift.solverTimeBudgetMs
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.getRounds = do let __do_lift ← get pure __do_lift.roundBudget
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
- Lean.Meta.Tactic.BVDecide.CegarM.getSatSolver = do let __do_lift ← get pure __do_lift.theoryState.satSolver
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- Lean.Meta.Tactic.BVDecide.CegarM.createCert cert = do let lemmas ← Lean.Meta.Tactic.BVDecide.CegarM.getUsedHyps pure { lemmas := lemmas, lratCert := cert }