StaticInterpreter.NormalizeSourceOur basic variables.
A unitary monomial.
They are unitary in the sense that they do not have any factors: 3 \times X^2 is not unitary, while x^2 is.
For example: X^2 + Y^4 represented by X \to 2, Y \to 4 , and 1 is represented by the empty map.
A polynomial.
For example, X^2 - X + 4 is represented by X^2 \to 1, X \to -1, 1 \to 4
A constraint on a numerical value.
A conjunctive logical formulae with polynomials.
For example, X^2 \leq 0 is represented with X^2 \to \leq 0 .
Case disjunctions.
Constrained polynomials.
This is a branched tree of polynomials.
val cross_num :
(ctnts * 'a) disjunction ->
(ctnts * 'b) disjunction ->
('a -> 'b -> 'c) ->
(ctnts * 'c) disjunctionval disjunction_cross :
('a -> 'b -> 'c) ->
'a disjunction ->
'b disjunction ->
'c disjunctionval equal_mod_branches :
(ctnts * polynomial) disjunction ->
(ctnts * polynomial) disjunction ->
bool