- 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
Instances for omega.int.preform
- omega.int.preform.has_sizeof_inst
- omega.int.preform.has_reflect
- omega.int.preform.inhabited
- omega.int.preform.has_repr
- omega.int.preform.has_to_format
@[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 = linear_order.max p.fresh_index q.fresh_index
- (p.or q).fresh_index = linear_order.max p.fresh_index q.fresh_index
- p.not.fresh_index = p.fresh_index
- (omega.int.preform.le t s).fresh_index = linear_order.max t.fresh_index s.fresh_index
- (omega.int.preform.eq t s).fresh_index = linear_order.max t.fresh_index s.fresh_index
All valuations satisfy argument
There exists some valuation that satisfies argument
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
@[protected, instance]
Equations
theorem
omega.int.univ_close_of_valid
{p : omega.int.preform}
{m : ℕ}
{v : ℕ → ℤ} :
p.valid → omega.int.univ_close p v m