APRONXX
0.9.12
|
Level 0 abstract value (ap_abstract0_t* wrapper). More...
#include <apxx_abstract0.hh>
Inherits apron::use_malloc.
Public Member Functions | |
Constructors | |
abstract0 (manager &m, size_t intdim, size_t realdim, top x) | |
Creates an abstract element representing the whole space. More... | |
abstract0 (manager &m, size_t intdim, size_t realdim, bottom x) | |
Creates an abstract element representing the empty set. More... | |
abstract0 (manager &m, const abstract0 &t) | |
Creates a (deep) copy of the abstract element. More... | |
abstract0 (manager &m, size_t intdim, size_t realdim, const interval_array &x) | |
Creates an abstract element from a box. More... | |
abstract0 (manager &m, size_t intdim, size_t realdim, const lincons0_array &x) | |
Creates an abstract element from a conjunction of linear constraints. More... | |
abstract0 (manager &m, size_t intdim, size_t realdim, const tcons0_array &x) | |
Creates an abstract element from a conjunction of arbitrary constraints. More... | |
abstract0 (const abstract0 &t) | |
Creates a (deep) copy of the abstract element. More... | |
Destructors | |
~abstract0 () | |
Destroys the abstract element. More... | |
void | free (manager &m) |
Destroys the abstract element using the given manager. More... | |
Copies and conversions to abstract elements | |
abstract0 & | operator= (const abstract0 &t) |
Assigns a copy of t to *this. More... | |
abstract0 & | operator= (top t) |
Assigns the full space to *this. More... | |
abstract0 & | operator= (bottom t) |
Assigns the empty set to *this. More... | |
abstract0 & | operator= (const interval_array &x) |
Assigns a box to *this. More... | |
abstract0 & | operator= (const lincons0_array &x) |
Assigns a conjunction of linear constraints to *this. More... | |
abstract0 & | operator= (const tcons0_array &x) |
Assigns a conjunction of arbitrary constraints to *this. More... | |
abstract0 & | set (manager &m, const abstract0 &x) |
Replaces *this with a copy of x. More... | |
abstract0 & | set (manager &m, top t, size_t intdim=AP_DIM_MAX, size_t realdim=AP_DIM_MAX) |
Replaces *this with the full space. More... | |
abstract0 & | set (manager &m, bottom t, size_t intdim=AP_DIM_MAX, size_t realdim=AP_DIM_MAX) |
Replaces *this with the empty set. More... | |
abstract0 & | set (manager &m, const interval_array &x, size_t intdim=AP_DIM_MAX, size_t realdim=AP_DIM_MAX) |
Replaces *this with a box. More... | |
abstract0 & | set (manager &m, const lincons0_array &x, size_t intdim=AP_DIM_MAX, size_t realdim=AP_DIM_MAX) |
Replaces *this with a conjunction of linear constraints. More... | |
abstract0 & | set (manager &m, const tcons0_array &x, size_t intdim=AP_DIM_MAX, size_t realdim=AP_DIM_MAX) |
Replaces *this with a conjunction of arbitrary constraints. More... | |
Control of internal representation | |
abstract0 & | minimize (manager &m) |
Minimizes the size of the representation, to save memory. More... | |
abstract0 & | canonicalize (manager &m) |
Puts the abstract element in canonical form (if such a notion exists). More... | |
abstract0 & | approximate (manager &m, int algorithm) |
Simplifies the abstract element, potentially loosing precision. More... | |
Access | |
manager | get_manager () const |
Returns the manager the abstract element was created with (with reference count incremented). More... | |
ap_dimension_t | get_dimension (manager &m) const |
Returns the number of integer and real dimensions in the abstract element. More... | |
size_t | size (manager &m) const |
Returns the (abstract) size of the abstract element. More... | |
Property extraction | |
interval | bound (manager &m, const linexpr0 &l) const |
Returns some bounds for a linear expression evaluated in all points in the abstract element. More... | |
interval | bound (manager &m, const texpr0 &l) const |
Returns some bounds for an arbitrary expression evaluated in all points in the abstract element. More... | |
interval | bound (manager &m, ap_dim_t d) const |
Returns some bounds for the given coordinate on all points in the abstract element. More... | |
interval_array | to_box (manager &m) const |
Returns a bounding box for the set represented by the abstract element. More... | |
generator0_array | to_generator_array (manager &m) const |
Returns a generator representation of (an over-approximation of) the set represented by the abstract element. More... | |
lincons0_array | to_lincons_array (manager &m) const |
Returns a linear constraint representation of (an over-approximation of) the set represented by the abstract element. More... | |
tcons0_array | to_tcons_array (manager &m) const |
Returns a constraint representation of (an over-approximation of) the set represented by the abstract element. More... | |
C API compatibility | |
ap_abstract0_t * | get_ap_abstract0_t () |
Returns a pointer to the internal APRON object stored in *this. More... | |
const ap_abstract0_t * | get_ap_abstract0_t () const |
Returns a pointer to the internal APRON object stored in *this. More... | |
![]() | |
void * | operator new (size_t sz) |
void * | operator new[] (size_t sz) |
void | operator delete (void *p) |
void | operator delete[] (void *p) |
Protected Member Functions | |
abstract0 (ap_abstract0_t *x) | |
Internal use only. Wraps an abstract0 around the pointer x, taking ownership of the object. More... | |
Protected Attributes | |
ap_abstract0_t * | a |
Pointer managed by APRON. More... | |
Static Protected Attributes | |
static const abstract0 | null |
NULL abstract element, to be used only as default argument in assign and substitute. More... | |
Friends | |
Widening | |
abstract0 & | widening (manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y) |
Stores in dst the result of x widened with y. More... | |
abstract0 & | widening (manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y, const lincons0_array &l) |
Stores in dst the result of x widened with y, using some widening thresholds. More... | |
Printing | |
void | printdiff (manager &m, const abstract0 &x, const abstract0 &y, char **name_of_dim, FILE *stream) |
Pretty-printing the difference between x and y to a C stream. More... | |
std::ostream & | operator<< (std::ostream &os, const abstract0 &s) |
Prints in constraint form. More... | |
void | print (manager &m, char **name_of_dim=NULL, FILE *stream=stdout) const |
Pretty-printing to a C stream. More... | |
void | dump (manager &m, FILE *stream=stdout) const |
Raw printing to a C stream (mainly for debug purposes). More... | |
Serialisation | |
abstract0 & | deserialize (manager &m, abstract0 &dst, const std::string &s, size_t *eaten) |
Reconstruct an abstract element form a serialized byte-stream and put it into dst. More... | |
std::string * | serialize (manager &m) const |
Serializes an abstract element. More... | |
Predicates | |
bool | operator== (const abstract0 &x, const abstract0 &y) |
Whether x and y represent the same set. More... | |
bool | operator!= (const abstract0 &x, const abstract0 &y) |
Whether x and y represent different sets. More... | |
bool | operator<= (const abstract0 &x, const abstract0 &y) |
Whether x is included within y (set-wise). More... | |
bool | operator>= (const abstract0 &x, const abstract0 &y) |
Whether x contains y (set-wise). More... | |
bool | operator> (const abstract0 &x, const abstract0 &y) |
Whether x strictly contains y (set-wise). More... | |
bool | operator< (const abstract0 &x, const abstract0 &y) |
Whether x is strictly included within y (set-wise). More... | |
bool | is_bottom (manager &m) const |
Whether *this represents the empty set. More... | |
bool | is_top (manager &m) const |
Whether *this represents the full space. More... | |
bool | is_eq (manager &m, const abstract0 &x) const |
Whether *this and x represent the same set. More... | |
bool | is_leq (manager &m, const abstract0 &x) const |
Whether *this is included in x (set-wise). More... | |
bool | sat (manager &m, const lincons0 &l) const |
Whether all points in *this satisfy a linear constraint. More... | |
bool | sat (manager &m, const tcons0 &l) const |
Whether all points in *this satisfy an arbitrary constraint. More... | |
bool | sat (manager &m, ap_dim_t dim, const interval &i) const |
Whether the dimension dim of all points in *this is included in the given interval. More... | |
bool | is_dimension_unconstrained (manager &m, ap_dim_t dim) const |
Whether the points in *this are unbounded in the given dimension. More... | |
Meet | |
abstract0 & | meet (manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y) |
Replaces dst with the meet of x and y. More... | |
abstract0 & | meet (manager &m, abstract0 &dst, const std::vector< const abstract0 * > &x) |
Replaces dst with the meet of all abstract elements in x. More... | |
abstract0 & | meet (manager &m, abstract0 &dst, size_t size, const abstract0 *const x[]) |
Replaces dst with the meet of all size abstract elements in x. More... | |
abstract0 & | meet (manager &m, abstract0 &dst, const abstract0 &x, const lincons0_array &y) |
Replaces dst with the meet of x and some linear constraints. More... | |
abstract0 & | meet (manager &m, abstract0 &dst, const abstract0 &x, const tcons0_array &y) |
Replaces dst with the meet of x and some arbitrary constraints. More... | |
abstract0 & | meet (manager &m, const abstract0 &y) |
Replaces *this with the meet of *this and the abstract element y. More... | |
abstract0 & | meet (manager &m, const lincons0_array &y) |
Adds some linear constraints to *this (modified in-place). More... | |
abstract0 & | meet (manager &m, const tcons0_array &y) |
Adds some arbitrary constraints to *this (modified in-place). More... | |
abstract0 & | operator *= (const abstract0 &y) |
Replaces *this with the meet of *this and the abstract element y. More... | |
abstract0 & | operator *= (const lincons0_array &y) |
Adds some linear constraints to *this (modified in-place). More... | |
abstract0 & | operator *= (const tcons0_array &y) |
Adds some arbitrary constraints to *this (modified in-place). More... | |
Join | |
abstract0 & | join (manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y) |
Replaces dst with the join of x and y. More... | |
abstract0 & | join (manager &m, abstract0 &dst, const std::vector< const abstract0 * > &x) |
Replaces dst with the join of all abstract elements in x. More... | |
abstract0 & | join (manager &m, abstract0 &dst, size_t size, const abstract0 *const x[]) |
Replaces dst with the join of all size abstract elements in x. More... | |
abstract0 & | add_rays (manager &m, abstract0 &dst, const abstract0 &x, const generator0_array &y) |
Replaces dst with x with some rays added. More... | |
abstract0 & | join (manager &m, const abstract0 &y) |
Replaces *this with the join of *this and the abstract element y. More... | |
abstract0 & | add_rays (manager &m, const generator0_array &y) |
Adds some rays to *this (modified in-place). More... | |
abstract0 & | operator+= (const abstract0 &y) |
Replaces *this with the join of *this and the abstract element y. More... | |
abstract0 & | operator+= (const generator0_array &y) |
Adds some rays to *this (modified in-place). More... | |
Assignment | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter) |
Assignment of linear expression. More... | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[], const linexpr0 *const l[], const abstract0 &inter) |
Parallel assignment of linear expressions. More... | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > &dim, const std::vector< const linexpr0 * > &l, const abstract0 &inter) |
Parallel assignment of linear expressions. More... | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const texpr0 &l, const abstract0 &inter) |
Assignment of arbitrary expression. More... | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[], const texpr0 *const l[], const abstract0 &inter) |
Parallel assignment of arbitrary expressions. More... | |
abstract0 & | assign (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > &dim, const std::vector< const texpr0 * > &l, const abstract0 &inter) |
Parallel assignment of arbitrary expressions. More... | |
abstract0 & | assign (manager &m, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter=null) |
In-place assignment of linear expression. More... | |
abstract0 & | assign (manager &m, size_t size, const ap_dim_t dim[], const linexpr0 *const l[], const abstract0 &inter=null) |
In-place parallel assignment of linear expressions. More... | |
abstract0 & | assign (manager &m, const std::vector< ap_dim_t > &dim, const std::vector< const linexpr0 * > &l, const abstract0 &inter=null) |
In-place parallel assignment of linear expressions. More... | |
abstract0 & | assign (manager &m, ap_dim_t dim, const texpr0 &l, const abstract0 &inter=null) |
In-place assignment of arbitrary expression. More... | |
abstract0 & | assign (manager &m, size_t size, const ap_dim_t dim[], const texpr0 *const l[], const abstract0 &inter=null) |
In-place parallel assignment of arbitrary expressions. More... | |
abstract0 & | assign (manager &m, const std::vector< ap_dim_t > &dim, const std::vector< const texpr0 * > &l, const abstract0 &inter=null) |
In-place parallel assignment of arbitrary expressions. More... | |
Substitution | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter) |
Substitution (backward assignment) of linear expression. More... | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[], const linexpr0 *const l[], const abstract0 &inter) |
Parallel substitution (backward assignment) of linear expressions. More... | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > &dim, const std::vector< const linexpr0 * > &l, const abstract0 &inter) |
Parallel substitution (backward assignment) of linear expressions. More... | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const texpr0 &l, const abstract0 &inter) |
Substitution (backward assignment) of arbitrary expression. More... | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[], const texpr0 *const l[], const abstract0 &inter) |
Parallel substitution (backward assignment) of arbitrary expressions. More... | |
abstract0 & | substitute (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > &dim, const std::vector< const texpr0 * > &l, const abstract0 &inter) |
Parallel substitution (backward assignment) of arbitrary expressions. More... | |
abstract0 & | substitute (manager &m, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter=null) |
In-place substitution (backward assignment) of linear expression. More... | |
abstract0 & | substitute (manager &m, size_t size, const ap_dim_t dim[], const linexpr0 *const l[], const abstract0 &inter=null) |
In-place parallel substitution (backward assignment) of linear expressions. More... | |
abstract0 & | substitute (manager &m, const std::vector< ap_dim_t > &dim, const std::vector< const linexpr0 * > &l, const abstract0 &inter=null) |
In-place parallel substitution (backward assignment) of linear expressions. More... | |
abstract0 & | substitute (manager &m, ap_dim_t dim, const texpr0 &l, const abstract0 &inter=null) |
In-place substitution (backward assignment) of arbitrary expression. More... | |
abstract0 & | substitute (manager &m, size_t size, const ap_dim_t dim[], const texpr0 *const l[], const abstract0 &inter=null) |
In-place parallel substitution (backward assignment) of arbitrary expressions. More... | |
abstract0 & | substitute (manager &m, const std::vector< ap_dim_t > &dim, const std::vector< const texpr0 * > &l, const abstract0 &inter=null) |
In-place parallel substitution (backward assignment) of arbitrary expressions. More... | |
Projection, forget | |
abstract0 & | forget (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, bool project) |
Stores in dst the result of forgetting the value of dimension dim in src. More... | |
abstract0 & | forget (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[], bool project) |
Stores in dst the result of forgetting the value of dimensions dim[0] to dim[size-1] in src. More... | |
abstract0 & | forget (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > dim, bool project) |
Stores in dst the result of forgetting the value of all the dimensions in dim in src. More... | |
abstract0 & | forget (manager &m, ap_dim_t dim, bool project=false) |
Forgets about the value of dimension dim in *this. More... | |
abstract0 & | forget (manager &m, size_t size, const ap_dim_t dim[], bool project=false) |
Forgets about the value of dimensions dims[0] to dims[size-1] in *this. More... | |
abstract0 & | forget (manager &m, const std::vector< ap_dim_t > dim, bool project=false) |
Forgets about the value of all the dimensions in dim in *this. More... | |
Change of dimension | |
abstract0 & | add_dimensions (manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d, bool project) |
Copies src into dst and adds some dimensions. More... | |
abstract0 & | remove_dimensions (manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d) |
Copies src into dst and removes some dimensions. More... | |
abstract0 & | permute_dimensions (manager &m, abstract0 &dst, const abstract0 &src, const dimperm &d) |
Copies src into dst and permute some dimensions. More... | |
abstract0 & | add_dimensions (manager &m, const dimchange &d, bool project=false) |
Adds some dimensions to *this. More... | |
abstract0 & | remove_dimensions (manager &m, const dimchange &d) |
Removes some dimensions from *this. More... | |
abstract0 & | permute_dimensions (manager &m, const dimperm &d) |
Permutes some dimensions in *this. More... | |
Expansion and folding | |
abstract0 & | expand (manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, size_t n) |
Replaces dst with a copy of src and duplicates dimension dim into n copies. More... | |
abstract0 & | fold (manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[]) |
Replaces dst with a copy of src and folds dimensions dims[0] to dim[size-1]. More... | |
abstract0 & | fold (manager &m, abstract0 &dst, const abstract0 &src, const std::vector< ap_dim_t > &dim) |
Replaces dst with a copy of src and folds all dimensions in dims. More... | |
abstract0 & | expand (manager &m, ap_dim_t dim, size_t n=1) |
Duplicates dimension dim into n copies in *this (modified in-place). More... | |
abstract0 & | fold (manager &m, size_t size, const ap_dim_t dim[]) |
Folds dimensions dim[0] to dim[size-1] in *this (modified in-place). More... | |
abstract0 & | fold (manager &m, const std::vector< ap_dim_t > &dim) |
Folds all dimensions dims in *this (modified in-place). More... | |
Closure | |
abstract0 & | closure (manager &m, abstract0 &dst, const abstract0 &src) |
Stores in dst the topological closure of src. More... | |
abstract0 & | closure (manager &m) |
Replaces *this with its topological closure. More... | |
Level 0 abstract value (ap_abstract0_t* wrapper).
An abstract0 object stores an abstract value. It represents a set of points in a numerical space with some integer-valued dimensions and some real-valued dimensions.
true
if the predicate is definitively true, and false
if either the predicate is false (flag_exact is then true), or due to abstraction, the domain cannot conclude (flag_exact is then false).An abstract0 is always created with a manager that indicates the underlying library. This defines its internal representation and algorithms, which in turns defines the expressiveness and cost vs. precision trade-off. Most operations to manipulate an abstract0 also take a manager as first argument. This must be a manager compatible with the one of all abstract0 arguments (including this), that is, a manger created by the same library (e.g., NewPolka polyhedra) and using the same parameter values, if any (e.g., strictness). It need not be the very same manager the abstract0 was created with.
Overloaded arithmetic, assignment and copy operators that cannot take an extra manager argument will implicitly use the manager used to create the first argument.
Additionally, for binary or n-aray operators, all abstract0 must have the same number of integer and real dimensions.
Many operations exist in two kinds:
Both kinds will return a reference to the abstract0 that holds the result.
Most functions can throw a variety of exceptions:
max_object_size
value set by the user in the manager,timout
value set by the user in the manager.
|
inlineprotected |
Internal use only. Wraps an abstract0 around the pointer x, taking ownership of the object.
Creates an abstract element representing the whole space.
Creates an abstract element representing the empty set.
Creates a (deep) copy of the abstract element.
|
inline |
Creates an abstract element from a box.
std::invalid_argument | if x has less than intdim+realdim dimensions. |
|
inline |
Creates an abstract element from a conjunction of linear constraints.
|
inline |
Creates an abstract element from a conjunction of arbitrary constraints.
|
inline |
Creates a (deep) copy of the abstract element.
Implicitly uses the manager used to create *this.
|
inline |
Destroys the abstract element.
Implicitly uses the manager used to create *this.
|
inline |
Adds some dimensions to *this.
project
whether to set the new dimensions to 0 (if true), or leave them undefined (if false).
|
inline |
Adds some rays to *this (modified in-place).
y
can only contain rays and lines, not vertexes.Simplifies the abstract element, potentially loosing precision.
|
inline |
In-place assignment of linear expression.
*this is modified in-place to reflect the effect of assigning l to dimension dim. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel assignment of linear expressions.
*this is modified in-place to reflect the effect of assigning l[i] to dimension dim[i], for i from 0 to size-1. Assignments are performed in parallel. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel assignment of linear expressions.
*this is modified in-place to reflect the effect of assigning l[i] to dimension dim[i]. Assignments are performed in parallel. If inter is specified, *this is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
inline |
In-place assignment of arbitrary expression.
*this is modified in-place to reflect the effect of assigning l to dimension dim. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel assignment of arbitrary expressions.
*this is modified in-place to reflect the effect of assigning l[i] to dimension dim[i], for i from 0 to size-1. Assignments are performed in parallel. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel assignment of arbitrary expressions.
*this is modified in-place to reflect the effect of assigning l[i] to dimension dim[i]. Assignments are performed in parallel. If inter is specified, *this is then intersected with it.
std::invalid_argument | if the vectors have different size. |
Returns some bounds for a linear expression evaluated in all points in the abstract element.
Returns some bounds for an arbitrary expression evaluated in all points in the abstract element.
Returns some bounds for the given coordinate on all points in the abstract element.
Puts the abstract element in canonical form (if such a notion exists).
Replaces *this with its topological closure.
|
inline |
Raw printing to a C stream (mainly for debug purposes).
Duplicates dimension dim into n copies in *this (modified in-place).
New dimensions are appended after the last integer or real dimension of *this.
Folds dimensions dim[0] to dim[size-1] in *this (modified in-place).
dim must be sorted and contain variables of the same type (integer or real). After folding, only dim[0] is kept and other dimensions are removed.
Folds all dimensions dims in *this (modified in-place).
dim must be sorted and contain variables of the same type (integer or real). After folding, only dim[0] is kept and other dimensions are removed.
Forgets about the value of dimension dim in *this.
project
whether to reset the dimension to 0 (if true), or leave it undefined (if false).
|
inline |
Forgets about the value of dimensions dims[0] to dims[size-1] in *this.
project
whether to reset the dimensions to 0 (if true), or leave them undefined (if false).
|
inline |
Forgets about the value of all the dimensions in dim in *this.
project
whether to reset the dimensions to 0 (if true), or leave them undefined (if false).
|
inline |
Destroys the abstract element using the given manager.
The abstract element cannot be used after being freed. However, the standard destructor can be safely be called (resulting in a no-op).
|
inline |
Returns a pointer to the internal APRON object stored in *this.
|
inline |
Returns a pointer to the internal APRON object stored in *this.
|
inline |
Returns the number of integer and real dimensions in the abstract element.
|
inline |
Returns the manager the abstract element was created with (with reference count incremented).
|
inline |
Whether *this represents the empty set.
|
inline |
Whether the points in *this are unbounded in the given dimension.
Whether *this and x represent the same set.
Whether *this is included in x (set-wise).
|
inline |
Whether *this represents the full space.
Replaces *this with the join of *this and the abstract element y.
Replaces *this with the meet of *this and the abstract element y.
|
inline |
Adds some linear constraints to *this (modified in-place).
|
inline |
Adds some arbitrary constraints to *this (modified in-place).
Minimizes the size of the representation, to save memory.
Replaces *this with the meet of *this and the abstract element y.
Implicitly uses the manager used to create *this.
|
inline |
Adds some linear constraints to *this (modified in-place).
Implicitly uses the manager used to create *this.
|
inline |
Adds some arbitrary constraints to *this (modified in-place).
Implicitly uses the manager used to create *this.
Replaces *this with the join of *this and the abstract element y.
Implicitly uses the manager used to create *this.
|
inline |
Adds some rays to *this (modified in-place).
Implicitly uses the manager used to create *this.
y
can only contain rays and lines, not vertexes.Assigns a copy of t to *this.
Implicitly uses the manager used to create *this.
Assigns the full space to *this.
Implicitly uses the manager used to create *this.
Assigns the empty set to *this.
Implicitly uses the manager used to create *this.
|
inline |
Assigns a box to *this.
Implicitly uses the manager used to create *this.
std::invalid_argument | if the array has insufficient size. |
|
inline |
Assigns a conjunction of linear constraints to *this.
Implicitly uses the manager used to create *this.
|
inline |
Assigns a conjunction of arbitrary constraints to *this.
Implicitly uses the manager used to create *this.
Permutes some dimensions in *this.
|
inline |
Pretty-printing to a C stream.
Removes some dimensions from *this.
Whether all points in *this satisfy a linear constraint.
Whether all points in *this satisfy an arbitrary constraint.
Whether the dimension dim of all points in *this is included in the given interval.
|
inline |
Serializes an abstract element.
The string can be safely stored to disk and reloaded later or transmitted across a network. The format is library-specific but is generally a machine-readable byte-stream.
Replaces *this with a copy of x.
|
inline |
Replaces *this with the full space.
You can either specify new intdim and realdim values or keep those of *this (if unspecified, i.e., left to AP_DIM_MAX
).
|
inline |
Replaces *this with the empty set.
You can either specify new intdim and realdim values or keep those of *this (if unspecified, i.e., left to AP_DIM_MAX
).
|
inline |
Replaces *this with a box.
You can either specify new intdim and realdim values or keep those of *this (if unspecified, i.e., left to AP_DIM_MAX
).
|
inline |
Replaces *this with a conjunction of linear constraints.
You can either specify new intdim and realdim values or keep those of *this (if unspecified, i.e., left to AP_DIM_MAX
).
|
inline |
Replaces *this with a conjunction of arbitrary constraints.
You can either specify new intdim and realdim values or keep those of *this (if unspecified, i.e., left to AP_DIM_MAX
).
|
inline |
Returns the (abstract) size of the abstract element.
The unit in which size is computed is library-specific. It is guaranteed to be the same as the unit for the max_object_size
field of the ap_funopt_t structure.
|
inline |
In-place substitution (backward assignment) of linear expression.
*this is modified in-place to reflect the effect of substituting l to dimension dim. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel substitution (backward assignment) of linear expressions.
*this is modified in-place to reflect the effect of substituting l[i] to dimension dim[i], for i from 0 to size-1. Substitutions are performed in parallel. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel substitution (backward assignment) of linear expressions.
*this is modified in-place to reflect the effect of substituting l[i] to dimension dim[i]. Substitutions are performed in parallel. If inter is specified, *this is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
inline |
In-place substitution (backward assignment) of arbitrary expression.
*this is modified in-place to reflect the effect of substituting l to dimension dim. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel substitution (backward assignment) of arbitrary expressions.
*this is modified in-place to reflect the effect of substituting l[i] to dimension dim[i], for i from 0 to size-1. Substitutions are performed in parallel. If inter is specified, *this is then intersected with it.
|
inline |
In-place parallel substitution (backward assignment) of arbitrary expressions.
*this is modified in-place to reflect the effect of substituting l[i] to dimension dim[i]. Substitutions are performed in parallel. If inter is specified, *this is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
inline |
Returns a bounding box for the set represented by the abstract element.
|
inline |
Returns a generator representation of (an over-approximation of) the set represented by the abstract element.
|
inline |
Returns a linear constraint representation of (an over-approximation of) the set represented by the abstract element.
|
inline |
Returns a constraint representation of (an over-approximation of) the set represented by the abstract element.
|
friend |
Copies src into dst and adds some dimensions.
project
whether to set the new dimensions to 0 (if true), or leave them undefined (if false).
|
friend |
Replaces dst with x with some rays added.
y
can only contain rays and lines, not vertexes.
|
friend |
Assignment of linear expression.
dst is replaced with the effect of assigning l to dimension dim in src. If inter is specified, dst is then intersected with it.
|
friend |
Parallel assignment of linear expressions.
dst is replaced with the effect of assigning l[i] to dimension dim[i] in src, for i from 0 to size-1. Assignments are performed in parallel. If inter is specified, dst is then intersected with it.
|
friend |
Parallel assignment of linear expressions.
dst is replaced with the effect of assigning l[i] to dimension dim[i] in src. Assignments are performed in parallel. If inter is specified, dst is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
friend |
Assignment of arbitrary expression.
dst is replaced with the effect of assigning l to dimension dim in src. If inter is specified, dst is then intersected with it.
|
friend |
Parallel assignment of arbitrary expressions.
dst is replaced with the effect of assigning l[i] to dimension dim[i] in src, for i from 0 to size-1. Assignments are performed in parallel. If inter is specified, dst is then intersected with it.
|
friend |
Parallel assignment of arbitrary expressions.
dst is replaced with the effect of assigning l[i] to dimension dim[i] in src. Assignments are performed in parallel. If inter is specified, dst is then intersected with it.
std::invalid_argument | if the vectors have different size. |
Stores in dst the topological closure of src.
|
friend |
Reconstruct an abstract element form a serialized byte-stream and put it into dst.
The managers used to serialized and deserialize need not be the same, but they must have been created using the same library and with the same arguments.
eaten
, if not NULL, will be set to the actual number of bytes consumed from the string.
|
friend |
Replaces dst with a copy of src and duplicates dimension dim into n copies.
New dimensions are appended after the last integer or real dimension of dst.
|
friend |
Replaces dst with a copy of src and folds dimensions dims[0] to dim[size-1].
dim must be sorted and contain variables of the same type (integer or real). After folding, only dim[0] is kept and other dimensions are removed.
|
friend |
Replaces dst with a copy of src and folds all dimensions in dims.
dim must be sorted and contain variables of the same type (integer or real). After folding, only dim[0] is kept and other dimensions are removed.
|
friend |
Stores in dst the result of forgetting the value of dimension dim in src.
project
if true, resets the dimension to 0 (if true).
|
friend |
Stores in dst the result of forgetting the value of dimensions dim[0] to dim[size-1] in src.
project
whether to reset the dimensions to 0 (if true), or leave them undefined (if false).
|
friend |
Stores in dst the result of forgetting the value of all the dimensions in dim in src.
project
whether to reset the dimensions to 0 (if true), or leave them undefined (if false).Replaces dst with the join of x and y.
Replaces dst with the join of all abstract elements in x.
Replaces dst with the join of all size abstract elements in x.
Replaces dst with the meet of x and y.
Replaces dst with the meet of all abstract elements in x.
Replaces dst with the meet of all size abstract elements in x.
|
friend |
Replaces dst with the meet of x and some linear constraints.
|
friend |
Replaces dst with the meet of x and some arbitrary constraints.
Whether x and y represent different sets.
The manager for the left argument is used implicitly.
Whether x is strictly included within y (set-wise).
The manager for the left argument is used implicitly.
|
friend |
Prints in constraint form.
Whether x is included within y (set-wise).
The manager for the left argument is used implicitly.
Whether x and y represent the same set.
The manager for the left argument is used implicitly.
Whether x strictly contains y (set-wise).
The manager for the left argument is used implicitly.
Whether x contains y (set-wise).
The manager for the left argument is used implicitly.
|
friend |
Copies src into dst and permute some dimensions.
|
friend |
Pretty-printing the difference between x and y to a C stream.
|
friend |
Copies src into dst and removes some dimensions.
|
friend |
Substitution (backward assignment) of linear expression.
dst is replaced with the effect of substituting l to dimension dim in src. If inter is specified, dst is then intersected with it.
|
friend |
Parallel substitution (backward assignment) of linear expressions.
dst is replaced with the effect of substituting l[i] to dimension dim[i] in src, for i from 0 to size-1. Substitutions are performed in parallel. If inter is specified, dst is then intersected with it.
|
friend |
Parallel substitution (backward assignment) of linear expressions.
dst is replaced with the effect of substituting l[i] to dimension dim[i] in src. Substitutions are performed in parallel. If inter is specified, dst is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
friend |
Substitution (backward assignment) of arbitrary expression.
dst is replaced with the effect of substituting l to dimension dim in src. If inter is specified, dst is then intersected with it.
|
friend |
Parallel substitution (backward assignment) of arbitrary expressions.
dst is replaced with the effect of substituting l[i] to dimension dim[i] in src, for i from 0 to size-1. Substitutions are performed in parallel. If inter is specified, dst is then intersected with it.
|
friend |
Parallel substitution (backward assignment) of arbitrary expressions.
dst is replaced with the effect of substituting l[i] to dimension dim[i] in src. Substitutions are performed in parallel. If inter is specified, dst is then intersected with it.
std::invalid_argument | if the vectors have different size. |
|
friend |
Stores in dst the result of x widened with y.
|
friend |
Stores in dst the result of x widened with y, using some widening thresholds.
|
protected |
Pointer managed by APRON.
|
staticprotected |
NULL abstract element, to be used only as default argument in assign and substitute.