C++ Language Interface

The core implementation of the Parma Polyhedra Library is written in C++. More...

Classes

struct  Parma_Polyhedra_Library::Compile_Time_Check< true >
 A class that is only defined if b evaluates to true. More...
struct  Parma_Polyhedra_Library::Bool< b >
 A class holding a constant called value that evaluates to b. More...
struct  Parma_Polyhedra_Library::True
 A class holding a constant called value that evaluates to true. More...
struct  Parma_Polyhedra_Library::False
 A class holding a constant called value that evaluates to false. More...
struct  Parma_Polyhedra_Library::Is_Same< T1, T2 >
 A class holding a constant called value that evaluates to true if and only if T1 is the same type as T2. More...
struct  Parma_Polyhedra_Library::Is_Same< T, T >
 A class holding a constant called value that evaluates to true if and only if T1 is the same type as T2. More...
struct  Parma_Polyhedra_Library::Is_Same_Or_Derived< Base, Derived >
 A class holding a constant called value that evaluates to true if and only if Base is the same type as Derived or Derived is a class derived from Base. More...
struct  Parma_Polyhedra_Library::Enable_If< b, T >
 A class that provides a type member called type equivalent to T if and only if b is true. More...
struct  Parma_Polyhedra_Library::Enable_If< true, T >
 A class that provides a type member called type equivalent to T if and only if b is true. More...
struct  Parma_Polyhedra_Library::float_ieee754_half
struct  Parma_Polyhedra_Library::float_ieee754_single
struct  Parma_Polyhedra_Library::float_ieee754_double
struct  Parma_Polyhedra_Library::float_ibm_single
struct  Parma_Polyhedra_Library::float_ibm_double
struct  Parma_Polyhedra_Library::float_intel_double_extended
struct  Parma_Polyhedra_Library::float_ieee754_quad
class  Parma_Polyhedra_Library::Float< T >
struct  Parma_Polyhedra_Library::Extended_Number_Policy
struct  Parma_Polyhedra_Library::Check_Overflow_Policy< T >
 A policy checking for overflows. More...
struct  Parma_Polyhedra_Library::Native_Checked_From_Wrapper< T, typename Enable_If< Is_Native< T >::value >::type >
struct  Parma_Polyhedra_Library::Native_Checked_From_Wrapper< Checked_Number< T, P > >
struct  Parma_Polyhedra_Library::Native_Checked_To_Wrapper< T, typename Enable_If< Is_Native< T >::value >::type >
struct  Parma_Polyhedra_Library::Native_Checked_To_Wrapper< Checked_Number< T, P > >
struct  Parma_Polyhedra_Library::Is_Checked< T >
struct  Parma_Polyhedra_Library::Is_Checked< Checked_Number< T, P > >
struct  Parma_Polyhedra_Library::Is_Native_Or_Checked< T >
class  Parma_Polyhedra_Library::Checked_Number< T, Policy >
 A wrapper for numeric types implementing a given policy. More...
struct  Parma_Polyhedra_Library::Slow_Copy< Checked_Number< T, P > >
struct  Parma_Polyhedra_Library::Coefficient_traits_template< GMP_Integer >
 Coefficient traits specialization for unbounded integers. More...
struct  Parma_Polyhedra_Library::Coefficient_traits_template< Coefficient >
 Coefficient traits. More...
struct  Parma_Polyhedra_Library::Checked_Number_Transparent_Policy< T >
class  Parma_Polyhedra_Library::Init
 Class for initialization and finalization. More...
struct  Parma_Polyhedra_Library::Weightwatch_Traits
 Traits class for the deterministic timeout mechanism. More...
class  Parma_Polyhedra_Library::Throwable
 User objects the PPL can throw. More...
struct  Parma_Polyhedra_Library::Recycle_Input
 A tag class. More...
class  Parma_Polyhedra_Library::Row_Impl_Handler
 The handler of the actual Row implementation. More...
