RaMath
Ramath is a Java package for mathematics with BigRational numbers, continued fractions, vector and matrix operations, and for the symbolic manipulation of Polynomials and diophantine equations. For the latter, the package contains Solvers which expand the variables systematically by building a tree of possible values.
Basic Reasons
Class BaseReason checks the expanded RelationSet for several basic properties. The checks are implemented in method evaluate of Polynomial, and they are mainly concerned with the constant term c and the remaining set of variable terms V in the polynomial.
c = 0
This node is a - possibly trivial - solution.
c != 0 and V = 0
Such a node is impossible.
c != 0 and V != 0
Here we investigate the greatest common divisor varGCD of the constants of all terms with variables. The node is impossible if varGCD > 1 and it does not divide c.