|
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 |
Public Types inherited from Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > > | |
| 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... | |
Public Member Functions inherited from Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > > | |
| 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 | |
Protected Types inherited from Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > > | |
| 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... | |
Protected Member Functions inherited from Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > > | |
| 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 |
Protected Attributes inherited from Parma_Polyhedra_Library::Ask_Tell< Parma_Polyhedra_Library::Determinate< PSET > > | |
| 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().