class  Parma_Polyhedra_Library::Row
 A finite sequence of coefficients. More...
class  Parma_Polyhedra_Library::Row::Flags
 Wrapper class to represent a set of flags with bits in a native unsigned integral type. More...
class  Parma_Polyhedra_Library::Row_Impl_Handler::Impl
 The actual implementation of a Row object. More...
class  Parma_Polyhedra_Library::Matrix
 A 2-dimensional matrix of coefficients. More...
class  Parma_Polyhedra_Library::Matrix::const_iterator
 An iterator over a matrix. More...
class  Parma_Polyhedra_Library::Linear_Row
 The base class for linear expressions, constraints and generators. More...
class  Parma_Polyhedra_Library::Linear_Row::Flags
 The type of the object to which the coefficients refer to, encoding both topology and kind. More...
class  Parma_Polyhedra_Library::Linear_System
 The base class for systems of constraints and generators. More...
struct  Parma_Polyhedra_Library::Linear_System::With_Pending
 A tag class. More...
class  Parma_Polyhedra_Library::MIP_Problem
 A Mixed Integer (linear) Programming problem. More...
class  Parma_Polyhedra_Library::Bit_Row
 A row in a matrix of bits. More...
class  Parma_Polyhedra_Library::Bit_Matrix
 A matrix of bits. More...
struct  Parma_Polyhedra_Library::Bit_Matrix::Bit_Row_Less_Than
 Ordering predicate (used when implementing the sort algorithm). More...
class  Parma_Polyhedra_Library::Variable
 A dimension of the vector space. More...
struct  Parma_Polyhedra_Library::Variable::Compare
 Binary predicate defining the total ordering on variables. More...
class  Parma_Polyhedra_Library::Linear_Expression
 A linear expression. More...
class  Parma_Polyhedra_Library::Constraint
 A linear equality or inequality. More...
class  Parma_Polyhedra_Library::Congruence
 A linear congruence. More...
class  Parma_Polyhedra_Library::Generator
 A line, ray, point or closure point. More...
class  Parma_Polyhedra_Library::Grid_Generator
 A grid line, parameter or grid point. More...
class  Parma_Polyhedra_Library::Constraint_System
 A system of constraints. More...
class  Parma_Polyhedra_Library::Constraint_System::const_iterator
 An iterator over a system of constraints. More...
class  Parma_Polyhedra_Library::Congruence_System
 A system of congruences. More...
class  Parma_Polyhedra_Library::Congruence_System::const_iterator
 An iterator over a system of congruences. More...
class  Parma_Polyhedra_Library::Generator_System
 A system of generators. More...
class  Parma_Polyhedra_Library::Generator_System::const_iterator
 An iterator over a system of generators. More...
class  Parma_Polyhedra_Library::Grid_Generator_System
 A system of grid generators. More...
class  Parma_Polyhedra_Library::Grid_Generator_System::const_iterator
 An iterator over a system of grid generators. More...
class  Parma_Polyhedra_Library::Scalar_Products
 A class implementing various scalar product functions. More...
class  Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign
 Scalar product sign function object depending on topology. More...
class  Status
 A conjunctive assertion about a polyhedron. More...
class  Parma_Polyhedra_Library::Polyhedron
 The base class for convex polyhedra. More...
class  Parma_Polyhedra_Library::Polyhedron::Status
 A conjunctive assertion about a polyhedron. More...
class  Parma_Polyhedra_Library::Grid
 A grid. More...
class  Parma_Polyhedra_Library::Poly_Con_Relation
 The relation between a polyhedron and a constraint. More...
class  Parma_Polyhedra_Library::Poly_Gen_Relation
 The relation between a polyhedron and a generator. More...
class  Parma_Polyhedra_Library::Interval< Boundary, Info >
 A generic, not necessarily closed, possibly restricted interval. More...
class  Parma_Polyhedra_Library::C_Polyhedron
 A closed convex polyhedron. More...
