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.
@[instance_reducible]
Equations
Instances For
@[instance_reducible]
Equations
Equations
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
def Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq {α✝ : Type} [DecidableEq α✝] (x✝ x✝¹ : BoolExpr α✝) :
Equations
- One or more equations did not get rendered due to their size.
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.literal a) (Std.Tactic.BVDecide.BoolExpr.literal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.literal a) (Std.Tactic.BVDecide.BoolExpr.const a_1) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.literal a) a_1.not = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.literal a) (Std.Tactic.BVDecide.BoolExpr.gate a_1 a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.literal a) (a_1.ite a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.const a) (Std.Tactic.BVDecide.BoolExpr.literal a_1) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.const a) (Std.Tactic.BVDecide.BoolExpr.const b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.const a) a_1.not = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.const a) (Std.Tactic.BVDecide.BoolExpr.gate a_1 a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.const a) (a_1.ite a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a.not (Std.Tactic.BVDecide.BoolExpr.literal a_1) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a.not (Std.Tactic.BVDecide.BoolExpr.const a_1) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a.not b.not = if h : a = b then h ▸ have inst := Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a a; isTrue ⋯ else isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a.not (Std.Tactic.BVDecide.BoolExpr.gate a_1 a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq a.not (a_1.ite a_2 a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.gate a a_1 a_2) (Std.Tactic.BVDecide.BoolExpr.literal a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.gate a a_1 a_2) (Std.Tactic.BVDecide.BoolExpr.const a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.gate a a_1 a_2) a_3.not = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (Std.Tactic.BVDecide.BoolExpr.gate a a_1 a_2) (a_3.ite a_4 a_5) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (a.ite a_1 a_2) (Std.Tactic.BVDecide.BoolExpr.literal a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (a.ite a_1 a_2) (Std.Tactic.BVDecide.BoolExpr.const a_3) = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (a.ite a_1 a_2) a_3.not = isFalse ⋯
- Std.Tactic.BVDecide.instDecidableEqBoolExpr.decEq (a.ite a_1 a_2) (Std.Tactic.BVDecide.BoolExpr.gate a_3 a_4 a_5) = isFalse ⋯
Instances For
@[instance_reducible]
instance Std.Tactic.BVDecide.instDecidableEqBoolExpr {α✝ : Type} [DecidableEq α✝] :
DecidableEq (BoolExpr α✝)
Equations
- One or more equations did not get rendered due to their size.
- Std.Tactic.BVDecide.instHashableBoolExpr.hash (Std.Tactic.BVDecide.BoolExpr.literal a) = mixHash 0 (hash a)
- Std.Tactic.BVDecide.instHashableBoolExpr.hash (Std.Tactic.BVDecide.BoolExpr.const a) = mixHash 1 (hash a)
- Std.Tactic.BVDecide.instHashableBoolExpr.hash a.not = mixHash 2 (Std.Tactic.BVDecide.instHashableBoolExpr.hash a)
Instances For
@[instance_reducible]
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
@[instance_reducible]
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