This module contains the logic around writing proofs of UNSAT, using LRAT proofs, as meta code.
The context for the bv_decide
tactic.
- exprDef : Lean.Name
- certDef : Lean.Name
- reflectionDef : Lean.Name
- solver : System.FilePath
- lratPath : System.FilePath
- graphviz : Bool
- timeout : Nat
- trimProofs : Bool
- binaryProofs : Bool
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
@[reducible, inline]
An LRAT proof read from a file. This will get parsed using ofReduceBool.
Instances For
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Elab.Tactic.BVDecide.Frontend.LratCert.ofFile
(lratPath : System.FilePath)
(trimProofs : Bool)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Elab.Tactic.BVDecide.Frontend.runExternal
(cnf : Std.Sat.CNF Nat)
(solver : System.FilePath)
(lratPath : System.FilePath)
(trimProofs : Bool)
(timeout : Nat)
(binaryProofs : Bool)
:
Run an external SAT solver on the CNF
to obtain an LRAT proof.
This will obtain an LratCert
if the formula is UNSAT and throw errors otherwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Elab.Tactic.BVDecide.Frontend.mkAuxDecl
(name : Lean.Name)
(value : Lean.Expr)
(type : Lean.Expr)
:
Add an auxiliary declaration. Only used to create constants that appear in our reflection proof.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Elab.Tactic.BVDecide.Frontend.LratCert.toReflectionProof
{α : Type u_1}
[Lean.ToExpr α]
(cert : Lean.Elab.Tactic.BVDecide.Frontend.LratCert)
(cfg : Lean.Elab.Tactic.BVDecide.Frontend.TacticContext)
(reflected : α)
(verifier : Lean.Name)
(unsat_of_verifier_eq_true : Lean.Name)
:
Turn an LratCert
into a proof that some reflected
expression is UNSAT by providing a verifier
function together with a correctness theorem for it.
verifier
is expected to have typeα → LratCert → Bool
unsat_of_verifier_eq_true
is expected to have type∀ (b : α) (c : LratCert), verifier b c = true → unsat b
Equations
- One or more equations did not get rendered due to their size.