This file contains theorems used for justifying the reflection procedure of bv_decide
.
theorem
Std.Tactic.BVDecide.Reflect.BitVec.zeroExtend_congr
(n : Nat)
(w : Nat)
(x : BitVec w)
(x' : BitVec w)
(h1 : x = x')
:
BitVec.zeroExtend n x' = BitVec.zeroExtend n x
theorem
Std.Tactic.BVDecide.Reflect.BitVec.signExtend_congr
(n : Nat)
(w : Nat)
(x : BitVec w)
(x' : BitVec w)
(h1 : x = x')
:
BitVec.signExtend n x' = BitVec.signExtend n x
theorem
Std.Tactic.BVDecide.Reflect.BitVec.replicate_congr
(n : Nat)
(w : Nat)
(expr : BitVec w)
(expr' : BitVec w)
(h : expr' = expr)
:
BitVec.replicate n expr' = BitVec.replicate n expr
theorem
Std.Tactic.BVDecide.Reflect.BitVec.extract_congr
(hi : Nat)
(lo : Nat)
(w : Nat)
(x : BitVec w)
(x' : BitVec w)
(h1 : x = x')
:
BitVec.extractLsb hi lo x' = BitVec.extractLsb hi lo x
theorem
Std.Tactic.BVDecide.Reflect.BitVec.ofBool_congr
(b : Bool)
(e' : BitVec 1)
(h : e' = BitVec.ofBool b)
:
e'.getLsbD 0 = b
Verify that a proof certificate is valid for a given formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Std.Tactic.BVDecide.Reflect.verifyCert_correct
(cnf : Std.Sat.CNF Nat)
(cert : String)
:
Std.Tactic.BVDecide.Reflect.verifyCert cnf cert = true → cnf.Unsat
def
Std.Tactic.BVDecide.Reflect.verifyBVExpr
(bv : Std.Tactic.BVDecide.BVLogicalExpr)
(cert : String)
:
Verify that cert
is an UNSAT proof for the SAT problem obtained by bitblasting bv
.
Equations
- Std.Tactic.BVDecide.Reflect.verifyBVExpr bv cert = Std.Tactic.BVDecide.Reflect.verifyCert (Std.Sat.AIG.toCNF bv.bitblast.relabelNat) cert
Instances For
theorem
Std.Tactic.BVDecide.Reflect.unsat_of_verifyBVExpr_eq_true
(bv : Std.Tactic.BVDecide.BVLogicalExpr)
(c : String)
(h : Std.Tactic.BVDecide.Reflect.verifyBVExpr bv c = true)
:
bv.Unsat