#include <ppl.hh>
Inherits Parma_Polyhedra_Library::Matrix.
Classes | |
| class | const_iterator |
| An iterator over a system of congruences. More... | |
Public Member Functions | |
| Congruence_System () | |
| Default constructor: builds an empty system of congruences. | |
| Congruence_System (const Congruence &cg) | |
Builds the singleton system containing only congruence cg. | |
| Congruence_System (const Constraint &c) | |
If c represents the constraint , builds the singleton system containing only constraint . | |
| Congruence_System (const Constraint_System &cs) | |
Builds a system containing copies of any equalities in cs. | |
| Congruence_System (const Congruence_System &cgs) | |
| Ordinary copy-constructor. | |
| ~Congruence_System () | |
| Destructor. | |
| Congruence_System & | operator= (const Congruence_System &cgs) |
| Assignment operator. | |
| dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this. | |
| bool | is_equal_to (const Congruence_System &cgs) const |
Returns true if and only if *this is exactly equal to cgs. | |
| bool | has_linear_equalities () const |
Returns true if and only if *this contains one or more linear equalities. | |
| void | clear () |
| Removes all the congruences and sets the space dimension to 0. | |
| void | insert (const Congruence &cg) |
Inserts in *this a copy of the congruence cg, increasing the number of space dimensions if needed. | |
| void | insert (const Constraint &c) |
Inserts in *this a copy of the equality constraint c, seen as a modulo 0 congruence, increasing the number of space dimensions if needed. | |
| void | insert (const Congruence_System &cgs) |
Inserts in *this a copy of the congruences in cgs, increasing the number of space dimensions if needed. | |
| void | recycling_insert (Congruence_System &cgs) |
Inserts into *this the congruences in cgs, increasing the number of space dimensions if needed. | |
| bool | empty () const |
Returns true if and only if *this has no congruences. | |
| const_iterator | begin () const |
Returns the const_iterator pointing to the first congruence, if this is not empty; otherwise, returns the past-the-end const_iterator. | |
| const_iterator | end () const |
| Returns the past-the-end const_iterator. | |
| bool | OK () const |
| Checks if all the invariants are satisfied. | |
| void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this. | |
| void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this. | |
| void | print () const |
Prints *this to std::cerr using operator<<. | |
| bool | ascii_load (std::istream &s) |
Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this accordingly. Returns true if successful, false otherwise. | |
| memory_size_type | total_memory_in_bytes () const |
Returns the total size in bytes of the memory occupied by *this. | |
| memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this. | |
| dimension_type | num_equalities () const |
| Returns the number of equalities. | |
| dimension_type | num_proper_congruences () const |
| Returns the number of proper congruences. | |
| void | swap (Congruence_System &cgs) |
Swaps *this with y. | |
| void | add_unit_rows_and_columns (dimension_type dims) |
Adds dims rows and dims columns of zeroes to the matrix, initializing the added rows as in the unit congruence system. | |
Static Public Member Functions | |
| static dimension_type | max_space_dimension () |
| Returns the maximum space dimension a Congruence_System can handle. | |
| static void | initialize () |
| Initializes the class. | |
| static void | finalize () |
| Finalizes the class. | |
| static const Congruence_System & | zero_dim_empty () |
| Returns the system containing only Congruence::zero_dim_false(). | |
Protected Member Functions | |
| bool | satisfies_all_congruences (const Grid_Generator &g) const |
Returns true if g satisfies all the congruences. | |
Related Functions | |
| (Note that these are not member functions.) | |
| std::ostream & | operator<< (std::ostream &s, const Congruence_System &cgs) |
| Output operator. | |
| void | swap (Parma_Polyhedra_Library::Congruence_System &x, Parma_Polyhedra_Library::Congruence_System &y) |
Specializes std::swap. | |
An object of the class Congruence_System is a system of congruences, i.e., a multiset of objects of the class Congruence. When inserting congruences in a system, space dimensions are automatically adjusted so that all the congruences in the system are defined on the same vector space.
x and y are defined as follows: Variable x(0); Variable y(1);
: Congruence_System cgs; cgs.insert(x %= 0); cgs.insert(y %= 0);
and
, respectively.
: cgs.insert((x + y %= 1) / 2);
x and y values is odd.
containing just the integral points on the x axis: Congruence_System cgs; cgs.insert(x %= 0); cgs.insert((y %= 0) / 0);
| Parma_Polyhedra_Library::Congruence_System::Congruence_System | ( | const Constraint & | c | ) | [inline, explicit] |
If c represents the constraint
, builds the singleton system containing only constraint
.
| std::invalid_argument | Thrown if c is not an equality constraint. |
| void Parma_Polyhedra_Library::Congruence_System::insert | ( | const Congruence & | cg | ) | [inline] |
Inserts in *this a copy of the congruence cg, increasing the number of space dimensions if needed.
The copy of cg will be strongly normalized after being inserted.
| void Parma_Polyhedra_Library::Congruence_System::insert | ( | const Constraint & | c | ) |
Inserts in *this a copy of the equality constraint c, seen as a modulo 0 congruence, increasing the number of space dimensions if needed.
The modulo 0 congruence will be strongly normalized after being inserted.
| std::invalid_argument | Thrown if c is a relational constraint. |
| void Parma_Polyhedra_Library::Congruence_System::insert | ( | const Congruence_System & | cgs | ) |
Inserts in *this a copy of the congruences in cgs, increasing the number of space dimensions if needed.
The inserted copies will be strongly normalized.
| void Parma_Polyhedra_Library::Congruence_System::add_unit_rows_and_columns | ( | dimension_type | dims | ) |
Adds dims rows and dims columns of zeroes to the matrix, initializing the added rows as in the unit congruence system.
| dims | The number of rows and columns to be added: must be strictly positive. |
matrix
into the
matrix
where
is the
unit matrix of the form
. The matrix is expanded avoiding reallocation whenever possible.
| std::ostream & operator<< | ( | std::ostream & | s, | |
| const Congruence_System & | cgs | |||
| ) | [related] |
Output operator.
Writes true if cgs is empty. Otherwise, writes on s the congruences of cgs, all in one row and separated by ", ".
| void swap | ( | Parma_Polyhedra_Library::Congruence_System & | x, | |
| Parma_Polyhedra_Library::Congruence_System & | y | |||
| ) | [related] |
Specializes std::swap.
1.5.7.1