This module implements the logic to call CaDiCal (or CLI interface compatible SAT solvers) and extract an LRAT UNSAT proof or a model from its output.
The result of calling a SAT solver.
- sat: Array (Bool × Nat) → Lean.Elab.Tactic.BVDecide.External.SolverResult
The solver returned SAT with some literal assignment.
- unsat: Lean.Elab.Tactic.BVDecide.External.SolverResult
The solver returned UNSAT.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Parse the witness format of a SAT solver. The rough grammar for this is: line = "v" (" " lit)\n terminal_line = "v" (" " lit) (" " 0)\n witness = "s SATISFIABLE\n" line+ terminal_line
Equations
Instances For
- success: {α : Type u} → α → Lean.Elab.Tactic.BVDecide.External.TimedOut α
- timeout: {α : Type u} → Lean.Elab.Tactic.BVDecide.External.TimedOut α
Instances For
Run a process with args
until it terminates or the cancellation token in CoreM
tells us to abort
or timeout
seconds have passed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.External.runInterruptible.killAndWait child = do child.kill discard child.wait
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
Call the SAT solver in solverPath
with problemPath
as CNF input and ask it to output an LRAT
UNSAT proof (binary or non-binary depending on binaryProofs
) into proofOutput
. To avoid runaway
solvers the solver is run with timeout
in seconds as a maximum time limit to solve the problem.
Note: This function currently assume that the solver has the same CLI as CaDiCal.
Equations
- One or more equations did not get rendered due to their size.