PPL
1.2
|
A system of constraints. More...
#include <Constraint_System_defs.hh>
Public Types | |
typedef Constraint | row_type |
typedef Constraint_System_const_iterator | const_iterator |
Public Member Functions | |
Constraint_System (Representation r=default_representation) | |
Default constructor: builds an empty system of constraints. More... | |
Constraint_System (const Constraint &c, Representation r=default_representation) | |
Builds the singleton system containing only constraint c . More... | |
Constraint_System (const Congruence_System &cgs, Representation r=default_representation) | |
Builds a system containing copies of any equalities in cgs . More... | |
Constraint_System (const Constraint_System &cs) | |
Ordinary copy constructor. More... | |
Constraint_System (const Constraint_System &cs, Representation r) | |
Copy constructor with specified representation. More... | |
~Constraint_System () | |
Destructor. More... | |
Constraint_System & | operator= (const Constraint_System &y) |
Assignment operator. More... | |
Representation | representation () const |
Returns the current representation of *this. More... | |
void | set_representation (Representation r) |
Converts *this to the specified representation. More... | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . More... | |
void | set_space_dimension (dimension_type space_dim) |
Sets the space dimension of the rows in the system to space_dim . More... | |
bool | has_equalities () const |
Returns true if and only if *this contains one or more equality constraints. More... | |
bool | has_strict_inequalities () const |
Returns true if and only if *this contains one or more strict inequality constraints. More... | |
void | insert (const Constraint &c) |
Inserts in *this a copy of the constraint c , increasing the number of space dimensions if needed. More... | |
bool | empty () const |
Returns true if and only if *this has no constraints. More... | |
void | clear () |
Removes all the constraints from the constraint system and sets its space dimension to 0. More... | |
const_iterator | begin () const |
Returns the const_iterator pointing to the first constraint, if *this is not empty; otherwise, returns the past-the-end const_iterator. More... | |
const_iterator | end () const |
Returns the past-the-end const_iterator. More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this . More... | |
void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this . More... | |
void | print () const |
Prints *this to std::cerr using operator<< . More... | |
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. More... | |
memory_size_type | total_memory_in_bytes () const |
Returns the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . More... | |
void | m_swap (Constraint_System &y) |
Swaps *this with y . More... | |
Static Public Member Functions | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Constraint_System can handle. More... | |
static void | initialize () |
Initializes the class. More... | |
static void | finalize () |
Finalizes the class. More... | |
static const Constraint_System & | zero_dim_empty () |
Returns the singleton system containing only Constraint::zero_dim_false(). More... | |
Static Public Attributes | |
static const Representation | default_representation = SPARSE |
Private Member Functions | |
Constraint_System (Topology topol, Representation r=default_representation) | |
Builds an empty system of constraints having the specified topology. More... | |
Constraint_System (Topology topol, dimension_type space_dim, Representation r=default_representation) | |
Builds a system of constraints on a space_dim dimensional space. If topol is NOT_NECESSARILY_CLOSED the ![]() | |
dimension_type | num_equalities () const |
Returns the number of equality constraints. More... | |
dimension_type | num_inequalities () const |
Returns the number of inequality constraints. More... | |
void | simplify () |
Applies Gaussian elimination and back-substitution so as to provide a partial simplification of the system of constraints. More... | |
bool | adjust_topology_and_space_dimension (Topology new_topology, dimension_type new_space_dim) |
Adjusts *this so that it matches new_topology and new_space_dim (adding or removing columns if needed). Returns false if and only if topol is equal to NECESSARILY_CLOSED and *this contains strict inequalities. More... | |
const Constraint & | operator[] (dimension_type k) const |
Returns a constant reference to the k- th constraint of the system. More... | |
bool | satisfies_all_constraints (const Generator &g) const |
Returns true if g satisfies all the constraints. More... | |
void | affine_preimage (Variable v, const Linear_Expression &expr, Coefficient_traits::const_reference denominator) |
Substitutes a given column of coefficients by a given affine expression. More... | |
void | insert_pending (const Constraint &c) |
Inserts in *this a copy of the constraint c , increasing the number of space dimensions if needed. It is a pending constraint. More... | |
void | add_low_level_constraints () |
Adds low-level constraints to the constraint system. More... | |
Topology | topology () const |
Returns the system topology. More... | |
dimension_type | num_rows () const |
bool | is_necessarily_closed () const |
Returns true if and only if the system topology is NECESSARILY_CLOSED . More... | |
dimension_type | num_pending_rows () const |
Returns the number of rows that are in the pending part of the system. More... | |
dimension_type | first_pending_row () const |
Returns the index of the first pending row. More... | |
bool | is_sorted () const |
Returns the value of the sortedness flag. More... | |
void | unset_pending_rows () |
Sets the index to indicate that the system has no pending rows. More... | |
void | set_index_first_pending_row (dimension_type i) |
Sets the index of the first pending row to i . More... | |
void | set_sorted (bool b) |
Sets the sortedness flag of the system to b . More... | |
void | remove_row (dimension_type i, bool keep_sorted=false) |
Makes the system shrink by removing its i-th row. More... | |
void | remove_rows (const std::vector< dimension_type > &indexes) |
void | remove_rows (dimension_type first, dimension_type last, bool keep_sorted=false) |
Makes the system shrink by removing the rows in [first,last). More... | |
void | remove_trailing_rows (dimension_type n) |
Makes the system shrink by removing its n trailing rows. More... | |
void | remove_space_dimensions (const Variables_Set &vars) |
Removes all the specified dimensions from the constraint system. More... | |
void | shift_space_dimensions (Variable v, dimension_type n) |
void | permute_space_dimensions (const std::vector< Variable > &cycle) |
Permutes the space dimensions of the matrix. More... | |
void | swap_space_dimensions (Variable v1, Variable v2) |
Swaps the coefficients of the variables v1 and v2 . More... | |
bool | has_no_rows () const |
void | strong_normalize () |
Strongly normalizes the system. More... | |
void | sort_rows () |
Sorts the non-pending rows (in growing order) and eliminates duplicated ones. More... | |
void | insert_pending (Constraint &r, Recycle_Input) |
Adds the given row to the pending part of the system, stealing its contents and automatically resizing the system or the row, if needed. More... | |
void | insert_pending (Constraint_System &r, Recycle_Input) |
void | insert (Constraint &r, Recycle_Input) |
Adds r to the system, stealing its contents and automatically resizing the system or the row, if needed. More... | |
void | insert (Constraint_System &r, Recycle_Input) |
Adds to *this a the rows of `y', stealing them from `y'. More... | |
void | insert_pending (const Constraint_System &r) |
Adds a copy of the rows of `y' to the pending part of `*this'. More... | |
void | merge_rows_assign (const Constraint_System &y) |
Assigns to *this the result of merging its rows with those of y , obtaining a sorted system. More... | |
void | insert (const Constraint_System &y) |
Adds to *this a copy of the rows of y . More... | |
void | mark_as_necessarily_closed () |
Marks the epsilon dimension as a standard dimension. More... | |
void | mark_as_not_necessarily_closed () |
Marks the last dimension as the epsilon dimension. More... | |
dimension_type | gauss (dimension_type n_lines_or_equalities) |
Minimizes the subsystem of equations contained in *this . More... | |
void | back_substitute (dimension_type n_lines_or_equalities) |
Back-substitutes the coefficients to reduce the complexity of the system. More... | |
void | assign_with_pending (const Constraint_System &y) |
Full assignment operator: pending rows are copied as pending. More... | |
void | sort_pending_and_remove_duplicates () |
Sorts the pending rows and eliminates those that also occur in the non-pending part of the system. More... | |
void | sort_and_remove_with_sat (Bit_Matrix &sat) |
Sorts the system, removing duplicates, keeping the saturation matrix consistent. More... | |
bool | check_sorted () const |
Returns true if and only if *this is sorted, without checking for duplicates. More... | |
dimension_type | num_lines_or_equalities () const |
Returns the number of rows in the system that represent either lines or equalities. More... | |
void | add_universe_rows_and_space_dimensions (dimension_type n) |
Adds n rows and space dimensions to the system. More... | |
Private Attributes | |
Linear_System< Constraint > | sys |
Static Private Attributes | |
static const Constraint_System * | zero_dim_empty_p = 0 |
Holds (between class initialization and finalization) a pointer to the singleton system containing only Constraint::zero_dim_false(). More... | |
Friends | |
class | Constraint_System_const_iterator |
class | Polyhedron |
class | Termination_Helpers |
bool | operator== (const Constraint_System &x, const Constraint_System &y) |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &s, const Constraint_System &cs) |
std::ostream & | operator<< (std::ostream &s, const Constraint_System &cs) |
Output operator. More... | |
bool | operator== (const Constraint_System &x, const Constraint_System &y) |
Returns true if and only if x and y are identical. More... | |
bool | operator!= (const Constraint_System &x, const Constraint_System &y) |
Returns true if and only if x and y are different. More... | |
void | swap (Constraint_System &x, Constraint_System &y) |
void | swap (Constraint_System &x, Constraint_System &y) |
dimension_type | num_constraints (const Constraint_System &cs) |
A system of constraints.
An object of the class Constraint_System is a system of constraints, i.e., a multiset of objects of the class Constraint. When inserting constraints in a system, space dimensions are automatically adjusted so that all the constraints in the system are defined on the same vector space.
x
and y
are defined as follows: Definition at line 137 of file Constraint_System_defs.hh.
Definition at line 214 of file Constraint_System_defs.hh.
Definition at line 139 of file Constraint_System_defs.hh.
|
inlineexplicit |
Default constructor: builds an empty system of constraints.
Definition at line 32 of file Constraint_System_inlines.hh.
|
inlineexplicit |
Builds the singleton system containing only constraint c
.
Definition at line 37 of file Constraint_System_inlines.hh.
References sys.
|
explicit |
Builds a system containing copies of any equalities in cgs
.
Definition at line 40 of file Constraint_System.cc.
References Parma_Polyhedra_Library::Congruence_System::begin(), Parma_Polyhedra_Library::Congruence_System::end(), insert(), and OK().
|
inline |
Ordinary copy constructor.
Definition at line 43 of file Constraint_System_inlines.hh.
|
inline |
Copy constructor with specified representation.
Definition at line 48 of file Constraint_System_inlines.hh.
|
inline |
|
inlineexplicitprivate |
Builds an empty system of constraints having the specified topology.
Definition at line 54 of file Constraint_System_inlines.hh.
|
inlineprivate |
Builds a system of constraints on a space_dim
dimensional space. If topol
is NOT_NECESSARILY_CLOSED
the dimension is added.
Definition at line 59 of file Constraint_System_inlines.hh.
|
inlineprivate |
Adds low-level constraints to the constraint system.
Definition at line 198 of file Constraint_System_inlines.hh.
References Parma_Polyhedra_Library::Constraint::epsilon_geq_zero(), Parma_Polyhedra_Library::Constraint::epsilon_leq_one(), insert(), sys, and Parma_Polyhedra_Library::Constraint::zero_dim_positivity().
Referenced by Parma_Polyhedra_Library::Polyhedron::Polyhedron().
|
inlineprivate |
Adds n
rows and space dimensions to the system.
n | The number of rows and space dimensions to be added: must be strictly positive. |
Turns the system into the system
such that
, where
is the specular image of the
identity matrix.
Definition at line 406 of file Constraint_System_inlines.hh.
References sys.
|
private |
Adjusts *this
so that it matches new_topology
and new_space_dim
(adding or removing columns if needed). Returns false
if and only if topol
is equal to NECESSARILY_CLOSED
and *this
contains strict inequalities.
Definition at line 55 of file Constraint_System.cc.
References Parma_Polyhedra_Library::NECESSARILY_CLOSED, and Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Polyhedron::constraints(), and Parma_Polyhedra_Library::Polyhedron::Polyhedron().
|
private |
Substitutes a given column of coefficients by a given affine expression.
v | The variable to which the affine transformation is substituted. |
expr | The numerator of the affine transformation: ![]() |
denominator | The denominator of the affine transformation. |
We want to allow affine transformations (see Section Images and Preimages of Affine Transfer Relations) having any rational coefficients. Since the coefficients of the constraints are integers we must also provide an integer denominator
that will be used as denominator of the affine transformation. The denominator is required to be a positive integer.
The affine transformation substitutes the matrix of constraints by a new matrix whose elements are built from the old one
as follows:
expr
is a constant parameter and unaltered by this computation.
Definition at line 327 of file Constraint_System.cc.
References c, Parma_Polyhedra_Library::Constraint::coefficient(), Parma_Polyhedra_Library::Linear_Expression::coefficient(), Parma_Polyhedra_Library::Coefficient_zero(), Parma_Polyhedra_Library::Constraint::expr, Parma_Polyhedra_Library::Linear_Expression::linear_combine(), Parma_Polyhedra_Library::Constraint::OK(), Parma_Polyhedra_Library::Linear_Expression::set_coefficient(), Parma_Polyhedra_Library::Variable::space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), and Parma_Polyhedra_Library::Constraint::strong_normalize().
void Parma_Polyhedra_Library::Constraint_System::ascii_dump | ( | std::ostream & | s | ) | const |
Writes to s
an ASCII representation of *this
.
Definition at line 367 of file Constraint_System.cc.
void Parma_Polyhedra_Library::Constraint_System::ascii_dump | ( | ) | const |
Writes to std::cerr
an ASCII representation of *this
.
Referenced by Parma_Polyhedra_Library::PIP_Tree_Node::ascii_dump(), and Parma_Polyhedra_Library::Polyhedron::OK().
bool Parma_Polyhedra_Library::Constraint_System::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.
Definition at line 374 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::PIP_Tree_Node::ascii_load().
|
inlineprivate |
Full assignment operator: pending rows are copied as pending.
Definition at line 381 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::Polyhedron().
|
inlineprivate |
Back-substitutes the coefficients to reduce the complexity of the system.
Takes an upper triangular system having n_lines_or_equalities
rows. For each row, starting from the one having the minimum number of coefficients different from zero, computes the expression of an element as a function of the remaining ones and then substitutes this expression in all the other rows.
Definition at line 376 of file Constraint_System_inlines.hh.
References sys.
|
inline |
Returns the const_iterator pointing to the first constraint, if *this
is not empty; otherwise, returns the past-the-end const_iterator.
Definition at line 180 of file Constraint_System_inlines.hh.
References Parma_Polyhedra_Library::Constraint_System_const_iterator::skip_forward(), and sys.
Referenced by Parma_Polyhedra_Library::MIP_Problem::add_constraints(), Parma_Polyhedra_Library::PIP_Problem::add_constraints(), Parma_Polyhedra_Library::BD_Shape< T >::add_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::add_constraints(), Parma_Polyhedra_Library::Grid::add_constraints(), Parma_Polyhedra_Library::Box< ITV >::add_constraints_no_check(), Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Pointset_Powerset< PSET >::affine_dimension(), Parma_Polyhedra_Library::Polyhedron::affine_dimension(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::Termination_Helpers::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::BD_Shape< T >::BFT00_upper_bound_assign_if_exact(), Parma_Polyhedra_Library::BHRZ03_Certificate::BHRZ03_Certificate(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::C_Polyhedron::C_Polyhedron(), Parma_Polyhedra_Library::BHRZ03_Certificate::compare(), Parma_Polyhedra_Library::H79_Certificate::compare(), Parma_Polyhedra_Library::Congruence_System::Congruence_System(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::constraints(), Parma_Polyhedra_Library::Polyhedron::contains_integer_point(), Parma_Polyhedra_Library::Octagonal_Shape< T >::difference_assign(), Parma_Polyhedra_Library::BD_Shape< T >::difference_assign(), empty(), Parma_Polyhedra_Library::Polyhedron::expand_space_dimension(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_systems_MS(), Parma_Polyhedra_Library::Box< ITV >::get_limiting_box(), Parma_Polyhedra_Library::Octagonal_Shape< T >::get_limiting_octagon(), Parma_Polyhedra_Library::BD_Shape< T >::get_limiting_shape(), Parma_Polyhedra_Library::Grid::Grid(), Parma_Polyhedra_Library::H79_Certificate::H79_Certificate(), Parma_Polyhedra_Library::Pointset_Powerset< PSET >::linear_partition(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::minimized_constraints(), Parma_Polyhedra_Library::MIP_Problem::MIP_Problem(), num_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::PIP_Tree_Node::OK(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), operator<<(), Parma_Polyhedra_Library::Polyhedron::poly_difference_assign(), Parma_Polyhedra_Library::PIP_Tree_Node::print_tree(), Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >::product_reduce(), Parma_Polyhedra_Library::Box< ITV >::propagate_constraints_no_check(), Parma_Polyhedra_Library::Box< ITV >::refine_no_check(), Parma_Polyhedra_Library::Polyhedron::refine_with_constraints(), Parma_Polyhedra_Library::BD_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Grid::refine_with_constraints(), Parma_Polyhedra_Library::PIP_Solution_Node::solve(), Parma_Polyhedra_Library::PIP_Decision_Node::solve(), Parma_Polyhedra_Library::Implementation::wrap_assign(), Parma_Polyhedra_Library::Box< ITV >::wrap_assign(), and Parma_Polyhedra_Library::Implementation::wrap_assign_ind().
|
inlineprivate |
Returns true
if and only if *this
is sorted, without checking for duplicates.
Definition at line 396 of file Constraint_System_inlines.hh.
References sys.
|
inline |
Removes all the constraints from the constraint system and sets its space dimension to 0.
Definition at line 107 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Polyhedron::concatenate_assign(), Parma_Polyhedra_Library::Polyhedron::map_space_dimensions(), and Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >::product_reduce().
|
inline |
Returns true
if and only if *this
has no constraints.
Definition at line 193 of file Constraint_System_inlines.hh.
References begin(), and end().
Referenced by Parma_Polyhedra_Library::BD_Shape< T >::BFT00_upper_bound_assign_if_exact(), Parma_Polyhedra_Library::PIP_Tree_Node::print_tree(), Parma_Polyhedra_Library::PIP_Solution_Node::print_tree(), Parma_Polyhedra_Library::PIP_Solution_Node::solve(), and Parma_Polyhedra_Library::PIP_Decision_Node::solve().
|
inline |
Returns the past-the-end const_iterator.
Definition at line 187 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::MIP_Problem::add_constraints(), Parma_Polyhedra_Library::PIP_Problem::add_constraints(), Parma_Polyhedra_Library::BD_Shape< T >::add_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::add_constraints(), Parma_Polyhedra_Library::Grid::add_constraints(), Parma_Polyhedra_Library::Box< ITV >::add_constraints_no_check(), Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Pointset_Powerset< PSET >::affine_dimension(), Parma_Polyhedra_Library::Polyhedron::affine_dimension(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::Termination_Helpers::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::BD_Shape< T >::BFT00_upper_bound_assign_if_exact(), Parma_Polyhedra_Library::BHRZ03_Certificate::BHRZ03_Certificate(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::C_Polyhedron::C_Polyhedron(), Parma_Polyhedra_Library::BHRZ03_Certificate::compare(), Parma_Polyhedra_Library::H79_Certificate::compare(), Parma_Polyhedra_Library::Congruence_System::Congruence_System(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::constraints(), Parma_Polyhedra_Library::Polyhedron::contains_integer_point(), Parma_Polyhedra_Library::Octagonal_Shape< T >::difference_assign(), Parma_Polyhedra_Library::BD_Shape< T >::difference_assign(), empty(), Parma_Polyhedra_Library::Polyhedron::expand_space_dimension(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_systems_MS(), Parma_Polyhedra_Library::Box< ITV >::get_limiting_box(), Parma_Polyhedra_Library::Octagonal_Shape< T >::get_limiting_octagon(), Parma_Polyhedra_Library::BD_Shape< T >::get_limiting_shape(), Parma_Polyhedra_Library::Grid::Grid(), Parma_Polyhedra_Library::H79_Certificate::H79_Certificate(), Parma_Polyhedra_Library::Pointset_Powerset< PSET >::linear_partition(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::minimized_constraints(), Parma_Polyhedra_Library::MIP_Problem::MIP_Problem(), num_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::PIP_Tree_Node::OK(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), operator<<(), Parma_Polyhedra_Library::Polyhedron::poly_difference_assign(), Parma_Polyhedra_Library::PIP_Tree_Node::print_tree(), Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >::product_reduce(), Parma_Polyhedra_Library::Box< ITV >::propagate_constraints_no_check(), Parma_Polyhedra_Library::Box< ITV >::refine_no_check(), Parma_Polyhedra_Library::Polyhedron::refine_with_constraints(), Parma_Polyhedra_Library::BD_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Grid::refine_with_constraints(), Parma_Polyhedra_Library::PIP_Solution_Node::solve(), Parma_Polyhedra_Library::PIP_Decision_Node::solve(), Parma_Polyhedra_Library::Implementation::wrap_assign(), Parma_Polyhedra_Library::Box< ITV >::wrap_assign(), and Parma_Polyhedra_Library::Implementation::wrap_assign_ind().
|
inline |
Returns the size in bytes of the memory managed by *this
.
Definition at line 216 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::PIP_Tree_Node::external_memory_in_bytes(), and total_memory_in_bytes().
|
static |
Finalizes the class.
Definition at line 393 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::Init::~Init().
|
inlineprivate |
Returns the index of the first pending row.
Definition at line 251 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Minimizes the subsystem of equations contained in *this
.
This method works only on the equalities of the system: the system is required to be partially sorted, so that all the equalities are grouped at its top; it is assumed that the number of equalities is exactly n_lines_or_equalities
. The method finds a minimal system for the equalities and returns its rank, i.e., the number of linearly independent equalities. The result is an upper triangular subsystem of equalities: for each equality, the pivot is chosen starting from the right-most columns.
Definition at line 371 of file Constraint_System_inlines.hh.
References sys.
bool Parma_Polyhedra_Library::Constraint_System::has_equalities | ( | ) | const |
Returns true
if and only if *this
contains one or more equality constraints.
Definition at line 101 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::Implementation::Termination::assign_all_inequalities_approximation().
|
inlineprivate |
Definition at line 321 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_widening_assign(), Parma_Polyhedra_Library::Polyhedron::H79_widening_assign(), and Parma_Polyhedra_Library::Polyhedron::refine_with_constraints().
bool Parma_Polyhedra_Library::Constraint_System::has_strict_inequalities | ( | ) | const |
Returns true
if and only if *this
contains one or more strict inequality constraints.
Definition at line 112 of file Constraint_System.cc.
References c, Parma_Polyhedra_Library::Constraint::epsilon_coefficient(), and Parma_Polyhedra_Library::Constraint::is_tautological().
Referenced by Parma_Polyhedra_Library::MIP_Problem::add_constraints(), Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Implementation::Termination::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::Octagonal_Shape< T >::limited_BHMZ05_extrapolation_assign(), Parma_Polyhedra_Library::BD_Shape< T >::limited_BHMZ05_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_BHRZ03_extrapolation_assign(), Parma_Polyhedra_Library::Octagonal_Shape< T >::limited_CC76_extrapolation_assign(), Parma_Polyhedra_Library::BD_Shape< T >::limited_CC76_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_H79_extrapolation_assign(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::minimized_constraints(), Parma_Polyhedra_Library::MIP_Problem::MIP_Problem(), and Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape().
|
static |
Initializes the class.
Definition at line 386 of file Constraint_System.cc.
References Parma_Polyhedra_Library::Constraint::zero_dim_false().
Referenced by Parma_Polyhedra_Library::Init::Init().
void Parma_Polyhedra_Library::Constraint_System::insert | ( | const Constraint & | c | ) |
Inserts in *this
a copy of the constraint c
, increasing the number of space dimensions if needed.
Definition at line 132 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_congruences(), Parma_Polyhedra_Library::PIP_Tree_Node::add_constraint(), add_low_level_constraints(), Parma_Polyhedra_Library::Implementation::Termination::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::Termination_Helpers::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::BD_Shape< T >::BFT00_upper_bound_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Constraint_System(), Parma_Polyhedra_Library::BD_Shape< T >::constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::constraints(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::constraints(), Parma_Polyhedra_Library::Box< ITV >::constraints(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_systems_MS(), Parma_Polyhedra_Library::Polyhedron::intersection_assign(), Parma_Polyhedra_Library::Polyhedron::limited_BHRZ03_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_H79_extrapolation_assign(), Parma_Polyhedra_Library::BD_Shape< T >::minimized_constraints(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::minimized_constraints(), Parma_Polyhedra_Library::Box< ITV >::minimized_constraints(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), Parma_Polyhedra_Library::Polyhedron::Polyhedron(), Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >::product_reduce(), Parma_Polyhedra_Library::Polyhedron::refine_with_congruences(), Parma_Polyhedra_Library::Polyhedron::select_CH78_constraints(), Parma_Polyhedra_Library::Polyhedron::select_H79_constraints(), Parma_Polyhedra_Library::Polyhedron::simplify_using_context_assign(), Parma_Polyhedra_Library::PIP_Solution_Node::solve(), Parma_Polyhedra_Library::PIP_Decision_Node::solve(), Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints(), Parma_Polyhedra_Library::Implementation::Termination::termination_test_PR(), and Parma_Polyhedra_Library::Implementation::wrap_assign().
|
private |
Adds r
to the system, stealing its contents and automatically resizing the system or the row, if needed.
Definition at line 138 of file Constraint_System.cc.
References Parma_Polyhedra_Library::NECESSARILY_CLOSED, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, Parma_Polyhedra_Library::Constraint::set_topology(), and Parma_Polyhedra_Library::Constraint::topology().
|
inlineprivate |
Adds to *this
a the rows of `y', stealing them from `y'.
It is assumed that *this
has no pending rows.
Definition at line 341 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Adds to *this
a copy of the rows of y
.
It is assumed that *this
has no pending rows.
Definition at line 356 of file Constraint_System_inlines.hh.
References sys.
|
private |
Inserts in *this
a copy of the constraint c
, increasing the number of space dimensions if needed. It is a pending constraint.
Definition at line 158 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::Polyhedron::intersection_assign(), and Parma_Polyhedra_Library::Polyhedron::refine_with_constraints().
|
private |
Adds the given row to the pending part of the system, stealing its contents and automatically resizing the system or the row, if needed.
Definition at line 164 of file Constraint_System.cc.
References Parma_Polyhedra_Library::NECESSARILY_CLOSED, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, Parma_Polyhedra_Library::Constraint::set_topology(), and Parma_Polyhedra_Library::Constraint::topology().
|
inlineprivate |
Adds the rows of `y' to the pending part of `*this', stealing them from `y'.
Definition at line 336 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Adds a copy of the rows of `y' to the pending part of `*this'.
Definition at line 346 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Returns true
if and only if the system topology is NECESSARILY_CLOSED
.
Definition at line 241 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::is_necessarily_closed().
|
inlineprivate |
Returns the value of the sortedness flag.
Definition at line 256 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::intersection_assign(), Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints(), Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints_with_sat_c(), and Parma_Polyhedra_Library::Polyhedron::process_pending_constraints().
|
inline |
Swaps *this
with y
.
Definition at line 211 of file Constraint_System_inlines.hh.
Referenced by swap().
|
inlineprivate |
Marks the epsilon dimension as a standard dimension.
The system topology is changed to NOT_NECESSARILY_CLOSED
, and the number of space dimensions is increased by 1.
Definition at line 361 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints().
|
inlineprivate |
Marks the last dimension as the epsilon dimension.
The system topology is changed to NECESSARILY_CLOSED
, and the number of space dimensions is decreased by 1.
Definition at line 366 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints().
|
inlinestatic |
Returns the maximum space dimension a Constraint_System can handle.
Definition at line 92 of file Constraint_System_inlines.hh.
References Parma_Polyhedra_Library::Linear_System< Row >::max_space_dimension().
Referenced by Parma_Polyhedra_Library::Polyhedron::max_space_dimension().
|
inlineprivate |
Assigns to *this
the result of merging its rows with those of y
, obtaining a sorted system.
Duplicated rows will occur only once in the result. On entry, both systems are assumed to be sorted and have no pending rows.
Definition at line 351 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::intersection_assign().
|
private |
Returns the number of equality constraints.
Definition at line 204 of file Constraint_System.cc.
Referenced by Parma_Polyhedra_Library::Polyhedron::H79_widening_assign(), Parma_Polyhedra_Library::Polyhedron::OK(), and Parma_Polyhedra_Library::Polyhedron::quick_equivalence_test().
|
private |
Returns the number of inequality constraints.
Definition at line 179 of file Constraint_System.cc.
|
inlineprivate |
Returns the number of rows in the system that represent either lines or equalities.
Definition at line 401 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Returns the number of rows that are in the pending part of the system.
Definition at line 246 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::Polyhedron(), Parma_Polyhedra_Library::Polyhedron::process_pending_constraints(), Parma_Polyhedra_Library::Polyhedron::simplified_constraints(), and Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints().
|
inlineprivate |
Definition at line 236 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Polyhedron::BHZ09_C_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHZ09_NNC_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::concatenate_assign(), Parma_Polyhedra_Library::Polyhedron::H79_widening_assign(), Parma_Polyhedra_Library::Polyhedron::is_included_in(), Parma_Polyhedra_Library::Polyhedron::limited_BHRZ03_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_H79_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::OK(), Parma_Polyhedra_Library::Polyhedron::Polyhedron(), Parma_Polyhedra_Library::Polyhedron::quick_equivalence_test(), Parma_Polyhedra_Library::Polyhedron::refine_with_constraints(), Parma_Polyhedra_Library::Polyhedron::select_CH78_constraints(), Parma_Polyhedra_Library::Polyhedron::select_H79_constraints(), Parma_Polyhedra_Library::Polyhedron::simplify_using_context_assign(), and Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints().
bool Parma_Polyhedra_Library::Constraint_System::OK | ( | ) | const |
Checks if all the invariants are satisfied.
Definition at line 400 of file Constraint_System.cc.
Referenced by Constraint_System().
|
inline |
Assignment operator.
Definition at line 70 of file Constraint_System_inlines.hh.
References swap().
|
inlineprivate |
Returns a constant reference to the k-
th constraint of the system.
Definition at line 77 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Permutes the space dimensions of the matrix.
Definition at line 310 of file Constraint_System_inlines.hh.
Referenced by Parma_Polyhedra_Library::Polyhedron::map_space_dimensions().
void Parma_Polyhedra_Library::Constraint_System::print | ( | ) | const |
Prints *this
to std::cerr
using operator<<
.
|
inlineprivate |
Makes the system shrink by removing its i-th row.
When keep_sorted
is true
and the system is sorted, sortedness will be preserved, but this method costs O(n).
Otherwise, this method just swaps the i-th row with the last and then removes it, so it costs O(1).
Definition at line 276 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints().
|
inlineprivate |
Removes the specified rows. The row ordering of remaining rows is preserved.
indexes | specifies a list of row indexes. It must be sorted. |
Definition at line 287 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Makes the system shrink by removing the rows in [first,last).
When keep_sorted
is true
and the system is sorted, sortedness will be preserved, but this method costs O(num_rows()).
Otherwise, this method just swaps the rows with the last ones and then removes them, so it costs O(last - first).
Definition at line 281 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Removes all the specified dimensions from the constraint system.
The space dimension of the variable with the highest space dimension in vars
must be at most the space dimension of this
.
Definition at line 298 of file Constraint_System_inlines.hh.
|
inlineprivate |
Makes the system shrink by removing its n
trailing rows.
Definition at line 292 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::OK().
|
inline |
Returns the current representation of *this.
Definition at line 82 of file Constraint_System_inlines.hh.
References sys.
|
private |
Returns true
if g
satisfies all the constraints.
Definition at line 220 of file Constraint_System.cc.
References c, Parma_Polyhedra_Library::Generator::CLOSURE_POINT, Parma_Polyhedra_Library::Constraint::EQUALITY, Parma_Polyhedra_Library::Constraint::is_inequality(), Parma_Polyhedra_Library::Generator::is_line(), Parma_Polyhedra_Library::Generator::LINE, Parma_Polyhedra_Library::Constraint::NONSTRICT_INEQUALITY, Parma_Polyhedra_Library::Generator::POINT, Parma_Polyhedra_Library::Generator::RAY, Parma_Polyhedra_Library::Generator::space_dimension(), Parma_Polyhedra_Library::Constraint::STRICT_INEQUALITY, Parma_Polyhedra_Library::Constraint::type(), and Parma_Polyhedra_Library::Generator::type().
|
inlineprivate |
Sets the index of the first pending row to i
.
Definition at line 266 of file Constraint_System_inlines.hh.
References sys.
|
inline |
Converts *this to the specified representation.
Definition at line 87 of file Constraint_System_inlines.hh.
References sys.
|
inlineprivate |
Sets the sortedness flag of the system to b
.
Definition at line 271 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints_with_sat_c(), Parma_Polyhedra_Library::Polyhedron::Polyhedron(), and Parma_Polyhedra_Library::Polyhedron::remove_pending_to_obtain_constraints().
|
inline |
Sets the space dimension of the rows in the system to space_dim
.
Definition at line 102 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::BD_Shape< T >::constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::constraints(), Parma_Polyhedra_Library::Box< ITV >::constraints(), Parma_Polyhedra_Library::BD_Shape< T >::minimized_constraints(), Parma_Polyhedra_Library::Box< ITV >::minimized_constraints(), and Parma_Polyhedra_Library::Polyhedron::Polyhedron().
|
inlineprivate |
Shift by n
positions the coefficients of variables, starting from the coefficient of v
. This increases the space dimension by n
.
Definition at line 304 of file Constraint_System_inlines.hh.
Referenced by Parma_Polyhedra_Library::Termination_Helpers::assign_all_inequalities_approximation().
|
inlineprivate |
Applies Gaussian elimination and back-substitution so as to provide a partial simplification of the system of constraints.
It is assumed that the system has no pending constraints.
Definition at line 226 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::OK(), and Parma_Polyhedra_Library::Polyhedron::simplified_constraints().
|
inlineprivate |
Sorts the system, removing duplicates, keeping the saturation matrix consistent.
sat | Bit matrix with rows corresponding to the rows of *this . |
Definition at line 391 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints(), and Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints_with_sat_c().
|
inlineprivate |
Sorts the pending rows and eliminates those that also occur in the non-pending part of the system.
Definition at line 386 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::process_pending_constraints().
|
inlineprivate |
Sorts the non-pending rows (in growing order) and eliminates duplicated ones.
Definition at line 331 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::obtain_sorted_constraints(), and Parma_Polyhedra_Library::Polyhedron::OK().
|
inline |
Returns the dimension of the vector space enclosing *this
.
Definition at line 97 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::MIP_Problem::add_constraints(), Parma_Polyhedra_Library::Box< ITV >::add_constraints(), Parma_Polyhedra_Library::Grid::add_constraints(), Parma_Polyhedra_Library::Box< ITV >::add_constraints_no_check(), Parma_Polyhedra_Library::Polyhedron::add_recycled_constraints(), Parma_Polyhedra_Library::Polyhedron::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::Implementation::Termination::all_affine_quasi_ranking_functions_MS(), Parma_Polyhedra_Library::Implementation::Termination::all_affine_ranking_functions_MS(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), Parma_Polyhedra_Library::Termination_Helpers::assign_all_inequalities_approximation(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_system_PR_original(), Parma_Polyhedra_Library::Implementation::Termination::fill_constraint_systems_MS(), Parma_Polyhedra_Library::Box< ITV >::get_limiting_box(), Parma_Polyhedra_Library::Octagonal_Shape< T >::get_limiting_octagon(), Parma_Polyhedra_Library::BD_Shape< T >::get_limiting_shape(), Parma_Polyhedra_Library::Grid::Grid(), Parma_Polyhedra_Library::Octagonal_Shape< T >::limited_BHMZ05_extrapolation_assign(), Parma_Polyhedra_Library::BD_Shape< T >::limited_BHMZ05_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_BHRZ03_extrapolation_assign(), Parma_Polyhedra_Library::Box< ITV >::limited_CC76_extrapolation_assign(), Parma_Polyhedra_Library::Octagonal_Shape< T >::limited_CC76_extrapolation_assign(), Parma_Polyhedra_Library::BD_Shape< T >::limited_CC76_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::limited_H79_extrapolation_assign(), Parma_Polyhedra_Library::MIP_Problem::MIP_Problem(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::Implementation::Termination::one_affine_ranking_function_MS(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), Parma_Polyhedra_Library::Polyhedron::Polyhedron(), Parma_Polyhedra_Library::Box< ITV >::propagate_constraints(), Parma_Polyhedra_Library::Box< ITV >::propagate_constraints_no_check(), Parma_Polyhedra_Library::Box< ITV >::refine_no_check(), Parma_Polyhedra_Library::Box< ITV >::refine_with_constraints(), Parma_Polyhedra_Library::Polyhedron::refine_with_constraints(), Parma_Polyhedra_Library::BD_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::refine_with_constraints(), Parma_Polyhedra_Library::Grid::refine_with_constraints(), Parma_Polyhedra_Library::Polyhedron::strongly_minimize_constraints(), Parma_Polyhedra_Library::Implementation::Termination::termination_test_MS(), Parma_Polyhedra_Library::Implementation::Termination::termination_test_PR(), Parma_Polyhedra_Library::Implementation::Termination::termination_test_PR_original(), Parma_Polyhedra_Library::Box< ITV >::throw_dimension_incompatible(), Parma_Polyhedra_Library::Grid::throw_dimension_incompatible(), Parma_Polyhedra_Library::Polyhedron::throw_dimension_incompatible(), Parma_Polyhedra_Library::Implementation::wrap_assign(), Parma_Polyhedra_Library::Box< ITV >::wrap_assign(), and Parma_Polyhedra_Library::Grid::wrap_assign().
|
inlineprivate |
Strongly normalizes the system.
Definition at line 326 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::OK().
|
inlineprivate |
Swaps the coefficients of the variables v1
and v2
.
Definition at line 316 of file Constraint_System_inlines.hh.
|
inlineprivate |
Returns the system topology.
Definition at line 231 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Polyhedron::expand_space_dimension(), Parma_Polyhedra_Library::Polyhedron::select_CH78_constraints(), Parma_Polyhedra_Library::Polyhedron::select_H79_constraints(), and Parma_Polyhedra_Library::Polyhedron::topology().
|
inline |
Returns the total size in bytes of the memory occupied by *this
.
Definition at line 221 of file Constraint_System_inlines.hh.
References external_memory_in_bytes().
|
inlineprivate |
Sets the index to indicate that the system has no pending rows.
Definition at line 261 of file Constraint_System_inlines.hh.
References sys.
Referenced by Parma_Polyhedra_Library::Polyhedron::OK(), Parma_Polyhedra_Library::Polyhedron::Polyhedron(), Parma_Polyhedra_Library::Polyhedron::remove_pending_to_obtain_constraints(), and Parma_Polyhedra_Library::Polyhedron::simplified_constraints().
|
inlinestatic |
Returns the singleton system containing only Constraint::zero_dim_false().
Definition at line 112 of file Constraint_System_inlines.hh.
References zero_dim_empty_p.
Referenced by Parma_Polyhedra_Library::Polyhedron::constraints(), Parma_Polyhedra_Library::BD_Shape< T >::constraints(), Parma_Polyhedra_Library::Octagonal_Shape< T >::constraints(), Parma_Polyhedra_Library::Box< ITV >::constraints(), Parma_Polyhedra_Library::BD_Shape< T >::minimized_constraints(), and Parma_Polyhedra_Library::Box< ITV >::minimized_constraints().
|
friend |
Definition at line 265 of file Constraint_System_defs.hh.
|
related |
Definition at line 432 of file Constraint_System_inlines.hh.
References begin(), and end().
|
related |
Returns true
if and only if x
and y
are different.
Definition at line 416 of file Constraint_System_inlines.hh.
|
related |
Output operator.
Writes true
if cs
is empty. Otherwise, writes on s
the constraints of cs
, all in one row and separated by ", ".
|
related |
Definition at line 406 of file Constraint_System.cc.
References begin(), and end().
|
related |
Returns true
if and only if x
and y
are identical.
Definition at line 411 of file Constraint_System_inlines.hh.
|
friend |
Definition at line 411 of file Constraint_System_inlines.hh.
|
friend |
Definition at line 588 of file Constraint_System_defs.hh.
|
related |
Referenced by m_swap(), and operator=().
|
related |
Definition at line 422 of file Constraint_System_inlines.hh.
References m_swap().
|
friend |
Definition at line 589 of file Constraint_System_defs.hh.
|
static |
Definition at line 141 of file Constraint_System_defs.hh.
|
private |
Definition at line 257 of file Constraint_System_defs.hh.
Referenced by add_low_level_constraints(), add_universe_rows_and_space_dimensions(), assign_with_pending(), back_substitute(), begin(), check_sorted(), clear(), Parma_Polyhedra_Library::Polyhedron::concatenate_assign(), Constraint_System(), end(), external_memory_in_bytes(), first_pending_row(), gauss(), has_no_rows(), insert(), insert_pending(), is_necessarily_closed(), is_sorted(), m_swap(), mark_as_necessarily_closed(), mark_as_not_necessarily_closed(), merge_rows_assign(), num_lines_or_equalities(), num_pending_rows(), num_rows(), Parma_Polyhedra_Library::operator==(), operator[](), remove_row(), remove_rows(), remove_trailing_rows(), representation(), set_index_first_pending_row(), set_representation(), set_sorted(), set_space_dimension(), simplify(), sort_and_remove_with_sat(), sort_pending_and_remove_duplicates(), sort_rows(), space_dimension(), strong_normalize(), topology(), and unset_pending_rows().
|
staticprivate |
Holds (between class initialization and finalization) a pointer to the singleton system containing only Constraint::zero_dim_false().
Definition at line 263 of file Constraint_System_defs.hh.
Referenced by zero_dim_empty().