theorem
AutoStructs.eval_sub
{x : AutoStructs.Term}
{y : AutoStructs.Term}
{w : ℕ}
{vars : ℕ → BitVec w}
:
theorem
AutoStructs.eval_add
{x : AutoStructs.Term}
{y : AutoStructs.Term}
{w : ℕ}
{vars : ℕ → BitVec w}
:
theorem
AutoStructs.eval_and
{x : AutoStructs.Term}
{y : AutoStructs.Term}
{w : ℕ}
{vars : ℕ → BitVec w}
:
theorem
AutoStructs.eval_xor
{x : AutoStructs.Term}
{y : AutoStructs.Term}
{w : ℕ}
{vars : ℕ → BitVec w}
:
theorem
AutoStructs.eval_or
{x : AutoStructs.Term}
{y : AutoStructs.Term}
{w : ℕ}
{vars : ℕ → BitVec w}
:
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' vars → y.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_neg
{x : AutoStructs.Formula}
{w : ℕ}
{vars : ℕ → BitVec w}
:
(AutoStructs.Formula.unop AutoStructs.Unop.neg x).sat' vars ↔ ¬x.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)
:
(AutoStructs.Formula.atom (AutoStructs.Relation.signed AutoStructs.RelationOrdering.lt) t1 t2).sat' vars ↔ (t2.evalNat vars >ₛ t1.evalNat vars) = true
theorem
AutoStructs.sat_sle
{w : ℕ}
{vars : ℕ → BitVec w}
(t1 : AutoStructs.Term)
(t2 : AutoStructs.Term)
:
(AutoStructs.Formula.atom (AutoStructs.Relation.signed AutoStructs.RelationOrdering.le) t1 t2).sat' vars ↔ (t2.evalNat vars ≥ₛ t1.evalNat vars) = true
theorem
AutoStructs.sat_ult
{w : ℕ}
{vars : ℕ → BitVec w}
(t1 : AutoStructs.Term)
(t2 : AutoStructs.Term)
:
(AutoStructs.Formula.atom (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.lt) t1 t2).sat' vars ↔ (t2.evalNat vars >ᵤ t1.evalNat vars) = true
theorem
AutoStructs.sat_ule
{w : ℕ}
{vars : ℕ → BitVec w}
(t1 : AutoStructs.Term)
(t2 : AutoStructs.Term)
:
(AutoStructs.Formula.atom (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.le) t1 t2).sat' vars ↔ (t2.evalNat vars ≥ᵤ t1.evalNat vars) = true
Equations
- (AutoStructs.Term.var n).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Term.var) (Lean.mkNatLit n)
- AutoStructs.Term.zero.toExpr = Lean.mkConst `AutoStructs.Term.zero
- AutoStructs.Term.one.toExpr = Lean.mkConst `AutoStructs.Term.one
- AutoStructs.Term.negOne.toExpr = Lean.mkConst `AutoStructs.Term.negOne
- (t1.and t2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Term.and) t1.toExpr t2.toExpr
- (t1.or t2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Term.or) t1.toExpr t2.toExpr
- (t1.xor t2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Term.xor) t1.toExpr t2.toExpr
- (t1.add t2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Term.add) t1.toExpr t2.toExpr
- (t1.sub t2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Term.sub) t1.toExpr t2.toExpr
- t_2.not.toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Term.not) t_2.toExpr
- t_2.neg.toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Term.neg) t_2.toExpr
- t_2.incr.toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Term.incr) t_2.toExpr
- t_2.decr.toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Term.decr) t_2.toExpr
Instances For
Equations
- AutoStructs.Relation.eq.toExpr = Lean.mkConst `AutoStructs.Relation.eq
- (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.lt).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.unsigned) (Lean.mkConst `AutoStructs.RelationOrdering.lt)
- (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.le).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.unsigned) (Lean.mkConst `AutoStructs.RelationOrdering.le)
- (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.gt).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.unsigned) (Lean.mkConst `AutoStructs.RelationOrdering.gt)
- (AutoStructs.Relation.unsigned AutoStructs.RelationOrdering.ge).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.unsigned) (Lean.mkConst `AutoStructs.RelationOrdering.ge)
- (AutoStructs.Relation.signed AutoStructs.RelationOrdering.lt).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.signed) (Lean.mkConst `AutoStructs.RelationOrdering.lt)
- (AutoStructs.Relation.signed AutoStructs.RelationOrdering.le).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.signed) (Lean.mkConst `AutoStructs.RelationOrdering.le)
- (AutoStructs.Relation.signed AutoStructs.RelationOrdering.gt).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.signed) (Lean.mkConst `AutoStructs.RelationOrdering.gt)
- (AutoStructs.Relation.signed AutoStructs.RelationOrdering.ge).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Relation.signed) (Lean.mkConst `AutoStructs.RelationOrdering.ge)
Instances For
Equations
- AutoStructs.Binop.and.toExpr = Lean.mkConst `AutoStructs.Binop.and
- AutoStructs.Binop.or.toExpr = Lean.mkConst `AutoStructs.Binop.or
- AutoStructs.Binop.impl.toExpr = Lean.mkConst `AutoStructs.Binop.impl
- AutoStructs.Binop.equiv.toExpr = Lean.mkConst `AutoStructs.Binop.equiv
Instances For
Equations
- AutoStructs.Unop.neg.toExpr = Lean.mkConst `AutoStructs.Unop.neg
Instances For
Equations
- (AutoStructs.Formula.atom rel t1 t2).toExpr = Lean.mkApp3 (Lean.mkConst `AutoStructs.Formula.atom) rel.toExpr t1.toExpr t2.toExpr
- (AutoStructs.Formula.binop op φ1 φ2).toExpr = Lean.mkApp3 (Lean.mkConst `AutoStructs.Formula.binop) op.toExpr φ1.toExpr φ2.toExpr
- (AutoStructs.Formula.unop op φ_2).toExpr = Lean.mkApp2 (Lean.mkConst `AutoStructs.Formula.unop) op.toExpr φ_2.toExpr
- (AutoStructs.Formula.msbSet φ_2).toExpr = Lean.mkApp (Lean.mkConst `AutoStructs.Formula.msbSet) φ_2.toExpr
Instances For
Equations
- instToExprFormula = { toExpr := AutoStructs.Formula.toExpr, toTypeExpr := Lean.mkConst `AutoStructs.Formula }
- varMap : Lean.Meta.KExprMap ℕ
Instances For
Equations
- Tactic.instInhabitedState = { default := { varMap := default, invMap := default } }
@[reducible, inline]
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Tactic.mkFinLit m n = Lean.Meta.mkAppOptM `OfNat.ofNat #[some (Lean.mkApp (Lean.mkConst `Fin) (Lean.mkNatLit m)), some (Lean.mkRawNatLit n), none]
Instances For
Equations
- Tactic.mkBitVecLit0 w = Lean.Meta.mkAppOptM `BitVec.zero #[some w]
Instances For
Equations
- Tactic.arrayExprExpr es type = Lean.mkApp2 (Lean.mkConst `List.toArray [Lean.levelZero]) type (Tactic.listExprExpr es.toList type)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Tactic.tacticBv_automata_inner = Lean.ParserDescr.node `Tactic.tacticBv_automata_inner 1024 (Lean.ParserDescr.nonReservedSymbol "bv_automata_inner" false)
Instances For
Equations
- Tactic.tacticBv_automata' = Lean.ParserDescr.node `Tactic.tacticBv_automata' 1024 (Lean.ParserDescr.nonReservedSymbol "bv_automata'" false)