lia
and
nia
tactics to MathComp.
zify
tactic, which provides an extensible preprocessing facility for the lia
tactic.
ring
,
field
,
lra
,
nra
, and
psatz
tactics for MathComp.
This tactic provides a certifying decision procedure for quantifier-free linear integer arithmetic.
The zify and lia tactics support some bool operators.
The lia tactic performs normalization with respect to (semi)ring axioms, and can actually solve some non-linear problems.
The Mczify library also pre-processes Euclidean division and the divisibility relation.
The nia tactic is an extension of the lia tactic that allows for some non-linear reasoning by propagating positivity and negativity conditions through multiplication and exponentiation.
The zify and lia tactics do not recognize user-defined operators out of the box:
Declare an instance of type UnOp triple, and register it through the Add Zify UnOp command:
Then, the zify tactic starts recognizing the new operator triple:
This tactic provides a certified decision procedure for polynomial equations over commutative rings.
It works for any abstract or concrete commutative rings:
The ring tactic can prove polynomial equations modulo monomial equalities:
The Algebra Tactics library implements preprocessors to push down homomorphism applications:
This tactic provides a certified decision procedure for rational equations over fields.
For a partially ordered field (numFieldType), non-nullity conditions of the form n%:R != 0 and n%:~R != 0 where n is a non-zero constant are trivial, and thus are not generated.
As in the ring tactic, the field tactic supports homomorphisms and reasoning modulo monomial equalities.
NB: The support for the lra and nra tactics in Algebra Tactics is experimental for the moment.
For realFieldTypes, division and multiplicative inverse are avairable.
These tactics work for any abstract or concrete realDomainType or realFieldType.
We first prove the following reflection lemma (but do not try to understand the formal statement and proof).
Let us apply the above lemma to the example below.
The only missing piece in turning this methodology into a fully-automated tactic is how to obtain the variable map and the polynomial expressions from the goal, which is called reification.
This paper explains the implementation of the ring tactic.
This paper explains the implementation of the lia, nia, lra, nra, and psatz tactics.
This paper explains:
A better understanding of the principles of MathComp leads us to better design and implementation of tools for MathComp. In my opinion, the principles of MathComp are that: