Documentation

SSA.Experimental.Bits.AutoStructs.Tactic

theorem AutoStructs.eval_sub {x : AutoStructs.Term} {y : AutoStructs.Term} {w : } {vars : BitVec w} :
(x.sub y).evalNat vars = x.evalNat vars - y.evalNat vars
theorem AutoStructs.eval_add {x : AutoStructs.Term} {y : AutoStructs.Term} {w : } {vars : BitVec w} :
(x.add y).evalNat vars = x.evalNat vars + y.evalNat vars
theorem AutoStructs.eval_neg {x : AutoStructs.Term} {w : } {vars : BitVec w} :
x.neg.evalNat vars = -x.evalNat vars
theorem AutoStructs.eval_not {x : AutoStructs.Term} {w : } {vars : BitVec w} :
x.not.evalNat vars = ~~~x.evalNat vars
theorem AutoStructs.eval_and {x : AutoStructs.Term} {y : AutoStructs.Term} {w : } {vars : BitVec w} :
(x.and y).evalNat vars = x.evalNat vars &&& y.evalNat vars
theorem AutoStructs.eval_xor {x : AutoStructs.Term} {y : AutoStructs.Term} {w : } {vars : BitVec w} :
(x.xor y).evalNat vars = x.evalNat vars ^^^ y.evalNat vars
theorem AutoStructs.eval_or {x : AutoStructs.Term} {y : AutoStructs.Term} {w : } {vars : BitVec w} :
(x.or y).evalNat vars = x.evalNat vars ||| y.evalNat vars
theorem AutoStructs.sat_and {x : AutoStructs.Formula} {y : AutoStructs.Formula} {w : } {vars : BitVec w} :
(AutoStructs.Formula.binop AutoStructs.Binop.and x y).sat' vars x.sat' vars y.sat' vars
theorem AutoStructs.sat_or {x : AutoStructs.Formula} {y : AutoStructs.Formula} {w : } {vars : BitVec w} :
(AutoStructs.Formula.binop AutoStructs.Binop.or x y).sat' vars x.sat' vars y.sat' vars
theorem AutoStructs.sat_impl {x : AutoStructs.Formula} {y : AutoStructs.Formula} {w : } {vars : BitVec w} :
(AutoStructs.Formula.binop AutoStructs.Binop.impl x y).sat' vars x.sat' varsy.sat' vars
theorem AutoStructs.sat_iff {x : AutoStructs.Formula} {y : AutoStructs.Formula} {w : } {vars : BitVec w} :
(AutoStructs.Formula.binop AutoStructs.Binop.equiv x y).sat' vars (x.sat' vars y.sat' vars)
theorem AutoStructs.sat_eq {w : } {vars : BitVec w} (t1 : AutoStructs.Term) (t2 : AutoStructs.Term) :
(AutoStructs.Formula.atom AutoStructs.Relation.eq t1 t2).sat' vars t1.evalNat vars = t2.evalNat vars
theorem AutoStructs.sat_slt {w : } {vars : BitVec w} (t1 : AutoStructs.Term) (t2 : AutoStructs.Term) :
theorem AutoStructs.sat_sle {w : } {vars : BitVec w} (t1 : AutoStructs.Term) (t2 : AutoStructs.Term) :
theorem AutoStructs.sat_ult {w : } {vars : BitVec w} (t1 : AutoStructs.Term) (t2 : AutoStructs.Term) :
Equations
Instances For
    Equations
    Instances For
      Equations
      Instances For
        Equations
        Instances For
          Equations
          Instances For
            Equations
            structure Tactic.State :
            Instances For
              Equations
              @[reducible, inline]
              abbrev Tactic.M (α : Type) :
              Equations
              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
                    Equations
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Equations
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem dfadfa (w : ) (x : BitVec w) :
                            (0 >ₛ x) = true x.msb = true
                            theorem and_ule_not_xor (w : ) (x : BitVec w) (y : BitVec w) :
                            (~~~(x ^^^ y) ≥ᵤ x &&& y) = true
                            theorem xor_ule_or (w : ) (x : BitVec w) (y : BitVec w) :
                            (x ||| y ≥ᵤ x ^^^ y) = true
                            theorem ult_iff_not_ule (w : ) (x : BitVec w) (y : BitVec w) :
                            (y >ᵤ x) = true ¬(x ≥ᵤ y) = true
                            theorem sub_neg_sub (w : ) (x : BitVec w) (y : BitVec w) :
                            x - y = -(y - x)
                            theorem eq_iff_not_sub_or_sub (w : ) (x : BitVec w) (y : BitVec w) :
                            x = y (~~~(x - y ||| y - x)).msb = true
                            theorem lt_iff_sub_xor_xor_and_sub_xor (w : ) (x : BitVec w) (y : BitVec w) :
                            (y >ₛ x) = true (x - y ^^^ (x ^^^ y) &&& (x - y ^^^ x)).msb = true