APRONXX 0.9.15
|
Level 1 abstract value (ap_abstract1_t wrapper). More...
#include <apxx_abstract1.hh>
Inherits apron::use_malloc.
Public Member Functions | |
Constructors | |
abstract1 (manager &m, const environment &e, top x) | |
Creates an abstract element representing the whole space. | |
abstract1 (manager &m, const environment &e, bottom x) | |
Creates an abstract element representing the empty set. | |
abstract1 (manager &m, const abstract1 &t) | |
Creates a (deep) copy of the abstract element. | |
abstract1 (manager &m, const environment &e, const abstract0 &t) | |
Creates a (deep) copy of the abstract element and associates an environment (reference count incremented). | |
abstract1 (manager &m, const environment &e, const var v[], const interval_array &x) | |
Creates an abstract element from a box. | |
abstract1 (manager &m, const environment &e, const std::vector< var > &v, const interval_array &x) | |
Creates an abstract element from a box. | |
abstract1 (manager &m, const lincons1_array &x) | |
Creates an abstract element from a conjunction of linear constraints. | |
abstract1 (manager &m, const tcons1_array &x) | |
Creates an abstract element from a conjunction of arbitrary constraints. | |
abstract1 (const abstract1 &t) | |
Creates a (deep) copy of the abstract element. | |
Destructors | |
~abstract1 () | |
Destroys the abstract element. | |
void | free (manager &m) |
Destroys the abstract element using the given manager. | |
Copies and conversions to abstract elements | |
abstract1 & | operator= (const abstract1 &t) |
Assigns a copy of t to *this. | |
abstract1 & | operator= (top t) |
Assigns the full space to *this. | |
abstract1 & | operator= (bottom t) |
Assigns the empty set to *this. | |
abstract1 & | operator= (const interval_array &x) |
Assigns a box to *this. | |
abstract1 & | operator= (const lincons1_array &x) |
Assigns a conjunction of linear constraints to *this. | |
abstract1 & | operator= (const tcons1_array &x) |
Assigns a conjunction of arbitrary constraints to *this. | |
abstract1 & | set (manager &m, const abstract1 &x) |
Replaces *this with a copy of x. | |
abstract1 & | set (manager &m, top t) |
Replaces *this with the full space. | |
abstract1 & | set (manager &m, const environment &e, top t) |
Replaces *this with the full space. | |
abstract1 & | set (manager &m, bottom t) |
Replaces *this with the empty set. | |
abstract1 & | set (manager &m, const environment &e, bottom t) |
Replaces *this with the empty set. | |
abstract1 & | set (manager &m, const interval_array &x) |
Replaces *this with a box. | |
abstract1 & | set (manager &m, const environment &e, const var v[], const interval_array &x) |
Replaces *this with a box. | |
abstract1 & | set (manager &m, const environment &e, const std::vector< var > &v, const interval_array &x) |
Replaces *this with a box. | |
abstract1 & | set (manager &m, const lincons1_array &x) |
Replaces *this with a conjunction of linear constraints. | |
abstract1 & | set (manager &m, const tcons1_array &x) |
Replaces *this with a conjunction of arbitrary constraints. | |
Control of internal representation | |
abstract1 & | minimize (manager &m) |
Minimizes the size of the representation, to save memory. | |
abstract1 & | canonicalize (manager &m) |
Puts the abstract element in canonical form (if such a notion exists). | |
abstract1 & | approximate (manager &m, int algorithm) |
Simplifies the abstract element, potentially loosing precision. | |
Access | |
manager | get_manager () const |
Returns the manager the abstract element was created with (with reference count incremented). | |
environment | get_environment () const |
Returns the environment of the abstract element (with reference count incremented). | |
abstract0 & | get_abstract0 () |
Returns a (modifiable) reference to the underlying abstract0. | |
const abstract0 & | get_abstract0 () const |
Returns a reference to the underlying abstract0. | |
size_t | size (manager &m) const |
Returns the (abstract) size of the abstract element. | |
Property extraction | |
interval | bound (manager &m, const linexpr1 &l) const |
Returns some bounds for a linear expression evaluated in all points in the abstract element. | |
interval | bound (manager &m, const texpr1 &l) const |
Returns some bounds for an arbitrary expression evaluated in all points in the abstract element. | |
interval | bound (manager &m, const var &v) const |
Returns some bounds for the given variable on all points in the abstract element. | |
interval_array | to_box (manager &m) const |
Returns a bounding box for the set represented by the abstract element. | |
generator1_array | to_generator_array (manager &m) const |
Returns a generator representation of (an over-approximation of) the set represented by the abstract element. | |
lincons1_array | to_lincons_array (manager &m) const |
Returns a linear constraint representation of (an over-approximation of) the set represented by the abstract element. | |
tcons1_array | to_tcons_array (manager &m) const |
Returns a constraint representation of (an over-approximation of) the set represented by the abstract element. | |
C API compatibility | |
ap_abstract1_t * | get_ap_abstract1_t () |
Returns a pointer to the internal APRON object stored in *this. | |
const ap_abstract1_t * | get_ap_abstract1_t () const |
Returns a pointer to the internal APRON object stored in *this. | |
![]() | |
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 | |
abstract1 (ap_abstract1_t x) | |
Internal use only. Shallow copy of structure. | |
Protected Attributes | |
ap_abstract1_t | a |
Structure managed by APRON. | |
Static Protected Attributes | |
static const abstract1 | null |
NULL abstract element, to be used only as default argument in assign and substitute. | |
Printing | |
void | print (manager &m, FILE *stream=stdout) const |
Pretty-printing to a C stream. | |
void | dump (manager &m, FILE *stream=stdout) const |
Raw printing to a C stream (mainly for debug purposes). | |
Serialisation | |
std::string * | serialize (manager &m) const |
Serializes an abstract element. | |
Predicates | |
bool | is_bottom (manager &m) const |
Whether *this represents the empty set. | |
bool | is_top (manager &m) const |
Whether *this represents the full space. | |
bool | is_eq (manager &m, const abstract1 &x) const |
Whether *this and x represent the same set. | |
bool | is_leq (manager &m, const abstract1 &x) const |
Whether *this is included in x (set-wise). | |
bool | sat (manager &m, const lincons1 &l) const |
Whether all points in *this satisfy a linear constraint. | |
bool | sat (manager &m, const tcons1 &l) const |
Whether all points in *this satisfy an arbitrary constraint. | |
bool | sat (manager &m, const var &v, const interval &i) const |
Whether the component v of all points in *this is included in the given interval. | |
bool | is_variable_unconstrained (manager &m, const var &v) const |
Whether the points in *this are unbounded in the given variable. | |
Meet and unification | |
abstract1 & | meet (manager &m, const abstract1 &y) |
Replaces *this with the meet of *this and the abstract element y. | |
abstract1 & | unify (manager &m, const abstract1 &y) |
Replaces *this with the meet of *this and the abstract element y. | |
abstract1 & | meet (manager &m, const lincons1_array &y) |
Adds some linear constraints to *this (modified in-place). | |
abstract1 & | meet (manager &m, const tcons1_array &y) |
Adds some arbitrary constraints to *this (modified in-place). | |
abstract1 & | operator*= (const abstract1 &y) |
Replaces *this with the meet of *this and the abstract element y. | |
abstract1 & | operator*= (const lincons1_array &y) |
Adds some linear constraints to *this (modified in-place). | |
abstract1 & | operator*= (const tcons1_array &y) |
Adds some arbitrary constraints to *this (modified in-place). | |
Join | |
abstract1 & | join (manager &m, const abstract1 &y) |
Replaces *this with the join of *this and the abstract element y. | |
abstract1 & | add_rays (manager &m, const generator1_array &y) |
Adds some rays to *this (modified in-place). | |
abstract1 & | operator+= (const abstract1 &y) |
Replaces *this with the join of *this and the abstract element y. | |
abstract1 & | operator+= (const generator1_array &y) |
Adds some rays to *this (modified in-place). | |
Assignment | |
abstract1 & | assign (manager &m, const var &v, const linexpr1 &l, const abstract1 &inter=null) |
In-place assignment of linear expression. | |
abstract1 & | assign (manager &m, size_t size, const var v[], const linexpr1 *const l[], const abstract1 &inter=null) |
In-place parallel assignment of linear expressions. | |
abstract1 & | assign (manager &m, const std::vector< var > &v, const std::vector< const linexpr1 * > &l, const abstract1 &inter=null) |
In-place parallel assignment of linear expressions. | |
abstract1 & | assign (manager &m, const var &v, const texpr1 &l, const abstract1 &inter=null) |
In-place assignment of arbitrary expression. | |
abstract1 & | assign (manager &m, size_t size, const var v[], const texpr1 *const l[], const abstract1 &inter=null) |
In-place parallel assignment of arbitrary expressions. | |
abstract1 & | assign (manager &m, const std::vector< var > &v, const std::vector< const texpr1 * > &l, const abstract1 &inter=null) |
In-place parallel assignment of arbitrary expressions. | |
Substitution | |
abstract1 & | substitute (manager &m, const var &v, const linexpr1 &l, const abstract1 &inter=null) |
In-place substitution (backward assignment) of linear expression. | |
abstract1 & | substitute (manager &m, size_t size, const var v[], const linexpr1 *const l[], const abstract1 &inter=null) |
In-place parallel substitution (backward assignment) of linear expressions. | |
abstract1 & | substitute (manager &m, const std::vector< var > &v, const std::vector< const linexpr1 * > &l, const abstract1 &inter=null) |
In-place parallel substitution (backward assignment) of linear expressions. | |
abstract1 & | substitute (manager &m, const var &v, const texpr1 &l, const abstract1 &inter=null) |
In-place substitution (backward assignment) of arbitrary expression. | |
abstract1 & | substitute (manager &m, size_t size, const var v[], const texpr1 *const l[], const abstract1 &inter=null) |
In-place parallel substitution (backward assignment) of arbitrary expressions. | |
abstract1 & | substitute (manager &m, const std::vector< var > &v, const std::vector< const texpr1 * > &l, const abstract1 &inter=null) |
In-place parallel substitution (backward assignment) of arbitrary expressions. | |
Projection, forget | |
abstract1 & | forget (manager &m, const var &v, bool project=false) |
Forgets about the value of variable v in *this. | |
abstract1 & | forget (manager &m, size_t size, const var v[], bool project=false) |
Forgets about the value of variables v[0] to v[size-1] in *this. | |
abstract1 & | forget (manager &m, const std::vector< var > &v, bool project=false) |
Forgets about the value of all the variables in v in *this. | |
Change of environment | |
abstract1 & | change_environment (manager &m, const environment &e, bool project=false) |
Modifies the environment of *this. | |
abstract1 & | minimize_environment (manager &m) |
Removes from *this the variables that are unconstrained. | |
abstract1 & | rename (manager &m, size_t size, const var oldv[], const var newv[]) |
Renames oldv[i] into newv[i] in *this. | |
abstract1 & | rename (manager &m, const std::vector< var > &oldv, const std::vector< var > &newv) |
Renames oldv[i] into newv[i] in *this. | |
Expansion and folding | |
abstract1 & | expand (manager &m, const var &v, size_t size, const var vv[]) |
Duplicates variable v into size copies in *this (modified in-place). | |
abstract1 & | expand (manager &m, const var &v, const std::vector< var > &vv) |
Duplicates variable v in *this (modified in-place). | |
abstract1 & | fold (manager &m, size_t size, const var v[]) |
Folds variables v[0] to v[size-1] in *this (modified in-place). | |
abstract1 & | fold (manager &m, const std::vector< var > &v) |
Folds all variables v in *this (modified in-place). | |
Closure | |
abstract1 & | closure (manager &m) |
Replaces *this with its topological closure. | |
Level 1 abstract value (ap_abstract1_t wrapper).
Level 1 version of abstract values. Variable names (var) are used in place of dimensions (ap_dim_t). Internally, an abstract1 wraps together an abstract0 (memory managed) and an environment (holding a reference count).
|
inlineprotected |
Internal use only. Shallow copy of structure.
|
inline |
Creates an abstract element representing the whole space.
|
inline |
Creates an abstract element representing the empty set.
Creates a (deep) copy of the abstract element.
|
inline |
Creates a (deep) copy of the abstract element and associates an environment (reference count incremented).
|
inline |
Creates an abstract element from a box.
x[i] is the bound for the variable v[i]. Variables not in v have unconstrained bounds.
|
inline |
Creates an abstract element from a box.
x[i] is the bound for all the variables in v. Variables not in v have unconstrained bounds.
|
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 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 parallel assignment of linear expressions.
*this is modified in-place to reflect the effect of assigning l[i] to variable v[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 parallel assignment of arbitrary expressions.
*this is modified in-place to reflect the effect of assigning l[i] to variable v[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 linear expression.
*this is modified in-place to reflect the effect of assigning l to variable v. If inter is specified, *this is then intersected with it.
|
inline |
In-place assignment of arbitrary expression.
*this is modified in-place to reflect the effect of assigning l to variable v. 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 variable v[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 variable v[i], for i from 0 to size-1. Assignments are performed in parallel. If inter is specified, *this is then intersected with it.
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 variable on all points in the abstract element.
Puts the abstract element in canonical form (if such a notion exists).
|
inline |
Modifies the environment of *this.
project
whether new variables are initialized to 0 (if true), or undefined (if false).Replaces *this with its topological closure.
|
inline |
Raw printing to a C stream (mainly for debug purposes).
Duplicates variable v in *this (modified in-place).
The i-th new variable is named vv[i].
Duplicates variable v into size copies in *this (modified in-place).
New variables are named vv[0] to vv[size-1].
Folds all variables v in *this (modified in-place).
After folding, only v[0] is kept and other variables are removed.
Folds variables v[0] to v[size-1] in *this (modified in-place).
After folding, only v[0] is kept and other variables are removed.
|
inline |
Forgets about the value of all the variables in v in *this.
project
whether to reset the variables to 0 (if true), or leave them undefined (if false).Forgets about the value of variable v in *this.
project
whether to reset the variable to 0 (if true), or leave it undefined (if false).
|
inline |
Forgets about the value of variables v[0] to v[size-1] in *this.
project
whether to reset the variables to 0 (if true), or it 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 (modifiable) reference to the underlying abstract0.
|
inline |
Returns a reference to the underlying abstract0.
|
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 environment of the abstract element (with reference count incremented).
|
inline |
Returns the manager the abstract element was created with (with reference count incremented).
|
inline |
Whether *this represents the empty set.
Whether *this and x represent the same set.
Whether *this is included in x (set-wise).
|
inline |
Whether *this represents the full space.
Whether the points in *this are unbounded in the given variable.
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.
Removes from *this the variables that are unconstrained.
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 the empty set to *this.
Implicitly uses the manager used to create *this. Does not change the environment.
Assigns a copy of t to *this.
Implicitly uses the manager used to create *this.
|
inline |
Assigns a box to *this.
Implicitly uses the manager used to create *this. Does not change the environment.
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. Does not change the environment.
|
inline |
Assigns a conjunction of arbitrary constraints to *this.
Implicitly uses the manager used to create *this.
Assigns the full space to *this.
Implicitly uses the manager used to create *this.
|
inline |
Pretty-printing to a C stream.
|
inline |
Renames oldv[i] into newv[i] in *this.
|
inline |
Renames oldv[i] into newv[i] in *this.
Whether all points in *this satisfy a linear constraint.
Whether all points in *this satisfy an arbitrary constraint.
Whether the component v 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 the empty set.
Does not change the environment.
Replaces *this with a copy of x.
|
inline |
Replaces *this with the empty set.
|
inline |
Replaces *this with a box.
|
inline |
Replaces *this with a box.
|
inline |
Replaces *this with the full space.
|
inline |
Replaces *this with a box.
Does not change the environment.
|
inline |
Replaces *this with a conjunction of linear constraints.
|
inline |
Replaces *this with a conjunction of arbitrary constraints.
Replaces *this with the full space.
Does not change the environment.
|
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 parallel substitution (backward assignment) of linear expressions.
*this is modified in-place to reflect the effect of substituting l[i] to variable v[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 parallel substitution (backward assignment) of arbitrary expressions.
*this is modified in-place to reflect the effect of substituting l[i] to variable v[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 linear expression.
*this is modified in-place to reflect the effect of substituting l to variable v. If inter is specified, *this is then intersected with it.
|
inline |
In-place substitution (backward assignment) of arbitrary expression.
*this is modified in-place to reflect the effect of substituting l to variable v. 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 variable v[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 variable v[i], for i from 0 to size-1. Substitutions are performed in parallel. If inter is specified, *this is then intersected with it.
|
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.
Replaces *this with the meet of *this and the abstract element y.
*this and y can have different environment. They are first embedded into the least common environment before the meet is computed.
|
protected |
Structure managed by APRON.
|
staticprotected |
NULL abstract element, to be used only as default argument in assign and substitute.