The Parma Polyhedra Library comes equipped with a Prolog interface. Despite the lack of standardization of Prolog's foreign language interfaces, the PPL Prolog interface supports several Prolog systems and, to the extent this is possible, provides a uniform view of the library from each such system.
The system-independent features of the library are described in Section System-Independent Features. Section Compilation and Installation explains how the Prolog interface is compiled and installed. Section System-Dependent Features illustrates the system-dependent features of the interface for all the supported systems.
The structure of this section is as follows:
In the sequel, prefix is the prefix under which you have installed the library (typically /usr or /usr/local). Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> Copyright (C) 2010-2011 BUGSENG srl (http://bugseng.com)
This document describes the Parma Polyhedra Library (PPL).
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
The PPL is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
The PPL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
For the most up-to-date information see the Parma Polyhedra Library site: http://www.cs.unipr.it/ppl/
The Prolog interface provides access to the numerical abstractions (convex polyhedra, BD shapes, octagonal shapes, etc.) implemented by the PPL library. A general introduction to the numerical abstractions, their representation in the PPL and the operations provided by the PPL is given in the main PPL user manual. Here we just describe those aspects that are specific to the Prolog interface.
First, here is a list of notes with general information and advice on the use of the interface.
ppl_initialize/0 and ppl_finalize/0. Thus the only interface predicates callable after ppl_finalize/0 are ppl_finalize/0 itself (this further call has no effect) and ppl_initialize/0, after which the interface's services are usable again. Some Prolog systems allow the specification of initialization and deinitialization functions in their foreign language interfaces. The corresponding incarnations of the Prolog interface have been written so that ppl_initialize/0 and/or ppl_finalize/0 are called automatically. Section System-Dependent Features will detail in which cases initialization and finalization is automatically performed or is left to the Prolog programmer's responsibility. However, for portable applications, it is best to invoke ppl_initialize/0 and ppl_finalize/0 explicitly: since they can be called multiple times without problems, this will result in enhanced portability at a cost that is, by all means, negligible.ppl_new_C_Polyhedron_from_space_dimension/3, ppl_new_C_Polyhedron_from_C_Polyhedron/2, ppl_new_C_Polyhedron_from_constraints/2, ppl_new_C_Polyhedron_from_generators/2,
ppl_delete_Polyhedron/1. To understand why this is important, consider a Prolog program and a variable that is bound to a Herbrand term. When the variable dies (goes out of scope) or is uninstantiated (on backtracking), the term it is bound to is amenable to garbage collection. But this only applies for the standard domain of the language: Herbrand terms. In Prolog+PPL, when, for example, a variable bound to a handle for a Polyhedron dies or is uninstantiated, the handle can be garbage-collected, but the polyhedron to which the handle refers will not be released. Once a handle has been used as an argument in ppl_delete_Polyhedron/1, it becomes invalid.k, the identifiers used for the PPL variables must lie between 0 and
and correspond to the indices of the associated Cartesian axes. For example, when using the predicates that combine PPL polyhedra or add constraints or generators to a representation of a PPL polyhedron, the polyhedra referenced and any constraints or generators in the call should follow all the (space) dimension-compatibility rules stated in Section Representations of Convex Polyhedra of the main PPL user manual.The PPL predicates provided by the Prolog interface are specified below. The specification uses the following grammar rules:
Number --> unsigned integer ranging from 0 to an upper bound depending on the actual Prolog system. C_int --> Number | - Number C integer C_unsigned --> Number C unsigned integer Coeff --> Number used in linear expressions; the upper bound will depend on how the PPL has been configured Dimension_Type --> Number used for the number of affine and space dimensions and the names of the dimensions; the upper bound will depend on the maximum number of dimensions allowed by the PPL (see ppl_max_space_dimensions/1) Boolean --> true | false Handle --> Prolog term used to identify a Polyhedron Topology --> c | nnc Polyhedral kind; c is closed and nnc is NNC VarId --> Dimension_Type variable identifier PPL_Var --> '$VAR'(VarId) PPL variable Lin_Expr --> PPL_Var PPL variable | Coeff | Lin_Expr unary plus | - Lin_Expr unary minus | Lin_Expr + Lin_Expr addition | Lin_Expr - Lin_Expr subtraction | Coeff * Lin_Expr multiplication | Lin_Expr * Coeff multiplication Relation_Symbol --> = equals | =< less than or equal | >= greater than or equal | < strictly less than | > strictly greater than Constraint --> Lin_Expr Relation_Symbol Lin_Expr constraint Constraint_System list of constraints --> [] | [Constraint | Constraint_System] Modulus --> Coeff | - Coeff Congruence --> Lin_Expr =:= Lin_Expr congruence with modulo 1 | (Lin_Expr =:= Lin_Expr) / Modulus congruence with modulo Modulus Congruence_System list of congruences --> [] | [Congruence | Congruence_System] Generator_Denominator --> Coeff must be non-zero | - Coeff Generator --> point(Lin_Expr) point | point(Lin_Expr, Generator_Denominator) point | closure_point(Lin_Expr) closure point | closure_point(Lin_Expr, Generator_Denominator) closure point | ray(Lin_Expr) ray | line(Lin_Expr) line Generator_System list of generators --> [] | [Generator | Generator_System] Grid_Generator --> grid_point(Lin_Expr) grid point | grid_point(Lin_Expr, Generator_Denominator) grid point | parameter(Lin_Expr) parameter | parameter(Lin_Expr, Generator_Denominator) parameter | grid_line(Lin_Expr) grid line Grid_Generator_System list of grid generators --> [] | [Grid_Generator | Grid_Generator_System] Atom --> Prolog atom Universe_or_Empty PPL object --> universe | empty Poly_Relation --> is_disjoint with a constraint or congruence | strictly_intersects with a constraint or congruence | is_included with a constraint or congruence | saturates with a constraint or congruence | subsumes with a (grid) generator Relation_List --> [] | [Poly_Relation | Relation_List] Complexity --> polynomial | simplex | any Vars_Pair --> PPLVar - PPLVar map relation P_Func --> [] list of map relations | [Vars_Pair | P_Func]. Optimization_Mode --> max | min MIP_Problem_Status --> unfeasible | unbounded | optimized Control_Parameter_Name --> pricing for MIP problems Control_Parameter_Value for MIP problems --> pricing_steepest_edge_float | pricing_steepest_edge_exact | pricing_textbook Vars_List --> [] list of PPL variables | [PPL_Var | Vars_List].
Below is a short description of many of the interface predicates. For full definitions of terminology used here, see the main PPL user manual.
First we describe the domain independent predicates that are included with all instantiations of the Prolog interfaces.
ppl_version_major(?C_int)
Unifies C_int with the major number of the PPL version.
ppl_version_minor(?C_int)
Unifies C_int with the minor number of the PPL version.
ppl_version_revision(?C_int)
Unifies C_int with the revision number of the PPL version.
ppl_version_beta(?C_int)
Unifies C_int with the beta number of the PPL version.
ppl_version(?Atom)
Unifies Atom with the PPL version.
ppl_banner(?Atom)
Unifies Atom with information about the PPL version, the licensing, the lack of any warranty whatsoever, the C++ compiler used to build the library, where to report bugs and where to look for further information.
ppl_Coefficient_bits(?Bits)
Unifies Bits with the number of bits used to encode a Coefficient in the C++ interface; 0 if unbounded.
ppl_Coefficient_is_bounded
Succeeds if and only if the Coefficients in the C++ interface are bounded.
ppl_Coefficient_max(Max)
If the Coefficients in the C++ interface are bounded, then the maximum coefficient the C++ interface can handle is unified with Max. If the Prolog system cannot handle this coefficient, then an exception is thrown. It fails if the Coefficients in the C++ interface are unbounded.
ppl_Coefficient_min(Min)
If the Coefficients in the C++ interface are bounded, then the minimum coefficient the C++ interface can handle is unified with Min. If the Prolog system cannot handle this coefficient, then an exception is thrown. It fails if the Coefficients in the C++ interface are unbounded.
ppl_max_space_dimension(?Dimension_Type)
Unifies Dimension_Type with the maximum space dimension this library can handle.
ppl_initialize
Initializes the PPL interface. Multiple calls to ppl_initialize does no harm.
ppl_finalize
Finalizes the PPL interface. Once this is executed, the next call to an interface predicate must either be to ppl_initialize or to ppl_finalize. Multiple calls to ppl_finalize does no harm.
ppl_set_timeout_exception_atom(+Atom)
Sets the atom to be thrown by timeout exceptions to Atom. The default value is time_out.
ppl_timeout_exception_atom(?Atom)
The atom to be thrown by timeout exceptions is unified with Atom.
ppl_set_timeout(+C_unsigned)
Computations taking exponential time will be interrupted some time after C_unsigned ms after that call. If the computation is interrupted that way, the current timeout exception atom will be thrown. C_unsigned must be strictly greater than zero.
ppl_reset_timeout
Resets the timeout time so that the computation is not interrupted.
ppl_set_rounding_for_PPL
Sets the FPU rounding mode so that the PPL abstractions based on floating point numbers work correctly. This is performed automatically at initialization-time. Calling this function is needed only if restore_pre_PPL_rounding() has previously been called.
ppl_restore_rounding_for_PPL
Sets the FPU rounding mode as it was before initialization of the PPL. After calling this function it is absolutely necessary to call set_rounding_for_PPL() before using any PPL abstractions based on floating point numbers. This is performed automatically at finalization-time.
Here we describe the predicates available for PPL objects defining mixed integer (linear) programming problems.
ppl_new_MIP_Problem_from_space_dimension(+Dimension_Type, -Handle)
Creates an MIP Problem
with the feasible region the vector space of dimension Dimension_Type, objective function
and optimization mode max. Handle is unified with the handle for
.
ppl_new_MIP_Problem(+Constraint_System, +Lin_Expr, +Optimization_Mode, -Handle)
Creates an MIP Problem
with the feasible region represented by Constraint_System, objective function Lin_Expr and optimization mode Optimization_Mode. Handle is unified with the handle for
.
ppl_new_MIP_Problem_from_MIP_Problem(+Handle_1, -Handle_2)
Creates an MIP Problem
from the MIP Problem referenced by Handle_1. Handle_2 is unified with the handle for
.
ppl_MIP_Problem_swap(+Handle_1, +Handle_2)
Swaps the MIP Problem referenced by Handle_1 with the one referenced by Handle_2.
ppl_delete_MIP_Problem(+Handle)
Deletes the MIP Problem referenced by Handle. After execution, Handle is no longer a valid handle for a PPL MIP Problem.
ppl_MIP_Problem_space_dimension(+Handle, ?Dimension_Type)
Unifies the dimension of the vector space in which the MIP Problem referenced by Handle is embedded with Dimension_Type.
ppl_MIP_Problem_integer_space_dimensions(+Handle, ?Vars_List)
Unifies Vars_List with a list of variables representing the integer space dimensions of the MIP Problem referenced by Handle.
ppl_MIP_Problem_constraints(+Handle, -Constraint_System)
Unifies Constraint_System with a list of the constraints in the constraints system representing the feasible region for the MIP Problem referenced by Handle.
ppl_MIP_Problem_objective_function(+Handle, ?Lin_Expr)
Unifies Lin_Expr with the objective function for the MIP Problem referenced by Handle.
ppl_MIP_Problem_optimization_mode(+Handle, ?Optimization_Mode)
Unifies Optimization_Mode with the optimization mode for the MIP Problem referenced by Handle.
ppl_MIP_Problem_clear(+Handle)
Resets the MIP problem referenced by Handle to be the trivial problem with the feasible region the
-dimensional universe, objective function
and optimization mode max.
ppl_MIP_Problem_add_space_dimensions_and_embed( +Handle, +Dimension_Type)
Embeds the MIP problem referenced by Handle in a space that is enlarged by Dimension_Type dimensions.
ppl_MIP_Problem_add_to_integer_space_dimensions(+Handle, +Vars_List)
Updates the MIP Problem referenced by Handle so that the variables in Vars_List are added to the set of integer space dimensions.
ppl_MIP_Problem_add_constraint(+Handle, +Constraint)
Updates the MIP Problem referenced by Handle so that the feasible region is represented by the original constraint system together with the constraint Constraint.
ppl_MIP_Problem_add_constraints(+Handle, +Constraint_System)
Updates the MIP Problem referenced by Handle so that the feasible region is represented by the original constraint system together with all the constraints in Constraint_System.
ppl_MIP_Problem_set_objective_function(+Handle, +Lin_Expr)
Updates the MIP Problem referenced by Handle so that the objective function is changed to Lin_Expr.
ppl_MIP_Problem_set_control_parameter(+Handle, +Control_Parameter_Value)
Updates the MIP Problem referenced by Handle so that the value for the relevant control parameter name is changed to Control_Parameter_Value.
ppl_MIP_Problem_get_control_parameter(+Handle, +Control_Parameter_Name, ?Control_Parameter_Value)
Unifies Control_Parameter_Value with the value of the control parameter Control_Parameter_Name.
ppl_MIP_Problem_set_optimization_mode(+Handle, +Optimization_Mode)
Updates the MIP Problem referenced by Handle so that the optimization mode is changed to Optimization_Mode.
ppl_MIP_Problem_is_satisfiable(+Handle)
Succeeds if and only if the MIP Problem referenced by Handle is satisfiable.
ppl_MIP_Problem_solve(+Handle, ?MIP_Problem_Status)
Solves the MIP problem referenced by Handle and unifies MIP_Problem_Status with: unfeasible, if the MIP problem is not satisfiable; unbounded, if the MIP problem is satisfiable but there is no finite bound to the value of the objective function; optimized, if the MIP problem admits an optimal solution.
ppl_MIP_Problem_feasible_point(+Handle, ?Generator)
Unifies Generator with a feasible point for the MIP problem referenced by Handle.
ppl_MIP_Problem_optimizing_point(+Handle, ?Generator)
Unifies Generator with an optimizing point for the MIP problem referenced by Handle.
ppl_MIP_Problem_optimal_value(+Handle, ?Coeff_1, ?Coeff_2)
Unifies Coeff_1 and Coeff_2 with the numerator and denominator, respectively, for the optimal value for the MIP problem referenced by Handle.
ppl_MIP_Problem_evaluate_objective_function(+Handle, +Generator, ?Coeff_1, ?Coeff_2)
Evaluates the objective function of the MIP problem referenced by Handle at point Generator. Coefficient_1 is unified with the numerator and Coefficient_2 is unified with the denominator of the objective function value at Generator.
ppl_MIP_Problem_OK(+Handle)
Succeeds only if the MIP Problem referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
Here we provide a short description for each of the predicates available for the domain of int8 boxes.
The constructor predicates build a int8 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Int8_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new int8 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Int8_Box_from_space_dimension(3, universe, X).
creates the int8 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Int8_Box_from_constraints(+Constraint_System, -Handle)
Builds a new int8 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Int8_Box_from_congruences(+Congruence_System, -Handle)
Builds a new int8 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Int8_Box_from_generators(+Generator_System, -Handle)
Builds a new int8 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Int8_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int8 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int8_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int8 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Int8_Box domain.
ppl_delete_Int8_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the int8 box for different properties and succeed or fail depending on the outcome.
ppl_Int8_Box_is_empty(+Handle)
Succeeds if and only if the int8 box referenced by Handle is empty.
ppl_Int8_Box_is_universe(+Handle)
Succeeds if and only if the int8 box referenced by Handle is the universe.
ppl_Int8_Box_is_bounded(+Handle)
Succeeds if and only if the int8 box referenced by Handle is bounded.
ppl_Int8_Box_contains_integer_point(+Handle)
Succeeds if and only if the int8 box referenced by Handle contains an integer point.
ppl_Int8_Box_is_topologically_closed(+Handle)
Succeeds if and only if the int8 box referenced by Handle is topologically closed.
ppl_Int8_Box_is_discrete(+Handle)
Succeeds if and only if the int8 box referenced by Handle is discrete.
ppl_Int8_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the int8 box referenced by Handle.
ppl_Int8_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the int8 box referenced by Handle.
ppl_Int8_Box_contains_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int8 box referenced by Handle_2 is included in or equal to the int8 box referenced by Handle_1.
ppl_Int8_Box_strictly_contains_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int8 box referenced by Handle_2 is included in but not equal to the int8 box referenced by Handle_1.
ppl_Int8_Box_is_disjoint_from_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int8 box referenced by Handle_2 is disjoint from the int8 box referenced by Handle_1.
ppl_Int8_Box_equals_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int8 box referenced by Handle_1 is equal to the int8 box referenced by Handle_2.
ppl_Int8_Box_OK(+Handle)
Succeeds only if the int8 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Int8_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the int8 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the int8 box unifying some of their arguments with the results.
ppl_Int8_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the int8 box referenced by Handle.
ppl_Int8_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the int8 box referenced by Handle.
ppl_Int8_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the int8 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Int8_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the int8 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Int8_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the int8 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Int8_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the int8 box referenced by Handle.
ppl_Int8_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the int8 box referenced by Handle.
ppl_Int8_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the int8 box referenced by Handle.
ppl_Int8_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the int8 box referenced by Handle.
ppl_Int8_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int8 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int8_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int8 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int8_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int8 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int8_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int8 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int8_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the int8 box referenced by Handle.
ppl_Int8_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the int8 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Int8_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the int8 box referenced by Handle on the standard output.
These predicates may modify the int8 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Int8_Box_add_constraint(+Handle, +Constraint)
Updates the int8 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Int8_Box_add_congruence(+Handle, +Congruence)
Updates the int8 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Int8_Box_add_constraints( +Handle, +Constraint_System)
Updates the int8 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Int8_Box_add_congruences( +Handle, +Congruence_System)
Updates the int8 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Int8_Box_refine_with_constraint( +Handle, +Constraint)
Updates the int8 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Int8_Box_refine_with_congruence( +Handle, +Congruence)
Updates the int8 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Int8_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the int8 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Int8_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the int8 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of int8 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Int8_Box_topological_closure_assign(+Handle)
Assigns to the int8 box referenced by Handle its topological closure.
ppl_Int8_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the int8 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Int8_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the int8 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int8_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int8 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int8_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int8 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int8_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int8_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int8_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int8_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int8_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int8_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int8_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the int8 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the int8 box referred to by the first argument its combination with the int8 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Int8_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P referenced by Handle_1 the intersection of P and the int8 box referenced by Handle_2.
ppl_Int8_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P referenced by Handle_1 the upper bound of P and the int8 box referenced by Handle_2.
ppl_Int8_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P referenced by Handle_1 the difference of P and the int8 box referenced by Handle_2.
ppl_Int8_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P referenced by Handle_1 the time elapse of P and the int8 box referenced by Handle_2.
ppl_Int8_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the int8 box P_1 referenced by Handle_1 with the int8 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Int8_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of int8 box P_1 referenced by Handle_1 and the int8 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Int8_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Int8_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the int8 box referred to by the second argument has to be contained in (or equal to) the int8 box referred to by the first argument.
ppl_Int8_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int8 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int8_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int8 box referenced by Handle_2.
ppl_Int8_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Int8_Box_CC76_widening_assign_with_tokens/4
ppl_Int8_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Int8_Box_CC76_widening_assign/2
ppl_Int8_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int8 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int8_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the int8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int8 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the int8 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Int8_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the int8 box P referenced by Handle_1 the concatenation of P and the int8 box referenced by Handle_2.
These predicates enable the modification of the vector space of the int8 box referred to in the first argument. These predicates enable the modification of the vector space of the int8 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Int8_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int8 box P referenced by Handle and and_embeds P in this space.
ppl_Int8_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int8 box P referenced by Handle and and_projects P in this space.
ppl_Int8_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the int8 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int8_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the int8 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Int8_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the int8 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Int8_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the int8 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Int8_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of int16 boxes.
The constructor predicates build a int16 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Int16_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new int16 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Int16_Box_from_space_dimension(3, universe, X).
creates the int16 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Int16_Box_from_constraints(+Constraint_System, -Handle)
Builds a new int16 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Int16_Box_from_congruences(+Congruence_System, -Handle)
Builds a new int16 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Int16_Box_from_generators(+Generator_System, -Handle)
Builds a new int16 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Int16_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int16 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int16_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int16 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Int16_Box domain.
ppl_delete_Int16_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the int16 box for different properties and succeed or fail depending on the outcome.
ppl_Int16_Box_is_empty(+Handle)
Succeeds if and only if the int16 box referenced by Handle is empty.
ppl_Int16_Box_is_universe(+Handle)
Succeeds if and only if the int16 box referenced by Handle is the universe.
ppl_Int16_Box_is_bounded(+Handle)
Succeeds if and only if the int16 box referenced by Handle is bounded.
ppl_Int16_Box_contains_integer_point(+Handle)
Succeeds if and only if the int16 box referenced by Handle contains an integer point.
ppl_Int16_Box_is_topologically_closed(+Handle)
Succeeds if and only if the int16 box referenced by Handle is topologically closed.
ppl_Int16_Box_is_discrete(+Handle)
Succeeds if and only if the int16 box referenced by Handle is discrete.
ppl_Int16_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the int16 box referenced by Handle.
ppl_Int16_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the int16 box referenced by Handle.
ppl_Int16_Box_contains_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int16 box referenced by Handle_2 is included in or equal to the int16 box referenced by Handle_1.
ppl_Int16_Box_strictly_contains_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int16 box referenced by Handle_2 is included in but not equal to the int16 box referenced by Handle_1.
ppl_Int16_Box_is_disjoint_from_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int16 box referenced by Handle_2 is disjoint from the int16 box referenced by Handle_1.
ppl_Int16_Box_equals_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int16 box referenced by Handle_1 is equal to the int16 box referenced by Handle_2.
ppl_Int16_Box_OK(+Handle)
Succeeds only if the int16 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Int16_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the int16 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the int16 box unifying some of their arguments with the results.
ppl_Int16_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the int16 box referenced by Handle.
ppl_Int16_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the int16 box referenced by Handle.
ppl_Int16_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the int16 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Int16_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the int16 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Int16_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the int16 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Int16_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the int16 box referenced by Handle.
ppl_Int16_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the int16 box referenced by Handle.
ppl_Int16_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the int16 box referenced by Handle.
ppl_Int16_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the int16 box referenced by Handle.
ppl_Int16_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int16 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int16_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int16 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int16_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int16 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int16_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int16 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int16_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the int16 box referenced by Handle.
ppl_Int16_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the int16 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Int16_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the int16 box referenced by Handle on the standard output.
These predicates may modify the int16 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Int16_Box_add_constraint(+Handle, +Constraint)
Updates the int16 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Int16_Box_add_congruence(+Handle, +Congruence)
Updates the int16 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Int16_Box_add_constraints( +Handle, +Constraint_System)
Updates the int16 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Int16_Box_add_congruences( +Handle, +Congruence_System)
Updates the int16 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Int16_Box_refine_with_constraint( +Handle, +Constraint)
Updates the int16 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Int16_Box_refine_with_congruence( +Handle, +Congruence)
Updates the int16 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Int16_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the int16 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Int16_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the int16 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of int16 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Int16_Box_topological_closure_assign(+Handle)
Assigns to the int16 box referenced by Handle its topological closure.
ppl_Int16_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the int16 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Int16_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the int16 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int16_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int16 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int16_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int16 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int16_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int16_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int16_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int16_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int16_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int16_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int16_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the int16 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the int16 box referred to by the first argument its combination with the int16 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Int16_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P referenced by Handle_1 the intersection of P and the int16 box referenced by Handle_2.
ppl_Int16_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P referenced by Handle_1 the upper bound of P and the int16 box referenced by Handle_2.
ppl_Int16_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P referenced by Handle_1 the difference of P and the int16 box referenced by Handle_2.
ppl_Int16_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P referenced by Handle_1 the time elapse of P and the int16 box referenced by Handle_2.
ppl_Int16_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the int16 box P_1 referenced by Handle_1 with the int16 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Int16_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of int16 box P_1 referenced by Handle_1 and the int16 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Int16_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Int16_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the int16 box referred to by the second argument has to be contained in (or equal to) the int16 box referred to by the first argument.
ppl_Int16_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int16 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int16_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int16 box referenced by Handle_2.
ppl_Int16_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Int16_Box_CC76_widening_assign_with_tokens/4
ppl_Int16_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Int16_Box_CC76_widening_assign/2
ppl_Int16_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int16 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int16_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the int16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int16 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the int16 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Int16_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the int16 box P referenced by Handle_1 the concatenation of P and the int16 box referenced by Handle_2.
These predicates enable the modification of the vector space of the int16 box referred to in the first argument. These predicates enable the modification of the vector space of the int16 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Int16_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int16 box P referenced by Handle and and_embeds P in this space.
ppl_Int16_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int16 box P referenced by Handle and and_projects P in this space.
ppl_Int16_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the int16 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int16_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the int16 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Int16_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the int16 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Int16_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the int16 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Int16_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of int32 boxes.
The constructor predicates build a int32 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Int32_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new int32 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Int32_Box_from_space_dimension(3, universe, X).
creates the int32 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Int32_Box_from_constraints(+Constraint_System, -Handle)
Builds a new int32 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Int32_Box_from_congruences(+Congruence_System, -Handle)
Builds a new int32 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Int32_Box_from_generators(+Generator_System, -Handle)
Builds a new int32 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Int32_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int32 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int32_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int32 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Int32_Box domain.
ppl_delete_Int32_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the int32 box for different properties and succeed or fail depending on the outcome.
ppl_Int32_Box_is_empty(+Handle)
Succeeds if and only if the int32 box referenced by Handle is empty.
ppl_Int32_Box_is_universe(+Handle)
Succeeds if and only if the int32 box referenced by Handle is the universe.
ppl_Int32_Box_is_bounded(+Handle)
Succeeds if and only if the int32 box referenced by Handle is bounded.
ppl_Int32_Box_contains_integer_point(+Handle)
Succeeds if and only if the int32 box referenced by Handle contains an integer point.
ppl_Int32_Box_is_topologically_closed(+Handle)
Succeeds if and only if the int32 box referenced by Handle is topologically closed.
ppl_Int32_Box_is_discrete(+Handle)
Succeeds if and only if the int32 box referenced by Handle is discrete.
ppl_Int32_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the int32 box referenced by Handle.
ppl_Int32_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the int32 box referenced by Handle.
ppl_Int32_Box_contains_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int32 box referenced by Handle_2 is included in or equal to the int32 box referenced by Handle_1.
ppl_Int32_Box_strictly_contains_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int32 box referenced by Handle_2 is included in but not equal to the int32 box referenced by Handle_1.
ppl_Int32_Box_is_disjoint_from_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int32 box referenced by Handle_2 is disjoint from the int32 box referenced by Handle_1.
ppl_Int32_Box_equals_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int32 box referenced by Handle_1 is equal to the int32 box referenced by Handle_2.
ppl_Int32_Box_OK(+Handle)
Succeeds only if the int32 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Int32_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the int32 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the int32 box unifying some of their arguments with the results.
ppl_Int32_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the int32 box referenced by Handle.
ppl_Int32_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the int32 box referenced by Handle.
ppl_Int32_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the int32 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Int32_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the int32 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Int32_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the int32 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Int32_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the int32 box referenced by Handle.
ppl_Int32_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the int32 box referenced by Handle.
ppl_Int32_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the int32 box referenced by Handle.
ppl_Int32_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the int32 box referenced by Handle.
ppl_Int32_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int32 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int32_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int32 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int32_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int32 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int32_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int32 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int32_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the int32 box referenced by Handle.
ppl_Int32_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the int32 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Int32_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the int32 box referenced by Handle on the standard output.
These predicates may modify the int32 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Int32_Box_add_constraint(+Handle, +Constraint)
Updates the int32 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Int32_Box_add_congruence(+Handle, +Congruence)
Updates the int32 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Int32_Box_add_constraints( +Handle, +Constraint_System)
Updates the int32 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Int32_Box_add_congruences( +Handle, +Congruence_System)
Updates the int32 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Int32_Box_refine_with_constraint( +Handle, +Constraint)
Updates the int32 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Int32_Box_refine_with_congruence( +Handle, +Congruence)
Updates the int32 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Int32_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the int32 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Int32_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the int32 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of int32 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Int32_Box_topological_closure_assign(+Handle)
Assigns to the int32 box referenced by Handle its topological closure.
ppl_Int32_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the int32 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Int32_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the int32 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int32_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int32 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int32_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int32 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int32_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int32_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int32_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int32_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int32_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int32_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int32_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the int32 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the int32 box referred to by the first argument its combination with the int32 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Int32_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P referenced by Handle_1 the intersection of P and the int32 box referenced by Handle_2.
ppl_Int32_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P referenced by Handle_1 the upper bound of P and the int32 box referenced by Handle_2.
ppl_Int32_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P referenced by Handle_1 the difference of P and the int32 box referenced by Handle_2.
ppl_Int32_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P referenced by Handle_1 the time elapse of P and the int32 box referenced by Handle_2.
ppl_Int32_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the int32 box P_1 referenced by Handle_1 with the int32 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Int32_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of int32 box P_1 referenced by Handle_1 and the int32 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Int32_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Int32_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the int32 box referred to by the second argument has to be contained in (or equal to) the int32 box referred to by the first argument.
ppl_Int32_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int32 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int32_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int32 box referenced by Handle_2.
ppl_Int32_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Int32_Box_CC76_widening_assign_with_tokens/4
ppl_Int32_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Int32_Box_CC76_widening_assign/2
ppl_Int32_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int32 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int32_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the int32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int32 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the int32 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Int32_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the int32 box P referenced by Handle_1 the concatenation of P and the int32 box referenced by Handle_2.
These predicates enable the modification of the vector space of the int32 box referred to in the first argument. These predicates enable the modification of the vector space of the int32 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Int32_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int32 box P referenced by Handle and and_embeds P in this space.
ppl_Int32_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int32 box P referenced by Handle and and_projects P in this space.
ppl_Int32_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the int32 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int32_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the int32 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Int32_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the int32 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Int32_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the int32 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Int32_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of int64 boxes.
The constructor predicates build a int64 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Int64_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new int64 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Int64_Box_from_space_dimension(3, universe, X).
creates the int64 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Int64_Box_from_constraints(+Constraint_System, -Handle)
Builds a new int64 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Int64_Box_from_congruences(+Congruence_System, -Handle)
Builds a new int64 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Int64_Box_from_generators(+Generator_System, -Handle)
Builds a new int64 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Int64_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new int64 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Int64_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new int64 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Int64_Box domain.
ppl_delete_Int64_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the int64 box for different properties and succeed or fail depending on the outcome.
ppl_Int64_Box_is_empty(+Handle)
Succeeds if and only if the int64 box referenced by Handle is empty.
ppl_Int64_Box_is_universe(+Handle)
Succeeds if and only if the int64 box referenced by Handle is the universe.
ppl_Int64_Box_is_bounded(+Handle)
Succeeds if and only if the int64 box referenced by Handle is bounded.
ppl_Int64_Box_contains_integer_point(+Handle)
Succeeds if and only if the int64 box referenced by Handle contains an integer point.
ppl_Int64_Box_is_topologically_closed(+Handle)
Succeeds if and only if the int64 box referenced by Handle is topologically closed.
ppl_Int64_Box_is_discrete(+Handle)
Succeeds if and only if the int64 box referenced by Handle is discrete.
ppl_Int64_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the int64 box referenced by Handle.
ppl_Int64_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the int64 box referenced by Handle.
ppl_Int64_Box_contains_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int64 box referenced by Handle_2 is included in or equal to the int64 box referenced by Handle_1.
ppl_Int64_Box_strictly_contains_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int64 box referenced by Handle_2 is included in but not equal to the int64 box referenced by Handle_1.
ppl_Int64_Box_is_disjoint_from_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int64 box referenced by Handle_2 is disjoint from the int64 box referenced by Handle_1.
ppl_Int64_Box_equals_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the int64 box referenced by Handle_1 is equal to the int64 box referenced by Handle_2.
ppl_Int64_Box_OK(+Handle)
Succeeds only if the int64 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Int64_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the int64 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the int64 box unifying some of their arguments with the results.
ppl_Int64_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the int64 box referenced by Handle.
ppl_Int64_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the int64 box referenced by Handle.
ppl_Int64_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the int64 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Int64_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the int64 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Int64_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the int64 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Int64_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the int64 box referenced by Handle.
ppl_Int64_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the int64 box referenced by Handle.
ppl_Int64_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the int64 box referenced by Handle.
ppl_Int64_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the int64 box referenced by Handle.
ppl_Int64_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int64 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int64_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if int64 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int64_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int64 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int64_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if int64 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Int64_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the int64 box referenced by Handle.
ppl_Int64_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the int64 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Int64_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the int64 box referenced by Handle on the standard output.
These predicates may modify the int64 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Int64_Box_add_constraint(+Handle, +Constraint)
Updates the int64 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Int64_Box_add_congruence(+Handle, +Congruence)
Updates the int64 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Int64_Box_add_constraints( +Handle, +Constraint_System)
Updates the int64 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Int64_Box_add_congruences( +Handle, +Congruence_System)
Updates the int64 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Int64_Box_refine_with_constraint( +Handle, +Constraint)
Updates the int64 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Int64_Box_refine_with_congruence( +Handle, +Congruence)
Updates the int64 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Int64_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the int64 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Int64_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the int64 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of int64 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Int64_Box_topological_closure_assign(+Handle)
Assigns to the int64 box referenced by Handle its topological closure.
ppl_Int64_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the int64 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Int64_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the int64 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int64_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int64 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int64_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the int64 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Int64_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int64_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to int64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Int64_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int64_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to int64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Int64_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int64_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to int64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Int64_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the int64 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the int64 box referred to by the first argument its combination with the int64 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Int64_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P referenced by Handle_1 the intersection of P and the int64 box referenced by Handle_2.
ppl_Int64_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P referenced by Handle_1 the upper bound of P and the int64 box referenced by Handle_2.
ppl_Int64_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P referenced by Handle_1 the difference of P and the int64 box referenced by Handle_2.
ppl_Int64_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P referenced by Handle_1 the time elapse of P and the int64 box referenced by Handle_2.
ppl_Int64_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the int64 box P_1 referenced by Handle_1 with the int64 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Int64_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of int64 box P_1 referenced by Handle_1 and the int64 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Int64_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Int64_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the int64 box referred to by the second argument has to be contained in (or equal to) the int64 box referred to by the first argument.
ppl_Int64_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int64 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int64_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int64 box referenced by Handle_2.
ppl_Int64_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Int64_Box_CC76_widening_assign_with_tokens/4
ppl_Int64_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Int64_Box_CC76_widening_assign/2
ppl_Int64_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the int64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int64 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Int64_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the int64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the int64 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the int64 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Int64_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the int64 box P referenced by Handle_1 the concatenation of P and the int64 box referenced by Handle_2.
These predicates enable the modification of the vector space of the int64 box referred to in the first argument. These predicates enable the modification of the vector space of the int64 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Int64_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int64 box P referenced by Handle and and_embeds P in this space.
ppl_Int64_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the int64 box P referenced by Handle and and_projects P in this space.
ppl_Int64_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the int64 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Int64_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the int64 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Int64_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the int64 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Int64_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the int64 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Int64_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of uint8 boxes.
The constructor predicates build a uint8 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Uint8_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new uint8 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Uint8_Box_from_space_dimension(3, universe, X).
creates the uint8 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Uint8_Box_from_constraints(+Constraint_System, -Handle)
Builds a new uint8 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Uint8_Box_from_congruences(+Congruence_System, -Handle)
Builds a new uint8 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Uint8_Box_from_generators(+Generator_System, -Handle)
Builds a new uint8 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Uint8_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint8 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint8_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint8 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Uint8_Box domain.
ppl_delete_Uint8_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the uint8 box for different properties and succeed or fail depending on the outcome.
ppl_Uint8_Box_is_empty(+Handle)
Succeeds if and only if the uint8 box referenced by Handle is empty.
ppl_Uint8_Box_is_universe(+Handle)
Succeeds if and only if the uint8 box referenced by Handle is the universe.
ppl_Uint8_Box_is_bounded(+Handle)
Succeeds if and only if the uint8 box referenced by Handle is bounded.
ppl_Uint8_Box_contains_integer_point(+Handle)
Succeeds if and only if the uint8 box referenced by Handle contains an integer point.
ppl_Uint8_Box_is_topologically_closed(+Handle)
Succeeds if and only if the uint8 box referenced by Handle is topologically closed.
ppl_Uint8_Box_is_discrete(+Handle)
Succeeds if and only if the uint8 box referenced by Handle is discrete.
ppl_Uint8_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the uint8 box referenced by Handle.
ppl_Uint8_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the uint8 box referenced by Handle.
ppl_Uint8_Box_contains_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint8 box referenced by Handle_2 is included in or equal to the uint8 box referenced by Handle_1.
ppl_Uint8_Box_strictly_contains_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint8 box referenced by Handle_2 is included in but not equal to the uint8 box referenced by Handle_1.
ppl_Uint8_Box_is_disjoint_from_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint8 box referenced by Handle_2 is disjoint from the uint8 box referenced by Handle_1.
ppl_Uint8_Box_equals_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint8 box referenced by Handle_1 is equal to the uint8 box referenced by Handle_2.
ppl_Uint8_Box_OK(+Handle)
Succeeds only if the uint8 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Uint8_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the uint8 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the uint8 box unifying some of their arguments with the results.
ppl_Uint8_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the uint8 box referenced by Handle.
ppl_Uint8_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the uint8 box referenced by Handle.
ppl_Uint8_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the uint8 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Uint8_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the uint8 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Uint8_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the uint8 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Uint8_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the uint8 box referenced by Handle.
ppl_Uint8_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the uint8 box referenced by Handle.
ppl_Uint8_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the uint8 box referenced by Handle.
ppl_Uint8_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the uint8 box referenced by Handle.
ppl_Uint8_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint8 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint8_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint8 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint8_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint8 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint8_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint8 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint8_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the uint8 box referenced by Handle.
ppl_Uint8_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the uint8 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Uint8_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the uint8 box referenced by Handle on the standard output.
These predicates may modify the uint8 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Uint8_Box_add_constraint(+Handle, +Constraint)
Updates the uint8 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Uint8_Box_add_congruence(+Handle, +Congruence)
Updates the uint8 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Uint8_Box_add_constraints( +Handle, +Constraint_System)
Updates the uint8 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Uint8_Box_add_congruences( +Handle, +Congruence_System)
Updates the uint8 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Uint8_Box_refine_with_constraint( +Handle, +Constraint)
Updates the uint8 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Uint8_Box_refine_with_congruence( +Handle, +Congruence)
Updates the uint8 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Uint8_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the uint8 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Uint8_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the uint8 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of uint8 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Uint8_Box_topological_closure_assign(+Handle)
Assigns to the uint8 box referenced by Handle its topological closure.
ppl_Uint8_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the uint8 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Uint8_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the uint8 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint8_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint8 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint8_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint8 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint8_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint8_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint8_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint8_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint8_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint8 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint8_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint8 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint8_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the uint8 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the uint8 box referred to by the first argument its combination with the uint8 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Uint8_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P referenced by Handle_1 the intersection of P and the uint8 box referenced by Handle_2.
ppl_Uint8_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P referenced by Handle_1 the upper bound of P and the uint8 box referenced by Handle_2.
ppl_Uint8_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P referenced by Handle_1 the difference of P and the uint8 box referenced by Handle_2.
ppl_Uint8_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P referenced by Handle_1 the time elapse of P and the uint8 box referenced by Handle_2.
ppl_Uint8_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the uint8 box P_1 referenced by Handle_1 with the uint8 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Uint8_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of uint8 box P_1 referenced by Handle_1 and the uint8 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Uint8_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Uint8_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the uint8 box referred to by the second argument has to be contained in (or equal to) the uint8 box referred to by the first argument.
ppl_Uint8_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint8 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint8_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint8 box referenced by Handle_2.
ppl_Uint8_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Uint8_Box_CC76_widening_assign_with_tokens/4
ppl_Uint8_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Uint8_Box_CC76_widening_assign/2
ppl_Uint8_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint8 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint8_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the uint8 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint8 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the uint8 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Uint8_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the uint8 box P referenced by Handle_1 the concatenation of P and the uint8 box referenced by Handle_2.
These predicates enable the modification of the vector space of the uint8 box referred to in the first argument. These predicates enable the modification of the vector space of the uint8 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Uint8_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint8 box P referenced by Handle and and_embeds P in this space.
ppl_Uint8_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint8 box P referenced by Handle and and_projects P in this space.
ppl_Uint8_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the uint8 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint8_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the uint8 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Uint8_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the uint8 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Uint8_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the uint8 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Uint8_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of uint16 boxes.
The constructor predicates build a uint16 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Uint16_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new uint16 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Uint16_Box_from_space_dimension(3, universe, X).
creates the uint16 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Uint16_Box_from_constraints(+Constraint_System, -Handle)
Builds a new uint16 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Uint16_Box_from_congruences(+Congruence_System, -Handle)
Builds a new uint16 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Uint16_Box_from_generators(+Generator_System, -Handle)
Builds a new uint16 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Uint16_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint16 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint16_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint16 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Uint16_Box domain.
ppl_delete_Uint16_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the uint16 box for different properties and succeed or fail depending on the outcome.
ppl_Uint16_Box_is_empty(+Handle)
Succeeds if and only if the uint16 box referenced by Handle is empty.
ppl_Uint16_Box_is_universe(+Handle)
Succeeds if and only if the uint16 box referenced by Handle is the universe.
ppl_Uint16_Box_is_bounded(+Handle)
Succeeds if and only if the uint16 box referenced by Handle is bounded.
ppl_Uint16_Box_contains_integer_point(+Handle)
Succeeds if and only if the uint16 box referenced by Handle contains an integer point.
ppl_Uint16_Box_is_topologically_closed(+Handle)
Succeeds if and only if the uint16 box referenced by Handle is topologically closed.
ppl_Uint16_Box_is_discrete(+Handle)
Succeeds if and only if the uint16 box referenced by Handle is discrete.
ppl_Uint16_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the uint16 box referenced by Handle.
ppl_Uint16_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the uint16 box referenced by Handle.
ppl_Uint16_Box_contains_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint16 box referenced by Handle_2 is included in or equal to the uint16 box referenced by Handle_1.
ppl_Uint16_Box_strictly_contains_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint16 box referenced by Handle_2 is included in but not equal to the uint16 box referenced by Handle_1.
ppl_Uint16_Box_is_disjoint_from_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint16 box referenced by Handle_2 is disjoint from the uint16 box referenced by Handle_1.
ppl_Uint16_Box_equals_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint16 box referenced by Handle_1 is equal to the uint16 box referenced by Handle_2.
ppl_Uint16_Box_OK(+Handle)
Succeeds only if the uint16 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Uint16_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the uint16 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the uint16 box unifying some of their arguments with the results.
ppl_Uint16_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the uint16 box referenced by Handle.
ppl_Uint16_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the uint16 box referenced by Handle.
ppl_Uint16_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the uint16 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Uint16_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the uint16 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Uint16_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the uint16 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Uint16_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the uint16 box referenced by Handle.
ppl_Uint16_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the uint16 box referenced by Handle.
ppl_Uint16_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the uint16 box referenced by Handle.
ppl_Uint16_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the uint16 box referenced by Handle.
ppl_Uint16_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint16 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint16_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint16 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint16_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint16 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint16_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint16 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint16_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the uint16 box referenced by Handle.
ppl_Uint16_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the uint16 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Uint16_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the uint16 box referenced by Handle on the standard output.
These predicates may modify the uint16 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Uint16_Box_add_constraint(+Handle, +Constraint)
Updates the uint16 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Uint16_Box_add_congruence(+Handle, +Congruence)
Updates the uint16 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Uint16_Box_add_constraints( +Handle, +Constraint_System)
Updates the uint16 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Uint16_Box_add_congruences( +Handle, +Congruence_System)
Updates the uint16 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Uint16_Box_refine_with_constraint( +Handle, +Constraint)
Updates the uint16 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Uint16_Box_refine_with_congruence( +Handle, +Congruence)
Updates the uint16 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Uint16_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the uint16 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Uint16_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the uint16 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of uint16 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Uint16_Box_topological_closure_assign(+Handle)
Assigns to the uint16 box referenced by Handle its topological closure.
ppl_Uint16_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the uint16 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Uint16_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the uint16 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint16_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint16 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint16_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint16 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint16_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint16_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint16_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint16_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint16_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint16 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint16_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint16 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint16_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the uint16 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the uint16 box referred to by the first argument its combination with the uint16 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Uint16_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P referenced by Handle_1 the intersection of P and the uint16 box referenced by Handle_2.
ppl_Uint16_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P referenced by Handle_1 the upper bound of P and the uint16 box referenced by Handle_2.
ppl_Uint16_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P referenced by Handle_1 the difference of P and the uint16 box referenced by Handle_2.
ppl_Uint16_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P referenced by Handle_1 the time elapse of P and the uint16 box referenced by Handle_2.
ppl_Uint16_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the uint16 box P_1 referenced by Handle_1 with the uint16 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Uint16_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of uint16 box P_1 referenced by Handle_1 and the uint16 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Uint16_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Uint16_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the uint16 box referred to by the second argument has to be contained in (or equal to) the uint16 box referred to by the first argument.
ppl_Uint16_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint16 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint16_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint16 box referenced by Handle_2.
ppl_Uint16_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Uint16_Box_CC76_widening_assign_with_tokens/4
ppl_Uint16_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Uint16_Box_CC76_widening_assign/2
ppl_Uint16_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint16 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint16_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the uint16 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint16 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the uint16 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Uint16_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the uint16 box P referenced by Handle_1 the concatenation of P and the uint16 box referenced by Handle_2.
These predicates enable the modification of the vector space of the uint16 box referred to in the first argument. These predicates enable the modification of the vector space of the uint16 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Uint16_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint16 box P referenced by Handle and and_embeds P in this space.
ppl_Uint16_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint16 box P referenced by Handle and and_projects P in this space.
ppl_Uint16_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the uint16 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint16_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the uint16 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Uint16_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the uint16 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Uint16_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the uint16 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Uint16_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of uint32 boxes.
The constructor predicates build a uint32 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Uint32_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new uint32 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Uint32_Box_from_space_dimension(3, universe, X).
creates the uint32 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Uint32_Box_from_constraints(+Constraint_System, -Handle)
Builds a new uint32 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Uint32_Box_from_congruences(+Congruence_System, -Handle)
Builds a new uint32 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Uint32_Box_from_generators(+Generator_System, -Handle)
Builds a new uint32 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Uint32_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint32 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint32_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint32 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Uint32_Box domain.
ppl_delete_Uint32_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the uint32 box for different properties and succeed or fail depending on the outcome.
ppl_Uint32_Box_is_empty(+Handle)
Succeeds if and only if the uint32 box referenced by Handle is empty.
ppl_Uint32_Box_is_universe(+Handle)
Succeeds if and only if the uint32 box referenced by Handle is the universe.
ppl_Uint32_Box_is_bounded(+Handle)
Succeeds if and only if the uint32 box referenced by Handle is bounded.
ppl_Uint32_Box_contains_integer_point(+Handle)
Succeeds if and only if the uint32 box referenced by Handle contains an integer point.
ppl_Uint32_Box_is_topologically_closed(+Handle)
Succeeds if and only if the uint32 box referenced by Handle is topologically closed.
ppl_Uint32_Box_is_discrete(+Handle)
Succeeds if and only if the uint32 box referenced by Handle is discrete.
ppl_Uint32_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the uint32 box referenced by Handle.
ppl_Uint32_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the uint32 box referenced by Handle.
ppl_Uint32_Box_contains_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint32 box referenced by Handle_2 is included in or equal to the uint32 box referenced by Handle_1.
ppl_Uint32_Box_strictly_contains_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint32 box referenced by Handle_2 is included in but not equal to the uint32 box referenced by Handle_1.
ppl_Uint32_Box_is_disjoint_from_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint32 box referenced by Handle_2 is disjoint from the uint32 box referenced by Handle_1.
ppl_Uint32_Box_equals_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint32 box referenced by Handle_1 is equal to the uint32 box referenced by Handle_2.
ppl_Uint32_Box_OK(+Handle)
Succeeds only if the uint32 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Uint32_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the uint32 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the uint32 box unifying some of their arguments with the results.
ppl_Uint32_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the uint32 box referenced by Handle.
ppl_Uint32_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the uint32 box referenced by Handle.
ppl_Uint32_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the uint32 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Uint32_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the uint32 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Uint32_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the uint32 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Uint32_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the uint32 box referenced by Handle.
ppl_Uint32_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the uint32 box referenced by Handle.
ppl_Uint32_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the uint32 box referenced by Handle.
ppl_Uint32_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the uint32 box referenced by Handle.
ppl_Uint32_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint32 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint32_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint32 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint32_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint32 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint32_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint32 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint32_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the uint32 box referenced by Handle.
ppl_Uint32_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the uint32 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Uint32_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the uint32 box referenced by Handle on the standard output.
These predicates may modify the uint32 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Uint32_Box_add_constraint(+Handle, +Constraint)
Updates the uint32 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Uint32_Box_add_congruence(+Handle, +Congruence)
Updates the uint32 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Uint32_Box_add_constraints( +Handle, +Constraint_System)
Updates the uint32 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Uint32_Box_add_congruences( +Handle, +Congruence_System)
Updates the uint32 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Uint32_Box_refine_with_constraint( +Handle, +Constraint)
Updates the uint32 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Uint32_Box_refine_with_congruence( +Handle, +Congruence)
Updates the uint32 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Uint32_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the uint32 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Uint32_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the uint32 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of uint32 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Uint32_Box_topological_closure_assign(+Handle)
Assigns to the uint32 box referenced by Handle its topological closure.
ppl_Uint32_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the uint32 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Uint32_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the uint32 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint32_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint32 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint32_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint32 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint32_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint32_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint32_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint32_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint32_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint32 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint32_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint32 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint32_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the uint32 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the uint32 box referred to by the first argument its combination with the uint32 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Uint32_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P referenced by Handle_1 the intersection of P and the uint32 box referenced by Handle_2.
ppl_Uint32_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P referenced by Handle_1 the upper bound of P and the uint32 box referenced by Handle_2.
ppl_Uint32_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P referenced by Handle_1 the difference of P and the uint32 box referenced by Handle_2.
ppl_Uint32_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P referenced by Handle_1 the time elapse of P and the uint32 box referenced by Handle_2.
ppl_Uint32_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the uint32 box P_1 referenced by Handle_1 with the uint32 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Uint32_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of uint32 box P_1 referenced by Handle_1 and the uint32 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Uint32_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Uint32_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the uint32 box referred to by the second argument has to be contained in (or equal to) the uint32 box referred to by the first argument.
ppl_Uint32_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint32 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint32_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint32 box referenced by Handle_2.
ppl_Uint32_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Uint32_Box_CC76_widening_assign_with_tokens/4
ppl_Uint32_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Uint32_Box_CC76_widening_assign/2
ppl_Uint32_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint32 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint32_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the uint32 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint32 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the uint32 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Uint32_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the uint32 box P referenced by Handle_1 the concatenation of P and the uint32 box referenced by Handle_2.
These predicates enable the modification of the vector space of the uint32 box referred to in the first argument. These predicates enable the modification of the vector space of the uint32 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Uint32_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint32 box P referenced by Handle and and_embeds P in this space.
ppl_Uint32_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint32 box P referenced by Handle and and_projects P in this space.
ppl_Uint32_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the uint32 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint32_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the uint32 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Uint32_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the uint32 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Uint32_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the uint32 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Uint32_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of uint64 boxes.
The constructor predicates build a uint64 box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Uint64_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new uint64 box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Uint64_Box_from_space_dimension(3, universe, X).
creates the uint64 box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Uint64_Box_from_constraints(+Constraint_System, -Handle)
Builds a new uint64 box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Uint64_Box_from_congruences(+Congruence_System, -Handle)
Builds a new uint64 box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Uint64_Box_from_generators(+Generator_System, -Handle)
Builds a new uint64 box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Uint64_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new uint64 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Uint64_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new uint64 box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Uint64_Box domain.
ppl_delete_Uint64_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the uint64 box for different properties and succeed or fail depending on the outcome.
ppl_Uint64_Box_is_empty(+Handle)
Succeeds if and only if the uint64 box referenced by Handle is empty.
ppl_Uint64_Box_is_universe(+Handle)
Succeeds if and only if the uint64 box referenced by Handle is the universe.
ppl_Uint64_Box_is_bounded(+Handle)
Succeeds if and only if the uint64 box referenced by Handle is bounded.
ppl_Uint64_Box_contains_integer_point(+Handle)
Succeeds if and only if the uint64 box referenced by Handle contains an integer point.
ppl_Uint64_Box_is_topologically_closed(+Handle)
Succeeds if and only if the uint64 box referenced by Handle is topologically closed.
ppl_Uint64_Box_is_discrete(+Handle)
Succeeds if and only if the uint64 box referenced by Handle is discrete.
ppl_Uint64_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the uint64 box referenced by Handle.
ppl_Uint64_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the uint64 box referenced by Handle.
ppl_Uint64_Box_contains_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint64 box referenced by Handle_2 is included in or equal to the uint64 box referenced by Handle_1.
ppl_Uint64_Box_strictly_contains_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint64 box referenced by Handle_2 is included in but not equal to the uint64 box referenced by Handle_1.
ppl_Uint64_Box_is_disjoint_from_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint64 box referenced by Handle_2 is disjoint from the uint64 box referenced by Handle_1.
ppl_Uint64_Box_equals_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the uint64 box referenced by Handle_1 is equal to the uint64 box referenced by Handle_2.
ppl_Uint64_Box_OK(+Handle)
Succeeds only if the uint64 box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Uint64_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the uint64 box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the uint64 box unifying some of their arguments with the results.
ppl_Uint64_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the uint64 box referenced by Handle.
ppl_Uint64_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the uint64 box referenced by Handle.
ppl_Uint64_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the uint64 box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Uint64_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the uint64 box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Uint64_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the uint64 box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Uint64_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the uint64 box referenced by Handle.
ppl_Uint64_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the uint64 box referenced by Handle.
ppl_Uint64_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the uint64 box referenced by Handle.
ppl_Uint64_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the uint64 box referenced by Handle.
ppl_Uint64_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint64 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint64_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if uint64 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint64_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint64 box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint64_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if uint64 box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Uint64_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the uint64 box referenced by Handle.
ppl_Uint64_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the uint64 box referenced by Handle.
This output predicate is useful for debugging.
ppl_Uint64_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the uint64 box referenced by Handle on the standard output.
These predicates may modify the uint64 box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Uint64_Box_add_constraint(+Handle, +Constraint)
Updates the uint64 box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Uint64_Box_add_congruence(+Handle, +Congruence)
Updates the uint64 box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Uint64_Box_add_constraints( +Handle, +Constraint_System)
Updates the uint64 box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Uint64_Box_add_congruences( +Handle, +Congruence_System)
Updates the uint64 box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Uint64_Box_refine_with_constraint( +Handle, +Constraint)
Updates the uint64 box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Uint64_Box_refine_with_congruence( +Handle, +Congruence)
Updates the uint64 box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Uint64_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the uint64 box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Uint64_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the uint64 box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of uint64 box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Uint64_Box_topological_closure_assign(+Handle)
Assigns to the uint64 box referenced by Handle its topological closure.
ppl_Uint64_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the uint64 box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Uint64_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the uint64 box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint64_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint64 box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint64_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the uint64 box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Uint64_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint64_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to uint64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Uint64_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint64_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to uint64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Uint64_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint64 box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint64_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to uint64 box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Uint64_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the uint64 box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the uint64 box referred to by the first argument its combination with the uint64 box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Uint64_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P referenced by Handle_1 the intersection of P and the uint64 box referenced by Handle_2.
ppl_Uint64_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P referenced by Handle_1 the upper bound of P and the uint64 box referenced by Handle_2.
ppl_Uint64_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P referenced by Handle_1 the difference of P and the uint64 box referenced by Handle_2.
ppl_Uint64_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P referenced by Handle_1 the time elapse of P and the uint64 box referenced by Handle_2.
ppl_Uint64_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the uint64 box P_1 referenced by Handle_1 with the uint64 box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Uint64_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of uint64 box P_1 referenced by Handle_1 and the uint64 box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Uint64_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Uint64_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the uint64 box referred to by the second argument has to be contained in (or equal to) the uint64 box referred to by the first argument.
ppl_Uint64_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint64 box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint64_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint64 box referenced by Handle_2.
ppl_Uint64_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Uint64_Box_CC76_widening_assign_with_tokens/4
ppl_Uint64_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Uint64_Box_CC76_widening_assign/2
ppl_Uint64_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the uint64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint64 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Uint64_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the uint64 box P_1 referenced by Handle_1 the CC76-widening of P_1 with the uint64 box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the uint64 box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Uint64_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the uint64 box P referenced by Handle_1 the concatenation of P and the uint64 box referenced by Handle_2.
These predicates enable the modification of the vector space of the uint64 box referred to in the first argument. These predicates enable the modification of the vector space of the uint64 box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Uint64_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint64 box P referenced by Handle and and_embeds P in this space.
ppl_Uint64_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the uint64 box P referenced by Handle and and_projects P in this space.
ppl_Uint64_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the uint64 box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Uint64_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the uint64 box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Uint64_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the uint64 box referenced by Handle to Dimension_Type new space dimensions.
ppl_Uint64_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the uint64 box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Uint64_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of z boxes.
The constructor predicates build a z box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Z_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new z box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Z_Box_from_space_dimension(3, universe, X).
creates the z box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Z_Box_from_constraints(+Constraint_System, -Handle)
Builds a new z box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Z_Box_from_congruences(+Congruence_System, -Handle)
Builds a new z box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Z_Box_from_generators(+Generator_System, -Handle)
Builds a new z box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Z_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new z box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new z box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new z box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new z box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new z box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new z box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Z_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new z box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Z_Box domain.
ppl_delete_Z_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the z box for different properties and succeed or fail depending on the outcome.
ppl_Z_Box_is_empty(+Handle)
Succeeds if and only if the z box referenced by Handle is empty.
ppl_Z_Box_is_universe(+Handle)
Succeeds if and only if the z box referenced by Handle is the universe.
ppl_Z_Box_is_bounded(+Handle)
Succeeds if and only if the z box referenced by Handle is bounded.
ppl_Z_Box_contains_integer_point(+Handle)
Succeeds if and only if the z box referenced by Handle contains an integer point.
ppl_Z_Box_is_topologically_closed(+Handle)
Succeeds if and only if the z box referenced by Handle is topologically closed.
ppl_Z_Box_is_discrete(+Handle)
Succeeds if and only if the z box referenced by Handle is discrete.
ppl_Z_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the z box referenced by Handle.
ppl_Z_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the z box referenced by Handle.
ppl_Z_Box_contains_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the z box referenced by Handle_2 is included in or equal to the z box referenced by Handle_1.
ppl_Z_Box_strictly_contains_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the z box referenced by Handle_2 is included in but not equal to the z box referenced by Handle_1.
ppl_Z_Box_is_disjoint_from_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the z box referenced by Handle_2 is disjoint from the z box referenced by Handle_1.
ppl_Z_Box_equals_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the z box referenced by Handle_1 is equal to the z box referenced by Handle_2.
ppl_Z_Box_OK(+Handle)
Succeeds only if the z box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Z_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the z box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the z box unifying some of their arguments with the results.
ppl_Z_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the z box referenced by Handle.
ppl_Z_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the z box referenced by Handle.
ppl_Z_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the z box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Z_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the z box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Z_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the z box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Z_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the z box referenced by Handle.
ppl_Z_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the z box referenced by Handle.
ppl_Z_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the z box referenced by Handle.
ppl_Z_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the z box referenced by Handle.
ppl_Z_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if z box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Z_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if z box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Z_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if z box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Z_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if z box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Z_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the z box referenced by Handle.
ppl_Z_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the z box referenced by Handle.
This output predicate is useful for debugging.
ppl_Z_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the z box referenced by Handle on the standard output.
These predicates may modify the z box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Z_Box_add_constraint(+Handle, +Constraint)
Updates the z box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Z_Box_add_congruence(+Handle, +Congruence)
Updates the z box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Z_Box_add_constraints( +Handle, +Constraint_System)
Updates the z box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Z_Box_add_congruences( +Handle, +Congruence_System)
Updates the z box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Z_Box_refine_with_constraint( +Handle, +Constraint)
Updates the z box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Z_Box_refine_with_congruence( +Handle, +Congruence)
Updates the z box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Z_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the z box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Z_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the z box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of z box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Z_Box_topological_closure_assign(+Handle)
Assigns to the z box referenced by Handle its topological closure.
ppl_Z_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the z box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Z_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the z box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Z_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the z box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Z_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the z box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Z_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to z box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Z_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to z box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Z_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to z box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Z_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to z box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Z_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to z box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Z_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to z box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Z_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the z box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the z box referred to by the first argument its combination with the z box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Z_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the z box P referenced by Handle_1 the intersection of P and the z box referenced by Handle_2.
ppl_Z_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the z box P referenced by Handle_1 the upper bound of P and the z box referenced by Handle_2.
ppl_Z_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the z box P referenced by Handle_1 the difference of P and the z box referenced by Handle_2.
ppl_Z_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the z box P referenced by Handle_1 the time elapse of P and the z box referenced by Handle_2.
ppl_Z_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the z box P_1 referenced by Handle_1 with the z box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Z_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of z box P_1 referenced by Handle_1 and the z box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Z_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Z_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the z box referred to by the second argument has to be contained in (or equal to) the z box referred to by the first argument.
ppl_Z_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the z box P_1 referenced by Handle_1 the CC76-widening of P_1 with the z box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Z_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the z box P_1 referenced by Handle_1 the CC76-widening of P_1 with the z box referenced by Handle_2.
ppl_Z_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Z_Box_CC76_widening_assign_with_tokens/4
ppl_Z_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Z_Box_CC76_widening_assign/2
ppl_Z_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the z box P_1 referenced by Handle_1 the CC76-widening of P_1 with the z box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Z_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the z box P_1 referenced by Handle_1 the CC76-widening of P_1 with the z box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the z box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Z_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the z box P referenced by Handle_1 the concatenation of P and the z box referenced by Handle_2.
These predicates enable the modification of the vector space of the z box referred to in the first argument. These predicates enable the modification of the vector space of the z box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Z_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the z box P referenced by Handle and and_embeds P in this space.
ppl_Z_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the z box P referenced by Handle and and_projects P in this space.
ppl_Z_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the z box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Z_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the z box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Z_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the z box referenced by Handle to Dimension_Type new space dimensions.
ppl_Z_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the z box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Z_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of rational boxes.
The constructor predicates build a rational box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Rational_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new rational box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Rational_Box_from_space_dimension(3, universe, X).
creates the rational box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Rational_Box_from_constraints(+Constraint_System, -Handle)
Builds a new rational box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Rational_Box_from_congruences(+Congruence_System, -Handle)
Builds a new rational box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Rational_Box_from_generators(+Generator_System, -Handle)
Builds a new rational box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Rational_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new rational box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Rational_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new rational box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Rational_Box domain.
ppl_delete_Rational_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the rational box for different properties and succeed or fail depending on the outcome.
ppl_Rational_Box_is_empty(+Handle)
Succeeds if and only if the rational box referenced by Handle is empty.
ppl_Rational_Box_is_universe(+Handle)
Succeeds if and only if the rational box referenced by Handle is the universe.
ppl_Rational_Box_is_bounded(+Handle)
Succeeds if and only if the rational box referenced by Handle is bounded.
ppl_Rational_Box_contains_integer_point(+Handle)
Succeeds if and only if the rational box referenced by Handle contains an integer point.
ppl_Rational_Box_is_topologically_closed(+Handle)
Succeeds if and only if the rational box referenced by Handle is topologically closed.
ppl_Rational_Box_is_discrete(+Handle)
Succeeds if and only if the rational box referenced by Handle is discrete.
ppl_Rational_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the rational box referenced by Handle.
ppl_Rational_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the rational box referenced by Handle.
ppl_Rational_Box_contains_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the rational box referenced by Handle_2 is included in or equal to the rational box referenced by Handle_1.
ppl_Rational_Box_strictly_contains_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the rational box referenced by Handle_2 is included in but not equal to the rational box referenced by Handle_1.
ppl_Rational_Box_is_disjoint_from_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the rational box referenced by Handle_2 is disjoint from the rational box referenced by Handle_1.
ppl_Rational_Box_equals_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the rational box referenced by Handle_1 is equal to the rational box referenced by Handle_2.
ppl_Rational_Box_OK(+Handle)
Succeeds only if the rational box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Rational_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the rational box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the rational box unifying some of their arguments with the results.
ppl_Rational_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the rational box referenced by Handle.
ppl_Rational_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the rational box referenced by Handle.
ppl_Rational_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the rational box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Rational_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the rational box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Rational_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the rational box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Rational_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the rational box referenced by Handle.
ppl_Rational_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the rational box referenced by Handle.
ppl_Rational_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the rational box referenced by Handle.
ppl_Rational_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the rational box referenced by Handle.
ppl_Rational_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if rational box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Rational_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if rational box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Rational_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if rational box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Rational_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if rational box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Rational_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the rational box referenced by Handle.
ppl_Rational_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the rational box referenced by Handle.
This output predicate is useful for debugging.
ppl_Rational_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the rational box referenced by Handle on the standard output.
These predicates may modify the rational box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Rational_Box_add_constraint(+Handle, +Constraint)
Updates the rational box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Rational_Box_add_congruence(+Handle, +Congruence)
Updates the rational box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Rational_Box_add_constraints( +Handle, +Constraint_System)
Updates the rational box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Rational_Box_add_congruences( +Handle, +Congruence_System)
Updates the rational box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Rational_Box_refine_with_constraint( +Handle, +Constraint)
Updates the rational box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Rational_Box_refine_with_congruence( +Handle, +Congruence)
Updates the rational box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Rational_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the rational box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Rational_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the rational box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of rational box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Rational_Box_topological_closure_assign(+Handle)
Assigns to the rational box referenced by Handle its topological closure.
ppl_Rational_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the rational box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Rational_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the rational box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Rational_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the rational box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Rational_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the rational box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Rational_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to rational box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Rational_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to rational box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Rational_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to rational box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Rational_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to rational box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Rational_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to rational box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Rational_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to rational box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Rational_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the rational box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the rational box referred to by the first argument its combination with the rational box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Rational_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the rational box P referenced by Handle_1 the intersection of P and the rational box referenced by Handle_2.
ppl_Rational_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the rational box P referenced by Handle_1 the upper bound of P and the rational box referenced by Handle_2.
ppl_Rational_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the rational box P referenced by Handle_1 the difference of P and the rational box referenced by Handle_2.
ppl_Rational_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the rational box P referenced by Handle_1 the time elapse of P and the rational box referenced by Handle_2.
ppl_Rational_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the rational box P_1 referenced by Handle_1 with the rational box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Rational_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of rational box P_1 referenced by Handle_1 and the rational box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Rational_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Rational_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the rational box referred to by the second argument has to be contained in (or equal to) the rational box referred to by the first argument.
ppl_Rational_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the rational box P_1 referenced by Handle_1 the CC76-widening of P_1 with the rational box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Rational_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the rational box P_1 referenced by Handle_1 the CC76-widening of P_1 with the rational box referenced by Handle_2.
ppl_Rational_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Rational_Box_CC76_widening_assign_with_tokens/4
ppl_Rational_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Rational_Box_CC76_widening_assign/2
ppl_Rational_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the rational box P_1 referenced by Handle_1 the CC76-widening of P_1 with the rational box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Rational_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the rational box P_1 referenced by Handle_1 the CC76-widening of P_1 with the rational box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the rational box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Rational_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the rational box P referenced by Handle_1 the concatenation of P and the rational box referenced by Handle_2.
These predicates enable the modification of the vector space of the rational box referred to in the first argument. These predicates enable the modification of the vector space of the rational box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Rational_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the rational box P referenced by Handle and and_embeds P in this space.
ppl_Rational_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the rational box P referenced by Handle and and_projects P in this space.
ppl_Rational_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the rational box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Rational_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the rational box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Rational_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the rational box referenced by Handle to Dimension_Type new space dimensions.
ppl_Rational_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the rational box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Rational_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_int8_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_int8_t_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_int8_t_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int8_t_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int8_t_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_int8_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int8_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_int8_t domain.
ppl_delete_BD_Shape_int8_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_int8_t_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_int8_t_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_int8_t_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_int8_t_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_int8_t_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_int8_t_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_int8_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_contains_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int8_t_strictly_contains_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int8_t_is_disjoint_from_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_int8_t_equals_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_int8_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_int8_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int8_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int8_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int8_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int8_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int8_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int8_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int8_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_int8_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_int8_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_int8_t_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_int8_t_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_int8_t_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_int8_t_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_int8_t_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_int8_t_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_int8_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_int8_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_int8_t_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_int8_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_int8_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int8_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int8_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int8_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int8_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int8_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int8_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int8_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int8_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int8_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_int8_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_int8_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_int8_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_int8_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_int8_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int8_t_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int8_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int8_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_int8_t_H79_widening_assign_with_tokens/4
ppl_BD_Shape_int8_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_int8_t_H79_widening_assign/2
ppl_BD_Shape_int8_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int8_t_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int8_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int8_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int8_t_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int8_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int8_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_int8_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_int8_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_int8_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_int8_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int8_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_int8_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_int8_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_int8_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_int16_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_int16_t_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_int16_t_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int16_t_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int16_t_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_int16_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int16_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_int16_t domain.
ppl_delete_BD_Shape_int16_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_int16_t_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_int16_t_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_int16_t_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_int16_t_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_int16_t_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_int16_t_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_int16_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_contains_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int16_t_strictly_contains_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int16_t_is_disjoint_from_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_int16_t_equals_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_int16_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_int16_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int16_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int16_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int16_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int16_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int16_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int16_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int16_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_int16_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_int16_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_int16_t_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_int16_t_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_int16_t_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_int16_t_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_int16_t_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_int16_t_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_int16_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_int16_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_int16_t_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_int16_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_int16_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int16_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int16_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int16_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int16_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int16_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int16_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int16_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int16_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int16_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_int16_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_int16_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_int16_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_int16_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_int16_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int16_t_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int16_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int16_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_int16_t_H79_widening_assign_with_tokens/4
ppl_BD_Shape_int16_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_int16_t_H79_widening_assign/2
ppl_BD_Shape_int16_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int16_t_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int16_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int16_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int16_t_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int16_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int16_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_int16_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_int16_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_int16_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_int16_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int16_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_int16_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_int16_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_int16_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_int32_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_int32_t_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_int32_t_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int32_t_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int32_t_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_int32_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int32_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_int32_t domain.
ppl_delete_BD_Shape_int32_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_int32_t_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_int32_t_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_int32_t_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_int32_t_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_int32_t_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_int32_t_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_int32_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_contains_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int32_t_strictly_contains_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int32_t_is_disjoint_from_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_int32_t_equals_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_int32_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_int32_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int32_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int32_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int32_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int32_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int32_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int32_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int32_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_int32_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_int32_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_int32_t_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_int32_t_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_int32_t_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_int32_t_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_int32_t_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_int32_t_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_int32_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_int32_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_int32_t_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_int32_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_int32_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int32_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int32_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int32_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int32_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int32_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int32_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int32_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int32_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int32_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_int32_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_int32_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_int32_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_int32_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_int32_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int32_t_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int32_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int32_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_int32_t_H79_widening_assign_with_tokens/4
ppl_BD_Shape_int32_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_int32_t_H79_widening_assign/2
ppl_BD_Shape_int32_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int32_t_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int32_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int32_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int32_t_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int32_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int32_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_int32_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_int32_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_int32_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_int32_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int32_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_int32_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_int32_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_int32_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_int64_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_int64_t_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_int64_t_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int64_t_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_int64_t_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_int64_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_int64_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_int64_t domain.
ppl_delete_BD_Shape_int64_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_int64_t_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_int64_t_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_int64_t_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_int64_t_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_int64_t_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_int64_t_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_int64_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_contains_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int64_t_strictly_contains_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_int64_t_is_disjoint_from_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_int64_t_equals_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_int64_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_int64_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int64_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int64_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_int64_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int64_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int64_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int64_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_int64_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_int64_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_int64_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_int64_t_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_int64_t_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_int64_t_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_int64_t_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_int64_t_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_int64_t_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_int64_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_int64_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_int64_t_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_int64_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_int64_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int64_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int64_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_int64_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int64_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_int64_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int64_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int64_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int64_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_int64_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_int64_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_int64_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_int64_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_int64_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_int64_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int64_t_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int64_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_int64_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_int64_t_H79_widening_assign_with_tokens/4
ppl_BD_Shape_int64_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_int64_t_H79_widening_assign/2
ppl_BD_Shape_int64_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int64_t_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int64_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_int64_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int64_t_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int64_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_int64_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_int64_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_int64_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_int64_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_int64_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_int64_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_int64_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_int64_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_int64_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_mpz_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_mpz_class_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_mpz_class_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_mpz_class_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_mpz_class_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_mpz_class_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_mpz_class domain.
ppl_delete_BD_Shape_mpz_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_mpz_class_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_mpz_class_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_mpz_class_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_mpz_class_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_mpz_class_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_mpz_class_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_mpz_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_contains_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_mpz_class_strictly_contains_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_mpz_class_is_disjoint_from_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_mpz_class_equals_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_mpz_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_mpz_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpz_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpz_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpz_class_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpz_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpz_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpz_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpz_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_mpz_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_mpz_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_mpz_class_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_mpz_class_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_mpz_class_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_mpz_class_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_mpz_class_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_mpz_class_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_mpz_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_mpz_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_mpz_class_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_mpz_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_mpz_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_mpz_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_mpz_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_mpz_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_mpz_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_mpz_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpz_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpz_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpz_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpz_class_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_mpz_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_mpz_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_mpz_class_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_mpz_class domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_mpz_class_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpz_class_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpz_class_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_mpz_class_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_mpz_class_H79_widening_assign_with_tokens/4
ppl_BD_Shape_mpz_class_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_mpz_class_H79_widening_assign/2
ppl_BD_Shape_mpz_class_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpz_class_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpz_class_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpz_class_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpz_class_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpz_class_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpz_class_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_mpz_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_mpz_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_mpz_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_mpz_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_mpz_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_mpz_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_mpz_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_mpz_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_mpq_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_mpq_class_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_mpq_class_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_mpq_class_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_mpq_class_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_mpq_class_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_mpq_class domain.
ppl_delete_BD_Shape_mpq_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_mpq_class_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_mpq_class_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_mpq_class_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_mpq_class_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_mpq_class_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_mpq_class_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_mpq_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_contains_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_mpq_class_strictly_contains_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_mpq_class_is_disjoint_from_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_mpq_class_equals_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_mpq_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_mpq_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpq_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpq_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_mpq_class_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpq_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpq_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpq_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_mpq_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_mpq_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_mpq_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_mpq_class_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_mpq_class_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_mpq_class_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_mpq_class_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_mpq_class_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_mpq_class_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_mpq_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_mpq_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_mpq_class_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_mpq_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_mpq_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_mpq_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_mpq_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_mpq_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_mpq_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_mpq_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpq_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpq_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpq_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_mpq_class_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_mpq_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_mpq_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_mpq_class_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_mpq_class domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_mpq_class_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpq_class_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpq_class_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_mpq_class_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_mpq_class_H79_widening_assign_with_tokens/4
ppl_BD_Shape_mpq_class_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_mpq_class_H79_widening_assign/2
ppl_BD_Shape_mpq_class_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpq_class_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpq_class_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_mpq_class_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpq_class_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpq_class_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_mpq_class_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_mpq_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_mpq_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_mpq_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_mpq_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_mpq_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_mpq_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_mpq_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_mpq_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_int8_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_int8_t_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_int8_t_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int8_t_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int8_t_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_int8_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int8_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_int8_t domain.
ppl_delete_Octagonal_Shape_int8_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_int8_t_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_int8_t_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_int8_t_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_int8_t_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_int8_t_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_int8_t_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_int8_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_contains_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int8_t_strictly_contains_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int8_t_is_disjoint_from_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int8_t_equals_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_int8_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_int8_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int8_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int8_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int8_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int8_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int8_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int8_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int8_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int8_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_int8_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_int8_t_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_int8_t_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_int8_t_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_int8_t_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_int8_t_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_int8_t_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_int8_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_int8_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_int8_t_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_int8_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_int8_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int8_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int8_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int8_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int8_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int8_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int8_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int8_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int8_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int8_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_int8_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_int8_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_int8_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_int8_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_int8_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int8_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int8_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_int8_t_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_int8_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_int8_t_H79_widening_assign/2
ppl_Octagonal_Shape_int8_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int8_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int8_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int8_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int8_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_int8_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_int8_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_int8_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_int8_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int8_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_int8_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_int8_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_int8_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_int16_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_int16_t_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_int16_t_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int16_t_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int16_t_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_int16_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int16_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_int16_t domain.
ppl_delete_Octagonal_Shape_int16_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_int16_t_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_int16_t_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_int16_t_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_int16_t_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_int16_t_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_int16_t_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_int16_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_contains_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int16_t_strictly_contains_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int16_t_is_disjoint_from_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int16_t_equals_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_int16_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_int16_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int16_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int16_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int16_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int16_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int16_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int16_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int16_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int16_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_int16_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_int16_t_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_int16_t_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_int16_t_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_int16_t_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_int16_t_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_int16_t_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_int16_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_int16_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_int16_t_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_int16_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_int16_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int16_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int16_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int16_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int16_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int16_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int16_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int16_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int16_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int16_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_int16_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_int16_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_int16_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_int16_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_int16_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int16_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int16_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_int16_t_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_int16_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_int16_t_H79_widening_assign/2
ppl_Octagonal_Shape_int16_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int16_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int16_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int16_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int16_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_int16_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_int16_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_int16_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_int16_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int16_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_int16_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_int16_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_int16_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_int32_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_int32_t_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_int32_t_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int32_t_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int32_t_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_int32_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int32_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_int32_t domain.
ppl_delete_Octagonal_Shape_int32_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_int32_t_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_int32_t_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_int32_t_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_int32_t_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_int32_t_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_int32_t_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_int32_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_contains_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int32_t_strictly_contains_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int32_t_is_disjoint_from_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int32_t_equals_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_int32_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_int32_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int32_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int32_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int32_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int32_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int32_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int32_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int32_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int32_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_int32_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_int32_t_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_int32_t_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_int32_t_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_int32_t_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_int32_t_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_int32_t_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_int32_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_int32_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_int32_t_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_int32_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_int32_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int32_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int32_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int32_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int32_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int32_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int32_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int32_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int32_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int32_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_int32_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_int32_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_int32_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_int32_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_int32_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int32_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int32_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_int32_t_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_int32_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_int32_t_H79_widening_assign/2
ppl_Octagonal_Shape_int32_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int32_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int32_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int32_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int32_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_int32_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_int32_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_int32_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_int32_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int32_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_int32_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_int32_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_int32_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_int64_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_int64_t_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_int64_t_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int64_t_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_int64_t_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_int64_t_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_int64_t_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_int64_t domain.
ppl_delete_Octagonal_Shape_int64_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_int64_t_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_int64_t_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_int64_t_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_int64_t_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_int64_t_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_int64_t_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_int64_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_contains_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int64_t_strictly_contains_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int64_t_is_disjoint_from_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_int64_t_equals_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_int64_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_int64_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int64_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int64_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_int64_t_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int64_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int64_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int64_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_int64_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_int64_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_int64_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_int64_t_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_int64_t_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_int64_t_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_int64_t_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_int64_t_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_int64_t_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_int64_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_int64_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_int64_t_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_int64_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_int64_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int64_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int64_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_int64_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int64_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_int64_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int64_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int64_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int64_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_int64_t_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_int64_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_int64_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_int64_t_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_int64_t domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_int64_t_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int64_t_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_int64_t_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_int64_t_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_int64_t_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_int64_t_H79_widening_assign/2
ppl_Octagonal_Shape_int64_t_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int64_t_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_int64_t_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int64_t_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_int64_t_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_int64_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_int64_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_int64_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_int64_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_int64_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_int64_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_int64_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_int64_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_mpz_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_mpz_class_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_mpz_class_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_mpz_class_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_mpz_class_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_mpz_class_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_mpz_class domain.
ppl_delete_Octagonal_Shape_mpz_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_mpz_class_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_mpz_class_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_mpz_class_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_mpz_class_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_mpz_class_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_mpz_class_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_mpz_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_contains_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpz_class_strictly_contains_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpz_class_is_disjoint_from_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpz_class_equals_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_mpz_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_mpz_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpz_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpz_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpz_class_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpz_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpz_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpz_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpz_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpz_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_mpz_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_mpz_class_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_mpz_class_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_mpz_class_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_mpz_class_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_mpz_class_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_mpz_class_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_mpz_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_mpz_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_mpz_class_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_mpz_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_mpz_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_mpz_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_mpz_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_mpz_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_mpz_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_mpz_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpz_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpz_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpz_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpz_class_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_mpz_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_mpz_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_mpz_class_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_mpz_class domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_mpz_class_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpz_class_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpz_class_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_mpz_class_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_mpz_class_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_mpz_class_H79_widening_assign/2
ppl_Octagonal_Shape_mpz_class_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpz_class_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpz_class_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_mpz_class_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_mpz_class_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_mpz_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_mpz_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_mpz_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_mpz_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_mpz_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_mpz_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_mpz_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_mpz_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_mpq_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_mpq_class_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_mpq_class_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_mpq_class_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_mpq_class_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_mpq_class_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_mpq_class domain.
ppl_delete_Octagonal_Shape_mpq_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_mpq_class_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_mpq_class_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_mpq_class_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_mpq_class_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_mpq_class_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_mpq_class_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_mpq_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_contains_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpq_class_strictly_contains_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpq_class_is_disjoint_from_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_mpq_class_equals_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_mpq_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_mpq_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpq_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpq_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_mpq_class_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpq_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpq_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpq_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_mpq_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_mpq_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_mpq_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_mpq_class_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_mpq_class_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_mpq_class_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_mpq_class_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_mpq_class_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_mpq_class_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_mpq_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_mpq_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_mpq_class_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_mpq_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_mpq_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_mpq_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_mpq_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_mpq_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_mpq_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_mpq_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpq_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpq_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpq_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_mpq_class_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_mpq_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_mpq_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_mpq_class_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_mpq_class domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_mpq_class_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpq_class_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_mpq_class_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_mpq_class_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_mpq_class_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_mpq_class_H79_widening_assign/2
ppl_Octagonal_Shape_mpq_class_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpq_class_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_mpq_class_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_mpq_class_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_mpq_class_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_mpq_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_mpq_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_mpq_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_mpq_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_mpq_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_mpq_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_mpq_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_mpq_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of polyhedra.
The constructor predicates build a polyhedron from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_C_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new C polyhedron
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_C_Polyhedron_from_space_dimension(3, universe, X).
creates the C polyhedron defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_NNC_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new NNC polyhedron
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_NNC_Polyhedron_from_space_dimension(3, universe, X).
creates the NNC polyhedron defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_C_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new C polyhedron P from Constraint_System. Handle is unified with the handle for P.
ppl_new_NNC_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new NNC polyhedron P from Constraint_System. Handle is unified with the handle for P.
ppl_new_C_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new C polyhedron P from Congruence_System. Handle is unified with the handle for P.
ppl_new_NNC_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new NNC polyhedron P from Congruence_System. Handle is unified with the handle for P.
ppl_new_C_Polyhedron_from_generators(+Generator_System, -Handle)
Builds a new C polyhedron P from Generator_System. Handle is unified with the handle for P.
ppl_new_NNC_Polyhedron_from_generators(+Generator_System, -Handle)
Builds a new NNC polyhedron P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_C_Polyhedron_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Z_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Z_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Grid(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Grid(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Float_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Float_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Double_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Double_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new C polyhedron P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new NNC polyhedron P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_C_Polyhedron_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new C polyhedron P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_NNC_Polyhedron_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new NNC polyhedron P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Polyhedron domain.
ppl_delete_Polyhedron(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the polyhedron for different properties and succeed or fail depending on the outcome.
ppl_Polyhedron_is_empty(+Handle)
Succeeds if and only if the polyhedron referenced by Handle is empty.
ppl_Polyhedron_is_universe(+Handle)
Succeeds if and only if the polyhedron referenced by Handle is the universe.
ppl_Polyhedron_is_bounded(+Handle)
Succeeds if and only if the polyhedron referenced by Handle is bounded.
ppl_Polyhedron_contains_integer_point(+Handle)
Succeeds if and only if the polyhedron referenced by Handle contains an integer point.
ppl_Polyhedron_is_topologically_closed(+Handle)
Succeeds if and only if the polyhedron referenced by Handle is topologically closed.
ppl_Polyhedron_is_discrete(+Handle)
Succeeds if and only if the polyhedron referenced by Handle is discrete.
ppl_Polyhedron_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the polyhedron referenced by Handle.
ppl_Polyhedron_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the polyhedron referenced by Handle.
ppl_Polyhedron_contains_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the polyhedron referenced by Handle_2 is included in or equal to the polyhedron referenced by Handle_1.
ppl_Polyhedron_strictly_contains_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the polyhedron referenced by Handle_2 is included in but not equal to the polyhedron referenced by Handle_1.
ppl_Polyhedron_is_disjoint_from_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the polyhedron referenced by Handle_2 is disjoint from the polyhedron referenced by Handle_1.
ppl_Polyhedron_equals_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the polyhedron referenced by Handle_1 is equal to the polyhedron referenced by Handle_2.
ppl_Polyhedron_OK(+Handle)
Succeeds only if the polyhedron referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Polyhedron_constrains(+Handle, +PPL_Var)
Succeeds if and only if the polyhedron referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the polyhedron unifying some of their arguments with the results.
ppl_Polyhedron_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the polyhedron referenced by Handle.
ppl_Polyhedron_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the polyhedron referenced by Handle.
ppl_Polyhedron_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the polyhedron referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Polyhedron_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the polyhedron referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Polyhedron_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the polyhedron referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Polyhedron_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the polyhedron referenced by Handle.
ppl_Polyhedron_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the polyhedron referenced by Handle.
ppl_Polyhedron_get_generators(+Handle, ?Generator_System)
Unifies Generator_System with the generators (in the form of a list) in the generator system for the polyhedron referenced by Handle.
ppl_Polyhedron_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the polyhedron referenced by Handle.
ppl_Polyhedron_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system for the polyhedron referenced by Handle.
ppl_Polyhedron_get_minimized_generators(+Handle, ?Generator_System)
Unifies Generator_System with the generators (in the form of a list) in the minimized generator system satisfied by the polyhedron referenced by Handle.
ppl_Polyhedron_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if polyhedron P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Polyhedron_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if polyhedron P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Polyhedron_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if polyhedron P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Polyhedron_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if polyhedron P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Polyhedron_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the polyhedron referenced by Handle.
ppl_Polyhedron_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the polyhedron referenced by Handle.
This output predicate is useful for debugging.
ppl_Polyhedron_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the polyhedron referenced by Handle on the standard output.
These predicates may modify the polyhedron referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Polyhedron_add_constraint(+Handle, +Constraint)
Updates the polyhedron referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Polyhedron_add_congruence(+Handle, +Congruence)
Updates the polyhedron referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Polyhedron_add_generator(+Handle, +Generator)
Updates the polyhedron referenced by Handle to one obtained by adding Generator to its generator system. For a C polyhedron, Generator must be a line, ray or point.
ppl_Polyhedron_add_constraints( +Handle, +Constraint_System)
Updates the polyhedron referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Polyhedron_add_congruences( +Handle, +Congruence_System)
Updates the polyhedron referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Polyhedron_add_generators( +Handle, +Generator_System)
Updates the polyhedron referenced by Handle to one obtained by adding to its generator system the generators in Generator_System. For a C polyhedron, Generators must be a list of lines, rays and points.
ppl_Polyhedron_refine_with_constraint( +Handle, +Constraint)
Updates the polyhedron referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Polyhedron_refine_with_congruence( +Handle, +Congruence)
Updates the polyhedron referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Polyhedron_refine_with_constraints( +Handle, +Constraint_System)
Updates the polyhedron referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Polyhedron_refine_with_congruences( +Handle, +Congruence_System)
Updates the polyhedron referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of polyhedron is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Polyhedron_topological_closure_assign(+Handle)
Assigns to the polyhedron referenced by Handle its topological closure.
ppl_Polyhedron_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the polyhedron P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Polyhedron_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the polyhedron P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Polyhedron_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the polyhedron referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Polyhedron_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the polyhedron referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Polyhedron_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to polyhedron P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Polyhedron_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to polyhedron P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Polyhedron_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to polyhedron P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Polyhedron_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to polyhedron P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Polyhedron_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to polyhedron P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Polyhedron_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to polyhedron P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Polyhedron_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the polyhedron P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the polyhedron referred to by the first argument its combination with the polyhedron referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Polyhedron_intersection_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the intersection of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the upper bound of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_difference_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the difference of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the time elapse of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_poly_hull(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the poly-hull of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_poly_difference(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the poly-difference of P and the polyhedron referenced by Handle_2.
ppl_Polyhedron_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the polyhedron P_1 referenced by Handle_1 with the polyhedron referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Polyhedron_poly_hull_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the polyhedron P_1 referenced by Handle_1 with the polyhedron referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Polyhedron_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of polyhedron P_1 referenced by Handle_1 and the polyhedron P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Polyhedron_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Polyhedron domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the polyhedron referred to by the second argument has to be contained in (or equal to) the polyhedron referred to by the first argument.
ppl_Polyhedron_BHRZ03_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_BHRZ03_widening_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2.
ppl_Polyhedron_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2.
ppl_Polyhedron_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Polyhedron_H79_widening_assign_with_tokens/4
ppl_Polyhedron_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Polyhedron_H79_widening_assign/2
ppl_Polyhedron_limited_BHRZ03_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1, further intersected with the smallest box containing P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_bounded_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1, further intersected with the smallest box containing P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Polyhedron_limited_BHRZ03_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the polyhedron P_1 referenced by Handle_1 the BHRZ03-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1, further intersected with the smallest box containing P_1.
ppl_Polyhedron_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Polyhedron_bounded_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the polyhedron P_1 referenced by Handle_1 the H79-widening of P_1 with the polyhedron referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1, further intersected with the smallest box containing P_1.
These predicates enable the modification of the vector space of the polyhedron referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Polyhedron_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the polyhedron P referenced by Handle_1 the concatenation of P and the polyhedron referenced by Handle_2.
These predicates enable the modification of the vector space of the polyhedron referred to in the first argument. These predicates enable the modification of the vector space of the polyhedron referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Polyhedron_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the polyhedron P referenced by Handle and and_embeds P in this space.
ppl_Polyhedron_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the polyhedron P referenced by Handle and and_projects P in this space.
ppl_Polyhedron_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the polyhedron P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Polyhedron_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the polyhedron P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Polyhedron_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the polyhedron referenced by Handle to Dimension_Type new space dimensions.
ppl_Polyhedron_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the polyhedron referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Polyhedron_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of grids.
The constructor predicates build a grid from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Grid_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new grid
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Grid_from_space_dimension(3, universe, X).
creates the grid defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Grid_from_constraints(+Constraint_System, -Handle)
Builds a new grid P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Grid_from_congruences(+Congruence_System, -Handle)
Builds a new grid P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Grid_from_grid_generators(+Grid_Generator_System, -Handle)
Builds a new grid P from Grid_Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Grid_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Z_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new grid P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new grid P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Grid(+Handle_1, -Handle_2)
Builds a new grid P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Float_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Double_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new grid P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new grid P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new grid P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Grid_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new grid P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Grid domain.
ppl_delete_Grid(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the grid for different properties and succeed or fail depending on the outcome.
ppl_Grid_is_empty(+Handle)
Succeeds if and only if the grid referenced by Handle is empty.
ppl_Grid_is_universe(+Handle)
Succeeds if and only if the grid referenced by Handle is the universe.
ppl_Grid_is_bounded(+Handle)
Succeeds if and only if the grid referenced by Handle is bounded.
ppl_Grid_contains_integer_point(+Handle)
Succeeds if and only if the grid referenced by Handle contains an integer point.
ppl_Grid_is_topologically_closed(+Handle)
Succeeds if and only if the grid referenced by Handle is topologically closed.
ppl_Grid_is_discrete(+Handle)
Succeeds if and only if the grid referenced by Handle is discrete.
ppl_Grid_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the grid referenced by Handle.
ppl_Grid_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the grid referenced by Handle.
ppl_Grid_contains_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the grid referenced by Handle_2 is included in or equal to the grid referenced by Handle_1.
ppl_Grid_strictly_contains_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the grid referenced by Handle_2 is included in but not equal to the grid referenced by Handle_1.
ppl_Grid_is_disjoint_from_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the grid referenced by Handle_2 is disjoint from the grid referenced by Handle_1.
ppl_Grid_equals_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the grid referenced by Handle_1 is equal to the grid referenced by Handle_2.
ppl_Grid_OK(+Handle)
Succeeds only if the grid referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Grid_constrains(+Handle, +PPL_Var)
Succeeds if and only if the grid referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the grid unifying some of their arguments with the results.
ppl_Grid_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the grid referenced by Handle.
ppl_Grid_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the grid referenced by Handle.
ppl_Grid_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the grid referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Grid_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the grid referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Grid_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the grid referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Grid_relation_with_grid_generator(+Handle, +Grid_Generator, ?Relation_List)
Unifies Relation_List with the list of relations the grid referenced by Handle has with Grid_Generator. The possible relations are listed in the grammar rules above.
ppl_Grid_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the grid referenced by Handle.
ppl_Grid_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the grid referenced by Handle.
ppl_Grid_get_grid_generators(+Handle, ?Grid_Generator_System)
Unifies Grid_Generator_System with the grid_generators (in the form of a list) in the grid_generator system for the grid referenced by Handle.
ppl_Grid_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the grid referenced by Handle.
ppl_Grid_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the grid referenced by Handle.
ppl_Grid_get_minimized_grid_generators(+Handle, ?Grid_Generator_System)
Unifies Grid_Generator_System with the grid_generators (in the form of a list) in the minimized grid_generator system for the grid referenced by Handle.
ppl_Grid_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if grid P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Grid_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if grid P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Grid_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if grid P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Grid_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if grid P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Grid_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the grid referenced by Handle.
ppl_Grid_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the grid referenced by Handle.
This output predicate is useful for debugging.
ppl_Grid_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the grid referenced by Handle on the standard output.
These predicates may modify the grid referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Grid_add_constraint(+Handle, +Constraint)
Updates the grid referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Grid_add_congruence(+Handle, +Congruence)
Updates the grid referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Grid_add_grid_generator(+Handle, +Grid_Generator)
Updates the grid referenced by Handle to one obtained by adding Grid_Generator to its grid_generator system. For a C polyhedron, Grid_Generator must be a line, ray or point.
ppl_Grid_add_constraints( +Handle, +Constraint_System)
Updates the grid referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Grid_add_congruences( +Handle, +Congruence_System)
Updates the grid referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Grid_add_grid_generators( +Handle, +Grid_Generator_System)
Updates the grid referenced by Handle to one obtained by adding to its grid_generator system the grid_generators in Grid_Generator_System. For a C polyhedron, Grid_Generators must be a list of lines, rays and points.
ppl_Grid_refine_with_constraint( +Handle, +Constraint)
Updates the grid referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Grid_refine_with_congruence( +Handle, +Congruence)
Updates the grid referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Grid_refine_with_constraints( +Handle, +Constraint_System)
Updates the grid referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Grid_refine_with_congruences( +Handle, +Congruence_System)
Updates the grid referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of grid is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Grid_topological_closure_assign(+Handle)
Assigns to the grid referenced by Handle its topological closure.
ppl_Grid_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the grid P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Grid_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the grid P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Grid_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the grid referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Grid_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the grid referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Grid_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to grid P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Grid_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to grid P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Grid_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to grid P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Grid_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to grid P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Grid_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to grid P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Grid_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to grid P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Grid_generalized_affine_image_with_congruence(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff_1, +Coeff_2)
Assigns to grid P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2/ where Coeff_1,Coeff_2 is bound to the modulus f.
ppl_Grid_generalized_affine_preimage_with_congruence(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff_1, +Coeff_2)
Assigns to grid P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2/ where Coeff_1,Coeff_2 is bound to the modulus f.
ppl_Grid_generalized_affine_image_lhs_rhs_with_congruence(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2, +Coeff)
Assigns to grid P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2. where Coeff is bound to the modulus f.
ppl_Grid_generalized_affine_preimage_lhs_rhs_with_congruence(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2, +Coeff)
Assigns to grid P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2. where Coeff is bound to the modulus f.
ppl_Grid_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the grid P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the grid referred to by the first argument its combination with the grid referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Grid_intersection_assign(+Handle_1, +Handle_2)
Assigns to the grid P referenced by Handle_1 the intersection of P and the grid referenced by Handle_2.
ppl_Grid_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the grid P referenced by Handle_1 the upper bound of P and the grid referenced by Handle_2.
ppl_Grid_difference_assign(+Handle_1, +Handle_2)
Assigns to the grid P referenced by Handle_1 the difference of P and the grid referenced by Handle_2.
ppl_Grid_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the grid P referenced by Handle_1 the time elapse of P and the grid referenced by Handle_2.
ppl_Grid_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the grid P_1 referenced by Handle_1 with the grid referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Grid_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of grid P_1 referenced by Handle_1 and the grid P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Grid_approximate_partition(+Handle_1, +Handle_2, ?Boolean, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Grid domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of grids P_4 where:
if there is a finite linear partition of P_1 wrt P_2 Boolean is unified with the atom true and P_4 is the linear partition;
otherwise Boolean is unified with the atom false and P_4 is set to the singleton set that contains P_2.
This predicate is only provided if the class Pointset_Powerset_Grid has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the grid referred to by the second argument has to be contained in (or equal to) the grid referred to by the first argument.
ppl_Grid_congruence_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the grid P_1 referenced by Handle_1 the congruence-widening of P_1 with the grid referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Grid_generator_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the grid P_1 referenced by Handle_1 the generator-widening of P_1 with the grid referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Grid_congruence_widening_assign(+Handle_1, +Handle_2)
Assigns to the grid P_1 referenced by Handle_1 the congruence-widening of P_1 with the grid referenced by Handle_2.
ppl_Grid_generator_widening_assign(+Handle_1, +Handle_2)
Assigns to the grid P_1 referenced by Handle_1 the generator-widening of P_1 with the grid referenced by Handle_2.
ppl_Grid_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Grid_congruence_widening_assign_with_tokens/4
ppl_Grid_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Grid_congruence_widening_assign/2
ppl_Grid_limited_congruence_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the grid P_1 referenced by Handle_1 the congruence-widening of P_1 with the grid referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Grid_limited_generator_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the grid P_1 referenced by Handle_1 the generator-widening of P_1 with the grid referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Grid_limited_congruence_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the grid P_1 referenced by Handle_1 the congruence-widening of P_1 with the grid referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Grid_limited_generator_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the grid P_1 referenced by Handle_1 the generator-widening of P_1 with the grid referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the grid referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Grid_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the grid P referenced by Handle_1 the concatenation of P and the grid referenced by Handle_2.
These predicates enable the modification of the vector space of the grid referred to in the first argument. These predicates enable the modification of the vector space of the grid referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Grid_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the grid P referenced by Handle and and_embeds P in this space.
ppl_Grid_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the grid P referenced by Handle and and_projects P in this space.
ppl_Grid_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the grid P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Grid_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the grid P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Grid_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the grid referenced by Handle to Dimension_Type new space dimensions.
ppl_Grid_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the grid referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Grid_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of pointset powersets of int8 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Int8_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Int8_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Int8_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Int8_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Int8_Box_from_Pointset_Powerset_Int8_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int8_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int8_Box_from_Pointset_Powerset_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int8_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Int8_Box domain.
ppl_delete_Pointset_Powerset_Int8_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Int8_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Int8_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Int8_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Int8_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Int8_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Int8_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Int8_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_contains_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int8_Box_strictly_contains_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int8_Box_is_disjoint_from_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int8_Box_geometrically_covers_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int8_Box_geometrically_equals_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int8_Box_equals_Pointset_Powerset_Int8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int8_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Int8_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Int8_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int8_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int8_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int8_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int8_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int8_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int8_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int8_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int8_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Int8_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Int8_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Int8_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Int8_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Int8_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Int8_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Int8_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Int8_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Int8_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Int8_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Int8_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Int8_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Int8_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Int8_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int8_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int8_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int8_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int8_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int8_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int8_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int8_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int8_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Int8_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int8_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int8_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int8_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int8_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Int8_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Int8_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Int8_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Int8_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Int8_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int8_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Int8_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Int8_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Int8_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Int8_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Int8_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int8_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int8_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Int8_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Int8_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Int8_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Int8_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Int8_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Int8_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Int8_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of int16 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Int16_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Int16_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Int16_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Int16_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Int16_Box_from_Pointset_Powerset_Int16_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int16_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int16_Box_from_Pointset_Powerset_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int16_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Int16_Box domain.
ppl_delete_Pointset_Powerset_Int16_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Int16_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Int16_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Int16_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Int16_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Int16_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Int16_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Int16_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_contains_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int16_Box_strictly_contains_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int16_Box_is_disjoint_from_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int16_Box_geometrically_covers_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int16_Box_geometrically_equals_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int16_Box_equals_Pointset_Powerset_Int16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int16_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Int16_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Int16_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int16_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int16_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int16_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int16_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int16_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int16_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int16_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int16_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Int16_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Int16_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Int16_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Int16_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Int16_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Int16_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Int16_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Int16_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Int16_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Int16_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Int16_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Int16_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Int16_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Int16_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int16_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int16_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int16_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int16_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int16_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int16_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int16_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int16_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Int16_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int16_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int16_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int16_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int16_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Int16_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Int16_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Int16_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Int16_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Int16_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int16_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Int16_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Int16_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Int16_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Int16_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Int16_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int16_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int16_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Int16_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Int16_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Int16_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Int16_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Int16_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Int16_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Int16_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of int32 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Int32_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Int32_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Int32_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Int32_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Int32_Box_from_Pointset_Powerset_Int32_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int32_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int32_Box_from_Pointset_Powerset_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int32_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Int32_Box domain.
ppl_delete_Pointset_Powerset_Int32_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Int32_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Int32_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Int32_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Int32_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Int32_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Int32_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Int32_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_contains_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int32_Box_strictly_contains_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int32_Box_is_disjoint_from_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int32_Box_geometrically_covers_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int32_Box_geometrically_equals_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int32_Box_equals_Pointset_Powerset_Int32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int32_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Int32_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Int32_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int32_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int32_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int32_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int32_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int32_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int32_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int32_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int32_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Int32_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Int32_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Int32_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Int32_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Int32_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Int32_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Int32_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Int32_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Int32_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Int32_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Int32_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Int32_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Int32_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Int32_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int32_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int32_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int32_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int32_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int32_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int32_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int32_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int32_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Int32_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int32_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int32_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int32_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int32_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Int32_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Int32_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Int32_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Int32_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Int32_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int32_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Int32_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Int32_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Int32_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Int32_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Int32_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int32_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int32_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Int32_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Int32_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Int32_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Int32_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Int32_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Int32_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Int32_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of int64 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Int64_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Int64_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Int64_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Int64_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Int64_Box_from_Pointset_Powerset_Int64_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int64_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int64_Box_from_Pointset_Powerset_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Int64_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Int64_Box domain.
ppl_delete_Pointset_Powerset_Int64_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Int64_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Int64_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Int64_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Int64_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Int64_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Int64_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Int64_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_contains_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int64_Box_strictly_contains_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int64_Box_is_disjoint_from_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int64_Box_geometrically_covers_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int64_Box_geometrically_equals_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Int64_Box_equals_Pointset_Powerset_Int64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int64_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Int64_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Int64_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int64_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int64_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Int64_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int64_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int64_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int64_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Int64_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Int64_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Int64_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Int64_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Int64_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Int64_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Int64_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Int64_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Int64_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Int64_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Int64_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Int64_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Int64_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Int64_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Int64_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Int64_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int64_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int64_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Int64_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int64_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Int64_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int64_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int64_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Int64_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Int64_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int64_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int64_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int64_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Int64_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Int64_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Int64_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Int64_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Int64_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Int64_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Int64_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Int64_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Int64_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Int64_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Int64_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Int64_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int64_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Int64_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Int64_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Int64_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Int64_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Int64_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Int64_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Int64_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Int64_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of uint8 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Uint8_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Uint8_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Uint8_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Uint8_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Uint8_Box_from_Pointset_Powerset_Uint8_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint8_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint8_Box_from_Pointset_Powerset_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint8_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Uint8_Box domain.
ppl_delete_Pointset_Powerset_Uint8_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Uint8_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Uint8_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Uint8_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Uint8_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Uint8_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Uint8_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Uint8_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_contains_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint8_Box_strictly_contains_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint8_Box_is_disjoint_from_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint8_Box_geometrically_covers_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint8_Box_geometrically_equals_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint8_Box_equals_Pointset_Powerset_Uint8_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Uint8_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Uint8_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint8_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint8_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint8_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint8_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint8_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint8_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint8_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint8_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Uint8_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Uint8_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Uint8_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Uint8_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Uint8_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Uint8_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Uint8_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Uint8_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Uint8_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Uint8_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Uint8_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Uint8_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Uint8_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Uint8_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint8_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint8_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint8_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint8_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint8_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint8_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint8_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint8_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Uint8_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Uint8_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Uint8_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Uint8_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Uint8_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Uint8_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint8_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Uint8_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Uint8_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint8_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Uint8_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Uint8_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint8_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint8_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Uint8_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Uint8_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Uint8_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Uint8_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Uint8_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Uint8_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Uint8_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of uint16 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Uint16_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Uint16_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Uint16_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Uint16_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Uint16_Box_from_Pointset_Powerset_Uint16_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint16_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint16_Box_from_Pointset_Powerset_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint16_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Uint16_Box domain.
ppl_delete_Pointset_Powerset_Uint16_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Uint16_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Uint16_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Uint16_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Uint16_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Uint16_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Uint16_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Uint16_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_contains_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint16_Box_strictly_contains_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint16_Box_is_disjoint_from_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint16_Box_geometrically_covers_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint16_Box_geometrically_equals_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint16_Box_equals_Pointset_Powerset_Uint16_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Uint16_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Uint16_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint16_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint16_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint16_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint16_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint16_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint16_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint16_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint16_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Uint16_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Uint16_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Uint16_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Uint16_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Uint16_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Uint16_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Uint16_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Uint16_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Uint16_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Uint16_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Uint16_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Uint16_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Uint16_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Uint16_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint16_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint16_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint16_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint16_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint16_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint16_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint16_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint16_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Uint16_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Uint16_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Uint16_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Uint16_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Uint16_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Uint16_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint16_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Uint16_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Uint16_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint16_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Uint16_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Uint16_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint16_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint16_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Uint16_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Uint16_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Uint16_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Uint16_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Uint16_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Uint16_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Uint16_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of uint32 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Uint32_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Uint32_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Uint32_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Uint32_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Uint32_Box_from_Pointset_Powerset_Uint32_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint32_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint32_Box_from_Pointset_Powerset_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint32_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Uint32_Box domain.
ppl_delete_Pointset_Powerset_Uint32_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Uint32_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Uint32_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Uint32_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Uint32_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Uint32_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Uint32_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Uint32_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_contains_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint32_Box_strictly_contains_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint32_Box_is_disjoint_from_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint32_Box_geometrically_covers_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint32_Box_geometrically_equals_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint32_Box_equals_Pointset_Powerset_Uint32_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Uint32_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Uint32_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint32_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint32_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint32_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint32_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint32_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint32_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint32_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint32_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Uint32_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Uint32_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Uint32_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Uint32_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Uint32_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Uint32_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Uint32_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Uint32_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Uint32_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Uint32_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Uint32_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Uint32_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Uint32_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Uint32_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint32_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint32_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint32_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint32_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint32_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint32_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint32_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint32_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Uint32_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Uint32_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Uint32_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Uint32_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Uint32_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Uint32_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint32_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Uint32_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Uint32_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint32_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Uint32_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Uint32_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint32_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint32_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Uint32_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Uint32_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Uint32_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Uint32_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Uint32_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Uint32_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Uint32_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of uint64 boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Uint64_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Uint64_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Uint64_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Uint64_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Uint64_Box_from_Pointset_Powerset_Uint64_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint64_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint64_Box_from_Pointset_Powerset_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Uint64_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Uint64_Box domain.
ppl_delete_Pointset_Powerset_Uint64_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Uint64_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Uint64_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Uint64_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Uint64_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Uint64_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Uint64_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Uint64_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_contains_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint64_Box_strictly_contains_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint64_Box_is_disjoint_from_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint64_Box_geometrically_covers_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint64_Box_geometrically_equals_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Uint64_Box_equals_Pointset_Powerset_Uint64_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Uint64_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Uint64_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint64_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint64_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Uint64_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint64_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint64_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint64_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Uint64_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Uint64_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Uint64_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Uint64_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Uint64_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Uint64_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Uint64_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Uint64_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Uint64_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Uint64_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Uint64_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Uint64_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Uint64_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Uint64_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Uint64_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Uint64_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint64_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint64_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Uint64_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint64_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Uint64_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint64_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint64_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Uint64_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Uint64_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Uint64_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Uint64_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Uint64_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Uint64_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Uint64_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint64_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Uint64_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Uint64_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Uint64_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Uint64_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Uint64_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint64_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Uint64_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Uint64_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Uint64_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Uint64_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Uint64_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Uint64_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Uint64_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Uint64_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of rational boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Rational_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Rational_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Rational_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Rational_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Rational_Box_from_Pointset_Powerset_Rational_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Rational_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Rational_Box_from_Pointset_Powerset_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Rational_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Rational_Box domain.
ppl_delete_Pointset_Powerset_Rational_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Rational_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Rational_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Rational_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Rational_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Rational_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Rational_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Rational_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_contains_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Rational_Box_strictly_contains_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Rational_Box_is_disjoint_from_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Rational_Box_geometrically_covers_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Rational_Box_geometrically_equals_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Rational_Box_equals_Pointset_Powerset_Rational_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Rational_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Rational_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Rational_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Rational_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Rational_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Rational_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Rational_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Rational_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Rational_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Rational_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Rational_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Rational_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Rational_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Rational_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Rational_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Rational_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Rational_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Rational_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Rational_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Rational_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Rational_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Rational_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Rational_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Rational_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Rational_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Rational_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Rational_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Rational_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Rational_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Rational_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Rational_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Rational_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Rational_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Rational_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Rational_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Rational_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Rational_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Rational_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Rational_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Rational_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Rational_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Rational_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Rational_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Rational_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Rational_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Rational_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Rational_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Rational_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Rational_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Rational_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Rational_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Rational_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Rational_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Rational_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Rational_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Rational_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Rational_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Rational_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of z boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Z_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Z_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Z_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Z_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Z_Box_from_Pointset_Powerset_Z_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Z_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Z_Box_from_Pointset_Powerset_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Z_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Z_Box domain.
ppl_delete_Pointset_Powerset_Z_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Z_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Z_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Z_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Z_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Z_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Z_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Z_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_contains_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Z_Box_strictly_contains_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Z_Box_is_disjoint_from_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Z_Box_geometrically_covers_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Z_Box_geometrically_equals_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Z_Box_equals_Pointset_Powerset_Z_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Z_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Z_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Z_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Z_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Z_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Z_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Z_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Z_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Z_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Z_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Z_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Z_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Z_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Z_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Z_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Z_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Z_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Z_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Z_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Z_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Z_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Z_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Z_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Z_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Z_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Z_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Z_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Z_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Z_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Z_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Z_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Z_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Z_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Z_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Z_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Z_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Z_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Z_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Z_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Z_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Z_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Z_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Z_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Z_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Z_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Z_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Z_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Z_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Z_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Z_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Z_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Z_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Z_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Z_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Z_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Z_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Z_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Z_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_Pointset_Powerset_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_int8_t domain.
ppl_delete_Pointset_Powerset_BD_Shape_int8_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_int8_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_int8_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_contains_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int8_t_strictly_contains_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int8_t_is_disjoint_from_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int8_t_geometrically_covers_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int8_t_geometrically_equals_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int8_t_equals_Pointset_Powerset_BD_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_int8_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_int8_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int8_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int8_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int8_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int8_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int8_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int8_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int8_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_int8_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_int8_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_int8_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_int8_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_int8_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_int8_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_int8_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_int8_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_int8_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_int8_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int8_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int8_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int8_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int8_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int8_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int8_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int8_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int8_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_int8_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_int8_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_int8_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int8_t_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int8_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_int8_t_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_int8_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_int8_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int8_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_int8_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_int8_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int8_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_int8_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_int8_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int8_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int8_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_int8_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_int8_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_int8_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int8_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int8_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_Pointset_Powerset_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_int16_t domain.
ppl_delete_Pointset_Powerset_BD_Shape_int16_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_int16_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_int16_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_contains_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int16_t_strictly_contains_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int16_t_is_disjoint_from_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int16_t_geometrically_covers_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int16_t_geometrically_equals_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int16_t_equals_Pointset_Powerset_BD_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_int16_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_int16_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int16_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int16_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int16_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int16_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int16_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int16_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int16_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_int16_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_int16_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_int16_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_int16_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_int16_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_int16_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_int16_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_int16_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_int16_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_int16_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int16_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int16_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int16_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int16_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int16_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int16_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int16_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int16_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_int16_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_int16_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_int16_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int16_t_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int16_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_int16_t_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_int16_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_int16_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int16_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_int16_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_int16_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int16_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_int16_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_int16_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int16_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int16_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_int16_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_int16_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_int16_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int16_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int16_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_Pointset_Powerset_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_int32_t domain.
ppl_delete_Pointset_Powerset_BD_Shape_int32_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_int32_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_int32_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_contains_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int32_t_strictly_contains_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int32_t_is_disjoint_from_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int32_t_geometrically_covers_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int32_t_geometrically_equals_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int32_t_equals_Pointset_Powerset_BD_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_int32_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_int32_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int32_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int32_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int32_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int32_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int32_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int32_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int32_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_int32_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_int32_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_int32_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_int32_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_int32_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_int32_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_int32_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_int32_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_int32_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_int32_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int32_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int32_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int32_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int32_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int32_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int32_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int32_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int32_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_int32_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_int32_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_int32_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int32_t_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int32_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_int32_t_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_int32_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_int32_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int32_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_int32_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_int32_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int32_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_int32_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_int32_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int32_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int32_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_int32_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_int32_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_int32_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int32_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int32_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_Pointset_Powerset_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_int64_t domain.
ppl_delete_Pointset_Powerset_BD_Shape_int64_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_int64_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_int64_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_contains_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int64_t_strictly_contains_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int64_t_is_disjoint_from_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int64_t_geometrically_covers_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int64_t_geometrically_equals_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_int64_t_equals_Pointset_Powerset_BD_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_int64_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_int64_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int64_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int64_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_int64_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int64_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int64_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int64_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_int64_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_int64_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_int64_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_int64_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_int64_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_int64_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_int64_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_int64_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_int64_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_int64_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_int64_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int64_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int64_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_int64_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int64_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_int64_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int64_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int64_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_int64_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_int64_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_int64_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_int64_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int64_t_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_int64_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_int64_t_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_int64_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_int64_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int64_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_int64_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_int64_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_int64_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_int64_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_int64_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_int64_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int64_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_int64_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_int64_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_int64_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_int64_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_int64_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_Pointset_Powerset_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_mpq_class domain.
ppl_delete_Pointset_Powerset_BD_Shape_mpq_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_mpq_class_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_mpq_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_contains_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpq_class_strictly_contains_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpq_class_is_disjoint_from_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpq_class_geometrically_covers_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpq_class_geometrically_equals_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpq_class_equals_Pointset_Powerset_BD_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_mpq_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_mpq_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpq_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpq_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpq_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpq_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpq_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpq_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpq_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_mpq_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_mpq_class_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_mpq_class_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_mpq_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_mpq_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_mpq_class_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_mpq_class_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_mpq_class_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_mpq_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpq_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpq_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpq_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpq_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_mpq_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_mpq_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpq_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpq_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpq_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_mpq_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_mpq_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_mpq_class_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_mpq_class_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_mpq_class_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_mpq_class_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_mpq_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_mpq_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpq_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_mpq_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_mpq_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpq_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_mpq_class_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_mpq_class_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_mpq_class_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_mpq_class_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_mpq_class_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_mpq_class_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_mpq_class_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpq_class_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_mpq_class_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_Pointset_Powerset_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_mpz_class domain.
ppl_delete_Pointset_Powerset_BD_Shape_mpz_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_mpz_class_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_mpz_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_contains_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpz_class_strictly_contains_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpz_class_is_disjoint_from_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpz_class_geometrically_covers_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpz_class_geometrically_equals_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_mpz_class_equals_Pointset_Powerset_BD_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_mpz_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_mpz_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpz_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpz_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_mpz_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpz_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpz_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpz_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_mpz_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_mpz_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_mpz_class_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_mpz_class_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_mpz_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_mpz_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_mpz_class_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_mpz_class_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_mpz_class_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_mpz_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpz_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpz_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpz_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_mpz_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_mpz_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_mpz_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpz_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpz_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_mpz_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_mpz_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_mpz_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_mpz_class_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_mpz_class_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_mpz_class_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_mpz_class_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_mpz_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_mpz_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpz_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_mpz_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_mpz_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_mpz_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_mpz_class_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_mpz_class_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_mpz_class_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_mpz_class_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_mpz_class_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_mpz_class_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_mpz_class_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_mpz_class_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_mpz_class_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_Pointset_Powerset_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_int8_t domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_contains_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_strictly_contains_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_geometrically_covers_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_geometrically_equals_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_equals_Pointset_Powerset_Octagonal_Shape_int8_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_int8_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int8_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int8_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_Pointset_Powerset_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_int16_t domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_contains_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_strictly_contains_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_geometrically_covers_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_geometrically_equals_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_equals_Pointset_Powerset_Octagonal_Shape_int16_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_int16_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int16_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int16_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_Pointset_Powerset_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_int32_t domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_contains_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_strictly_contains_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_geometrically_covers_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_geometrically_equals_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_equals_Pointset_Powerset_Octagonal_Shape_int32_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_int32_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int32_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int32_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_Pointset_Powerset_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_int64_t domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_contains_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_strictly_contains_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_geometrically_covers_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_geometrically_equals_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_equals_Pointset_Powerset_Octagonal_Shape_int64_t(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_int64_t_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_int64_t_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_int64_t_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_Pointset_Powerset_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_mpq_class domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_contains_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_strictly_contains_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_geometrically_covers_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_geometrically_equals_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_equals_Pointset_Powerset_Octagonal_Shape_mpq_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_mpq_class_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpq_class_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_Pointset_Powerset_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_mpz_class domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_contains_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_strictly_contains_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_geometrically_covers_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_geometrically_equals_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_equals_Pointset_Powerset_Octagonal_Shape_mpz_class(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_mpz_class_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_mpz_class_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of c polyhedra.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_C_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_C_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_c_polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_c_polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_C_Polyhedron domain.
ppl_delete_Pointset_Powerset_C_Polyhedron(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_C_Polyhedron_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_C_Polyhedron_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_C_Polyhedron_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_C_Polyhedron_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_C_Polyhedron_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_C_Polyhedron_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_C_Polyhedron_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_contains_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_C_Polyhedron_strictly_contains_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_C_Polyhedron_is_disjoint_from_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_C_Polyhedron_geometrically_covers_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_C_Polyhedron_geometrically_equals_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_C_Polyhedron_equals_Pointset_Powerset_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_C_Polyhedron_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_C_Polyhedron_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_C_Polyhedron_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_C_Polyhedron_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_C_Polyhedron_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_C_Polyhedron_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_C_Polyhedron_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_C_Polyhedron_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_C_Polyhedron_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_C_Polyhedron_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_C_Polyhedron_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_C_Polyhedron_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_C_Polyhedron_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_C_Polyhedron_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_C_Polyhedron_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_C_Polyhedron_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_C_Polyhedron_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_C_Polyhedron_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_C_Polyhedron_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_C_Polyhedron_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_C_Polyhedron_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_C_Polyhedron_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_C_Polyhedron_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_C_Polyhedron_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_C_Polyhedron_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_C_Polyhedron_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_C_Polyhedron_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_C_Polyhedron_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_C_Polyhedron_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_C_Polyhedron_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_C_Polyhedron_BHZ03_BHRZ03_BHRZ03_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHRZ03-widening certified by the convergence certificate for BHRZ03.
ppl_Pointset_Powerset_C_Polyhedron_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_C_Polyhedron_BGP99_BHRZ03_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHRZ03-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_C_Polyhedron_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_C_Polyhedron_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_C_Polyhedron_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_C_Polyhedron_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_C_Polyhedron_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_C_Polyhedron_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_C_Polyhedron_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_C_Polyhedron_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_C_Polyhedron_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_C_Polyhedron_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_C_Polyhedron_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_C_Polyhedron_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_C_Polyhedron_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_C_Polyhedron_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_C_Polyhedron_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_C_Polyhedron_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of nnc polyhedra.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_nnc_polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_nnc_polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_NNC_Polyhedron domain.
ppl_delete_Pointset_Powerset_NNC_Polyhedron(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_NNC_Polyhedron_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_NNC_Polyhedron_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_NNC_Polyhedron_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_NNC_Polyhedron_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_NNC_Polyhedron_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_NNC_Polyhedron_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_NNC_Polyhedron_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_contains_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_NNC_Polyhedron_strictly_contains_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_NNC_Polyhedron_is_disjoint_from_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_NNC_Polyhedron_geometrically_covers_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_NNC_Polyhedron_geometrically_equals_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_NNC_Polyhedron_equals_Pointset_Powerset_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_NNC_Polyhedron_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_NNC_Polyhedron_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_NNC_Polyhedron_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_NNC_Polyhedron_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_NNC_Polyhedron_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_NNC_Polyhedron_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_NNC_Polyhedron_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_NNC_Polyhedron_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_NNC_Polyhedron_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_NNC_Polyhedron_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_NNC_Polyhedron_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_NNC_Polyhedron_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_NNC_Polyhedron_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_NNC_Polyhedron_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_NNC_Polyhedron_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_NNC_Polyhedron_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_NNC_Polyhedron_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_NNC_Polyhedron_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_NNC_Polyhedron_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_NNC_Polyhedron_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_NNC_Polyhedron_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_NNC_Polyhedron_BHZ03_BHRZ03_BHRZ03_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHRZ03-widening certified by the convergence certificate for BHRZ03.
ppl_Pointset_Powerset_NNC_Polyhedron_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_NNC_Polyhedron_BGP99_BHRZ03_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHRZ03-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_NNC_Polyhedron_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_NNC_Polyhedron_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_NNC_Polyhedron_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_NNC_Polyhedron_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_NNC_Polyhedron_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_NNC_Polyhedron_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_NNC_Polyhedron_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_NNC_Polyhedron_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_NNC_Polyhedron_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_NNC_Polyhedron_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_NNC_Polyhedron_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_NNC_Polyhedron_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_NNC_Polyhedron_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_NNC_Polyhedron_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_NNC_Polyhedron_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of grids.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Grid_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Grid_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Grid_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Grid_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Grid_from_Pointset_Powerset_Grid(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Grid_from_Grid(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Grid_from_Pointset_Powerset_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Grid_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Grid domain.
ppl_delete_Pointset_Powerset_Grid(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Grid_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Grid_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Grid_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Grid_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Grid_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Grid_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Grid_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_contains_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Grid_strictly_contains_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Grid_is_disjoint_from_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Grid_geometrically_covers_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Grid_geometrically_equals_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Grid_equals_Pointset_Powerset_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Grid_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Grid_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Grid_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Grid_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Grid_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Grid_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Grid_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Grid_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Grid_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Grid_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Grid_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Grid_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Grid_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Grid_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Grid_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Grid_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Grid_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Grid_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Grid_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Grid_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Grid_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Grid_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Grid_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Grid_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Grid_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Grid_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Grid_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Grid_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Grid_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Grid_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Grid_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Grid_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Grid_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Grid_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Grid_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Grid_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Grid_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Grid_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Grid_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Grid_BHZ03_Grid_congruence_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the congruence-widening certified by the convergence certificate for Grid.
ppl_Pointset_Powerset_Grid_BHZ03_Grid_generator_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the generator-widening certified by the convergence certificate for Grid.
ppl_Pointset_Powerset_Grid_BGP99_congruence_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the congruence-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_Grid_BGP99_generator_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the generator-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Grid_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Grid_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Grid_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Grid_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Grid_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Grid_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Grid_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Grid_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Grid_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Grid_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Grid_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Grid_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Grid_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Grid_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Grid_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Grid_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Grid_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Grid_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Grid_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of constraints products.
The constructor predicates build a constraints product from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new constraints product
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Constraints_Product_C_Polyhedron_Grid_from_space_dimension(3, universe, X).
creates the constraints product defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_constraints(+Constraint_System, -Handle)
Builds a new constraints product P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_congruences(+Congruence_System, -Handle)
Builds a new constraints product P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Z_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Float_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Constraints_Product_C_Polyhedron_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the constraints_product_c_polyhedron_grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Constraints_Product_C_Polyhedron_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the constraints_product_c_polyhedron_grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Constraints_Product_C_Polyhedron_Grid domain.
ppl_delete_Constraints_Product_C_Polyhedron_Grid(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the constraints product for different properties and succeed or fail depending on the outcome.
ppl_Constraints_Product_C_Polyhedron_Grid_is_empty(+Handle)
Succeeds if and only if the constraints product referenced by Handle is empty.
ppl_Constraints_Product_C_Polyhedron_Grid_is_universe(+Handle)
Succeeds if and only if the constraints product referenced by Handle is the universe.
ppl_Constraints_Product_C_Polyhedron_Grid_is_bounded(+Handle)
Succeeds if and only if the constraints product referenced by Handle is bounded.
ppl_Constraints_Product_C_Polyhedron_Grid_is_topologically_closed(+Handle)
Succeeds if and only if the constraints product referenced by Handle is topologically closed.
ppl_Constraints_Product_C_Polyhedron_Grid_is_discrete(+Handle)
Succeeds if and only if the constraints product referenced by Handle is discrete.
ppl_Constraints_Product_C_Polyhedron_Grid_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the constraints product referenced by Handle.
ppl_Constraints_Product_C_Polyhedron_Grid_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the constraints product referenced by Handle.
ppl_Constraints_Product_C_Polyhedron_Grid_contains_Constraints_Product_C_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in or equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_C_Polyhedron_Grid_strictly_contains_Constraints_Product_C_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in but not equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_C_Polyhedron_Grid_is_disjoint_from_Constraints_Product_C_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is disjoint from the constraints product referenced by Handle_1.
ppl_Constraints_Product_C_Polyhedron_Grid_equals_Constraints_Product_C_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_1 is equal to the constraints product referenced by Handle_2.
ppl_Constraints_Product_C_Polyhedron_Grid_OK(+Handle)
Succeeds only if the constraints product referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Constraints_Product_C_Polyhedron_Grid_constrains(+Handle, +PPL_Var)
Succeeds if and only if the constraints product referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the constraints product unifying some of their arguments with the results.
ppl_Constraints_Product_C_Polyhedron_Grid_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the constraints product referenced by Handle.
ppl_Constraints_Product_C_Polyhedron_Grid_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the constraints product referenced by Handle.
ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_C_Polyhedron_Grid_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_C_Polyhedron_Grid_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_C_Polyhedron_Grid_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_C_Polyhedron_Grid_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_C_Polyhedron_Grid_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the constraints product referenced by Handle.
ppl_Constraints_Product_C_Polyhedron_Grid_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the constraints product referenced by Handle.
This output predicate is useful for debugging.
ppl_Constraints_Product_C_Polyhedron_Grid_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the constraints product referenced by Handle on the standard output.
These predicates may modify the constraints product referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Constraints_Product_C_Polyhedron_Grid_add_constraint(+Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Constraints_Product_C_Polyhedron_Grid_add_congruence(+Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Constraints_Product_C_Polyhedron_Grid_add_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Constraints_Product_C_Polyhedron_Grid_add_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_constraint( +Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_congruence( +Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of constraints product is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Constraints_Product_C_Polyhedron_Grid_topological_closure_assign(+Handle)
Assigns to the constraints product referenced by Handle its topological closure.
ppl_Constraints_Product_C_Polyhedron_Grid_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Constraints_Product_C_Polyhedron_Grid_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_C_Polyhedron_Grid_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_C_Polyhedron_Grid_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_C_Polyhedron_Grid_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_C_Polyhedron_Grid_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the constraints product referred to by the first argument its combination with the constraints product referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Constraints_Product_C_Polyhedron_Grid_intersection_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the intersection of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_C_Polyhedron_Grid_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the upper bound of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_C_Polyhedron_Grid_difference_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the difference of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_C_Polyhedron_Grid_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the time elapse of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_C_Polyhedron_Grid_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the constraints product P_1 referenced by Handle_1 with the constraints product referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the constraints product referred to by the second argument has to be contained in (or equal to) the constraints product referred to by the first argument.
ppl_Constraints_Product_C_Polyhedron_Grid_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate
ppl_Constraints_Product_C_Polyhedron_Grid_widening_assign(+Handle_1, +Handle_2)
Same as predicate
These predicates enable the modification of the vector space of the constraints product referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Constraints_Product_C_Polyhedron_Grid_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the concatenation of P and the constraints product referenced by Handle_2.
These predicates enable the modification of the vector space of the constraints product referred to in the first argument. These predicates enable the modification of the vector space of the constraints product referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Constraints_Product_C_Polyhedron_Grid_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_embeds P in this space.
ppl_Constraints_Product_C_Polyhedron_Grid_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_projects P in this space.
ppl_Constraints_Product_C_Polyhedron_Grid_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the constraints product P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_C_Polyhedron_Grid_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the constraints product P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Constraints_Product_C_Polyhedron_Grid_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the constraints product referenced by Handle to Dimension_Type new space dimensions.
ppl_Constraints_Product_C_Polyhedron_Grid_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the constraints product referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Constraints_Product_C_Polyhedron_Grid_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of constraints products.
The constructor predicates build a constraints product from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new constraints product
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_space_dimension(3, universe, X).
creates the constraints product defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_constraints(+Constraint_System, -Handle)
Builds a new constraints product P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_congruences(+Congruence_System, -Handle)
Builds a new constraints product P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Z_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Float_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Constraints_Product_NNC_Polyhedron_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the constraints_product_nnc_polyhedron_grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_NNC_Polyhedron_Grid_from_Constraints_Product_NNC_Polyhedron_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the constraints_product_nnc_polyhedron_grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Constraints_Product_NNC_Polyhedron_Grid domain.
ppl_delete_Constraints_Product_NNC_Polyhedron_Grid(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the constraints product for different properties and succeed or fail depending on the outcome.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_empty(+Handle)
Succeeds if and only if the constraints product referenced by Handle is empty.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_universe(+Handle)
Succeeds if and only if the constraints product referenced by Handle is the universe.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_bounded(+Handle)
Succeeds if and only if the constraints product referenced by Handle is bounded.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_topologically_closed(+Handle)
Succeeds if and only if the constraints product referenced by Handle is topologically closed.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_discrete(+Handle)
Succeeds if and only if the constraints product referenced by Handle is discrete.
ppl_Constraints_Product_NNC_Polyhedron_Grid_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the constraints product referenced by Handle.
ppl_Constraints_Product_NNC_Polyhedron_Grid_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the constraints product referenced by Handle.
ppl_Constraints_Product_NNC_Polyhedron_Grid_contains_Constraints_Product_NNC_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in or equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_NNC_Polyhedron_Grid_strictly_contains_Constraints_Product_NNC_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in but not equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_NNC_Polyhedron_Grid_is_disjoint_from_Constraints_Product_NNC_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is disjoint from the constraints product referenced by Handle_1.
ppl_Constraints_Product_NNC_Polyhedron_Grid_equals_Constraints_Product_NNC_Polyhedron_Grid(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_1 is equal to the constraints product referenced by Handle_2.
ppl_Constraints_Product_NNC_Polyhedron_Grid_OK(+Handle)
Succeeds only if the constraints product referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Constraints_Product_NNC_Polyhedron_Grid_constrains(+Handle, +PPL_Var)
Succeeds if and only if the constraints product referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the constraints product unifying some of their arguments with the results.
ppl_Constraints_Product_NNC_Polyhedron_Grid_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the constraints product referenced by Handle.
ppl_Constraints_Product_NNC_Polyhedron_Grid_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the constraints product referenced by Handle.
ppl_Constraints_Product_NNC_Polyhedron_Grid_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_NNC_Polyhedron_Grid_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_NNC_Polyhedron_Grid_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_NNC_Polyhedron_Grid_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_NNC_Polyhedron_Grid_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_NNC_Polyhedron_Grid_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_NNC_Polyhedron_Grid_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_NNC_Polyhedron_Grid_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the constraints product referenced by Handle.
ppl_Constraints_Product_NNC_Polyhedron_Grid_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the constraints product referenced by Handle.
This output predicate is useful for debugging.
ppl_Constraints_Product_NNC_Polyhedron_Grid_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the constraints product referenced by Handle on the standard output.
These predicates may modify the constraints product referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_constraint(+Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_congruence(+Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Constraints_Product_NNC_Polyhedron_Grid_refine_with_constraint( +Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Constraints_Product_NNC_Polyhedron_Grid_refine_with_congruence( +Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Constraints_Product_NNC_Polyhedron_Grid_refine_with_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Constraints_Product_NNC_Polyhedron_Grid_refine_with_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of constraints product is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Constraints_Product_NNC_Polyhedron_Grid_topological_closure_assign(+Handle)
Assigns to the constraints product referenced by Handle its topological closure.
ppl_Constraints_Product_NNC_Polyhedron_Grid_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Constraints_Product_NNC_Polyhedron_Grid_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_NNC_Polyhedron_Grid_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_NNC_Polyhedron_Grid_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_NNC_Polyhedron_Grid_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_NNC_Polyhedron_Grid_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_NNC_Polyhedron_Grid_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_NNC_Polyhedron_Grid_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_NNC_Polyhedron_Grid_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_NNC_Polyhedron_Grid_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the constraints product referred to by the first argument its combination with the constraints product referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Constraints_Product_NNC_Polyhedron_Grid_intersection_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the intersection of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_NNC_Polyhedron_Grid_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the upper bound of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_NNC_Polyhedron_Grid_difference_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the difference of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_NNC_Polyhedron_Grid_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the time elapse of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_NNC_Polyhedron_Grid_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the constraints product P_1 referenced by Handle_1 with the constraints product referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the constraints product referred to by the second argument has to be contained in (or equal to) the constraints product referred to by the first argument.
ppl_Constraints_Product_NNC_Polyhedron_Grid_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate
ppl_Constraints_Product_NNC_Polyhedron_Grid_widening_assign(+Handle_1, +Handle_2)
Same as predicate
These predicates enable the modification of the vector space of the constraints product referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Constraints_Product_NNC_Polyhedron_Grid_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the concatenation of P and the constraints product referenced by Handle_2.
These predicates enable the modification of the vector space of the constraints product referred to in the first argument. These predicates enable the modification of the vector space of the constraints product referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_embeds P in this space.
ppl_Constraints_Product_NNC_Polyhedron_Grid_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_projects P in this space.
ppl_Constraints_Product_NNC_Polyhedron_Grid_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the constraints product P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_NNC_Polyhedron_Grid_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the constraints product P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Constraints_Product_NNC_Polyhedron_Grid_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the constraints product referenced by Handle to Dimension_Type new space dimensions.
ppl_Constraints_Product_NNC_Polyhedron_Grid_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the constraints product referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Constraints_Product_NNC_Polyhedron_Grid_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of constraints products.
The constructor predicates build a constraints product from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new constraints product
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Constraints_Product_Grid_C_Polyhedron_from_space_dimension(3, universe, X).
creates the constraints product defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new constraints product P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new constraints product P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Z_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Float_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Constraints_Product_Grid_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the constraints_product_grid_c_polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_C_Polyhedron_from_Constraints_Product_Grid_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the constraints_product_grid_c_polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Constraints_Product_Grid_C_Polyhedron domain.
ppl_delete_Constraints_Product_Grid_C_Polyhedron(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the constraints product for different properties and succeed or fail depending on the outcome.
ppl_Constraints_Product_Grid_C_Polyhedron_is_empty(+Handle)
Succeeds if and only if the constraints product referenced by Handle is empty.
ppl_Constraints_Product_Grid_C_Polyhedron_is_universe(+Handle)
Succeeds if and only if the constraints product referenced by Handle is the universe.
ppl_Constraints_Product_Grid_C_Polyhedron_is_bounded(+Handle)
Succeeds if and only if the constraints product referenced by Handle is bounded.
ppl_Constraints_Product_Grid_C_Polyhedron_is_topologically_closed(+Handle)
Succeeds if and only if the constraints product referenced by Handle is topologically closed.
ppl_Constraints_Product_Grid_C_Polyhedron_is_discrete(+Handle)
Succeeds if and only if the constraints product referenced by Handle is discrete.
ppl_Constraints_Product_Grid_C_Polyhedron_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_C_Polyhedron_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_C_Polyhedron_contains_Constraints_Product_Grid_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in or equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_C_Polyhedron_strictly_contains_Constraints_Product_Grid_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in but not equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_C_Polyhedron_is_disjoint_from_Constraints_Product_Grid_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is disjoint from the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_C_Polyhedron_equals_Constraints_Product_Grid_C_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_1 is equal to the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_C_Polyhedron_OK(+Handle)
Succeeds only if the constraints product referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Constraints_Product_Grid_C_Polyhedron_constrains(+Handle, +PPL_Var)
Succeeds if and only if the constraints product referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the constraints product unifying some of their arguments with the results.
ppl_Constraints_Product_Grid_C_Polyhedron_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_C_Polyhedron_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_C_Polyhedron_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_C_Polyhedron_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_C_Polyhedron_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_C_Polyhedron_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_C_Polyhedron_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_C_Polyhedron_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_C_Polyhedron_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_C_Polyhedron_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_C_Polyhedron_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the constraints product referenced by Handle.
This output predicate is useful for debugging.
ppl_Constraints_Product_Grid_C_Polyhedron_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the constraints product referenced by Handle on the standard output.
These predicates may modify the constraints product referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Constraints_Product_Grid_C_Polyhedron_add_constraint(+Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Constraints_Product_Grid_C_Polyhedron_add_congruence(+Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Constraints_Product_Grid_C_Polyhedron_add_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Constraints_Product_Grid_C_Polyhedron_add_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Constraints_Product_Grid_C_Polyhedron_refine_with_constraint( +Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Constraints_Product_Grid_C_Polyhedron_refine_with_congruence( +Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Constraints_Product_Grid_C_Polyhedron_refine_with_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Constraints_Product_Grid_C_Polyhedron_refine_with_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of constraints product is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Constraints_Product_Grid_C_Polyhedron_topological_closure_assign(+Handle)
Assigns to the constraints product referenced by Handle its topological closure.
ppl_Constraints_Product_Grid_C_Polyhedron_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Constraints_Product_Grid_C_Polyhedron_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_Grid_C_Polyhedron_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_Grid_C_Polyhedron_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_Grid_C_Polyhedron_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_Grid_C_Polyhedron_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_Grid_C_Polyhedron_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_C_Polyhedron_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_C_Polyhedron_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_C_Polyhedron_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the constraints product referred to by the first argument its combination with the constraints product referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Constraints_Product_Grid_C_Polyhedron_intersection_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the intersection of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_C_Polyhedron_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the upper bound of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_C_Polyhedron_difference_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the difference of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_C_Polyhedron_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the time elapse of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_C_Polyhedron_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the constraints product P_1 referenced by Handle_1 with the constraints product referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the constraints product referred to by the second argument has to be contained in (or equal to) the constraints product referred to by the first argument.
ppl_Constraints_Product_Grid_C_Polyhedron_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate
ppl_Constraints_Product_Grid_C_Polyhedron_widening_assign(+Handle_1, +Handle_2)
Same as predicate
These predicates enable the modification of the vector space of the constraints product referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Constraints_Product_Grid_C_Polyhedron_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the concatenation of P and the constraints product referenced by Handle_2.
These predicates enable the modification of the vector space of the constraints product referred to in the first argument. These predicates enable the modification of the vector space of the constraints product referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Constraints_Product_Grid_C_Polyhedron_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_embeds P in this space.
ppl_Constraints_Product_Grid_C_Polyhedron_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_projects P in this space.
ppl_Constraints_Product_Grid_C_Polyhedron_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the constraints product P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_Grid_C_Polyhedron_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the constraints product P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Constraints_Product_Grid_C_Polyhedron_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the constraints product referenced by Handle to Dimension_Type new space dimensions.
ppl_Constraints_Product_Grid_C_Polyhedron_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the constraints product referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Constraints_Product_Grid_C_Polyhedron_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of constraints products.
The constructor predicates build a constraints product from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new constraints product
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_space_dimension(3, universe, X).
creates the constraints product defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_constraints(+Constraint_System, -Handle)
Builds a new constraints product P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_congruences(+Congruence_System, -Handle)
Builds a new constraints product P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Z_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Grid(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Float_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Constraints_Product_Grid_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new constraints product P_1 from the constraints_product_grid_nnc_polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Constraints_Product_Grid_NNC_Polyhedron_from_Constraints_Product_Grid_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new constraints product P_1 from the constraints_product_grid_nnc_polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Constraints_Product_Grid_NNC_Polyhedron domain.
ppl_delete_Constraints_Product_Grid_NNC_Polyhedron(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the constraints product for different properties and succeed or fail depending on the outcome.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_empty(+Handle)
Succeeds if and only if the constraints product referenced by Handle is empty.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_universe(+Handle)
Succeeds if and only if the constraints product referenced by Handle is the universe.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_bounded(+Handle)
Succeeds if and only if the constraints product referenced by Handle is bounded.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_topologically_closed(+Handle)
Succeeds if and only if the constraints product referenced by Handle is topologically closed.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_discrete(+Handle)
Succeeds if and only if the constraints product referenced by Handle is discrete.
ppl_Constraints_Product_Grid_NNC_Polyhedron_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_NNC_Polyhedron_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_NNC_Polyhedron_contains_Constraints_Product_Grid_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in or equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_NNC_Polyhedron_strictly_contains_Constraints_Product_Grid_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is included in but not equal to the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_NNC_Polyhedron_is_disjoint_from_Constraints_Product_Grid_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_2 is disjoint from the constraints product referenced by Handle_1.
ppl_Constraints_Product_Grid_NNC_Polyhedron_equals_Constraints_Product_Grid_NNC_Polyhedron(+Handle_1, +Handle_2)
Succeeds if and only if the constraints product referenced by Handle_1 is equal to the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_NNC_Polyhedron_OK(+Handle)
Succeeds only if the constraints product referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Constraints_Product_Grid_NNC_Polyhedron_constrains(+Handle, +PPL_Var)
Succeeds if and only if the constraints product referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the constraints product unifying some of their arguments with the results.
ppl_Constraints_Product_Grid_NNC_Polyhedron_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_NNC_Polyhedron_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_NNC_Polyhedron_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_NNC_Polyhedron_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_NNC_Polyhedron_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the constraints product referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Constraints_Product_Grid_NNC_Polyhedron_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_NNC_Polyhedron_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_NNC_Polyhedron_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_NNC_Polyhedron_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if constraints product P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Constraints_Product_Grid_NNC_Polyhedron_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the constraints product referenced by Handle.
ppl_Constraints_Product_Grid_NNC_Polyhedron_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the constraints product referenced by Handle.
This output predicate is useful for debugging.
ppl_Constraints_Product_Grid_NNC_Polyhedron_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the constraints product referenced by Handle on the standard output.
These predicates may modify the constraints product referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_constraint(+Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_congruence(+Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Constraints_Product_Grid_NNC_Polyhedron_refine_with_constraint( +Handle, +Constraint)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Constraints_Product_Grid_NNC_Polyhedron_refine_with_congruence( +Handle, +Congruence)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Constraints_Product_Grid_NNC_Polyhedron_refine_with_constraints( +Handle, +Constraint_System)
Updates the constraints product referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Constraints_Product_Grid_NNC_Polyhedron_refine_with_congruences( +Handle, +Congruence_System)
Updates the constraints product referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of constraints product is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Constraints_Product_Grid_NNC_Polyhedron_topological_closure_assign(+Handle)
Assigns to the constraints product referenced by Handle its topological closure.
ppl_Constraints_Product_Grid_NNC_Polyhedron_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Constraints_Product_Grid_NNC_Polyhedron_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the constraints product P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_Grid_NNC_Polyhedron_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_Grid_NNC_Polyhedron_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the constraints product referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Constraints_Product_Grid_NNC_Polyhedron_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_Grid_NNC_Polyhedron_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Constraints_Product_Grid_NNC_Polyhedron_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_NNC_Polyhedron_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_NNC_Polyhedron_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Constraints_Product_Grid_NNC_Polyhedron_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to constraints product P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the constraints product referred to by the first argument its combination with the constraints product referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Constraints_Product_Grid_NNC_Polyhedron_intersection_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the intersection of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_NNC_Polyhedron_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the upper bound of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_NNC_Polyhedron_difference_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the difference of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_NNC_Polyhedron_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the time elapse of P and the constraints product referenced by Handle_2.
ppl_Constraints_Product_Grid_NNC_Polyhedron_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the constraints product P_1 referenced by Handle_1 with the constraints product referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the constraints product referred to by the second argument has to be contained in (or equal to) the constraints product referred to by the first argument.
ppl_Constraints_Product_Grid_NNC_Polyhedron_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate
ppl_Constraints_Product_Grid_NNC_Polyhedron_widening_assign(+Handle_1, +Handle_2)
Same as predicate
These predicates enable the modification of the vector space of the constraints product referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Constraints_Product_Grid_NNC_Polyhedron_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the constraints product P referenced by Handle_1 the concatenation of P and the constraints product referenced by Handle_2.
These predicates enable the modification of the vector space of the constraints product referred to in the first argument. These predicates enable the modification of the vector space of the constraints product referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_embeds P in this space.
ppl_Constraints_Product_Grid_NNC_Polyhedron_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the constraints product P referenced by Handle and and_projects P in this space.
ppl_Constraints_Product_Grid_NNC_Polyhedron_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the constraints product P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Constraints_Product_Grid_NNC_Polyhedron_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the constraints product P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Constraints_Product_Grid_NNC_Polyhedron_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the constraints product referenced by Handle to Dimension_Type new space dimensions.
ppl_Constraints_Product_Grid_NNC_Polyhedron_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the constraints product referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Constraints_Product_Grid_NNC_Polyhedron_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of float boxes.
The constructor predicates build a float box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Float_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new float box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Float_Box_from_space_dimension(3, universe, X).
creates the float box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Float_Box_from_constraints(+Constraint_System, -Handle)
Builds a new float box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Float_Box_from_congruences(+Congruence_System, -Handle)
Builds a new float box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Float_Box_from_generators(+Generator_System, -Handle)
Builds a new float box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Float_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new float box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new float box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new float box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new float box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new float box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new float box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Float_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new float box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Float_Box domain.
ppl_delete_Float_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the float box for different properties and succeed or fail depending on the outcome.
ppl_Float_Box_is_empty(+Handle)
Succeeds if and only if the float box referenced by Handle is empty.
ppl_Float_Box_is_universe(+Handle)
Succeeds if and only if the float box referenced by Handle is the universe.
ppl_Float_Box_is_bounded(+Handle)
Succeeds if and only if the float box referenced by Handle is bounded.
ppl_Float_Box_contains_integer_point(+Handle)
Succeeds if and only if the float box referenced by Handle contains an integer point.
ppl_Float_Box_is_topologically_closed(+Handle)
Succeeds if and only if the float box referenced by Handle is topologically closed.
ppl_Float_Box_is_discrete(+Handle)
Succeeds if and only if the float box referenced by Handle is discrete.
ppl_Float_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the float box referenced by Handle.
ppl_Float_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the float box referenced by Handle.
ppl_Float_Box_contains_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the float box referenced by Handle_2 is included in or equal to the float box referenced by Handle_1.
ppl_Float_Box_strictly_contains_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the float box referenced by Handle_2 is included in but not equal to the float box referenced by Handle_1.
ppl_Float_Box_is_disjoint_from_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the float box referenced by Handle_2 is disjoint from the float box referenced by Handle_1.
ppl_Float_Box_equals_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the float box referenced by Handle_1 is equal to the float box referenced by Handle_2.
ppl_Float_Box_OK(+Handle)
Succeeds only if the float box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Float_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the float box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the float box unifying some of their arguments with the results.
ppl_Float_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the float box referenced by Handle.
ppl_Float_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the float box referenced by Handle.
ppl_Float_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the float box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Float_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the float box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Float_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the float box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Float_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the float box referenced by Handle.
ppl_Float_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the float box referenced by Handle.
ppl_Float_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the float box referenced by Handle.
ppl_Float_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the float box referenced by Handle.
ppl_Float_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if float box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Float_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if float box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Float_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if float box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Float_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if float box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Float_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the float box referenced by Handle.
ppl_Float_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the float box referenced by Handle.
This output predicate is useful for debugging.
ppl_Float_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the float box referenced by Handle on the standard output.
These predicates may modify the float box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Float_Box_add_constraint(+Handle, +Constraint)
Updates the float box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Float_Box_add_congruence(+Handle, +Congruence)
Updates the float box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Float_Box_add_constraints( +Handle, +Constraint_System)
Updates the float box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Float_Box_add_congruences( +Handle, +Congruence_System)
Updates the float box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Float_Box_refine_with_constraint( +Handle, +Constraint)
Updates the float box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Float_Box_refine_with_congruence( +Handle, +Congruence)
Updates the float box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Float_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the float box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Float_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the float box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of float box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Float_Box_topological_closure_assign(+Handle)
Assigns to the float box referenced by Handle its topological closure.
ppl_Float_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the float box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Float_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the float box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Float_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the float box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Float_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the float box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Float_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to float box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Float_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to float box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Float_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to float box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Float_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to float box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Float_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to float box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Float_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to float box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Float_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the float box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the float box referred to by the first argument its combination with the float box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Float_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the float box P referenced by Handle_1 the intersection of P and the float box referenced by Handle_2.
ppl_Float_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the float box P referenced by Handle_1 the upper bound of P and the float box referenced by Handle_2.
ppl_Float_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the float box P referenced by Handle_1 the difference of P and the float box referenced by Handle_2.
ppl_Float_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the float box P referenced by Handle_1 the time elapse of P and the float box referenced by Handle_2.
ppl_Float_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the float box P_1 referenced by Handle_1 with the float box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Float_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of float box P_1 referenced by Handle_1 and the float box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Float_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Float_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the float box referred to by the second argument has to be contained in (or equal to) the float box referred to by the first argument.
ppl_Float_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the float box P_1 referenced by Handle_1 the CC76-widening of P_1 with the float box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Float_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the float box P_1 referenced by Handle_1 the CC76-widening of P_1 with the float box referenced by Handle_2.
ppl_Float_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Float_Box_CC76_widening_assign_with_tokens/4
ppl_Float_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Float_Box_CC76_widening_assign/2
ppl_Float_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the float box P_1 referenced by Handle_1 the CC76-widening of P_1 with the float box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Float_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the float box P_1 referenced by Handle_1 the CC76-widening of P_1 with the float box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the float box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Float_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the float box P referenced by Handle_1 the concatenation of P and the float box referenced by Handle_2.
These predicates enable the modification of the vector space of the float box referred to in the first argument. These predicates enable the modification of the vector space of the float box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Float_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the float box P referenced by Handle and and_embeds P in this space.
ppl_Float_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the float box P referenced by Handle and and_projects P in this space.
ppl_Float_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the float box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Float_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the float box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Float_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the float box referenced by Handle to Dimension_Type new space dimensions.
ppl_Float_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the float box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Float_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_float_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_float_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_float_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_float_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_float_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_float_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_float_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_float domain.
ppl_delete_BD_Shape_float(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_float_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_float_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_float_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_float_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_float_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_float_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_float_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_float_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_float_contains_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_float_strictly_contains_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_float_is_disjoint_from_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_float_equals_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_float_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_float_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_float_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_float_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_float_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_float_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_float_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_float_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_float_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_float_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_float_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_float_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_float_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_float_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_float_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_float_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_float_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_float_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_float_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_float_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_float_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_float_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_float_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_float_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_float_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_float_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_float_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_float_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_float_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_float_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_float_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_float_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_float_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_float_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_float_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_float_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_float_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_float_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_float_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_float_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_float_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_float_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_float_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_float_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_float_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_float domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_float_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_float_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_float_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_float_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_float_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_float_H79_widening_assign_with_tokens/4
ppl_BD_Shape_float_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_float_H79_widening_assign/2
ppl_BD_Shape_float_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_float_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_float_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_float_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_float_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_float_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_float_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_float_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_float_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_float_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_float_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_float_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_float_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_float_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_float_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_float_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_float_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_float_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_float_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_float_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_float_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_float_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_float domain.
ppl_delete_Octagonal_Shape_float(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_float_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_float_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_float_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_float_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_float_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_float_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_float_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_contains_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_float_strictly_contains_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_float_is_disjoint_from_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_float_equals_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_float_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_float_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_float_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_float_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_float_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_float_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_float_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_float_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_float_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_float_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_float_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_float_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_float_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_float_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_float_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_float_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_float_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_float_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_float_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_float_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_float_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_float_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_float_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_float_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_float_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_float_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_float_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_float_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_float_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_float_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_float_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_float_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_float_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_float_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_float domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_float_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_float_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_float_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_float_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_float_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_float_H79_widening_assign/2
ppl_Octagonal_Shape_float_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_float_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_float_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_float_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_float_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_float_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_float_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_float_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_float_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_float_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_float_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_float_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_float_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of pointset powersets of float boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Float_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Float_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Float_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Float_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Float_Box_from_Pointset_Powerset_Float_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Float_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Float_Box_from_Pointset_Powerset_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Float_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Float_Box domain.
ppl_delete_Pointset_Powerset_Float_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Float_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Float_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Float_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Float_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Float_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Float_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Float_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_contains_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Float_Box_strictly_contains_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Float_Box_is_disjoint_from_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Float_Box_geometrically_covers_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Float_Box_geometrically_equals_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Float_Box_equals_Pointset_Powerset_Float_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Float_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Float_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Float_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Float_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Float_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Float_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Float_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Float_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Float_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Float_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Float_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Float_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Float_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Float_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Float_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Float_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Float_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Float_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Float_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Float_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Float_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Float_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Float_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Float_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Float_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Float_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Float_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Float_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Float_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Float_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Float_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Float_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Float_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Float_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Float_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Float_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Float_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Float_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Float_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Float_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Float_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Float_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Float_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Float_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Float_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Float_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Float_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Float_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Float_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Float_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Float_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Float_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Float_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Float_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Float_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Float_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Float_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Float_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_float_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_float_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_float_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_float_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_float_from_Pointset_Powerset_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_float_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_float_from_Pointset_Powerset_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_float_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_float domain.
ppl_delete_Pointset_Powerset_BD_Shape_float(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_float_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_float_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_float_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_float_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_float_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_float_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_float_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_contains_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_float_strictly_contains_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_float_is_disjoint_from_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_float_geometrically_covers_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_float_geometrically_equals_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_float_equals_Pointset_Powerset_BD_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_float_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_float_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_float_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_float_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_float_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_float_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_float_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_float_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_float_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_float_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_float_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_float_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_float_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_float_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_float_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_float_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_float_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_float_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_float_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_float_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_float_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_float_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_float_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_float_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_float_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_float_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_float_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_float_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_float_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_float_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_float_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_float_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_float_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_float_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_float_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_float_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_float_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_float_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_float_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_float_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_float_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_float_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_float_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_float_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_float_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_float_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_float_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_float_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_float_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_float_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_float_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_float_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_float_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_float_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_float_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_float_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_float_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_Pointset_Powerset_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_float domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_float(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_float_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_float_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_contains_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_float_strictly_contains_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_float_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_float_geometrically_covers_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_float_geometrically_equals_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_float_equals_Pointset_Powerset_Octagonal_Shape_float(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_float_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_float_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_float_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_float_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_float_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_float_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_float_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_float_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_float_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_float_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_float_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_float_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_float_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_float_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_float_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_float_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_float_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_float_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_float_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_float_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_float_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_float_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_float_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_float_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_float_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_float_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_float_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_float_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_float_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_float_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_float_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_float_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_float_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_float_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_float_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_float_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_float_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_float_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_float_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_float_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_float_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_float_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_float_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_float_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_float_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_float_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of double boxes.
The constructor predicates build a double box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Double_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new double box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Double_Box_from_space_dimension(3, universe, X).
creates the double box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Double_Box_from_constraints(+Constraint_System, -Handle)
Builds a new double box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Double_Box_from_congruences(+Congruence_System, -Handle)
Builds a new double box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Double_Box_from_generators(+Generator_System, -Handle)
Builds a new double box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Double_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new double box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new double box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new double box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new double box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new double box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new double box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Double_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new double box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Double_Box domain.
ppl_delete_Double_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the double box for different properties and succeed or fail depending on the outcome.
ppl_Double_Box_is_empty(+Handle)
Succeeds if and only if the double box referenced by Handle is empty.
ppl_Double_Box_is_universe(+Handle)
Succeeds if and only if the double box referenced by Handle is the universe.
ppl_Double_Box_is_bounded(+Handle)
Succeeds if and only if the double box referenced by Handle is bounded.
ppl_Double_Box_contains_integer_point(+Handle)
Succeeds if and only if the double box referenced by Handle contains an integer point.
ppl_Double_Box_is_topologically_closed(+Handle)
Succeeds if and only if the double box referenced by Handle is topologically closed.
ppl_Double_Box_is_discrete(+Handle)
Succeeds if and only if the double box referenced by Handle is discrete.
ppl_Double_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the double box referenced by Handle.
ppl_Double_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the double box referenced by Handle.
ppl_Double_Box_contains_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the double box referenced by Handle_2 is included in or equal to the double box referenced by Handle_1.
ppl_Double_Box_strictly_contains_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the double box referenced by Handle_2 is included in but not equal to the double box referenced by Handle_1.
ppl_Double_Box_is_disjoint_from_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the double box referenced by Handle_2 is disjoint from the double box referenced by Handle_1.
ppl_Double_Box_equals_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the double box referenced by Handle_1 is equal to the double box referenced by Handle_2.
ppl_Double_Box_OK(+Handle)
Succeeds only if the double box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Double_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the double box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the double box unifying some of their arguments with the results.
ppl_Double_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the double box referenced by Handle.
ppl_Double_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the double box referenced by Handle.
ppl_Double_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the double box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Double_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the double box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Double_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the double box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Double_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the double box referenced by Handle.
ppl_Double_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the double box referenced by Handle.
ppl_Double_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the double box referenced by Handle.
ppl_Double_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the double box referenced by Handle.
ppl_Double_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if double box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Double_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if double box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Double_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if double box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Double_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if double box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Double_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the double box referenced by Handle.
ppl_Double_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the double box referenced by Handle.
This output predicate is useful for debugging.
ppl_Double_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the double box referenced by Handle on the standard output.
These predicates may modify the double box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Double_Box_add_constraint(+Handle, +Constraint)
Updates the double box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Double_Box_add_congruence(+Handle, +Congruence)
Updates the double box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Double_Box_add_constraints( +Handle, +Constraint_System)
Updates the double box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Double_Box_add_congruences( +Handle, +Congruence_System)
Updates the double box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Double_Box_refine_with_constraint( +Handle, +Constraint)
Updates the double box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Double_Box_refine_with_congruence( +Handle, +Congruence)
Updates the double box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Double_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the double box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Double_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the double box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of double box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Double_Box_topological_closure_assign(+Handle)
Assigns to the double box referenced by Handle its topological closure.
ppl_Double_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the double box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Double_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the double box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Double_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the double box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Double_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the double box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Double_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Double_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Double_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Double_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Double_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Double_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Double_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the double box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the double box referred to by the first argument its combination with the double box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Double_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the double box P referenced by Handle_1 the intersection of P and the double box referenced by Handle_2.
ppl_Double_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the double box P referenced by Handle_1 the upper bound of P and the double box referenced by Handle_2.
ppl_Double_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the double box P referenced by Handle_1 the difference of P and the double box referenced by Handle_2.
ppl_Double_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the double box P referenced by Handle_1 the time elapse of P and the double box referenced by Handle_2.
ppl_Double_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the double box P_1 referenced by Handle_1 with the double box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Double_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of double box P_1 referenced by Handle_1 and the double box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Double_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Double_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the double box referred to by the second argument has to be contained in (or equal to) the double box referred to by the first argument.
ppl_Double_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the double box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Double_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the double box referenced by Handle_2.
ppl_Double_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Double_Box_CC76_widening_assign_with_tokens/4
ppl_Double_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Double_Box_CC76_widening_assign/2
ppl_Double_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the double box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Double_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the double box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the double box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Double_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the double box P referenced by Handle_1 the concatenation of P and the double box referenced by Handle_2.
These predicates enable the modification of the vector space of the double box referred to in the first argument. These predicates enable the modification of the vector space of the double box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Double_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the double box P referenced by Handle and and_embeds P in this space.
ppl_Double_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the double box P referenced by Handle and and_projects P in this space.
ppl_Double_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the double box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Double_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the double box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Double_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the double box referenced by Handle to Dimension_Type new space dimensions.
ppl_Double_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the double box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Double_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_double_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_double_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_double_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_double_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_double_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_double_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_double domain.
ppl_delete_BD_Shape_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_double_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_double_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_double_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_double_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_double_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_double_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_double_contains_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_double_strictly_contains_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_double_is_disjoint_from_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_double_equals_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_double_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_double_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_double_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_double_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_double_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_double_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_double_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_double_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_double_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_double_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_double_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_double_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_double_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_double_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_double domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_double_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_double_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_double_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_double_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_double_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_double_H79_widening_assign_with_tokens/4
ppl_BD_Shape_double_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_double_H79_widening_assign/2
ppl_BD_Shape_double_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_double_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_double_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_double_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_double_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_double_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_double_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_double_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_double_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_double_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_double_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_double_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_double domain.
ppl_delete_Octagonal_Shape_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_double_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_double_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_double_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_double_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_double_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_double_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_contains_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_double_strictly_contains_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_double_is_disjoint_from_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_double_equals_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_double_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_double_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_double_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_double_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_double_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_double_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_double_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_double_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_double_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_double_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_double domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_double_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_double_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_double_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_double_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_double_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_double_H79_widening_assign/2
ppl_Octagonal_Shape_double_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_double_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_double_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_double_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_double_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of pointset powersets of double boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Double_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Double_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Double_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Double_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Double_Box_from_Pointset_Powerset_Double_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Double_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Double_Box_from_Pointset_Powerset_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Double_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Double_Box domain.
ppl_delete_Pointset_Powerset_Double_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Double_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Double_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Double_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Double_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Double_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Double_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Double_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_contains_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Double_Box_strictly_contains_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Double_Box_is_disjoint_from_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Double_Box_geometrically_covers_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Double_Box_geometrically_equals_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Double_Box_equals_Pointset_Powerset_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Double_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Double_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Double_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Double_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Double_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Double_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Double_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Double_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Double_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Double_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Double_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Double_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Double_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Double_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Double_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Double_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Double_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Double_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Double_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Double_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Double_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Double_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Double_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Double_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Double_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Double_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Double_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Double_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Double_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Double_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Double_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Double_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Double_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Double_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Double_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Double_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Double_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Double_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Double_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Double_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Double_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Double_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Double_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Double_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Double_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Double_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Double_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Double_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Double_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Double_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Double_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Double_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Double_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Double_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Double_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Double_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Double_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Double_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_double_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_double_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_double_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_double_from_Pointset_Powerset_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_double_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_double_from_Pointset_Powerset_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_double_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_double domain.
ppl_delete_Pointset_Powerset_BD_Shape_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_double_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_double_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_double_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_double_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_double_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_double_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_contains_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_double_strictly_contains_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_double_is_disjoint_from_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_double_geometrically_covers_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_double_geometrically_equals_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_double_equals_Pointset_Powerset_BD_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_double_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_double_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_double_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_double_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_double_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_double_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_double_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_double_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_double_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_double_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_double_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_double_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_double_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_double_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_double_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_double_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_double_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_double_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_double_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_double_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_double_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_double_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_double_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_double_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_double_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_Pointset_Powerset_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_double domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_double_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_contains_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_double_strictly_contains_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_double_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_double_geometrically_covers_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_double_geometrically_equals_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_double_equals_Pointset_Powerset_Octagonal_Shape_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_double_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_double_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_double_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_double_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_double_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_double_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_double_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_double_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_double_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_double_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_double_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_double_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_double_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_double_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_double_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_double_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of long double boxes.
The constructor predicates build a long double box from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Long_Double_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new long double box
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Long_Double_Box_from_space_dimension(3, universe, X).
creates the long double box defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Long_Double_Box_from_constraints(+Constraint_System, -Handle)
Builds a new long double box P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Long_Double_Box_from_congruences(+Congruence_System, -Handle)
Builds a new long double box P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Long_Double_Box_from_generators(+Generator_System, -Handle)
Builds a new long double box P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Long_Double_Box_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Z_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Grid(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Float_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Double_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new long double box P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Long_Double_Box_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new long double box P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Long_Double_Box domain.
ppl_delete_Long_Double_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the long double box for different properties and succeed or fail depending on the outcome.
ppl_Long_Double_Box_is_empty(+Handle)
Succeeds if and only if the long double box referenced by Handle is empty.
ppl_Long_Double_Box_is_universe(+Handle)
Succeeds if and only if the long double box referenced by Handle is the universe.
ppl_Long_Double_Box_is_bounded(+Handle)
Succeeds if and only if the long double box referenced by Handle is bounded.
ppl_Long_Double_Box_contains_integer_point(+Handle)
Succeeds if and only if the long double box referenced by Handle contains an integer point.
ppl_Long_Double_Box_is_topologically_closed(+Handle)
Succeeds if and only if the long double box referenced by Handle is topologically closed.
ppl_Long_Double_Box_is_discrete(+Handle)
Succeeds if and only if the long double box referenced by Handle is discrete.
ppl_Long_Double_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the long double box referenced by Handle.
ppl_Long_Double_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the long double box referenced by Handle.
ppl_Long_Double_Box_contains_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the long double box referenced by Handle_2 is included in or equal to the long double box referenced by Handle_1.
ppl_Long_Double_Box_strictly_contains_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the long double box referenced by Handle_2 is included in but not equal to the long double box referenced by Handle_1.
ppl_Long_Double_Box_is_disjoint_from_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the long double box referenced by Handle_2 is disjoint from the long double box referenced by Handle_1.
ppl_Long_Double_Box_equals_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the long double box referenced by Handle_1 is equal to the long double box referenced by Handle_2.
ppl_Long_Double_Box_OK(+Handle)
Succeeds only if the long double box referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Long_Double_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the long double box referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the long double box unifying some of their arguments with the results.
ppl_Long_Double_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the long double box referenced by Handle.
ppl_Long_Double_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the long double box referenced by Handle.
ppl_Long_Double_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the long double box referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Long_Double_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the long double box referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Long_Double_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the long double box referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Long_Double_Box_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the long double box referenced by Handle.
ppl_Long_Double_Box_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the long double box referenced by Handle.
ppl_Long_Double_Box_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the long double box referenced by Handle.
ppl_Long_Double_Box_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the long double box referenced by Handle.
ppl_Long_Double_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if long double box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Long_Double_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if long double box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Long_Double_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if long double box P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Long_Double_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if long double box P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Long_Double_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the long double box referenced by Handle.
ppl_Long_Double_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the long double box referenced by Handle.
This output predicate is useful for debugging.
ppl_Long_Double_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the long double box referenced by Handle on the standard output.
These predicates may modify the long double box referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Long_Double_Box_add_constraint(+Handle, +Constraint)
Updates the long double box referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Long_Double_Box_add_congruence(+Handle, +Congruence)
Updates the long double box referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Long_Double_Box_add_constraints( +Handle, +Constraint_System)
Updates the long double box referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Long_Double_Box_add_congruences( +Handle, +Congruence_System)
Updates the long double box referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Long_Double_Box_refine_with_constraint( +Handle, +Constraint)
Updates the long double box referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Long_Double_Box_refine_with_congruence( +Handle, +Congruence)
Updates the long double box referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Long_Double_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the long double box referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Long_Double_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the long double box referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of long double box is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Long_Double_Box_topological_closure_assign(+Handle)
Assigns to the long double box referenced by Handle its topological closure.
ppl_Long_Double_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the long double box P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Long_Double_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the long double box P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Long_Double_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the long double box referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Long_Double_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the long double box referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Long_Double_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to long double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Long_Double_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to long double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Long_Double_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to long double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Long_Double_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to long double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Long_Double_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to long double box P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Long_Double_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to long double box P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Long_Double_Box_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the long double box P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the long double box referred to by the first argument its combination with the long double box referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Long_Double_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the long double box P referenced by Handle_1 the intersection of P and the long double box referenced by Handle_2.
ppl_Long_Double_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the long double box P referenced by Handle_1 the upper bound of P and the long double box referenced by Handle_2.
ppl_Long_Double_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the long double box P referenced by Handle_1 the difference of P and the long double box referenced by Handle_2.
ppl_Long_Double_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the long double box P referenced by Handle_1 the time elapse of P and the long double box referenced by Handle_2.
ppl_Long_Double_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the long double box P_1 referenced by Handle_1 with the long double box referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Long_Double_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of long double box P_1 referenced by Handle_1 and the long double box P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Long_Double_Box_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Long_Double_Box domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the long double box referred to by the second argument has to be contained in (or equal to) the long double box referred to by the first argument.
ppl_Long_Double_Box_CC76_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the long double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the long double box referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Long_Double_Box_CC76_widening_assign(+Handle_1, +Handle_2)
Assigns to the long double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the long double box referenced by Handle_2.
ppl_Long_Double_Box_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Long_Double_Box_CC76_widening_assign_with_tokens/4
ppl_Long_Double_Box_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Long_Double_Box_CC76_widening_assign/2
ppl_Long_Double_Box_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the long double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the long double box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Long_Double_Box_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the long double box P_1 referenced by Handle_1 the CC76-widening of P_1 with the long double box referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
These predicates enable the modification of the vector space of the long double box referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Long_Double_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the long double box P referenced by Handle_1 the concatenation of P and the long double box referenced by Handle_2.
These predicates enable the modification of the vector space of the long double box referred to in the first argument. These predicates enable the modification of the vector space of the long double box referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Long_Double_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the long double box P referenced by Handle and and_embeds P in this space.
ppl_Long_Double_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the long double box P referenced by Handle and and_projects P in this space.
ppl_Long_Double_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the long double box P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Long_Double_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the long double box P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Long_Double_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the long double box referenced by Handle to Dimension_Type new space dimensions.
ppl_Long_Double_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the long double box referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Long_Double_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of bd shapes.
The constructor predicates build a bd shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_BD_Shape_long_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new bd shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_BD_Shape_long_double_from_space_dimension(3, universe, X).
creates the bd shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_BD_Shape_long_double_from_constraints(+Constraint_System, -Handle)
Builds a new bd shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_long_double_from_congruences(+Congruence_System, -Handle)
Builds a new bd shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_BD_Shape_long_double_from_generators(+Generator_System, -Handle)
Builds a new bd shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_BD_Shape_long_double_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Z_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Grid(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Float_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_BD_Shape_long_double_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new bd shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the BD_Shape_long_double domain.
ppl_delete_BD_Shape_long_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the bd shape for different properties and succeed or fail depending on the outcome.
ppl_BD_Shape_long_double_is_empty(+Handle)
Succeeds if and only if the bd shape referenced by Handle is empty.
ppl_BD_Shape_long_double_is_universe(+Handle)
Succeeds if and only if the bd shape referenced by Handle is the universe.
ppl_BD_Shape_long_double_is_bounded(+Handle)
Succeeds if and only if the bd shape referenced by Handle is bounded.
ppl_BD_Shape_long_double_contains_integer_point(+Handle)
Succeeds if and only if the bd shape referenced by Handle contains an integer point.
ppl_BD_Shape_long_double_is_topologically_closed(+Handle)
Succeeds if and only if the bd shape referenced by Handle is topologically closed.
ppl_BD_Shape_long_double_is_discrete(+Handle)
Succeeds if and only if the bd shape referenced by Handle is discrete.
ppl_BD_Shape_long_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the bd shape referenced by Handle.
ppl_BD_Shape_long_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the bd shape referenced by Handle.
ppl_BD_Shape_long_double_contains_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in or equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_long_double_strictly_contains_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is included in but not equal to the bd shape referenced by Handle_1.
ppl_BD_Shape_long_double_is_disjoint_from_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_2 is disjoint from the bd shape referenced by Handle_1.
ppl_BD_Shape_long_double_equals_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the bd shape referenced by Handle_1 is equal to the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_OK(+Handle)
Succeeds only if the bd shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_BD_Shape_long_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the bd shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the bd shape unifying some of their arguments with the results.
ppl_BD_Shape_long_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the bd shape referenced by Handle.
ppl_BD_Shape_long_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the bd shape referenced by Handle.
ppl_BD_Shape_long_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_long_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_long_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the bd shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_BD_Shape_long_double_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_long_double_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_long_double_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_long_double_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the bd shape referenced by Handle.
ppl_BD_Shape_long_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_long_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_long_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_long_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if bd shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_BD_Shape_long_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the bd shape referenced by Handle.
ppl_BD_Shape_long_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the bd shape referenced by Handle.
This output predicate is useful for debugging.
ppl_BD_Shape_long_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the bd shape referenced by Handle on the standard output.
These predicates may modify the bd shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_BD_Shape_long_double_add_constraint(+Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_BD_Shape_long_double_add_congruence(+Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_BD_Shape_long_double_add_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_BD_Shape_long_double_add_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_BD_Shape_long_double_refine_with_constraint( +Handle, +Constraint)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_BD_Shape_long_double_refine_with_congruence( +Handle, +Congruence)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_BD_Shape_long_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the bd shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_BD_Shape_long_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the bd shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of bd shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_BD_Shape_long_double_topological_closure_assign(+Handle)
Assigns to the bd shape referenced by Handle its topological closure.
ppl_BD_Shape_long_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_BD_Shape_long_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the bd shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_long_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_long_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the bd shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_BD_Shape_long_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_long_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_BD_Shape_long_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_long_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_long_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_long_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to bd shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_BD_Shape_long_double_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the bd shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the bd shape referred to by the first argument its combination with the bd shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_BD_Shape_long_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the intersection of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the upper bound of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the difference of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the time elapse of P and the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the bd shape P_1 referenced by Handle_1 with the bd shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_BD_Shape_long_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of bd shape P_1 referenced by Handle_1 and the bd shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_BD_Shape_long_double_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the BD_Shape_long_double domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the bd shape referred to by the second argument has to be contained in (or equal to) the bd shape referred to by the first argument.
ppl_BD_Shape_long_double_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_long_double_H79_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_long_double_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2.
ppl_BD_Shape_long_double_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_BD_Shape_long_double_H79_widening_assign_with_tokens/4
ppl_BD_Shape_long_double_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_BD_Shape_long_double_H79_widening_assign/2
ppl_BD_Shape_long_double_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_long_double_limited_H79_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_long_double_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_BD_Shape_long_double_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_long_double_limited_H79_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the H79-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_long_double_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the bd shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_BD_Shape_long_double_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_BD_Shape_long_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the bd shape P referenced by Handle_1 the concatenation of P and the bd shape referenced by Handle_2.
These predicates enable the modification of the vector space of the bd shape referred to in the first argument. These predicates enable the modification of the vector space of the bd shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_BD_Shape_long_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_embeds P in this space.
ppl_BD_Shape_long_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the bd shape P referenced by Handle and and_projects P in this space.
ppl_BD_Shape_long_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the bd shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_BD_Shape_long_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the bd shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_BD_Shape_long_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the bd shape referenced by Handle to Dimension_Type new space dimensions.
ppl_BD_Shape_long_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the bd shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_BD_Shape_long_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of octagonal shapes.
The constructor predicates build a octagonal shape from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Octagonal_Shape_long_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new octagonal shape
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Octagonal_Shape_long_double_from_space_dimension(3, universe, X).
creates the octagonal shape defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Octagonal_Shape_long_double_from_constraints(+Constraint_System, -Handle)
Builds a new octagonal shape P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_long_double_from_congruences(+Congruence_System, -Handle)
Builds a new octagonal shape P from Congruence_System. Handle is unified with the handle for P.
ppl_new_Octagonal_Shape_long_double_from_generators(+Generator_System, -Handle)
Builds a new octagonal shape P from Generator_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Octagonal_Shape_long_double_from_Int8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint8_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint16_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint32_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint64_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Z_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Rational_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int8_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int16_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int32_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int64_t(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_mpz_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_mpq_class(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_C_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_NNC_Polyhedron(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Grid(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Float_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_float(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Int64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the int64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint8_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint8_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint16_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint16_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint32_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint32_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Uint64_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the uint64_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Z_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the z_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Rational_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the rational_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int8_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int8_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int16_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int16_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int32_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int32_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_int64_t_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_int64_t referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_mpz_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpz_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_mpq_class_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_mpq_class referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_C_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_NNC_Polyhedron_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the polyhedron referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Grid_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the grid referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Float_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the float_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_float_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_float referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Octagonal_Shape_long_double_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new octagonal shape P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Octagonal_Shape_long_double domain.
ppl_delete_Octagonal_Shape_long_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the octagonal shape for different properties and succeed or fail depending on the outcome.
ppl_Octagonal_Shape_long_double_is_empty(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is empty.
ppl_Octagonal_Shape_long_double_is_universe(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is the universe.
ppl_Octagonal_Shape_long_double_is_bounded(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is bounded.
ppl_Octagonal_Shape_long_double_contains_integer_point(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle contains an integer point.
ppl_Octagonal_Shape_long_double_is_topologically_closed(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is topologically closed.
ppl_Octagonal_Shape_long_double_is_discrete(+Handle)
Succeeds if and only if the octagonal shape referenced by Handle is discrete.
ppl_Octagonal_Shape_long_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_contains_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in or equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_long_double_strictly_contains_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is included in but not equal to the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_long_double_is_disjoint_from_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_2 is disjoint from the octagonal shape referenced by Handle_1.
ppl_Octagonal_Shape_long_double_equals_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the octagonal shape referenced by Handle_1 is equal to the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_OK(+Handle)
Succeeds only if the octagonal shape referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Octagonal_Shape_long_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the octagonal shape referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the octagonal shape unifying some of their arguments with the results.
ppl_Octagonal_Shape_long_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_long_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_long_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the octagonal shape referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Octagonal_Shape_long_double_get_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_get_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_get_minimized_constraints(+Handle, ?Constraint_System)
Unifies Constraint_System with the constraints (in the form of a list) in the minimized constraint system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_get_minimized_congruences(+Handle, ?Congruence_System)
Unifies Congruence_System with the congruences (in the form of a list) in the minimized congruence system satisfied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_long_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_long_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_long_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if octagonal shape P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Octagonal_Shape_long_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the octagonal shape referenced by Handle.
ppl_Octagonal_Shape_long_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the octagonal shape referenced by Handle.
This output predicate is useful for debugging.
ppl_Octagonal_Shape_long_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the octagonal shape referenced by Handle on the standard output.
These predicates may modify the octagonal shape referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Octagonal_Shape_long_double_add_constraint(+Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Octagonal_Shape_long_double_add_congruence(+Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Octagonal_Shape_long_double_add_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Octagonal_Shape_long_double_add_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Octagonal_Shape_long_double_refine_with_constraint( +Handle, +Constraint)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Octagonal_Shape_long_double_refine_with_congruence( +Handle, +Congruence)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Octagonal_Shape_long_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Octagonal_Shape_long_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the octagonal shape referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of octagonal shape is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Octagonal_Shape_long_double_topological_closure_assign(+Handle)
Assigns to the octagonal shape referenced by Handle its topological closure.
ppl_Octagonal_Shape_long_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Octagonal_Shape_long_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the octagonal shape P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_long_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_long_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the octagonal shape referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Octagonal_Shape_long_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_long_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Octagonal_Shape_long_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_long_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_long_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_long_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to octagonal shape P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Octagonal_Shape_long_double_wrap_assign(+Handle, +List_of_PPL_Var, +Width, +Representation, +Overflow, +Constraint_System, +C_unsigned, +Boolean)
Transforms the octagonal shape P referenced by Handle by wrapping the dimensions given by List_of_PPL_Vars while respecting the specified Width, Representation and Overflow behavior of all these variables. The Constraint_System represents the conditional or looping construct guard with respect to which wrapping is performed. The non-negative integer C_unsigned and Boolean allow control of the complexity/precision ratio; higher values for C_unsigned will lead to possibly greater precision while a true value for Boolean indicates that the space dimensions should be wrapped individually. See Section Wrapping Operator for a more detailed description of this operator.
These predicates include the binary operators which will assign to the octagonal shape referred to by the first argument its combination with the octagonal shape referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Octagonal_Shape_long_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the intersection of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the upper bound of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the difference of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the time elapse of P and the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the octagonal shape P_1 referenced by Handle_1 with the octagonal shape referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Octagonal_Shape_long_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of octagonal shape P_1 referenced by Handle_1 and the octagonal shape P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
ppl_Octagonal_Shape_long_double_linear_partition(+Handle_1, +Handle_2, -Handle_3, -Handle_4)
Handle_1 and Handle_2 are handles for elements P_1 and P_2 in the Octagonal_Shape_long_double domain. The predicate unifies handle Handle_3 to a reference to the intersection of P_1 and P_2 and Handle_4 to a reference to a pointset powerset of nnc polyhedra P_4; where P_4 is the linear partition of P_1 with respect to P_2. This predicate is only provided if the class Pointset_Powerset_NNC_Polyhedron has been enabled when configuring the library.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the octagonal shape referred to by the second argument has to be contained in (or equal to) the octagonal shape referred to by the first argument.
ppl_Octagonal_Shape_long_double_BHMZ05_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_long_double_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2.
ppl_Octagonal_Shape_long_double_widening_assign_with_tokens(+Handle_1, +Handle_2, +C_unsigned_1, ?C_unsigned_2)
Same as predicate ppl_Octagonal_Shape_long_double_H79_widening_assign_with_tokens/4
ppl_Octagonal_Shape_long_double_widening_assign(+Handle_1, +Handle_2)
Same as predicate ppl_Octagonal_Shape_long_double_H79_widening_assign/2
ppl_Octagonal_Shape_long_double_limited_BHMZ05_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_long_double_limited_CC76_extrapolation_assign_with_tokens(+Handle_1, +Handle_2, +Constraint_System, +C_unsigned_1, ?C_unsigned_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1. The widening with tokens delay technique is applied with C_unsigned_1 tokens; C_unsigned_2 is unified with the number of tokens remaining at the end of the operation.
ppl_Octagonal_Shape_long_double_limited_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the BHMZ05-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_long_double_limited_CC76_extrapolation_assign(+Handle_1, +Handle_2, +Constraint_System)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-widening of P_1 with the octagonal shape referenced by Handle_2 intersected with the constraints in Constraint_System that are satisfied by all the points of P_1.
ppl_Octagonal_Shape_long_double_CC76_narrowing_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P_1 referenced by Handle_1 the CC76-narrowing of P_1 and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Octagonal_Shape_long_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the octagonal shape P referenced by Handle_1 the concatenation of P and the octagonal shape referenced by Handle_2.
These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. These predicates enable the modification of the vector space of the octagonal shape referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Octagonal_Shape_long_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_embeds P in this space.
ppl_Octagonal_Shape_long_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the octagonal shape P referenced by Handle and and_projects P in this space.
ppl_Octagonal_Shape_long_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the octagonal shape P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Octagonal_Shape_long_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the octagonal shape P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Octagonal_Shape_long_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the octagonal shape referenced by Handle to Dimension_Type new space dimensions.
ppl_Octagonal_Shape_long_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the octagonal shape referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Octagonal_Shape_long_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Here we provide a short description for each of the predicates available for the domain of pointset powersets of long double boxes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Long_Double_Box_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Long_Double_Box_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Long_Double_Box_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Long_Double_Box_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Long_Double_Box_from_Pointset_Powerset_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Long_Double_Box_from_Long_Double_Box(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the long_double_box referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Long_Double_Box_from_Pointset_Powerset_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Long_Double_Box_from_Long_Double_Box_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the long_double_box referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Long_Double_Box domain.
ppl_delete_Pointset_Powerset_Long_Double_Box(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Long_Double_Box_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Long_Double_Box_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Long_Double_Box_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Long_Double_Box_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Long_Double_Box_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Long_Double_Box_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Long_Double_Box_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_contains_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Long_Double_Box_strictly_contains_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Long_Double_Box_is_disjoint_from_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Long_Double_Box_geometrically_covers_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Long_Double_Box_geometrically_equals_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Long_Double_Box_equals_Pointset_Powerset_Long_Double_Box(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Long_Double_Box_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Long_Double_Box_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Long_Double_Box_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Long_Double_Box_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Long_Double_Box_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Long_Double_Box_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Long_Double_Box_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Long_Double_Box_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Long_Double_Box_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Long_Double_Box_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Long_Double_Box_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Long_Double_Box_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Long_Double_Box_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Long_Double_Box_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Long_Double_Box_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Long_Double_Box_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Long_Double_Box_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Long_Double_Box_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Long_Double_Box_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Long_Double_Box_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Long_Double_Box_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Long_Double_Box_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Long_Double_Box_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Long_Double_Box_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Long_Double_Box_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Long_Double_Box_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Long_Double_Box_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Long_Double_Box_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Long_Double_Box_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Long_Double_Box_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Long_Double_Box_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Long_Double_Box_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Long_Double_Box_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Long_Double_Box_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Long_Double_Box_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Long_Double_Box_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Long_Double_Box_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Long_Double_Box_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Long_Double_Box_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Long_Double_Box_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Long_Double_Box_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Long_Double_Box_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Long_Double_Box_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Long_Double_Box_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Long_Double_Box_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Long_Double_Box_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Long_Double_Box_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Long_Double_Box_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Long_Double_Box_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Long_Double_Box_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Long_Double_Box_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Long_Double_Box_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Long_Double_Box_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of bd shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_BD_Shape_long_double_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_Pointset_Powerset_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_BD_Shape_long_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the bd_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_Pointset_Powerset_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_BD_Shape_long_double_from_BD_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the bd_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_BD_Shape_long_double domain.
ppl_delete_Pointset_Powerset_BD_Shape_long_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_BD_Shape_long_double_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_BD_Shape_long_double_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_BD_Shape_long_double_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_BD_Shape_long_double_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_BD_Shape_long_double_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_BD_Shape_long_double_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_BD_Shape_long_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_contains_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_long_double_strictly_contains_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_long_double_is_disjoint_from_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_long_double_geometrically_covers_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_long_double_geometrically_equals_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_BD_Shape_long_double_equals_Pointset_Powerset_BD_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_BD_Shape_long_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_BD_Shape_long_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_long_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_long_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_BD_Shape_long_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_long_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_long_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_long_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_BD_Shape_long_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_BD_Shape_long_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_BD_Shape_long_double_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_BD_Shape_long_double_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_BD_Shape_long_double_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_BD_Shape_long_double_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_BD_Shape_long_double_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_BD_Shape_long_double_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_BD_Shape_long_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_BD_Shape_long_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_BD_Shape_long_double_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_BD_Shape_long_double_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_BD_Shape_long_double_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_BD_Shape_long_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_BD_Shape_long_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_long_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_long_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_BD_Shape_long_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_long_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_BD_Shape_long_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_long_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_long_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_BD_Shape_long_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_BD_Shape_long_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_BD_Shape_long_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_BD_Shape_long_double_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_long_double_BHZ03_H79_H79_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_BD_Shape_long_double_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
ppl_Pointset_Powerset_BD_Shape_long_double_BGP99_H79_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the H79-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_BD_Shape_long_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_BD_Shape_long_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_BD_Shape_long_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_BD_Shape_long_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_long_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_BD_Shape_long_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_BD_Shape_long_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_BD_Shape_long_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_BD_Shape_long_double_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_BD_Shape_long_double_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_BD_Shape_long_double_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_BD_Shape_long_double_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_long_double_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_BD_Shape_long_double_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_BD_Shape_long_double_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_BD_Shape_long_double_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_BD_Shape_long_double_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_BD_Shape_long_double_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Here we provide a short description for each of the predicates available for the domain of pointset powersets of octagonal shapes.
The constructor predicates build a pointset powerset from a specification and binds the given variable to a handle for future referencing. The specification can be:
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_space_dimension(+Dimension_Type, +Universe_or_Empty, -Handle)
Builds a new pointset powerset
with Dimension_Type dimensions; it is empty or the universe depending on whether Atom is empty or universe, respectively. Handle is unified with the handle for
. Thus the query
?- ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_space_dimension(3, universe, X).
creates the pointset powerset defining the 3-dimensional vector space
with X bound to a valid handle for accessing it.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_constraints(+Constraint_System, -Handle)
Builds a new pointset powerset P from Constraint_System. Handle is unified with the handle for P.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_congruences(+Congruence_System, -Handle)
Builds a new pointset powerset P from Congruence_System. Handle is unified with the handle for P.
Besides the constructors listed above, the library also provides:
The copy and conversion predicates have two versions, one with arity 2 for the source and target handles and one with an extra argument denoting the maximum complexity to be used in the conversion; this complexity argument is ignored when the the friend and the element being built are in the same class.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_Octagonal_Shape_long_double(+Handle_1, -Handle_2)
Builds a new pointset powerset P_1 from the octagonal_shape_long_double referenced by handle Handle_1. Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_Pointset_Powerset_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the pointset_powerset_octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_from_Octagonal_Shape_long_double_with_complexity(+Handle, +Complexity, -Handle)
Builds a new pointset powerset P_1 from the octagonal_shape_long_double referenced by handle Handle_1 using an algorithm whose complexity does not exceed Complexity; Handle_2 is unified with the handle for P_1.
Below is the destructor predicate for the Pointset_Powerset_Octagonal_Shape_long_double domain.
ppl_delete_Pointset_Powerset_Octagonal_Shape_long_double(+Handle)
Invalidates the handle referenced by Handle: this makes sure the corresponding resources will eventually be released.
These predicates test the pointset powerset for different properties and succeed or fail depending on the outcome.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_empty(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is empty.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_universe(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is the universe.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_bounded(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is bounded.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_contains_integer_point(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle contains an integer point.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_topologically_closed(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is topologically closed.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_discrete(+Handle)
Succeeds if and only if the pointset powerset referenced by Handle is discrete.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_bounds_from_above(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from above in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_bounds_from_below(+Handle, +Lin_Expr)
Succeeds if and only if Lin_Expr is bounded from below in the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_contains_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in or equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_strictly_contains_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is included in but not equal to the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_is_disjoint_from_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 is disjoint from the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_geometrically_covers_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically covers the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_geometrically_equals_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_2 geometrically equals the pointset powerset referenced by Handle_1.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_equals_Pointset_Powerset_Octagonal_Shape_long_double(+Handle_1, +Handle_2)
Succeeds if and only if the pointset powerset referenced by Handle_1 is equal to the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_OK(+Handle)
Succeeds only if the pointset powerset referenced by Handle is well formed, i.e., if it satisfies all its implementation invariants. Useful for debugging purposes.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_constrains(+Handle, +PPL_Var)
Succeeds if and only if the pointset powerset referenced by Handle constrains the dimension PPL_Var.
These predicates will obtain more detailed information about the pointset powerset unifying some of their arguments with the results.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_space_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the dimension of the vector space enclosing the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_affine_dimension(+Handle, ?Dimension_Type)
Unifies Dimension_Type with the affine dimension of the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_relation_with_constraint(+Handle, +Constraint, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Constraint. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_relation_with_generator(+Handle, +Generator, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Generator. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_relation_with_congruence(+Handle, +Congruence, ?Relation_List)
Unifies Relation_List with the list of relations the pointset powerset referenced by Handle has with Congruence. The possible relations are listed in the grammar rules above.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_maximize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_minimize(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_maximize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from above in P.
Coeff_1 is unified with the numerator of the supremum value and Coeff_2 with the denominator of the supremum value and Point with a point or closure point where Lin_Expr reaches this value. If the supremum is also the maximum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_minimize_with_point(+Handle, +Lin_Expr, ?Coeff_1, ?Coeff_2, ?Boolean, ?Point)
Succeeds if and only if pointset powerset P referenced by Handle is not empty and Lin_Expr is bounded from below in P.
Coeff_1 is unified with the numerator of the infinum value and Coeff_2 with the denominator of the infinum value and Point with a point or closure point where Lin_Expr reaches this value. If the infinum is also the minimum, Boolean is unified with the atom true and, otherwise, unified with the atom false.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_external_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the total memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_total_memory_in_bytes(+Handle, ?Number)
Unifies Number with the size of the external memory in bytes occupied by the pointset powerset referenced by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_size(+Handle, ?Number)
Unifies Number with the size of the memory in bytes occupied by the pointset powerset referenced by Handle.
This output predicate is useful for debugging.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_ascii_dump(+Handle)
Dumps an ascii representation of the PPL internal state for the pointset powerset referenced by Handle on the standard output.
These predicates may modify the pointset powerset referred to by the handle in first argument; the (dimension of the) vector space in which it is embedded is unchanged.
Note that there are two forms of these predicates differentiated in the names by the words "add" or "refine with"; see Section Generic Operations on Semantic Geometric Descriptors in the main PPL User Manual for the differences in the semantics and therefore, the expected behavior, between these forms.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_constraint(+Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by adding Constraint to its constraint system. For a C polyhedron, Constraint must be an equality or a non-strict inequality.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_congruence(+Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by adding Congruence to its congruence system. For a C polyhedron, Congruence must be an equality.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its constraint system the constraints in Constraint_System. For a C polyhedron, Constraints must be a list of equalities and non-strict inequalities.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by adding to its congruence system the congruences in Congruence_System. For a C polyhedron, Congruences must be a list of equalities.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_refine_with_constraint( +Handle, +Constraint)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with Constraint.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_refine_with_congruence( +Handle, +Congruence)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with Congruence.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_refine_with_constraints( +Handle, +Constraint_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its constraint system with the constraints in Constraint_System.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_refine_with_congruences( +Handle, +Congruence_System)
Updates the pointset powerset referenced by Handle to one obtained by refining its congruence system with the congruences in Congruence_System.
These predicates enable transformations such as taking the topological closure (which for the domain of pointset powerset is the identity transformation), unconstraining a specified dimension as explained in the main PPL User Manual in Section Cylindrification Operator and several different image and preimage affine transfer relations; for details of the latter see Sections Images and Preimages of Affine Transfer Relations and Generalized Affine Relations
ppl_Pointset_Powerset_Octagonal_Shape_long_double_topological_closure_assign(+Handle)
Assigns to the pointset powerset referenced by Handle its topological closure.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_pairwise_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its pairwise reduction.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_omega_reduce(+Handle)
Assigns to the pointset powerset referenced by Handle its omega reduction.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_unconstrain_space_dimension(+Handle, +PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimension PPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_unconstrain_space_dimensions(+Handle, +List_of_PPL_Var)
Modifies the pointset powerset P referenced by Handle by unconstraining the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_affine_image(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle assigning the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_affine_preimage(+Handle, +PPL_Var, +Lin_Expr, +Coeff)
Transforms the pointset powerset referenced by Handle substituting the affine expression for Lin_Expr/ Coeff toPPL_Var.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_bounded_affine_image(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_bounded_affine_preimage(+Handle, +PPL_Var, +Lin_Expr_1, +Lin_Expr_2, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1/Coeff
PPL_Var
Lin_Expr_2/Coeff.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_generalized_affine_image(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_generalized_affine_preimage(+Handle, +PPL_Var, +Relation_Symbol, +Lin_Expr, +Coeff)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation PPL_Var
Lin_Expr/ where Coeff,
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_generalized_affine_image_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized image with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_generalized_affine_preimage_lhs_rhs(+Handle, +Lin_Expr_1, +Relation_Symbol, +Lin_Expr_2)
Assigns to pointset powerset P referenced by Handle the generalized preimage with respect to the generalized affine transfer relation Lin_Expr_1
Lin_Expr_2, where
is the symbol represented by Relation_Symbol.
These predicates include the binary operators which will assign to the pointset powerset referred to by the first argument its combination with the pointset powerset referred to by the second argument as described in the main PPL User Manual in Sections Intersection and Convex Polyhedral Hull and Convex Polyhedral Difference; and a linear partitioning operator described below.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_intersection_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the intersection of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_upper_bound_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the upper bound of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_difference_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the difference of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_time_elapse_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the time elapse of P and the pointset powerset referenced by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_upper_bound_assign_if_exact(+Handle_1, +Handle_2)
Succeeds if the least upper bound of the pointset powerset P_1 referenced by Handle_1 with the pointset powerset referenced by Handle_2 is exact; in which case the least upper bound is assigned to P_1; fails otherwise.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_simplify_using_context_assign(+Handle_1, +Handle_2, ?Boolean)
Succeeds if and only if the intersection of pointset powerset P_1 referenced by Handle_1 and the pointset powerset P_2 referenced by Handle_2 is non-empty. Assigns to P_1 its meet-preserving simplification with respect to P_2.
In addition to the above binary operators, there are also a number of widening, extrapolation and narrowing operators as described in the main PPL User Manual in Sections Widening Operators, Widening with Tokens and Extrapolation Operators. Note that for all these widening and extrapolation predicates to behave as specified the pointset powerset referred to by the second argument has to be contained in (or equal to) the pointset powerset referred to by the first argument.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_BHZ03_H79_BHMZ05_widening_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P_1 referenced by Handle_1 the BHZ03-widening between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening certified by the convergence certificate for H79.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_BGP99_BHMZ05_extrapolation_assign(+Handle_1, +Handle_2, C_unsigned)
Assigns to the pointset powerset P_1 referenced by Handle_1 the result of applying the BGP99 extrapolation operator between P_1 and the pointset powerset referenced by Handle_2, using the BHMZ05-widening and the cardinality threshold C_unsigned.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument.
For more information on this operation, see Section Concatenating Polyhedra, of the main PPL User Manual.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_concatenate_assign(+Handle_1, +Handle_2)
Assigns to the pointset powerset P referenced by Handle_1 the concatenation of P and the pointset powerset referenced by Handle_2.
These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. These predicates enable the modification of the vector space of the pointset powerset referred to in the first argument. Detailed descriptions of these can be found in the main PPL User Manual in Sections Adding New Dimensions to the Vector Space, Removing Dimensions from the Vector Space, Mapping the Dimensions of the Vector Space, Expanding One Dimension of the Vector Space to Multiple Dimensions and Folding Multiple Dimensions of the Vector Space into One Dimension.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_space_dimensions_and_embed(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_embeds P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_space_dimensions_and_project(+Handle, +Dimension_Type)
Adds Dimension_Type new dimensions to the space enclosing the pointset powerset P referenced by Handle and and_projects P in this space.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_remove_space_dimensions(+Handle, +List_of_PPL_Vars)
Removes from the vector space enclosing the pointset powerset P referenced by Handle the space dimensions that are specified in List_of_PPL_Var. The presence of duplicates in List_of_PPL_Var is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_remove_higher_space_dimensions(+Handle, +Dimension_Type)
Removes the higher dimensions from the vector space enclosing the pointset powerset P referenced by Handle so that, upon successful return, the new space dimension is Dimension_Type.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_expand_space_dimension(+Handle, +PPL_Var, +Dimension_Type)
Expands the PPL_Var-th dimension of the vector space enclosing the pointset powerset referenced by Handle to Dimension_Type new space dimensions.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_fold_space_dimensions(+Handle, +List_of_PPL_Vars, +PPL_Var)
Modifies the pointset powerset referenced by Handle by folding the space dimensions contained in List_of_PPL_Vars into dimension PPL_Var. The presence of duplicates in List_of_PPL_Vars is a waste but an innocuous one.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_map_space_dimensions(+Handle, +P_Func)
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the P_Func, which has n entries. The result is undefined if P_Func does not encode a partial function.
Iterators allow the user to examine and change individual elements (called here disjuncts) of a pointset powerset. Detailed descriptions for adding and removing disjuncts can be found in the main PPL User Manual in Section Adding a Disjunct. The following predicates support useful operations on these iterators and disjuncts via the usual handles.
ppl_new_Pointset_Powerset_Octagonal_Shape_long_double_iterator_from_iterator(+Iterator_1, -Iterator_2)
Builds a new iterator it from the iterator referenced by Iterator_1. Iterator_2 is unified with the handle for it.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_begin_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the beginning of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_end_iterator(+Handle, -Iterator)
Unifies Iterator with a handle to an iterator "pointing" to the end of the sequence of disjuncts of the powerset referred to by Handle.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_iterator_equals_iterator(+Iterator_1, +Iterator_2)
Succeeds if and only if the iterator referenced by Iterator_1 is equal to the iterator referenced by Iterator_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_iterator_increment(+Iterator)
Increments the iterator referenced by Iterator so that it "points" to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_iterator_decrement(+Iterator)
Decrements the iterator referenced by Iterator so that it "points" to the previous disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_iterator_get_disjunct(+Iterator, -Handle)
Unifies with Handle a reference to the disjunct referred to by Iterator_1.
ppl_delete_Pointset_Powerset_Octagonal_Shape_long_double_iterator(+Iterator)
Invalidates the handle referenced by Iterator: this makes sure the corresponding resources will eventually be released.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_add_disjunct(+Handle_1, +Handle_2)
Adds to the pointset powerset referenced by Handle_1 a disjunct referred to by Handle_2.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_drop_disjunct(+Handle, +Iterator)
If it is the iterator referred to by Iterator, drops from the pointset powerset referenced by Handle the disjunct pointed to by it and assigns to it an iterator to the next disjunct.
ppl_Pointset_Powerset_Octagonal_Shape_long_double_drop_disjuncts(+Handle, +Iterator_1, +Iterator_2)
If it_1 and it_2 are the iterators referred to by Iterator_1 and Iterator_2, respectively, drops from the pointset powerset referenced by Handle all the disjuncts from it_1 to it_2 (excluded).
Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> Copyright (C) 2010-2011 BUGSENG srl (http://bugseng.com)
This document describes the Parma Polyhedra Library (PPL).
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
The PPL is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
The PPL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
For the most up-to-date information see the Parma Polyhedra Library site: http://www.cs.unipr.it/ppl/
When the Parma Polyhedra Library is configured, it tests for the existence of each supported Prolog system. If a supported Prolog system is correctly installed in a standard location, things are arranged so that the corresponding interface is built and installed.
The Prolog interface files are all installed in the directory prefix/lib/ppl. Since this includes shared and dynamically loaded libraries, you must make your dynamic linker/loader aware of this fact. If you use a GNU/Linux system, try the commands man ld.so and man ldconfig for more information.
As an option, the Prolog interface can track the creation and disposal of polyhedra. In fact, differently from native Prolog data, PPL polyhedra must be explicitly disposed and forgetting to do so is a very common mistake. To enable this option, configure the library adding -DPROLOG_TRACK_ALLOCATION to the options passed to the C++ compiler. Your configure command would then look like
path/to/configure --with-cxxflags="-DPROLOG_TRACK_ALLOCATION" ...
The Ciao Prolog interface to the PPL is available both as `PPL enhanced' Ciao Prolog interpreter and as a library that can be linked to Ciao Prolog programs. Only Ciao Prolog versions 1.10 #5 and later are supported.
So that it can be used with the Ciao Prolog PPL interface, the Ciao Prolog installation must be configured with the --disable-regs option.
ppl_ciao ExecutableIf an appropriate version of Ciao Prolog is installed on the machine on which you compiled the library, the command make install will install the executable ppl_ciao in the directory prefix/bin. The ppl_ciao executable is simply the Ciao Prolog interpreter with the Parma Polyhedra Library linked in. The only thing you should do to use the library is to call ppl_initialize/0 before any other PPL predicate and to call ppl_finalize/0 when you are done with the library.
In order to allow linking Ciao Prolog programs to the PPL, the following files are installed in the directory prefix/lib/ppl: ppl_ciao.pl contains the required foreign declarations; libppl_ciao.* contain the executable code for the Ciao Prolog interface in various formats (static library, shared library, libtool library). If your Ciao Prolog program is constituted by, say, source1.pl and source2.pl and you want to create the executable myprog, your compilation command may look like
ciaoc -o myprog prefix/lib/ppl/ppl_ciao.pl ciao_pl_check.pl \
-L '-Lprefix/lib/ppl -lppl_ciao -Lprefix/lib -lppl -lgmpxx -lgmp -lstdc++'
The GNU Prolog interface to the PPL is available both as a `PPL enhanced' GNU Prolog interpreter and as a library that can be linked to GNU Prolog programs. The only GNU Prolog version that is known to work is a patched version of the `unstable version' tagged 20040608 (which unpacks to a directory called gprolog-1.2.18). The patch is contained in the interfaces/Prolog/GNU/README file of the PPL's distribution.
So that it can be used with the GNU Prolog PPL interface (and, for that matter, with any foreign code), the GNU Prolog installation must be configured with the --disable-regs option.
ppl_gprolog ExecutableIf an appropriate version of GNU Prolog is installed on the machine on which you compiled the library, the command make install will install the executable ppl_gprolog in the directory prefix/bin. The ppl_gprolog executable is simply the GNU Prolog interpreter with the Parma Polyhedra Library linked in. The only thing you should do to use the library is to call ppl_initialize/0 before any other PPL predicate and to call ppl_finalize/0 when you are done with the library.
In order to allow linking GNU Prolog programs to the PPL, the following files are installed in the directory prefix/lib/ppl: ppl_gprolog.pl contains the required foreign declarations; libppl_gprolog.* contain the executable code for the GNU Prolog interface in various formats (static library, shared library, libtool library). If your GNU Prolog program is constituted by, say, source1.pl and source2.pl and you want to create the executable myprog, your compilation command may look like
gplc -o myprog prefix/lib/ppl/ppl_gprolog.pl source1.pl source2.pl \
-L '-Lprefix/lib/ppl -lppl_gprolog -Lprefix/lib -lppl -lgmpxx -lgmp -lstdc++'
GNU Prolog uses several stacks to execute a Prolog program each with a pre-defined default size. If the size of a stack is too small for the application an overflow will occur. To change the default size of a stack, the user has to set the value of the relevant environment variable; in particular, to execute some of the tests, we found it necessary to increase the size of GLOBALSZ. Thus, for the above example, the compilation command would be
GLOBALSZ=32768 gplc -o myprog prefix/lib/ppl/ppl_gprolog.pl source1.pl source2.pl \
-L '-Lprefix/lib/ppl -lppl_gprolog -Lprefix/lib -lppl -lgmpxx -lgmp -lstdc++'
More information on adjusting the size of the stacks can be found in Section 3.3 in the GNU Prolog Manual
The SICStus Prolog interface to the PPL is available both as a statically linked module or as a dynamically linked one. Only SICStus Prolog versions 3.9.0 and later are supported.
ppl_sicstus ExecutableIf an appropriate version of SICStus Prolog is installed on the machine on which you compiled the library, the command make install will install the executable ppl_sicstus in the directory prefix/bin. The ppl_sicstus executable is simply the SICStus Prolog system with the Parma Polyhedra Library statically linked. The only thing you should do to use the library is to load prefix/lib/ppl/ppl_sicstus.pl.
In order to dynamically load the library from SICStus Prolog you should simply load prefix/lib/ppl/ppl_sicstus.pl. Notice that, for dynamic linking to work, you should have configured the library with the --enable-shared option.
The SWI-Prolog interface to the PPL is available both as a statically linked module or as a dynamically linked one. Only SWI-Prolog version 5.6.0 and later versions are supported.
ppl_pl ExecutableIf an appropriate version of SWI-Prolog is installed on the machine on which you compiled the library, the command make install will install the executable ppl_pl in the directory prefix/bin. The ppl_pl executable is simply the SWI-Prolog shell with the Parma Polyhedra Library statically linked: from within ppl_pl all the services of the library are available without further action.
In order to dynamically load the library from SWI-Prolog you should simply load prefix/lib/ppl/ppl_swiprolog.pl. This will invoke ppl_initialize/0 and ppl_finalize/0 automatically. Alternatively, you can load the library directly with
:- load_foreign_library('prefix/lib/ppl/libppl_swiprolog').
This will call ppl_initialize/0 automatically. Analogously,
:- unload_foreign_library('prefix/lib/ppl/libppl_swiprolog').
will, as part of the unload process, invoke ppl_finalize/0.
Notice that, for dynamic linking to work, you should have configured the library with the --enable-shared option.
The XSB Prolog interface to the PPL is available as a dynamically linked module. Only some CVS versions of XSB starting from 2 July 2005 are known to work. CVS versions starting from 11 November 2005 are known not to work.
In order to dynamically load the library from XSB you should load the ppl_xsb module and import the predicates you need. For things to work, you may have to copy the files prefix/lib/ppl/ppl_xsb.xwam and prefix/lib/ppl/ppl_xsb.so in your current directory or in one of the XSB library directories.
The YAP Prolog interface to the PPL is available as a dynamically linked module. Only YAP versions following 5.1.0 and CVS HEAD versions starting from 4 January 2006 are supported. Notice that support for unbounded integers in YAP is young and may have errors that could affect programs using the PPL (see, e.g., http://www.cs.unipr.it/pipermail/ppl-devel/2006-January/007780.html).
In order to dynamically load the library from YAP you should simply load prefix/lib/ppl/ppl_yap.pl. This will invoke ppl_initialize/0 automatically; it is the programmer's responsibility to call ppl_finalize/0 when the PPL library is no longer needed. Notice that, for dynamic linking to work, you should have configured the library with the --enable-shared option.
1.6.3