PPL
0.12.1
|
A system of congruences. More...
#include <ppl.hh>
Inherits Parma_Polyhedra_Library::Dense_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 ![]() ![]() | |
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 &y) |
Assignment operator. | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . | |
bool | is_equal_to (const Congruence_System &y) const |
Returns true if and only if *this is exactly equal to y . | |
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 &y) |
Inserts in *this a copy of the congruences in y , 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 | m_swap (Congruence_System &y) |
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 (Congruence_System &x, Congruence_System &y) |
Swaps x with y . | |
std::ostream & | operator<< (std::ostream &s, const Congruence_System &cgs) |
void | swap (Congruence_System &x, Congruence_System &y) |
A system of congruences.
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);
cgs.insert((x + y %= 1) / 2);
x
and y
values is odd.x
axis: Congruence_System cgs; cgs.insert(x %= 0); cgs.insert((y %= 0) / 0);
|
inlineexplicit |
If c
represents the constraint , builds the singleton system containing only constraint
.
std::invalid_argument | Thrown if c is not an equality constraint. |
|
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 & | y | ) |
Inserts in *this
a copy of the congruences in y
, increasing the number of space dimensions if needed.
The inserted copies will be strongly normalized.
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. |
Turns the matrix
into the
matrix
where
is the
unit matrix of the form
. The matrix is expanded avoiding reallocation whenever possible.
|
related |
Output operator.
Writes true
if cgs
is empty. Otherwise, writes on s
the congruences of cgs
, all in one row and separated by ", ".
|
related |
Swaps x
with y
.
|
related |
|
related |