Go to the previous, next section.

Linear Inequalities with Names

Note: Due to interdependences between the suifmath and dependence class structures, the implementation of the linear inequalities with variable names was moved to the dependence library in the current release.

When using linear inequalities, variables and constants in the systems have names associated with them. Even though it is easy to keep tab of the names of a single system, when using and combining multiple inequalities this task becomes much more difficiult. The linear inequalities with names were created to simplify this process.

A linear inequality with names has a system of linear inequalities (See section Linear Inequality Library). In addition, it keeps track of the names of the variables used in the inequality. In the matrix notation used in the previous chapter, each column has a name associated with it. The only exception is the first column, which is the constant term. When performing operations with two or more systems, the library will first align the systems. That is, the systems can be combined and the identical names of both systems will be matched. In the matrix notation, after aligning two systems, the n-th column of both matrices will have the same name associated with it. If one system uses a name that is not used in the other system, a column of zeros will be added to that system. The only variables that do not match are the auxiliary variables since in each system auxiliary variables are unique.

An expression tree representing a linear affine function can be translated to and from a system of linear inequalities with names. Loop bounds and array access functions can also be directly mapped.

Before implementing any algorithms that use named linear inequalities, the linear inequality calculator LIC can be used (in the rapid prototyping mode) to prototype and debug the algorithm in a very quick and easy manner.

A linear inequality with names is defined by the class named_lin_ineq (section Named Linear Inequality) which contains the names and the system of inequalities. The names are defined by the class name_table (section Name Table). Names are represented by a list of individual name entries. Each entry is defined by the class name_table_entry (section Name Table Entry).

Go to the previous, next section.