mathlib documentation

tactic.​omega.​eq_elim

tactic.​omega.​eq_elim

def omega.​symdiv  :
ℤ → ℤ → ℤ

Equations
def omega.​symmod  :
ℤ → ℤ → ℤ

Equations
theorem omega.​symmod_add_one_self {i : ℤ} :
0 < i → omega.symmod i (i + 1) = -1

theorem omega.​mul_symdiv_eq {i j : ℤ} :

theorem omega.​symmod_eq {i j : ℤ} :

def omega.​sgm  :
(ℕ → ℤ) → ℤ → list ℤ → ℕ → ℤ

(sgm v b as n) is the new value assigned to the nth variable after a single step of equality elimination using valuation v, term ⟨b, as⟩, and variable index n. If v satisfies the initial constraint set, then (v ⟨n ↦ sgm v b as n⟩) satisfies the new constraint set after equality elimination.

Equations
def omega.​rhs  :
ℕ → ℤ → list ℤ → omega.term

Equations
theorem omega.​rhs_correct_aux {v : ℕ → ℤ} {m : ℤ} {as : list ℤ} {k : ℕ} :
∃ (d : ℤ), m * d + omega.coeffs.val_between v (list.map (λ (x : ℤ), omega.symmod x m) as) 0 k = omega.coeffs.val_between v as 0 k

theorem omega.​rhs_correct {v : ℕ → ℤ} {b : ℤ} {as : list ℤ} (n : ℕ) :
0 < list.func.get n as → 0 = omega.term.val v (b, as) → v n = omega.term.val (omega.update n (omega.sgm v b as n) v) (omega.rhs n b as)

def omega.​sym_sym  :
ℤ → ℤ → ℤ

Equations

Equations
theorem omega.​coeffs_reduce_correct {v : ℕ → ℤ} {b : ℤ} {as : list ℤ} {n : ℕ} :
0 < list.func.get n as → 0 = omega.term.val v (b, as) → 0 = omega.term.val (omega.update n (omega.sgm v b as n) v) (omega.coeffs_reduce n b as)

Equations
theorem omega.​subst_correct {v : ℕ → ℤ} {b : ℤ} {as : list ℤ} {t : omega.term} {n : ℕ} :
0 < list.func.get n as → 0 = omega.term.val v (b, as) → omega.term.val v t = omega.term.val (omega.update n (omega.sgm v b as n) v) (omega.subst n (omega.rhs n b as) t)

inductive omega.​ee  :
Type

The type of equality elimination rules.

Apply a given sequence of equality elimination steps to a clause.

Equations
theorem omega.​sat_eq_elim {es : list omega.ee} {c : omega.clause} :
c.sat → (omega.eq_elim es c).sat

If the result of equality elimination is unsatisfiable, the original clause is unsatisfiable.