24 #ifndef PPL_Polyhedron_defs_hh
25 #define PPL_Polyhedron_defs_hh 1
56 namespace IO_Operators {
68 operator<<(std::ostream& s,
const Polyhedron& ph);
74 void swap(Polyhedron& x, Polyhedron& y);
84 bool operator==(
const Polyhedron& x,
const Polyhedron& y);
94 bool operator!=(
const Polyhedron& x,
const Polyhedron& y);
96 namespace Interfaces {
98 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
103 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
505 template <
typename Interval>
829 bool OK(
bool check_not_empty =
false)
const;
1035 template <
typename FP_Format,
typename Interval_Info>
1039 bool is_strict =
false);
1069 template <
typename FP_Format,
typename Interval_Info>
1080 template <
typename FP_Format,
typename Interval_Info>
1248 Coefficient_traits::const_reference denominator
1273 template <
typename FP_Format,
typename Interval_Info>
1366 Coefficient_traits::const_reference denominator
1398 Coefficient_traits::const_reference denominator
1431 Coefficient_traits::const_reference denominator
1511 Coefficient_traits::const_reference denominator
1543 Coefficient_traits::const_reference denominator
1618 unsigned complexity_threshold = 16,
1619 bool wrap_individually =
true);
1930 template <
typename Partial_Function>
2041 #define PPL_IN_Polyhedron_CLASS
2042 #include "Ph_Status_idefs.hh"
2043 #undef PPL_IN_Polyhedron_CLASS
2542 template <
typename Linear_System1,
typename Linear_System2>
2544 Linear_System2& sys2,
2554 template <
typename Source_Linear_System,
typename Dest_Linear_System>
2555 static bool minimize(
bool con_to_gen,
2556 Source_Linear_System& source,
2557 Dest_Linear_System& dest,
2565 template <
typename Source_Linear_System1,
typename Source_Linear_System2,
2566 typename Dest_Linear_System>
2568 Source_Linear_System1& source1,
2569 Dest_Linear_System& dest,
2571 const Source_Linear_System2& source2);
2578 template <
typename Source_Linear_System,
typename Dest_Linear_System>
2580 Source_Linear_System& source,
2581 Dest_Linear_System& dest,
2586 template <
typename Source_Linear_System,
typename Dest_Linear_System>
2589 Dest_Linear_System& dest,
2598 template <
typename Linear_System1>
2628 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
2643 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
2650 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
2653 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
2658 const char* ph_name,
2667 const char* cs_name,
2670 const char* gs_name,
2674 const char* other_name,
2677 const char* ph_name,
2680 const char* le_name,
2689 const char* cg_name,
2692 const char* cs_name,
2695 const char* gs_name,
2698 const char* cgs_name,
2700 template <
typename C>
2702 const char* lf_name,
2705 const char* var_name,
2716 const char* method,
const char* reason);
2720 const char* method,
const char* reason);
2722 template <
typename Object>
2725 const char* method,
const char* reason);
2728 const char* g_name)
const;
2731 const char* gs_name)
const;
2732 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
2734 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
2772 template <
typename FP_Format,
typename Interval_Info>
2797 template <
typename FP_Format,
typename Interval_Info>
2829 template <
typename FP_Format,
typename Interval_Info>
2840 template <
typename Linear_System1,
typename Row2>
2863 #endif // !defined(PPL_Polyhedron_defs_hh)
void add_space_dimensions_and_embed(dimension_type m)
Adds m new space dimensions and embeds the old polyhedron in the new vector space.
bool has_pending_constraints() const
Returns true if there are pending constraints.
bool constraints_are_minimized() const
Returns true if the system of constraints is minimized.
void topological_closure_assign()
Assigns to *this its topological closure.
void refine_with_congruence(const Congruence &cg)
Uses a copy of congruence cg to refine *this.
void drop_some_non_integer_points(Complexity_Class complexity=ANY_COMPLEXITY)
Possibly tightens *this by dropping some points with non-integer coordinates.
void widening_assign(const Polyhedron &y, unsigned *tp=0)
Same as H79_widening_assign(y, tp).
bool marked_empty() const
Returns true if the polyhedron is known to be empty.
bool operator!=(const Box< ITV > &x, const Box< ITV > &y)
int32_t hash_code() const
Returns a 32-bit hash code for *this.
void map_space_dimensions(const Partial_Function &pfunc)
Remaps the dimensions of the vector space according to a partial function.
void set_sat_g_up_to_date()
Sets status to express that sat_g is up-to-date.
A linear equality or inequality.
bool bounds_from_above(const Linear_Expression &expr) const
Returns true if and only if expr is bounded from above in *this.
void swap(CO_Tree &x, CO_Tree &y)
bool minimize() const
Applies (weak) minimization to both the constraints and generators.
void clear_constraints_up_to_date()
Sets status to express that constraints are no longer up-to-date.
void affine_preimage(Variable var, const Linear_Expression &expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the affine preimage of *this under the function mapping variable var to the affine e...
bool strongly_minimize_constraints() const
Applies strong minimization to the constraints of an NNC polyhedron.
void select_CH78_constraints(const Polyhedron &y, Constraint_System &cs_selection) const
Copies to cs_selection the constraints of y corresponding to the definition of the CH78-widening of *...
bool remove_pending_to_obtain_generators() const
Lazily integrates the pending descriptions of the polyhedron to obtain a generator system without pen...
size_t dimension_type
An unsigned integral type for representing space dimensions.
void update_constraints() const
Updates constraints starting from generators and minimizes them.
bool ascii_load(std::istream &s)
Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this ...
bool max_min(const Linear_Expression &expr, bool maximize, Coefficient &ext_n, Coefficient &ext_d, bool &included, Generator &g) const
Maximizes or minimizes expr subject to *this.
An std::set of variables' indexes.
bool constrains(Variable var) const
Returns true if and only if var is constrained in *this.
void poly_difference_assign(const Polyhedron &y)
Assigns to *this the poly-difference of *this and y.
Generator_System gen_sys
The system of generators.
A line, ray, point or closure point.
bool generators_are_minimized() const
Returns true if the system of generators is minimized.
bool is_empty() const
Returns true if and only if *this is an empty polyhedron.
void set_generators_up_to_date()
Sets status to express that generators are up-to-date.
Congruence_System minimized_congruences() const
Returns a system of (equality) congruences satisfied by *this, with no redundant congruences and havi...
void set_constraints_pending()
Sets status to express that constraints are pending.
void clear_pending_generators()
Sets status to express that there are no longer pending generators.
void add_congruences(const Congruence_System &cgs)
Adds a copy of the congruences in cgs to *this, if all the congruences can be exactly represented by ...
void add_constraint(const Constraint &c)
Adds a copy of constraint c to the system of constraints of *this (without minimizing the result)...
void bounded_affine_image(Variable var, const Linear_Expression &lb_expr, const Linear_Expression &ub_expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the image of *this with respect to the bounded affine relation . ...
void affine_image(Variable var, const Linear_Expression &expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the affine image of *this under the function mapping variable var to the affine expr...
std::ostream & operator<<(std::ostream &s, const Ask_Tell< D > &x)
bool contains_integer_point() const
Returns true if and only if *this contains at least one integer point.
bool strongly_minimize_generators() const
Applies strong minimization to the generators of an NNC polyhedron.
bool is_disjoint_from(const Polyhedron &y) const
Returns true if and only if *this and y are disjoint.
void generalized_refine_with_linear_form_inequality(const Linear_Form< Interval< FP_Format, Interval_Info > > &left, const Linear_Form< Interval< FP_Format, Interval_Info > > &right, Relation_Symbol relsym)
Refines *this with the constraint expressed by left right, where is the relation symbol specified b...
static bool can_recycle_congruence_systems()
Returns false indicating that this domain cannot recycle congruences.
void BHRZ03_widening_assign(const Polyhedron &y, unsigned *tp=0)
Assigns to *this the result of computing the BHRZ03-widening between *this and y. ...
bool sat_c_is_up_to_date() const
Returns true if the saturation matrix sat_c is up-to-date.
bool update_generators() const
Updates generators starting from constraints and minimizes them.
void add_space_dimensions_and_project(dimension_type m)
Adds m new space dimensions to the polyhedron and does not embed it in the new vector space...
void set_constraints_up_to_date()
Sets status to express that constraints are up-to-date.
void remove_space_dimensions(const Variables_Set &vars)
Removes all the specified dimensions from the vector space.
static bool add_to_system_and_check_independence(Linear_System1 &eq_sys, const Row2 &eq)
bool sat_g_is_up_to_date() const
Returns true if the saturation matrix sat_g is up-to-date.
void throw_dimension_incompatible(const char *method, const char *other_name, dimension_type other_dim) const
bool strictly_contains(const Polyhedron &y) const
Returns true if and only if *this strictly contains y.
const Constraint_System & constraints() const
Returns the system of constraints.
void H79_widening_assign(const Polyhedron &y, unsigned *tp=0)
Assigns to *this the result of computing the H79_widening between *this and y.
bool bounds_from_below(const Linear_Expression &expr) const
Returns true if and only if expr is bounded from below in *this.
bool is_topologically_closed() const
Returns true if and only if *this is a topologically closed subset of the vector space.
Polyhedron & operator=(const Polyhedron &y)
The assignment operator. (*this and y can be dimension-incompatible.)
void obtain_sorted_constraints() const
Sorts the matrix of constraints keeping status consistency.
Polyhedron(Topology topol, dimension_type num_dimensions, Degenerate_Element kind)
Builds a polyhedron having the specified properties.
bool BFT00_poly_hull_assign_if_exact(const Polyhedron &y)
If the poly-hull of *this and y is exact it is assigned to *this and true is returned, otherwise false is returned.
static dimension_type simplify(Linear_System1 &sys, Bit_Matrix &sat)
Uses Gauss' elimination method to simplify the result of conversion().
void limited_BHRZ03_extrapolation_assign(const Polyhedron &y, const Constraint_System &cs, unsigned *tp=0)
Assigns to *this the result of computing the limited extrapolation between *this and y using the BHRZ...
static Object & check_obj_space_dimension_overflow(Object &input, Topology topol, const char *method, const char *reason)
void bounded_affine_preimage(Variable var, const Linear_Expression &lb_expr, const Linear_Expression &ub_expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the preimage of *this with respect to the bounded affine relation ...
void refine_with_linear_form_inequality(const Linear_Form< Interval< FP_Format, Interval_Info > > &left, const Linear_Form< Interval< FP_Format, Interval_Info > > &right, bool is_strict=false)
Refines *this with the constraint expressed by left right if is_strict is set, with the constraint l...
bool frequency(const Linear_Expression &expr, Coefficient &freq_n, Coefficient &freq_d, Coefficient &val_n, Coefficient &val_d) const
Returns true if and only if there exist a unique value val such that *this saturates the equality exp...
void add_recycled_constraints(Constraint_System &cs)
Adds the constraints in cs to the system of constraints of *this (without minimizing the result)...
void add_recycled_congruences(Congruence_System &cgs)
Adds the congruences in cgs to *this, if all the congruences can be exactly represented by a polyhedr...
bool can_have_something_pending() const
Returns true if the polyhedron can have something pending.
void refine_with_constraint(const Constraint &c)
Uses a copy of constraint c to refine *this.
A dimension of the vector space.
static dimension_type conversion(Source_Linear_System &source, dimension_type start, Dest_Linear_System &dest, Bit_Matrix &sat, dimension_type num_lines_or_equalities)
Performs the conversion from constraints to generators and vice versa.
Bounded_Integer_Type_Overflow
Complexity_Class
Complexity pseudo-classes.
The base class for convex polyhedra.
void limited_H79_extrapolation_assign(const Polyhedron &y, const Constraint_System &cs, unsigned *tp=0)
Assigns to *this the result of computing the limited extrapolation between *this and y using the H79-...
void set_sat_c_up_to_date()
Sets status to express that sat_c is up-to-date.
static void modify_according_to_evolution(Linear_Expression &ray, const Linear_Expression &x, const Linear_Expression &y)
bool BHZ09_C_poly_hull_assign_if_exact(const Polyhedron &y)
void update_sat_g() const
Updates sat_g using the updated constraints and generators.
Constraint_System simplified_constraints() const
If constraints are up-to-date, obtain a simplified copy of them.
#define PPL_OUTPUT_DECLARATIONS
void affine_form_image(Variable var, const Linear_Form< Interval< FP_Format, Interval_Info > > &lf)
void add_recycled_generators(Generator_System &gs)
Adds the generators in gs to the system of generators of *this (without minimizing the result)...
void throw_invalid_generators(const char *method, const char *gs_name) const
Topology topology() const
Returns the topological kind of the polyhedron.
bool generators_are_up_to_date() const
Returns true if the system of generators is up-to-date.
void add_generators(const Generator_System &gs)
Adds a copy of the generators in gs to the system of generators of *this (without minimizing the resu...
void throw_invalid_argument(const char *method, const char *reason) const
Constraint_System con_sys
The system of constraints.
memory_size_type external_memory_in_bytes() const
Returns the size in bytes of the memory managed by *this.
static void finalize()
Finalizes the class.
void remove_higher_space_dimensions(dimension_type new_dimension)
Removes the higher dimensions of the vector space so that the resulting space will have dimension new...
bool process_pending() const
Processes the pending rows of either description of the polyhedron and obtains a minimized polyhedron...
static void convert_to_integer_expressions(const Linear_Form< Interval< FP_Format, Interval_Info > > &lf, const dimension_type lf_dimension, Linear_Expression &res, Coefficient &res_low_coeff, Coefficient &res_hi_coeff, Coefficient &denominator)
Normalization helper function.
void clear_pending_constraints()
Sets status to express that there are no longer pending constraints.
static dimension_type check_space_dimension_overflow(dimension_type dim, dimension_type max, const Topology topol, const char *method, const char *reason)
bool is_universe() const
Returns true if and only if *this is a universe polyhedron.
Relation_Symbol
Relation symbols.
Degenerate_Element
Kinds of degenerate abstract elements.
bool constraints_are_up_to_date() const
Returns true if the system of constraints is up-to-date.
void refine_no_check(const Constraint &c)
Uses a copy of constraint c to refine the system of constraints of *this.
void throw_topology_incompatible(const char *method, const char *ph_name, const Polyhedron &ph) const
bool BHZ09_NNC_poly_hull_assign_if_exact(const Polyhedron &y)
void obtain_sorted_generators_with_sat_g() const
Sorts the matrix of generators and updates sat_g.
void obtain_sorted_constraints_with_sat_c() const
Sorts the matrix of constraints and updates sat_c.
Bounded_Integer_Type_Width
void wrap_assign(const Variables_Set &vars, Bounded_Integer_Type_Width w, Bounded_Integer_Type_Representation r, Bounded_Integer_Type_Overflow o, const Constraint_System *cs_p=0, unsigned complexity_threshold=16, bool wrap_individually=true)
Wraps the specified dimensions of the vector space.
Bit_Matrix sat_g
The saturation matrix having generators on its columns.
void set_generators_minimized()
Sets status to express that generators are minimized.
void refine_with_constraints(const Constraint_System &cs)
Uses a copy of the constraints in cs to refine *this.
static dimension_type max_space_dimension()
Returns the maximum space dimension all kinds of Polyhedron can handle.
const Generator_System & generators() const
Returns the system of generators.
bool eq(Boundary_Type type1, const T1 &x1, const Info1 &info1, Boundary_Type type2, const T2 &x2, const Info2 &info2)
const Generator_System & minimized_generators() const
Returns the system of generators, with no redundant generator.
bool maximize(const Linear_Expression &expr, Coefficient &sup_n, Coefficient &sup_d, bool &maximum) const
Returns true if and only if *this is not empty and expr is bounded from above in *this, in which case the supremum value is computed.
void refine_fp_interval_abstract_store(Box< Interval< FP_Format, Interval_Info > > &store) const
Refines store with the constraints defining *this.
void intersection_assign(const Polyhedron &y)
Assigns to *this the intersection of *this and y.
A not necessarily closed, iso-oriented hyperrectangle.
PPL_COEFFICIENT_TYPE Coefficient
An alias for easily naming the type of PPL coefficients.
bool BHRZ03_combining_constraints(const Polyhedron &y, const BHRZ03_Certificate &y_cert, const Polyhedron &H79, const Constraint_System &x_minus_H79_cs)
void process_pending_generators() const
Processes the pending generators and obtains a minimized polyhedron.
void clear_empty()
Clears the status flag indicating that the polyhedron is empty.
void add_generator(const Generator &g)
Adds a copy of generator g to the system of generators of *this (without minimizing the result)...
Status status
The status flags to keep track of the polyhedron's internal state.
bool is_included_in(const Polyhedron &y) const
Returns true if and only if *this is included in y.
void add_constraints(const Constraint_System &cs)
Adds a copy of the constraints in cs to the system of constraints of *this (without minimizing the re...
void positive_time_elapse_assign_impl(const Polyhedron &y)
Assuming *this is NNC, assigns to *this the result of the "positive time-elapse" between *this and y...
void remove_pending_to_obtain_constraints() const
Lazily integrates the pending descriptions of the polyhedron to obtain a constraint system without pe...
bool BHRZ03_evolving_rays(const Polyhedron &y, const BHRZ03_Certificate &y_cert, const Polyhedron &H79)
A generic, not necessarily closed, possibly restricted interval.
bool BHRZ03_evolving_points(const Polyhedron &y, const BHRZ03_Certificate &y_cert, const Polyhedron &H79)
void set_empty()
Sets status to express that the polyhedron is empty, clearing all corresponding matrices.
A conjunctive assertion about a polyhedron.
The convergence certificate for the BHRZ03 widening operator.
The entire library is confined to this namespace.
static void convert_to_integer_expression(const Linear_Form< Interval< FP_Format, Interval_Info > > &lf, const dimension_type lf_dimension, Linear_Expression &result)
Helper function that makes result become a Linear_Expression obtained by normalizing the denominators...
dimension_type space_dim
The number of dimensions of the enclosing vector space.
void difference_assign(const Polyhedron &y)
Same as poly_difference_assign(y).
bool bounds(const Linear_Expression &expr, bool from_above) const
Checks if and how expr is bounded in *this.
void upper_bound_assign(const Polyhedron &y)
Same as poly_hull_assign(y).
Congruence_System congruences() const
Returns a system of (equality) congruences satisfied by *this.
void poly_hull_assign(const Polyhedron &y)
Assigns to *this the poly-hull of *this and y.
bool contains(const Polyhedron &y) const
Returns true if and only if *this contains y.
bool is_necessarily_closed() const
Returns true if and only if the polyhedron is necessarily closed.
void add_congruence(const Congruence &cg)
Adds a copy of congruence cg to *this, if cg can be exactly represented by a polyhedron.
A bounded difference shape.
void clear_sat_g_up_to_date()
Sets status to express that sat_g is no longer up-to-date.
void fold_space_dimensions(const Variables_Set &vars, Variable dest)
Folds the space dimensions in vars into dest.
void select_H79_constraints(const Polyhedron &y, Constraint_System &cs_selected, Constraint_System &cs_not_selected) const
Splits the constraints of `x' into two subsets, depending on whether or not they are selected to comp...
Dense representation: the coefficient sequence is represented as a vector of coefficients, including the zero coefficients. If there are only a few nonzero coefficients, this representation is faster and also uses a bit less memory.
static dimension_type * simplify_num_saturators_p
Pointer to an array used by simplify().
bool OK(bool check_not_empty=false) const
Checks if all the invariants are satisfied.
bool process_pending_constraints() const
Processes the pending constraints and obtains a minimized polyhedron.
void clear_constraints_minimized()
Sets status to express that constraints are no longer minimized.
static const Representation default_con_sys_repr
void expand_space_dimension(Variable var, dimension_type m)
Creates m copies of the space dimension corresponding to var.
void overapproximate_linear_form(const Linear_Form< Interval< FP_Format, Interval_Info > > &lf, const dimension_type lf_dimension, Linear_Form< Interval< FP_Format, Interval_Info > > &result)
Helper function that overapproximates an interval linear form.
bool simplify_using_context_assign(const Polyhedron &y)
Assigns to *this a meet-preserving simplification of *this with respect to y. If false is returned...
static size_t simplify_num_saturators_size
Dimension of an array used by simplify().
void generalized_affine_preimage(Variable var, Relation_Symbol relsym, const Linear_Expression &expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the preimage of *this with respect to the generalized affine relation ...
bool operator==(const Box< ITV > &x, const Box< ITV > &y)
void concatenate_assign(const Polyhedron &y)
Assigns to *this the concatenation of *this and y, taken in this order.
void update_sat_c() const
Updates sat_c using the updated constraints and generators.
Three_Valued_Boolean quick_equivalence_test(const Polyhedron &y) const
Polynomial but incomplete equivalence test between polyhedra.
void obtain_sorted_generators() const
Sorts the matrix of generators keeping status consistency.
bool BHZ09_poly_hull_assign_if_exact(const Polyhedron &y)
memory_size_type total_memory_in_bytes() const
Returns the total size in bytes of the memory occupied by *this.
bool has_pending_generators() const
Returns true if there are pending generators.
dimension_type affine_dimension() const
Returns , if *this is empty; otherwise, returns the affine dimension of *this.
void clear_sat_c_up_to_date()
Sets status to express that sat_c is no longer up-to-date.
size_t memory_size_type
An unsigned integral type for representing memory size in bytes.
void time_elapse_assign(const Polyhedron &y)
Assigns to *this the result of computing the time-elapse between *this and y.
void bounded_BHRZ03_extrapolation_assign(const Polyhedron &y, const Constraint_System &cs, unsigned *tp=0)
Assigns to *this the result of computing the bounded extrapolation between *this and y using the BHRZ...
friend bool operator==(const Polyhedron &x, const Polyhedron &y)
Bit_Matrix sat_c
The saturation matrix having constraints on its columns.
static const Representation default_gen_sys_repr
void throw_invalid_generator(const char *method, const char *g_name) const
void set_constraints_minimized()
Sets status to express that constraints are minimized.
static bool can_recycle_constraint_systems()
Returns true indicating that this domain has methods that can recycle constraints.
Coefficient_traits::const_reference Coefficient_one()
Returns a const reference to a Coefficient with value 1.
A convergence certificate for the H79 widening operator.
void generalized_affine_image(Variable var, Relation_Symbol relsym, const Linear_Expression &expr, Coefficient_traits::const_reference denominator=Coefficient_one())
Assigns to *this the image of *this with respect to the generalized affine relation ...
void set_generators_pending()
Sets status to express that generators are pending.
void positive_time_elapse_assign(const Polyhedron &y)
Assigns to *this (the best approximation of) the result of computing the positive time-elapse between...
void unconstrain(Variable var)
Computes the cylindrification of *this with respect to space dimension var, assigning the result to *...
static bool add_and_minimize(bool con_to_gen, Source_Linear_System1 &source1, Dest_Linear_System &dest, Bit_Matrix &sat, const Source_Linear_System2 &source2)
Adds given constraints and builds minimized corresponding generators or vice versa.
void bounded_H79_extrapolation_assign(const Polyhedron &y, const Constraint_System &cs, unsigned *tp=0)
Assigns to *this the result of computing the bounded extrapolation between *this and y using the H79-...
const Constraint_System & minimized_constraints() const
Returns the system of constraints, with no redundant constraint.
dimension_type space_dimension() const
Returns the dimension of the vector space enclosing *this.
void refine_with_congruences(const Congruence_System &cgs)
Uses a copy of the congruences in cgs to refine *this.
bool is_necessarily_closed_for_interfaces(const Polyhedron &ph)
Returns true if and only if ph.topology() == NECESSARILY_CLOSED.
static void add_space_dimensions(Linear_System1 &sys1, Linear_System2 &sys2, Bit_Matrix &sat1, Bit_Matrix &sat2, dimension_type add_dim)
Adds new space dimensions to the given linear systems.
void m_swap(Polyhedron &y)
Swaps *this with polyhedron y. (*this and y can be dimension-incompatible.)
bool le(Boundary_Type type1, const T1 &x1, const Info1 &info1, Boundary_Type type2, const T2 &x2, const Info2 &info2)
void clear_generators_up_to_date()
Sets status to express that generators are no longer up-to-date.
The relation between a polyhedron and a generator.
Bounded_Integer_Type_Representation
bool is_bounded() const
Returns true if and only if *this is a bounded polyhedron.
void set_zero_dim_univ()
Sets status to express that the polyhedron is the universe 0-dimension vector space, clearing all corresponding matrices.
bool is_discrete() const
Returns true if and only if *this is discrete.
Topology
Kinds of polyhedra domains.
void clear_generators_minimized()
Sets status to express that generators are no longer minimized.
static void initialize()
Initializes the class.
Poly_Con_Relation relation_with(const Constraint &c) const
Returns the relations holding between the polyhedron *this and the constraint c.
Coefficient coefficient_type
The numeric type of coefficients.
The relation between a polyhedron and a constraint.
bool has_something_pending() const
Returns true if there are either pending constraints or pending generators.