- eq : omega.int.exprterm → omega.int.exprterm → omega.int.exprform
- le : omega.int.exprterm → omega.int.exprterm → omega.int.exprform
- not : omega.int.exprform → omega.int.exprform
- or : omega.int.exprform → omega.int.exprform → omega.int.exprform
- and : omega.int.exprform → omega.int.exprform → omega.int.exprform
Intermediate shadow syntax for LNA formulas that includes unreified exprs
- eq : omega.int.preterm → omega.int.preterm → omega.int.preform
- le : omega.int.preterm → omega.int.preterm → omega.int.preform
- not : omega.int.preform → omega.int.preform
- or : omega.int.preform → omega.int.preform → omega.int.preform
- and : omega.int.preform → omega.int.preform → omega.int.preform
Intermediate shadow syntax for LIA formulas that includes non-canonical terms
@[simp]
Evaluate a preform into prop using the valuation v.
Equations
- omega.int.preform.holds v (p.and q) = (omega.int.preform.holds v p ∧ omega.int.preform.holds v q)
- omega.int.preform.holds v (p.or q) = (omega.int.preform.holds v p ∨ omega.int.preform.holds v q)
- omega.int.preform.holds v p.not = ¬omega.int.preform.holds v p
- omega.int.preform.holds v (omega.int.preform.le t s) = (omega.int.preterm.val v t ≤ omega.int.preterm.val v s)
- omega.int.preform.holds v (omega.int.preform.eq t s) = (omega.int.preterm.val v t = omega.int.preterm.val v s)
@[simp]
univ_close p n := p closed by prepending n universal quantifiers
Equations
- omega.int.univ_close p v (k + 1) = ∀ (i : ℤ), omega.int.univ_close p (omega.update_zero i v) k
- omega.int.univ_close p v 0 = omega.int.preform.holds v p
Fresh de Brujin index not used by any variable in argument
Equations
- (p.and q).fresh_index = max p.fresh_index q.fresh_index
- (p.or q).fresh_index = max p.fresh_index q.fresh_index
- p.not.fresh_index = p.fresh_index
- (omega.int.preform.le t s).fresh_index = max t.fresh_index s.fresh_index
- (omega.int.preform.eq t s).fresh_index = max t.fresh_index s.fresh_index
All valuations satisfy argument
Equations
- p.valid = ∀ (v : ℕ → ℤ), omega.int.preform.holds v p
There exists some valuation that satisfies argument
Equations
- p.sat = ∃ (v : ℕ → ℤ), omega.int.preform.holds v p
implies p q := under any valuation, q holds if p holds
Equations
- p.implies q = ∀ (v : ℕ → ℤ), omega.int.preform.holds v p → omega.int.preform.holds v q
equiv p q := under any valuation, p holds iff q holds
Equations
- p.equiv q = ∀ (v : ℕ → ℤ), omega.int.preform.holds v p ↔ omega.int.preform.holds v q
There does not exist any valuation that satisfies argument
@[instance]
Equations
theorem
omega.int.univ_close_of_valid
{p : omega.int.preform}
{m : ℕ}
{v : ℕ → ℤ} :
p.valid → omega.int.univ_close p v m
Tactic for setting up proof by induction over preforms.