24 #ifndef PPL_Pointset_Ask_Tell_defs_hh
25 #define PPL_Pointset_Ask_Tell_defs_hh
45 template <
typename PSET>
48 <Parma_Polyhedra_Library::Determinate<PSET> > {
89 template <
typename QH>
285 template <
typename W
idening>
288 unsigned max_disjuncts);
319 template <
typename Cert,
typename W
idening>
338 template <
typename QH>
392 template <
typename Partial_Function>
426 template <
typename W
idening>
430 template <
typename Cert>
432 typename Cert::Compare>& cert_ms)
const;
438 template <
typename Cert>
440 typename Cert::Compare>&
455 template <
typename PSET>
463 template <
typename QH>
472 template <
typename QH>
503 #endif // !defined(PPL_Pointset_Ask_Tell_defs_hh)
void time_elapse_assign(const Pointset_Ask_Tell &y)
Assigns to *this the result of computing the time-elapse between *this and y.
A linear equality or inequality.
void swap(CO_Tree &x, CO_Tree &y)
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 f...
size_t dimension_type
An unsigned integral type for representing space dimensions.
void remove_higher_space_dimensions(dimension_type new_dimension)
Removes the higher space dimensions so that the resulting space will have dimension new_dimension...
dimension_type space_dimension() const
Returns the dimension of the vector space enclosing *this.
An std::set of variables' indexes.
Sequence::size_type size_type
Pointset_Ask_Tell(dimension_type num_dimensions=0, Degenerate_Element kind=UNIVERSE)
Builds a universe (top) or empty (bottom) Pointset_Ask_Tell.
void add_constraints(const Constraint_System &cs)
Intersects *this with the constraints in cs.
Base::const_reverse_iterator const_reverse_iterator
Base::Sequence_iterator Sequence_iterator
void intersection_assign(const Pointset_Ask_Tell &y)
Assigns to *this the intersection of *this and y.
memory_size_type total_memory_in_bytes() const
Returns a lower bound to the total size in bytes of the memory occupied by *this. ...
Ask_Tell< Det_PSET > Base
memory_size_type external_memory_in_bytes() const
Returns a lower bound to the size in bytes of the memory managed by *this.
Sequence::iterator Sequence_iterator
Alias for the low-level iterator on the pairs.
Base::reverse_iterator reverse_iterator
A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98].
void unconstrain(Variable var)
Computes the cylindrification of *this with respect to space dimension var, assigning the result to *...
Determinate< PSET > Det_PSET
std::reverse_iterator< iterator > reverse_iterator
The reverse iterator type built from Powerset::iterator.
void remove_space_dimensions(const Variables_Set &vars)
Removes all the specified space dimensions.
A dimension of the vector space.
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...
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 i...
std::reverse_iterator< const_iterator > const_reverse_iterator
The reverse iterator type built from Powerset::const_iterator.
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...
#define PPL_OUTPUT_DECLARATIONS
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 ...
void add_disjunct(const PSET &ph)
Adds to *this the disjunct ph.
static dimension_type max_space_dimension()
Returns the maximum space dimension a Pointset_Ask_Tell
can handle.
std::list< Ask_Tell_Pair< D > > Sequence
An ask-tell agent is implemented as a sequence of ask-tell pairs.
bool ascii_load(std::istream &s)
Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this ...
Degenerate_Element
Kinds of degenerate abstract elements.
The ask-and-tell construction instantiated on PPL polyhedra.
void concatenate_assign(const Pointset_Ask_Tell &y)
Assigns to *this the concatenation of *this and y.
A not necessarily closed convex polyhedron.
void map_space_dimensions(const Partial_Function &pfunc)
Remaps the dimensions of the vector space according to a partial function.
Base::size_type size_type
bool OK() const
Checks if all the invariants are satisfied.
void pairwise_reduce()
Assign to *this the result of (recursively) merging together the pairs of polyhedra whose poly-hull i...
dimension_type space_dim
The number of dimensions of the enclosing vector space.
The universe element, i.e., the whole vector space.
Base::Sequence_const_iterator Sequence_const_iterator
void m_swap(Pointset_Ask_Tell &y)
Swaps *this with y.
A const_iterator on a sequence of read-only objects.
Base::const_iterator const_iterator
void add_constraint(const Constraint &c)
Intersects *this with constraint c.
The entire library is confined to this namespace.
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 funct...
Sequence::const_iterator Sequence_const_iterator
Alias for the low-level const_iterator on the pairs.
Pointset_Ask_Tell & operator=(const Pointset_Ask_Tell &y)
The assignment operator (*this and y can be dimension-incompatible).
Base::value_type value_type
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 i...
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.
int32_t hash_code() const
Returns a 32-bit hash code for *this.
Sequence::value_type value_type
A pair of ask and tell descriptions.
An iterator on a sequence of read-only objects.
size_t memory_size_type
An unsigned integral type for representing memory size in bytes.
The ask and tell construction on a base-level domain.
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...
void poly_difference_assign(const Pointset_Ask_Tell &y)
Assigns to *this the difference of *this and y.