If we try to tell briefly what the omega test is, it is a system for manipulating sets of affine constraints over integer variable. The omega Test determines whether there is an integer solution to an arbitrary set of linear equalities and inequalities.
The omega test initially used in array data dependency testing [1]. Data
dependency problem is equivalent to deciding whether there exits an
integer solution to a set of linear equalities and inequalities.
An assignment to array element
in two nested
loops (outer loop index i and inner loop index j)
in code segment is an example of data dependency, it can be
formulated as an integer programming by putting constraints on the loop
variables (inequalities) and assignments (equalities).
the omega test try to give yes/no answer to question ``is there an
integer solution that satisfy those equalities and inequalities'' [1].
This property of the omega test is suitable for use in production
compilers.
Also, in the later researches the omega test was extended to be able to
project integer programming problem onto subset of variables other than
deciding them.
By this extension, the omega test was able to used directly in deciding the
validity of program transformation, calculating direction and distance
vector of data dependencies.
Before give some details of usage of the omega test, I want to give brief
information about some capabilities of it.