This module contains the definition of a generic boolean substructure for SMT problems with
BoolExpr
. For verification purposes BoolExpr.Sat
and BoolExpr.Unsat
are provided.
Equations
- Std.Tactic.BVDecide.Gate.and.toString = "&&"
- Std.Tactic.BVDecide.Gate.xor.toString = "^^"
- Std.Tactic.BVDecide.Gate.beq.toString = "=="
- Std.Tactic.BVDecide.Gate.or.toString = "||"
Instances For
Equations
- Std.Tactic.BVDecide.Gate.and.eval = fun (x1 x2 : Bool) => x1 && x2
- Std.Tactic.BVDecide.Gate.xor.eval = fun (x1 x2 : Bool) => x1 ^^ x2
- Std.Tactic.BVDecide.Gate.beq.eval = fun (x1 x2 : Bool) => x1 == x2
- Std.Tactic.BVDecide.Gate.or.eval = fun (x1 x2 : Bool) => x1 || x2
Instances For
Equations
- (Std.Tactic.BVDecide.BoolExpr.literal a).toString = toString a
- (Std.Tactic.BVDecide.BoolExpr.const b).toString = toString b
- x_1.not.toString = "!" ++ x_1.toString
- (Std.Tactic.BVDecide.BoolExpr.gate g x_1 y).toString = "(" ++ x_1.toString ++ " " ++ g.toString ++ " " ++ y.toString ++ ")"
- (d.ite l r).toString = "(if " ++ d.toString ++ " " ++ l.toString ++ " " ++ r.toString ++ ")"
Instances For
Equations
Equations
- Std.Tactic.BVDecide.BoolExpr.eval a (Std.Tactic.BVDecide.BoolExpr.literal a_1) = a a_1
- Std.Tactic.BVDecide.BoolExpr.eval a (Std.Tactic.BVDecide.BoolExpr.const b) = b
- Std.Tactic.BVDecide.BoolExpr.eval a x_1.not = !Std.Tactic.BVDecide.BoolExpr.eval a x_1
- Std.Tactic.BVDecide.BoolExpr.eval a (Std.Tactic.BVDecide.BoolExpr.gate g x_1 y) = g.eval (Std.Tactic.BVDecide.BoolExpr.eval a x_1) (Std.Tactic.BVDecide.BoolExpr.eval a y)
- Std.Tactic.BVDecide.BoolExpr.eval a (d.ite l r) = bif Std.Tactic.BVDecide.BoolExpr.eval a d then Std.Tactic.BVDecide.BoolExpr.eval a l else Std.Tactic.BVDecide.BoolExpr.eval a r
Instances For
Equations
Instances For
Equations
- x.Unsat = ∀ (f : α → Bool), Std.Tactic.BVDecide.BoolExpr.eval f x = false