class  Parma_Polyhedra_Library::NNC_Polyhedron
 A not necessarily closed convex polyhedron. More...
class  Parma_Polyhedra_Library::Widening_Function< PSET >
 Wraps a widening method into a function object. More...
class  Parma_Polyhedra_Library::Limited_Widening_Function< PSET, CSYS >
 Wraps a limited widening method into a function object. More...
class  Parma_Polyhedra_Library::BHRZ03_Certificate
 The convergence certificate for the BHRZ03 widening operator. More...
struct  Parma_Polyhedra_Library::BHRZ03_Certificate::Compare
 A total ordering on BHRZ03 certificates. More...
class  Parma_Polyhedra_Library::H79_Certificate
 A convergence certificate for the H79 widening operator. More...
struct  Parma_Polyhedra_Library::H79_Certificate::Compare
 A total ordering on H79 certificates. More...
class  Parma_Polyhedra_Library::Grid_Certificate
 The convergence certificate for the Grid widening operator. More...
class  Parma_Polyhedra_Library::Determinate< PSET >
 A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98]. More...
class  Parma_Polyhedra_Library::Determinate< PSET >::Binary_Operator_Assign_Lifter< Binary_Operator_Assign >
 A function adapter for the Determinate class. More...
class  Parma_Polyhedra_Library::Determinate< PSET >::Rep
 The possibly shared representation of a Determinate object. More...
class  Parma_Polyhedra_Library::iterator_to_const< Container >
 An iterator on a sequence of read-only objects. More...
class  Parma_Polyhedra_Library::const_iterator_to_const< Container >
 A const_iterator on a sequence of read-only objects. More...
class  Parma_Polyhedra_Library::Powerset< D >
 The powerset construction on a base-level domain. More...
class  Parma_Polyhedra_Library::Pointset_Powerset< PSET >
 The powerset construction instantiated on PPL pointset domains. More...
class  Parma_Polyhedra_Library::Smash_Reduction< D1, D2 >
 This class provides the reduction method for the Smash_Product domain. More...
class  Parma_Polyhedra_Library::Constraints_Reduction< D1, D2 >
 This class provides the reduction method for the Constraints_Product domain. More...
class  Parma_Polyhedra_Library::Congruences_Reduction< D1, D2 >
 This class provides the reduction method for the Congruences_Product domain. More...
class  Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >
 This class provides the reduction method for the Shape_Preserving_Product domain. More...
class  Parma_Polyhedra_Library::No_Reduction< D1, D2 >
 This class provides the reduction method for the Direct_Product domain. More...
class  Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >
 The partially reduced product of two abstractions. More...
class  Parma_Polyhedra_Library::Box< ITV >
 A not necessarily closed, iso-oriented hyperrectangle. More...
class  Parma_Polyhedra_Library::DB_Row_Impl_Handler< T >
 The handler of the actual DB_Row implementation. More...
class  Parma_Polyhedra_Library::DB_Row< T >
 The base class for the single rows of matrices. More...
class  Parma_Polyhedra_Library::DB_Row_Impl_Handler< T >::Impl
 The real implementation of a DB_Row object. More...
class  Parma_Polyhedra_Library::DB_Matrix< T >
 The base class for the square matrices. More...
class  Parma_Polyhedra_Library::DB_Matrix< T >::const_iterator
 A read-only iterator over the rows of the matrix. More...
class  Parma_Polyhedra_Library::BD_Shape< T >
 A bounded difference shape. More...
class  Parma_Polyhedra_Library::BD_Shape< T >::Status
 A conjunctive assertion about a BD_Shape<T> object. More...
class  Parma_Polyhedra_Library::Octagonal_Shape< T >
 An octagonal shape. More...
class  Parma_Polyhedra_Library::PIP_Problem
 A Parametric Integer (linear) Programming problem. More...
class  Parma_Polyhedra_Library::GMP_Integer
 Unbounded integers as provided by the GMP library. More...

Namespaces

namespace  Parma_Polyhedra_Library::IO_Operators
 

