with Standard_Integer_Vectors; use Standard_Integer_Vectors; with Standard_Integer_Matrices; use Standard_Integer_Matrices; package Standard_Integer_Linear_Equalities is -- DESCRIPTION : -- This package provides for incrementally solving systems of -- linear equalities w.r.t. linear inequalities. procedure Triangulate ( l : in natural; m : in matrix; first,last : in natural; ineq : in out matrix ); procedure Triangulate ( l : in natural; m : in matrix; index : in natural; ineq : in out matrix ); -- DESCRIPTION : -- Updates a matrix of inequalities, after elimination of the lth unknown. -- ON ENTRY : -- l current unknown to be eliminated; -- m m(1..l,m'range(2)) is upper triangular; -- first indicates start in range of ineq to be updated; -- last indicates end in range of ineq to be updated; -- index indicates the inequality to be updated; -- ineq in ineq(first..last) or in ineq(index), -- the first l-1 unknowns are already eliminated. -- ON RETURN : -- ineq the updated inequalities. procedure Triangulate ( index,start : in natural; ineq : in out matrix ); -- DESCRIPTION : -- Updates the inequality ineq(index), i.e. tries to eliminate as -- many unknowns in ineq(index) as possible, by making positive -- combinations with inequalities in ineq(ineq'first..index-1). -- ON ENTRY : -- index current row in ineq that has to be updated; -- start indicates in which column the first nonzero elements -- have to be found; -- ineq matrix of inequalities of type <.,.> >= 0. -- ON RETURN : -- ineq the updated matrix of inequalities. end Standard_Integer_Linear_Equalities;