# mathlibdocumentation

tactic.omega.find_ees

structure omega.ee_state  :
Type
• eqs :
• les :
• ees :

The state of equality elimination proof search. eqs is the list of equality constraints, and each t ∈ eqs represents the constraint 0 = t. Similarly, les is the list of inequality constraints, and each t ∈ eqs represents the constraint 0 < t. ees is the sequence of equality elimination steps that have been used so far to obtain the current set of constraints. The list ees grows over time until eqs becomes empty.

@[instance]

meta def omega.eqelim  :
Type → Type

meta def omega.abort {α : Type} :

meta def omega.get_eqs  :

Get the current list of equality constraints.

meta def omega.get_les  :

Get the current list of inequality constraints.

meta def omega.get_ees  :

Get the current sequence of equality elimiation steps.

meta def omega.set_eqs  :

Update the list of equality constraints.

meta def omega.set_les  :

Update the list of inequality constraints.

meta def omega.set_ees  :

Update the sequence of equality elimiation steps.

Add a new step to the sequence of equality elimination steps.

Return the first equality constraint in the current list of equality constraints. The returned constraint is 'popped' and no longer available in the state.

meta def omega.run {α : Type} :

meta def omega.ee_commit {α β : Type} :
(α →

If t1 succeeds and returns a value, 'commit' to that choice and run t3 with the returned value as argument. Do not backtrack to try t2 even if t3 fails. If t1 fails outright, run t2.

def omega.gcd  :

GCD of all elements of the list.

Equations
meta def omega.get_gcd  :

GCD of all coefficients in a term.

meta def omega.factor  :

Divide a term by an integer if the integer divides the constant component of the term. It is assumed that the integer also divides all coefficients of the term.

If list has a nonzero element, return the minimum element (by absolute value) with its index. Otherwise, return none.

meta def omega.find_min_coeff  :

Find and return the smallest coefficient (by absolute value) in a term, along with the coefficient's variable index and the term itself. If the coefficient is negative, negate both the coefficient and the term before returning them.

meta def omega.elim_eq  :

Find an appropriate equality elimination step for the current state and apply it.

meta def omega.elim_eqs  :

Find and return the sequence of steps for eliminating all equality constraints in the current state.

meta def omega.find_ees  :

Given a linear constrain clause, return a list of steps for eliminating its equality constraints.