All input/output operators are confined to this namespace.


namespace  Parma_Polyhedra_Library::Checked
 

Types and functions implementing checked numbers.


namespace  Parma_Polyhedra_Library::Implementation
 

Implementation related data and functions.


namespace  std
 

The standard C++ namespace.


Defines

#define PPL_VERSION_MAJOR   0
 The major number of the PPL version.
#define PPL_VERSION_MINOR   11
 The minor number of the PPL version.
#define PPL_VERSION_REVISION   2
 The revision number of the PPL version.
#define PPL_VERSION_BETA   0
 The beta number of the PPL version. This is zero for official releases and nonzero for development snapshots.
#define PPL_VERSION   "0.11.2"
 A string containing the PPL version.
#define const_bool_nodef(name, value)   enum anonymous_enum_ ## name { name = (value) }
 Declares a per-class constant of type bool, called name and with value value.
#define const_int_nodef(name, value)   enum anonymous_enum_ ## name { name = (value) }
 Declares a per-class constant of type int, called name and with value value.
#define const_value_nodef(type, name, value)
 Declares a per-class constant of type type, called name and with value value. The value of the constant is accessible by means of the syntax name().
#define const_ref_nodef(type, name, value)
 Declares a per-class constant of type type, called name and with value value. A constant reference to the constant is accessible by means of the syntax name().
#define PPL_COMPILE_TIME_CHECK(e, msg)   PPL_COMPILE_TIME_CHECK_AUX(e, __LINE__)
 Produces a compilation error if the compile-time constant e does not evaluate to true

Typedefs

typedef PPL_COEFFICIENT_TYPE Parma_Polyhedra_Library::Coefficient
 An alias for easily naming the type of PPL coefficients.
typedef
Coefficient_traits_template
< Coefficient > 
Parma_Polyhedra_Library::Coefficient_traits
 An alias for easily naming the coefficient traits.
typedef size_t Parma_Polyhedra_Library::dimension_type
 An unsigned integral type for representing space dimensions.
typedef size_t Parma_Polyhedra_Library::memory_size_type
 An unsigned integral type for representing memory size in bytes.

Enumerations

enum  Parma_Polyhedra_Library::Degenerate_Element { Parma_Polyhedra_Library::UNIVERSE, Parma_Polyhedra_Library::EMPTY }
 

Kinds of degenerate abstract elements.

More...
enum  Parma_Polyhedra_Library::Relation_Symbol {
  Parma_Polyhedra_Library::EQUAL, Parma_Polyhedra_Library::LESS_THAN, Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::GREATER_THAN,
  Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::NOT_EQUAL
}
 

Relation symbols.

More...
enum  Parma_Polyhedra_Library::Complexity_Class { Parma_Polyhedra_Library::POLYNOMIAL_COMPLEXITY, Parma_Polyhedra_Library::SIMPLEX_COMPLEXITY, Parma_Polyhedra_Library::ANY_COMPLEXITY }
 

Complexity pseudo-classes.

More...
enum  Parma_Polyhedra_Library::Optimization_Mode { Parma_Polyhedra_Library::MINIMIZATION, Parma_Polyhedra_Library::MAXIMIZATION }
 

Possible optimization modes.

More...
enum  Parma_Polyhedra_Library::Bounded_Integer_Type_Width {
  Parma_Polyhedra_Library::BITS_8, Parma_Polyhedra_Library::BITS_16, Parma_Polyhedra_Library::BITS_32, Parma_Polyhedra_Library::BITS_64,
  Parma_Polyhedra_Library::BITS_128
}
 

Widths of bounded integer types.

More...
enum  Parma_Polyhedra_Library::Bounded_Integer_Type_Representation { Parma_Polyhedra_Library::UNSIGNED, Parma_Polyhedra_Library::SIGNED_2_COMPLEMENT }
 

Representation of bounded integer types.

