PPL
1.2
|
The ask-and-tell construction instantiated on PPL polyhedra. More...
#include <Pointset_Ask_Tell_defs.hh>
Public Types | |
typedef PSET | element_type |
typedef Base::size_type | size_type |
typedef Base::value_type | value_type |
typedef Base::iterator | iterator |
typedef Base::const_iterator | const_iterator |
typedef Base::reverse_iterator | reverse_iterator |
typedef Base::const_reverse_iterator | const_reverse_iterator |
![]() | |
typedef Sequence::size_type | size_type |
typedef Sequence::value_type | value_type |
typedef iterator_to_const< Sequence > | iterator |
Alias for a read-only bidirectional iterator on the pairs an Ask_Tell object. More... | |
typedef const_iterator_to_const< Sequence > | const_iterator |
A bidirectional const_iterator on the disjuncts of a Powerset element. More... | |
typedef std::reverse_iterator< iterator > | reverse_iterator |
The reverse iterator type built from Powerset::iterator. More... | |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
The reverse iterator type built from Powerset::const_iterator. More... | |
Public Member Functions | |
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... | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< C_Polyhedron > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< NNC_Polyhedron > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< QH > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< QH > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< C_Polyhedron > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< NNC_Polyhedron > &y) | |
template<> | |
void | poly_difference_assign (const Pointset_Ask_Tell &y) |
template<> | |
bool | geometrically_covers (const Pointset_Ask_Tell &y) const |
template<typename QH > | |
Pointset_Ask_Tell< PSET > & | operator= (const Pointset_Ask_Tell< QH > &y) |
template<> | |
bool | geometrically_equals (const Pointset_Ask_Tell &y) const |
template<> | |
void | poly_difference_assign (const Pointset_Ask_Tell &y) |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< QH > &y) | |
template<> | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< QH > &y) | |
Constructors | |
Pointset_Ask_Tell (dimension_type num_dimensions=0, Degenerate_Element kind=UNIVERSE) | |
Builds a universe (top) or empty (bottom) Pointset_Ask_Tell. More... | |
Pointset_Ask_Tell (const Pointset_Ask_Tell &y) | |
Ordinary copy constructor. More... | |
Pointset_Ask_Tell (const PSET &ph) | |
If ph is nonempty, builds a powerset containing only ph . Builds the empty powerset otherwise. More... | |
template<typename QH > | |
Pointset_Ask_Tell (const Pointset_Ask_Tell< QH > &y) | |
Copy constructor allowing a source powerset with elements of a different polyhedron kind. More... | |
Pointset_Ask_Tell (const Constraint_System &cs) | |
Creates a Pointset_Ask_Tell with a single polyhedron with the same information contents as cs . More... | |
Pointset_Ask_Tell (const Congruence_System &cgs) | |
Creates a Pointset_Ask_Tell with a single polyhedron with the same information contents as cgs . More... | |
Member Functions that Do Not Modify the Ask_Tell of Polyhedra | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . More... | |
bool | geometrically_covers (const Pointset_Ask_Tell &y) const |
Returns true if and only if *this geometrically covers y , i.e., if any point (in some element) of y is also a point (of some element) of *this . More... | |
bool | geometrically_equals (const Pointset_Ask_Tell &y) const |
Returns true if and only if *this is geometrically equal to y , i.e., if (the elements of) *this and y contain the same set of points. More... | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns a lower bound to the size in bytes of the memory managed by *this . More... | |
int32_t | hash_code () const |
Returns a 32-bit hash code for *this . More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
Space Dimension Preserving Member Functions that May Modify the Ask_Tell of Polyhedra | |
void | add_disjunct (const PSET &ph) |
Adds to *this the disjunct ph . More... | |
void | add_constraint (const Constraint &c) |
Intersects *this with constraint c . More... | |
void | add_constraints (const Constraint_System &cs) |
Intersects *this with the constraints in cs . More... | |
void | pairwise_reduce () |
Assign to *this the result of (recursively) merging together the pairs of polyhedra whose poly-hull is the same as their set-theoretical union. More... | |
void | unconstrain (Variable var) |
Computes the cylindrification of *this with respect to space dimension var , assigning the result to *this . More... | |
void | unconstrain (const Variables_Set &vars) |
Computes the cylindrification of *this with respect to the set of space dimensions vars , assigning the result to *this . More... | |
void | intersection_assign (const Pointset_Ask_Tell &y) |
Assigns to *this the intersection of *this and y . More... | |
void | poly_difference_assign (const Pointset_Ask_Tell &y) |
Assigns to *this the difference of *this and y . More... | |
void | time_elapse_assign (const Pointset_Ask_Tell &y) |
Assigns to *this the result of computing the time-elapse between *this and y . More... | |
template<typename Widening > | |
void | BGP99_extrapolation_assign (const Pointset_Ask_Tell &y, Widening widen_fun, unsigned max_disjuncts) |
Assigns to *this the result of applying the BGP99 extrapolation operator to *this and y , using the widening function widen_fun and the cardinality threshold max_disjuncts . More... | |
template<typename Cert , typename Widening > | |
void | BHZ03_widening_assign (const Pointset_Ask_Tell &y, Widening widen_fun) |
Assigns to *this the result of computing the BHZ03-widening between *this and y , using the widening function widen_fun certified by the convergence certificate Cert . More... | |
Member Functions that May Modify the Dimension of the Vector Space | |
Pointset_Ask_Tell & | operator= (const Pointset_Ask_Tell &y) |
The assignment operator (*this and y can be dimension-incompatible). More... | |
template<typename QH > | |
Pointset_Ask_Tell & | operator= (const Pointset_Ask_Tell< QH > &y) |
Assignment operator allowing a source powerset with elements of a different polyhedron kind (*this and y can be dimension-incompatible). More... | |
void | m_swap (Pointset_Ask_Tell &y) |
Swaps *this with y . More... | |
void | add_space_dimensions_and_embed (dimension_type m) |
Adds m new dimensions to the vector space containing *this and embeds each polyhedron in *this in the new space. More... | |
void | add_space_dimensions_and_project (dimension_type m) |
Adds m new dimensions to the vector space containing *this without embedding the polyhedra in *this in the new space. More... | |
void | concatenate_assign (const Pointset_Ask_Tell &y) |
Assigns to *this the concatenation of *this and y . More... | |
void | remove_space_dimensions (const Variables_Set &vars) |
Removes all the specified space dimensions. More... | |
void | remove_higher_space_dimensions (dimension_type new_dimension) |
Removes the higher space dimensions so that the resulting space will have dimension new_dimension . More... | |
template<typename Partial_Function > | |
void | map_space_dimensions (const Partial_Function &pfunc) |
Remaps the dimensions of the vector space according to a partial function. More... | |
![]() | |
Ask_Tell () | |
Default constructor: builds the top of the ask-and-tell constraint system (i.e., the empty system). More... | |
Ask_Tell (const Ask_Tell &y) | |
Copy constructor. More... | |
Ask_Tell (const Ask_Tell_Pair< Parma_Polyhedra_Library::Determinate< PSET > > &p) | |
If p is not top, builds an ask-and-tell system containing only p . Builds the empty system otherwise. More... | |
Ask_Tell (const Parma_Polyhedra_Library::Determinate< PSET > &ask, const Parma_Polyhedra_Library::Determinate< PSET > &tell) | |
If ask and tell do not constitute a top pair, builds an ask-and-tell system containing only that pair. Builds the empty system otherwise. More... | |
~Ask_Tell () | |
Destructor. More... | |
bool | definitely_entails (const Ask_Tell &y) const |
Returns true if *this definitely entails y . Returns false if *this may not entail y (i.e., if *this does not entail y or if entailment could not be decided). More... | |
bool | is_top () const |
Returns true if and only if *this is the top element of the ask-and-tell constraint system (i.e., it represents the universe). More... | |
bool | is_bottom () const |
Returns true if and only if *this is the bottom element of the ask-and-tell constraint system (i.e., it represents the empty set). More... | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns a lower bound to the size in bytes of the memory managed by *this . More... | |
int32_t | hash_code () const |
Returns a 32-bit hash code for *this . More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
void | normalize () const |
Normalizes the pairs in *this . More... | |
size_type | size () const |
Returns the number of pairs. More... | |
bool | empty () const |
Returns true if and only if there are no pairs in *this . More... | |
iterator | begin () |
Returns an iterator pointing to the first pair, if *this is not empty; otherwise, returns the past-the-end iterator. More... | |
const_iterator | begin () const |
Returns a const_iterator pointing to the first pair, if *this is not empty; otherwise, returns the past-the-end const_iterator. More... | |
iterator | end () |
Returns the past-the-end iterator. More... | |
const_iterator | end () const |
Returns the past-the-end const_iterator. More... | |
reverse_iterator | rbegin () |
Returns a reverse_iterator pointing to the last pair, if *this is not empty; otherwise, returns the before-the-start reverse_iterator. More... | |
const_reverse_iterator | rbegin () const |
Returns a const_reverse_iterator pointing to the last pair, if *this is not empty; otherwise, returns the before-the-start const_reverse_iterator. More... | |
reverse_iterator | rend () |
Returns the before-the-start reverse_iterator. More... | |
const_reverse_iterator | rend () const |
Returns the before-the-start const_reverse_iterator. More... | |
Ask_Tell & | add_pair (const Ask_Tell_Pair< Parma_Polyhedra_Library::Determinate< PSET > > &p) |
Adds to *this the pair p . More... | |
Ask_Tell & | add_pair (const Parma_Polyhedra_Library::Determinate< PSET > &ask, const Parma_Polyhedra_Library::Determinate< PSET > &tell) |
Adds to *this the pair constituted by ask and tell . More... | |
iterator | drop_pair (iterator position) |
Drops the pair in *this pointed to by position , returning an iterator to the pair following position . More... | |
void | drop_pairs (iterator first, iterator last) |
Drops all the pairs from first to last (excluded). More... | |
void | clear () |
Drops all the pairs, making *this an empty powerset. More... | |
Ask_Tell & | operator= (const Ask_Tell &y) |
The assignment operator. (*this and y can be dimension-incompatible.) More... | |
void | m_swap (Ask_Tell &y) |
Swaps *this with y . More... | |
void | upper_bound_assign (const Ask_Tell &y) |
Assigns to *this an upper bound of *this and y . More... | |
void | meet_assign (const Ask_Tell &y) |
Assigns to *this the meet of *this and y . More... | |
Static Public Member Functions | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Pointset_Ask_Tell<PSET> can handle. More... | |
Private Types | |
typedef Determinate< PSET > | Det_PSET |
typedef Ask_Tell< Det_PSET > | Base |
typedef Base::Pair | Pair |
typedef Base::Sequence | Sequence |
typedef Base::Sequence_iterator | Sequence_iterator |
typedef Base::Sequence_const_iterator | Sequence_const_iterator |
Private Member Functions | |
template<typename Widening > | |
void | BGP99_heuristics_assign (const Pointset_Ask_Tell &y, Widening widen_fun) |
Assigns to *this the result of applying the BGP99 heuristics to *this and y , using the widening function widen_fun . More... | |
template<typename Cert > | |
void | collect_certificates (std::map< Cert, size_type, typename Cert::Compare > &cert_ms) const |
Records in cert_ms the certificates for this set of polyhedra. More... | |
template<typename Cert > | |
bool | is_cert_multiset_stabilizing (const std::map< Cert, size_type, typename Cert::Compare > &y_cert_ms) const |
Returns true if and only if the current set of polyhedra is stabilizing with respect to the multiset of certificates y_cert_ms . More... | |
Private Attributes | |
dimension_type | space_dim |
The number of dimensions of the enclosing vector space. More... | |
Friends | |
class | Pointset_Ask_Tell< NNC_Polyhedron > |
Related Functions | |
(Note that these are not member functions.) | |
template<typename PSET > | |
void | swap (Pointset_Ask_Tell< PSET > &x, Pointset_Ask_Tell< PSET > &y) |
Swaps x with y . More... | |
template<typename PSET > | |
bool | check_containment (const PSET &ph, const Pointset_Ask_Tell< PSET > &ps) |
template<> | |
bool | check_containment (const C_Polyhedron &ph, const Pointset_Ask_Tell< C_Polyhedron > &ps) |
template<typename PSET > | |
void | swap (Pointset_Ask_Tell< PSET > &x, Pointset_Ask_Tell< PSET > &y) |
Additional Inherited Members | |
![]() | |
typedef Ask_Tell_Pair< Parma_Polyhedra_Library::Determinate< PSET > > | Pair |
An ask-tell agent is composed of pairs. More... | |
typedef std::list< Ask_Tell_Pair< Parma_Polyhedra_Library::Determinate< PSET > > > | Sequence |
An ask-tell agent is implemented as a sequence of ask-tell pairs. More... | |
typedef Sequence::iterator | Sequence_iterator |
Alias for the low-level iterator on the pairs. More... | |
typedef Sequence::const_iterator | Sequence_const_iterator |
Alias for the low-level const_iterator on the pairs. More... | |
![]() | |
bool | is_normalized () const |
Returns true if and only if *this is normalized. More... | |
void | pair_insert (const Parma_Polyhedra_Library::Determinate< PSET > &a, const Parma_Polyhedra_Library::Determinate< PSET > &t) |
void | pair_insert_good (const Parma_Polyhedra_Library::Determinate< PSET > &a, const Parma_Polyhedra_Library::Determinate< PSET > &t) |
bool | reduce () |
bool | deduce () |
bool | absorb () |
void | deabsorb () const |
bool | check_normalized () const |
Does the hard work of checking whether *this is normalized and returns true if and only if it is. More... | |
bool | probe (const Parma_Polyhedra_Library::Determinate< PSET > &tellv, const Parma_Polyhedra_Library::Determinate< PSET > &askv) const |
![]() | |
Sequence | sequence |
The sequence container holding the pairs/. More... | |
bool | normalized |
If true , *this is normalized. More... | |
The ask-and-tell construction instantiated on PPL polyhedra.
Definition at line 46 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 54 of file Pointset_Ask_Tell_defs.hh.
typedef Base::const_iterator Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::const_iterator |
Definition at line 401 of file Pointset_Ask_Tell_defs.hh.
typedef Base::const_reverse_iterator Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::const_reverse_iterator |
Definition at line 403 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 53 of file Pointset_Ask_Tell_defs.hh.
typedef PSET Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::element_type |
Definition at line 50 of file Pointset_Ask_Tell_defs.hh.
typedef Base::iterator Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::iterator |
Definition at line 400 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 55 of file Pointset_Ask_Tell_defs.hh.
typedef Base::reverse_iterator Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::reverse_iterator |
Definition at line 402 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 415 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 417 of file Pointset_Ask_Tell_defs.hh.
|
private |
Definition at line 416 of file Pointset_Ask_Tell_defs.hh.
typedef Base::size_type Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::size_type |
Definition at line 398 of file Pointset_Ask_Tell_defs.hh.
typedef Base::value_type Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::value_type |
Definition at line 399 of file Pointset_Ask_Tell_defs.hh.
|
inlineexplicit |
Builds a universe (top) or empty (bottom) Pointset_Ask_Tell.
num_dimensions | The number of dimensions of the vector space enclosing the powerset; |
kind | Specifies whether the universe or the empty powerset has to be built. |
Definition at line 54 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::pair_insert(), and Parma_Polyhedra_Library::UNIVERSE.
|
inline |
Ordinary copy constructor.
Definition at line 66 of file Pointset_Ask_Tell_inlines.hh.
|
inlineexplicit |
If ph
is nonempty, builds a powerset containing only ph
. Builds the empty powerset otherwise.
Definition at line 72 of file Pointset_Ask_Tell_inlines.hh.
|
explicit |
Copy constructor allowing a source powerset with elements of a different polyhedron kind.
|
inlineexplicit |
Creates a Pointset_Ask_Tell with a single polyhedron with the same information contents as cs
.
Definition at line 78 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK().
|
inlineexplicit |
Creates a Pointset_Ask_Tell with a single polyhedron with the same information contents as cgs
.
Definition at line 85 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK().
Parma_Polyhedra_Library::Pointset_Ask_Tell< PPL::NNC_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< C_Polyhedron > & | y | ) |
Definition at line 32 of file Pointset_Ask_Tell.cc.
References Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::begin(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::end(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::normalized, Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
Parma_Polyhedra_Library::Pointset_Ask_Tell< PPL::C_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< NNC_Polyhedron > & | y | ) |
Definition at line 48 of file Pointset_Ask_Tell.cc.
References Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::begin(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::end(), Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
Parma_Polyhedra_Library::Pointset_Ask_Tell< NNC_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< QH > & | y | ) |
Parma_Polyhedra_Library::Pointset_Ask_Tell< C_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< QH > & | y | ) |
Parma_Polyhedra_Library::Pointset_Ask_Tell< NNC_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< C_Polyhedron > & | y | ) |
Parma_Polyhedra_Library::Pointset_Ask_Tell< C_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< NNC_Polyhedron > & | y | ) |
Parma_Polyhedra_Library::Pointset_Ask_Tell< NNC_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< QH > & | y | ) |
Definition at line 61 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::begin(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::end(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::normalized, Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
Parma_Polyhedra_Library::Pointset_Ask_Tell< C_Polyhedron >::Pointset_Ask_Tell | ( | const Pointset_Ask_Tell< QH > & | y | ) |
Definition at line 80 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::begin(), Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > >::end(), Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraint | ( | const Constraint & | c | ) |
Intersects *this
with constraint c
.
std::invalid_argument | Thrown if *this and constraint c are topology-incompatible or dimension-incompatible. |
Definition at line 119 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraint(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraint().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraints | ( | const Constraint_System & | cs | ) |
Intersects *this
with the constraints in cs
.
cs | The constraints to intersect with. |
std::invalid_argument | Thrown if *this and cs are topology-incompatible or dimension-incompatible. |
Definition at line 131 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraints(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), and Parma_Polyhedra_Library::Ask_Tell< D >::sequence.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraints().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_disjunct | ( | const PSET & | ph | ) |
Adds to *this
the disjunct ph
.
std::invalid_argument | Thrown if *this and ph are dimension-incompatible. |
Definition at line 44 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dimension().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_load().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_embed | ( | dimension_type | m | ) |
Adds m
new dimensions to the vector space containing *this
and embeds each polyhedron in *this
in the new space.
Definition at line 167 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_embed().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_project | ( | dimension_type | m | ) |
Adds m
new dimensions to the vector space containing *this
without embedding the polyhedra in *this
in the new space.
Definition at line 179 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_project(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_project().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_dump | ( | ) | const |
Writes to std::cerr
an ASCII representation of *this
.
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_dump | ( | std::ostream & | s | ) | const |
Writes to s
an ASCII representation of *this
.
Definition at line 262 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< D >::begin(), Parma_Polyhedra_Library::Ask_Tell< D >::end(), Parma_Polyhedra_Library::Ask_Tell< D >::size(), and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
bool Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::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 276 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_disjunct(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim, and Parma_Polyhedra_Library::swap().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::BGP99_extrapolation_assign | ( | const Pointset_Ask_Tell< PSET > & | y, |
Widening | widen_fun, | ||
unsigned | max_disjuncts | ||
) |
Assigns to *this
the result of applying the BGP99 extrapolation operator to *this
and y
, using the widening function widen_fun
and the cardinality threshold max_disjuncts
.
y | A finite powerset of polyhedra. It must definitely entail *this ; |
widen_fun | The widening function to be used on polyhedra objects. It is obtained from the corresponding widening method by using the helper function Parma_Polyhedra_Library::widen_fun_ref. Legal values are, e.g., widen_fun_ref(&Polyhedron::H79_widening_assign) and widen_fun_ref(&Polyhedron::limited_H79_extrapolation_assign, cs) ; |
max_disjuncts | The maximum number of disjuncts occurring in the powerset *this before starting the computation. If this number is exceeded, some of the disjuncts in *this are collapsed (i.e., joined together). |
std::invalid_argument | Thrown if *this and y are topology-incompatible or dimension-incompatible. |
For a description of the extrapolation operator, see [BGP99] and [BHZ03b].
|
private |
Assigns to *this
the result of applying the BGP99 heuristics to *this
and y
, using the widening function widen_fun
.
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::BHZ03_widening_assign | ( | const Pointset_Ask_Tell< PSET > & | y, |
Widening | widen_fun | ||
) |
Assigns to *this
the result of computing the BHZ03-widening between *this
and y
, using the widening function widen_fun
certified by the convergence certificate Cert
.
y | The finite powerset of polyhedra computed in the previous iteration step. It must definitely entail *this ; |
widen_fun | The widening function to be used on polyhedra objects. It is obtained from the corresponding widening method by using the helper function widen_fun_ref. Legal values are, e.g., widen_fun_ref(&Polyhedron::H79_widening_assign) and widen_fun_ref(&Polyhedron::limited_H79_extrapolation_assign, cs) . |
std::invalid_argument | Thrown if *this and y are topology-incompatible or dimension-incompatible. |
Cert
should be a finite convergence certificate for the base-level widening function widen_fun
; otherwise, an extrapolation operator is obtained. For a description of the methods that should be provided by Cert
, see BHRZ03_Certificate or H79_Certificate.
|
private |
Records in cert_ms
the certificates for this set of polyhedra.
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::concatenate_assign | ( | const Pointset_Ask_Tell< PSET > & | y | ) |
Assigns to *this
the concatenation of *this
and y
.
The result is obtained by computing the pairwise concatenation of each polyhedron in *this
with each polyhedron in y
.
Definition at line 101 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< D >::begin(), Parma_Polyhedra_Library::Determinate< PSET >::concatenate_assign(), Parma_Polyhedra_Library::Ask_Tell< D >::end(), Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim, and Parma_Polyhedra_Library::UNIVERSE.
|
inline |
Returns a lower bound to the size in bytes of the memory managed by *this
.
Definition at line 164 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
|
inline |
Returns true
if and only if *this
geometrically covers y
, i.e., if any point (in some element) of y
is also a point (of some element) of *this
.
std::invalid_argument | Thrown if *this and y are topology-incompatible or dimension-incompatible. |
Definition at line 139 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::geometrically_covers().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::geometrically_covers(), and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::geometrically_equals().
bool Parma_Polyhedra_Library::Pointset_Ask_Tell< NNC_Polyhedron >::geometrically_covers | ( | const Pointset_Ask_Tell< PSET > & | y | ) | const |
|
inline |
Returns true
if and only if *this
is geometrically equal to y
, i.e., if (the elements of) *this
and y
contain the same set of points.
std::invalid_argument | Thrown if *this and y are topology-incompatible or dimension-incompatible. |
Definition at line 148 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::geometrically_covers().
|
inline |
Definition at line 157 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::geometrically_covers().
|
inline |
Returns a 32-bit hash code for *this
.
If x
and y
are such that x == y
, then x.hash_code() == y.hash_code()
.
Definition at line 176 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::hash_code_from_dimension().
|
inline |
Assigns to *this
the intersection of *this
and y
.
The result is obtained by intersecting each polyhedron in *this
with each polyhedron in y
and collecting all these intersections.
Definition at line 120 of file Pointset_Ask_Tell_inlines.hh.
|
private |
Returns true
if and only if the current set of polyhedra is stabilizing with respect to the multiset of certificates y_cert_ms
.
|
inline |
Swaps *this
with y
.
Definition at line 101 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim, and Parma_Polyhedra_Library::swap().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::swap().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::map_space_dimensions | ( | const Partial_Function & | pfunc | ) |
Remaps the dimensions of the vector space according to a partial function.
See also Polyhedron::map_space_dimensions.
Definition at line 236 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< D >::is_bottom(), Parma_Polyhedra_Library::Partial_Function::maps(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
|
inlinestatic |
Returns the maximum space dimension a Pointset_Ask_Tell<PSET> can handle.
Definition at line 48 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::max_space_dimension().
bool Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK | ( | ) | const |
Checks if all the invariants are satisfied.
Definition at line 315 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< D >::begin(), Parma_Polyhedra_Library::Ask_Tell< D >::end(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dimension().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraint(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_constraints(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_disjunct(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_project(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_load(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::concatenate_assign(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::map_space_dimensions(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::Pointset_Ask_Tell(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_higher_space_dimensions(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_space_dimensions(), and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain().
|
inline |
Definition at line 111 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::swap().
|
inline |
The assignment operator (*this
and y
can be dimension-incompatible).
Definition at line 92 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
Pointset_Ask_Tell& Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::operator= | ( | const Pointset_Ask_Tell< QH > & | y | ) |
Assignment operator allowing a source powerset with elements of a different polyhedron kind (*this
and y
can be dimension-incompatible).
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::pairwise_reduce | ( | ) |
Assign to *this
the result of (recursively) merging together the pairs of polyhedra whose poly-hull is the same as their set-theoretical union.
On exit, for all the pairs ,
of different polyhedra in
*this
, we have .
|
inline |
Definition at line 183 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::poly_difference_assign().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::poly_difference_assign | ( | const Pointset_Ask_Tell< PSET > & | y | ) |
Assigns to *this
the difference of *this
and y
.
The result is obtained by computing the poly-difference of each polyhedron in *this
with each polyhedron in y
and collecting all these differences.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::poly_difference_assign().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< NNC_Polyhedron >::poly_difference_assign | ( | const Pointset_Ask_Tell< PSET > & | y | ) |
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::print | ( | ) | const |
Prints *this
to std::cerr
using operator<<
.
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_higher_space_dimensions | ( | dimension_type | new_dimension | ) |
Removes the higher space dimensions so that the resulting space will have dimension new_dimension
.
std::invalid_argument | Thrown if new_dimensions is greater than the space dimension of *this . |
Definition at line 218 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_higher_space_dimensions(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_higher_space_dimensions().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_space_dimensions | ( | const Variables_Set & | vars | ) |
Removes all the specified space dimensions.
vars | The set of Variable objects corresponding to the space dimensions to be removed. |
std::invalid_argument | Thrown if *this is dimension-incompatible with one of the Variable objects contained in vars . |
Definition at line 192 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Ask_Tell< D >::normalized, Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::space_dim.
|
inline |
Returns the dimension of the vector space enclosing *this
.
Definition at line 42 of file Pointset_Ask_Tell_inlines.hh.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_disjunct(), and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK().
|
inline |
Assigns to *this
the result of computing the time-elapse between *this
and y
.
The result is obtained by computing the pairwise time elapse of each polyhedron in *this
with each polyhedron in y
.
Definition at line 129 of file Pointset_Ask_Tell_inlines.hh.
|
inline |
Returns a lower bound to the total size in bytes of the memory occupied by *this
.
Definition at line 170 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain | ( | Variable | var | ) |
Computes the cylindrification of *this
with respect to space dimension var
, assigning the result to *this
.
var | The space dimension that will be unconstrained. |
std::invalid_argument | Thrown if var is not a space dimension of *this . |
Definition at line 143 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain().
void Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain | ( | const Variables_Set & | vars | ) |
Computes the cylindrification of *this
with respect to the set of space dimensions vars
, assigning the result to *this
.
vars | The set of space dimension that will be unconstrained. |
std::invalid_argument | Thrown if *this is dimension-incompatible with one of the Variable objects contained in vars . |
Definition at line 155 of file Pointset_Ask_Tell_templates.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Ask_Tell< D >::sequence, and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::unconstrain().
|
related |
Definition at line 193 of file Pointset_Ask_Tell_inlines.hh.
Referenced by Parma_Polyhedra_Library::Pointset_Powerset< PSET >::geometrically_covers().
|
related |
Definition at line 202 of file Pointset_Ask_Tell_inlines.hh.
|
friend |
Definition at line 447 of file Pointset_Ask_Tell_defs.hh.
|
related |
Definition at line 211 of file Pointset_Ask_Tell_inlines.hh.
References Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::m_swap().
|
related |
Swaps x
with y
.
|
private |
The number of dimensions of the enclosing vector space.
Definition at line 420 of file Pointset_Ask_Tell_defs.hh.
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_embed(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::add_space_dimensions_and_project(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_dump(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::ascii_load(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::concatenate_assign(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::m_swap(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::map_space_dimensions(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::OK(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::operator=(), Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_higher_space_dimensions(), and Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::remove_space_dimensions().