More...
enum  Parma_Polyhedra_Library::Bounded_Integer_Type_Overflow { Parma_Polyhedra_Library::OVERFLOW_WRAPS, Parma_Polyhedra_Library::OVERFLOW_UNDEFINED, Parma_Polyhedra_Library::OVERFLOW_IMPOSSIBLE }
 

Overflow behavior of bounded integer types.

More...
enum  Parma_Polyhedra_Library::Topology { Parma_Polyhedra_Library::NECESSARILY_CLOSED = 0, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED = 1 }
 

Kinds of polyhedra domains.

More...
enum  Parma_Polyhedra_Library::MIP_Problem_Status { Parma_Polyhedra_Library::UNFEASIBLE_MIP_PROBLEM, Parma_Polyhedra_Library::UNBOUNDED_MIP_PROBLEM, Parma_Polyhedra_Library::OPTIMIZED_MIP_PROBLEM }
 

Possible outcomes of the MIP_Problem solver.

More...
enum  Parma_Polyhedra_Library::PIP_Problem_Status { Parma_Polyhedra_Library::UNFEASIBLE_PIP_PROBLEM, Parma_Polyhedra_Library::OPTIMIZED_PIP_PROBLEM }
 

Possible outcomes of the PIP_Problem solver.

More...

Variables

const Throwable *volatile Parma_Polyhedra_Library::abandon_expensive_computations = 0
 A pointer to an exception object.

Detailed Description

The core implementation of the Parma Polyhedra Library is written in C++.

See Namespace, Hierarchical and Compound indexes for additional information about each single data type.


Define Documentation

#define const_bool_nodef ( name,
value   )     enum anonymous_enum_ ## name { name = (value) }

Declares a per-class constant of type bool, called name and with value value.

Differently from static constants, name needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).

Definition at line 42 of file meta_programming.hh.

#define const_int_nodef ( name,
value   )     enum anonymous_enum_ ## name { name = (value) }

Declares a per-class constant of type int, called name and with value value.

Differently from static constants, name needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).

Definition at line 56 of file meta_programming.hh.

#define const_ref_nodef ( type,
name,
value   ) 
Value:
static const type& name() {                                             \
    static type name(value);                                            \
    return name;                                                        \
  }

Declares a per-class constant of type type, called name and with value value. A constant reference to the constant is accessible by means of the syntax name().

Differently from static constants, name needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).

Definition at line 88 of file meta_programming.hh.

#define const_value_nodef ( type,
name,
value   ) 
Value:
static type name() {                            \
    return value;                               \
  }

Declares a per-class constant of type type, called name and with value value. The value of the constant is accessible by means of the syntax name().

Differently from static constants, name needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).

Definition at line 71 of file meta_programming.hh.

#define PPL_COMPILE_TIME_CHECK ( e,
msg   )     PPL_COMPILE_TIME_CHECK_AUX(e, __LINE__)
#define PPL_VERSION   "0.11.2"

A string containing the PPL version.

Let M and m denote the numbers associated to PPL_VERSION_MAJOR and PPL_VERSION_MINOR, respectively. The format of PPL_VERSION is M "." m if both PPL_VERSION_REVISION (r) and PPL_VERSION_BETA (b)are zero, M "." m "pre" b if PPL_VERSION_REVISION is zero and PPL_VERSION_BETA is not zero, M "." m "." r if PPL_VERSION_REVISION is not zero and PPL_VERSION_BETA is zero, M "." m "." r "pre" b if neither PPL_VERSION_REVISION nor PPL_VERSION_BETA are zero.

Definition at line 59 of file version.hh.

#define PPL_VERSION_BETA   0

The beta number of the PPL version. This is zero for official releases and nonzero for development snapshots.

Definition at line 45 of file version.hh.

Referenced by Parma_Polyhedra_Library::version_beta().

#define PPL_VERSION_MAJOR   0

The major number of the PPL version.

Definition at line 30 of file version.hh.

Referenced by Parma_Polyhedra_Library::version_major().

#define PPL_VERSION_MINOR   11

The minor number of the PPL version.

Definition at line 34 of file version.hh.

Referenced by Parma_Polyhedra_Library::version_minor().

#define PPL_VERSION_REVISION   2

The revision number of the PPL version.

Definition at line 38 of file version.hh.

Referenced by Parma_Polyhedra_Library::version_revision().


Typedef Documentation

typedef PPL_COEFFICIENT_TYPE Parma_Polyhedra_Library::Coefficient

An alias for easily naming the type of PPL coefficients.

Objects of type Coefficient are used to implement the integral valued coefficients occurring in linear expressions, constraints, generators, intervals, bounding boxes and so on. Depending on the chosen configuration options (see file README.configure), a Coefficient may actually be:

  • The GMP_Integer type, which in turn is an alias for the mpz_class type implemented by the C++ interface of the GMP library (this is the default configuration).
  • An instance of the Checked_Number class template: with the policy Bounded_Integer_Coefficient_Policy, this implements overflow detection on top of a native integral type (available template instances include checked integers having 8, 16, 32 or 64 bits); with the Checked_Number_Transparent_Policy, this is a wrapper for native integral types with no overflow detection (available template instances are as above).

Definition at line 172 of file Coefficient.types.hh.

typedef Coefficient_traits_template<Coefficient> Parma_Polyhedra_Library::Coefficient_traits

An alias for easily naming the coefficient traits.

Definition at line 178 of file Coefficient.types.hh.

An unsigned integral type for representing space dimensions.

Definition at line 22 of file globals.types.hh.

An unsigned integral type for representing memory size in bytes.

Definition at line 26 of file globals.types.hh.


Enumeration Type Documentation

Overflow behavior of bounded integer types.

See the section on approximating bounded integers.

Enumerator:
OVERFLOW_WRAPS 

On overflow, wrapping takes place.

This means that, for a $w$-bit bounded integer, the computation happens modulo $2^w$.

OVERFLOW_UNDEFINED 

On overflow, the result is undefined.

This simply means that the result of the operation resulting in an overflow can take any value.

Note:
Even though something more serious can happen in the system being analyzed ---due to, e.g., C's undefined behavior---, here we are only concerned with the results of arithmetic operations. It is the responsibility of the analyzer to ensure that other manifestations of undefined behavior are conservatively approximated.
OVERFLOW_IMPOSSIBLE 

Overflow is impossible.

This is for the analysis of languages where overflow is trapped before it affects the state, for which, thus, any indication that an overflow may have affected the state is necessarily due to the imprecision of the analysis.

Definition at line 121 of file globals.types.hh.

00121                                    {
00128   OVERFLOW_WRAPS,
00129 
00143   OVERFLOW_UNDEFINED,
00144 
00153   OVERFLOW_IMPOSSIBLE
00154 };

Representation of bounded integer types.

See the section on approximating bounded integers.

Enumerator:
UNSIGNED 

Unsigned binary.

SIGNED_2_COMPLEMENT 

Signed binary where negative values are represented by the two's complement of the absolute value.

Definition at line 104 of file globals.types.hh.

00104                                          {
00106   UNSIGNED,
00107 
00112   SIGNED_2_COMPLEMENT
00113 };

Widths of bounded integer types.

See the section on approximating bounded integers.

Enumerator:
BITS_8 

8 bits.

BITS_16 

16 bits.

BITS_32 

32 bits.

BITS_64 

64 bits.

BITS_128 

128 bits.

Definition at line 81 of file globals.types.hh.

00081                                 {
00083   BITS_8 = 8,
00084 
00086   BITS_16 = 16,
00087 
00089   BITS_32 = 32,
00090 
00092   BITS_64 = 64,
00093 
00095   BITS_128 = 128
00096 };

Complexity pseudo-classes.

Enumerator:
POLYNOMIAL_COMPLEXITY 

Worst-case polynomial complexity.

SIMPLEX_COMPLEXITY 

Worst-case exponential complexity but typically polynomial behavior.

ANY_COMPLEXITY 

Any complexity.

Definition at line 57 of file globals.types.hh.

00057                       {
00059   POLYNOMIAL_COMPLEXITY,
00061   SIMPLEX_COMPLEXITY,
00063   ANY_COMPLEXITY
00064 };

Kinds of degenerate abstract elements.

Enumerator:
UNIVERSE 

The universe element, i.e., the whole vector space.

EMPTY 

The empty element, i.e., the empty set.

Definition at line 30 of file globals.types.hh.

00030                         {
00032   UNIVERSE,
00034   EMPTY
00035 };

Possible outcomes of the MIP_Problem solver.

Enumerator:
UNFEASIBLE_MIP_PROBLEM 

The problem is unfeasible.

UNBOUNDED_MIP_PROBLEM 

The problem is unbounded.

OPTIMIZED_MIP_PROBLEM 

The problem has an optimal solution.

Definition at line 20 of file MIP_Problem.types.hh.

Possible optimization modes.

Enumerator:
MINIMIZATION 

Minimization is requested.

MAXIMIZATION 

Maximization is requested.

Definition at line 68 of file globals.types.hh.

00068                        {
00070   MINIMIZATION,
00072   MAXIMIZATION
00073 };

Possible outcomes of the PIP_Problem solver.

Enumerator:
UNFEASIBLE_PIP_PROBLEM 

The problem is unfeasible.

OPTIMIZED_PIP_PROBLEM 

The problem has an optimal solution.

Definition at line 20 of file PIP_Problem.types.hh.

00020                         {
00022   UNFEASIBLE_PIP_PROBLEM,
00024   OPTIMIZED_PIP_PROBLEM
00025 };

Relation symbols.

Enumerator:
EQUAL 

Equal to.

LESS_THAN 

Less than.

LESS_OR_EQUAL 

Less than or equal to.

GREATER_THAN 

Greater than.

GREATER_OR_EQUAL 

Greater than or equal to.

NOT_EQUAL 

Not equal to.

Definition at line 40 of file globals.types.hh.

00040                      {
00042   EQUAL = 1,
00044   LESS_THAN = 2,
00046   LESS_OR_EQUAL = LESS_THAN | EQUAL,
00048   GREATER_THAN = 4,
00050   GREATER_OR_EQUAL = GREATER_THAN | EQUAL,
00052   NOT_EQUAL = LESS_THAN | GREATER_THAN
00053 };

Kinds of polyhedra domains.

Enumerator:
NECESSARILY_CLOSED 
NOT_NECESSARILY_CLOSED 

Definition at line 22 of file Topology.hh.

00022               {
00023   NECESSARILY_CLOSED = 0,
00024   NOT_NECESSARILY_CLOSED = 1
00025 };


Variable Documentation

A pointer to an exception object.

This pointer, which is initialized to zero, is repeatedly checked along any super-linear (i.e., computationally expensive) computation path in the library. When it is found nonzero the exception it points to is thrown. In other words, making this pointer point to an exception (and leaving it in this state) ensures that the library will return control to the client application, possibly by throwing the given exception, within a time that is a linear function of the size of the representation of the biggest object (powerset of polyhedra, polyhedron, system of constraints or generators) on which the library is operating upon.

Note:
The only sensible way to assign to this pointer is from within a signal handler or from a parallel thread. For this reason, the library, apart from ensuring that the pointer is initially set to zero, never assigns to it. In particular, it does not zero it again when the exception is thrown: it is the client's responsibility to do so.

Definition at line 32 of file globals.cc.

Referenced by Parma_Polyhedra_Library::Pointset_Powerset< PSET >::concatenate_assign(), Parma_Polyhedra_Library::maybe_abandon(), and Parma_Polyhedra_Library::Powerset< D >::omega_reduce().

Generated on Sun Feb 27 16:20:08 2011 for PPL by  doxygen 1.6.3