1/* This is the header file of the C interface of the Parma Polyhedra Library.
2   Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
3   Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
4
5This file is part of the Parma Polyhedra Library (PPL).
6
7The PPL is free software; you can redistribute it and/or modify it
8under the terms of the GNU General Public License as published by the
9Free Software Foundation; either version 3 of the License, or (at your
10option) any later version.
11
12The PPL is distributed in the hope that it will be useful, but WITHOUT
13ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software Foundation,
19Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
20
21For the most up-to-date information see the Parma Polyhedra Library
22site: http://bugseng.com/products/ppl/ . */
23
24#ifndef PPL_ppl_c_h
25#define PPL_ppl_c_h 1
26
27/*!
28  \defgroup PPL_C_interface C Language Interface
29
30  The Parma Polyhedra Library comes equipped with an interface
31  for the C language.
32*/
33
34/*! \mainpage
35
36All the declarations needed for using the PPL's C interface
37(preprocessor symbols, data types, variables and
38functions) are collected in the header file <CODE>ppl_c.h</CODE>.
39This file, which is designed to work with pre-ANSI and ANSI C compilers
40as well as C99 and C++ compilers, should be included, either directly
41or via some other header file, with the directive
42\code
43#include <ppl_c.h>
44\endcode
45If this directive does not work, then your compiler is unable to find
46the file <CODE>ppl_c.h</CODE>. So check that the library is installed
47(if it is not installed, you may want to <CODE>make install</CODE>,
48perhaps with root privileges) in the right place
49(if not you may want to reconfigure the library using the appropriate
50pathname for the <CODE>--prefix</CODE> option); and that your compiler
51knows where it is installed (if not you should add the path to the
52directory where <CODE>ppl_c.h</CODE> is located to the compiler's
53include file search path; this is usually done with the
54<CODE>-I</CODE> option).
55
56The name space of the PPL's C interface is <CODE>PPL_*</CODE> for
57preprocessor symbols, enumeration values and variables; and
58<CODE>ppl_*</CODE> for data types and function names. The interface
59systematically uses <EM>opaque data types</EM> (generic pointers that
60completely hide the internal representations from the client code) and
61provides all required access functions. By using just the interface,
62the client code can exploit all the functionalities of the library yet
63avoid directly manipulating the library's data structures.  The advantages
64are that (1) applications do not depend on the internals of the library
65(these may change from release to release), and (2) the interface
66invariants can be thoroughly checked (by the access functions).
67
68\note
69All functions taking as input argument an opaque pointer datatype assume
70that such an argument is actually <em>referring to a valid PPL object</em>.
71For instance, a function with an argument having type
72<code>ppl_MIP_Problem_t</code> will expect a valid MIP_Problem object,
73previously initialized by calling, e.g., <code>ppl_new_MIP_Problem</code>.
74If that is not the case (e.g., if a null pointer is passed in),
75the behavior is undefined.
76
77The PPL's C interface is initialized by means of the
78<CODE>ppl_initialize</CODE> function.  This function must
79be called <EM>before using any other interface of the library</EM>.
80The application can release the resources allocated by the library by
81calling the <CODE>ppl_finalize</CODE> function. After this function
82is called <EM>no other interface of the library may be used</EM>
83until the interface is re-initialized using <CODE>ppl_initialize</CODE>.
84
85Any application using the PPL should make sure that only the
86intended version(s) of the library are ever used.  The version used can be
87checked at compile-time thanks to the macros PPL_VERSION_MAJOR,
88PPL_VERSION_MINOR, PPL_VERSION_REVISION and PPL_VERSION_BETA, which
89give, respectively major, minor, revision and beta numbers of the PPL
90version.  This is an example of their use:
91\code
92#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 6
93# error "PPL version 0.6 or following is required"
94#endif
95\endcode
96Compile-time checking, however, is not normally enough, particularly in
97an environment where there is dynamic linking.  Run-time checking can
98be performed by means of the functions <CODE>ppl_version_major</CODE>,
99<CODE>ppl_version_minor</CODE>, <CODE>ppl_version_revision</CODE>, and
100<CODE>ppl_version_beta</CODE>. The PPL's C interface also provides
101functions <CODE>ppl_version</CODE>, returning character string
102containing the full version number, and <CODE>ppl_banner</CODE>,
103returning a string that, in addition, provides (pointers to) other
104useful information for the library user.
105
106All programs using the PPL's C interface must link with the
107following libraries: <CODE>libppl_c</CODE> (PPL's C interface),
108<CODE>libppl</CODE> (PPL's core), <CODE>libgmpxx</CODE> (GMP's C++
109interface), and <CODE>libgmp</CODE> (GMP's library core).  On most
110Unix-like systems, this is done by adding <CODE>-lppl_c</CODE>,
111<CODE>-lppl</CODE>, <CODE>-lgmpxx</CODE>, and <CODE>-lgmp</CODE> to
112the compiler's or linker's command line.  For example:
113\verbatim
114gcc myprogram.o -lppl_c -lppl -lgmpxx -lgmp
115\endverbatim
116If this does not work, it means that your compiler/linker is not
117finding the libraries where it expects.  Again, this could be because you
118forgot to install the library or you installed it in a non-standard
119location.  In the latter case you will need to use the appropriate
120options (usually <CODE>-L</CODE>) and, if you use shared libraries,
121some sort of run-time path selection mechanisms.  Consult your
122compiler's documentation for details.  Notice that the PPL is built
123using <A HREF="http://www.gnu.org/software/libtool/">Libtool</A> and
124an application can exploit this fact to significantly simplify the
125linking phase.  See Libtool's documentation for details.  Those
126working under Linux can find a lot of useful information on how to use
127program libraries (including static, shared, and dynamically loaded
128libraries) in the
129<A HREF="http://www.dwheeler.com/program-library/">Program Library
130HOWTO</A>.
131
132For examples on how to use the functions provided by the C interface,
133you are referred to the directory <CODE>demos/ppl_lpsol/</CODE> in
134the source distribution.  It contains a <EM>Mixed Integer (Linear)
135Programming</EM> solver written in C.  In order to use this solver
136you will need to install
137<A HREF="http://www.gnu.org/software/glpk/">GLPK</A> (the GNU Linear
138Programming Kit): this is used to read linear programs in MPS format.
139*/ /* \mainpage */
140
141/*
142  For some reason, GMP up to and including version 4.1.3 requires
143  <stdio.h> to be included before <gmp.h>.
144*/
145
146#include <stdio.h>
147#include <gmp.h>
148#include <stddef.h>
149
150/*
151  PPL_PROTO is a macro used to wrap function prototypes, so that
152  compilers that don't understand ANSI C prototypes still work, and
153  ANSI C compilers can issue warnings about type mismatches.
154*/
155#if defined(__STDC__)                              \
156  || defined(__cplusplus)                          \
157  || defined (_AIX)                                \
158  || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
159  || defined(_WIN32)
160# define PPL_PROTO(protos) protos
161#else
162# define PPL_PROTO(protos) ()
163#endif
164
165#ifdef __cplusplus
166extern "C" {
167#endif
168
169/*! \defgroup Init Library Initialization and Finalization
170  Functions for initialization/finalization of the library,
171  as well as setting/resetting of floating-point rounding mode.
172*/
173/*@{*/
174
175/*! \brief
176  Initializes the Parma Polyhedra Library.
177  This function must be called before any other function.
178
179  \return
180  <CODE>PPL_ERROR_INVALID_ARGUMENT</CODE> if the library
181  was already initialized.
182*/
183int
184ppl_initialize PPL_PROTO((void));
185
186/*! \brief
187  Finalizes the Parma Polyhedra Library.
188  This function must be called after any other function.
189
190  \return
191  <CODE>PPL_ERROR_INVALID_ARGUMENT</CODE> if the library
192  was already finalized.
193*/
194int
195ppl_finalize PPL_PROTO((void));
196
197/*! \brief
198  Sets the FPU rounding mode so that the PPL abstractions based on
199  floating point numbers work correctly.
200
201  This is performed automatically at initialization-time.  Calling
202  this function is needed only if restore_pre_PPL_rounding() has been
203  previously called.
204*/
205int
206ppl_set_rounding_for_PPL PPL_PROTO((void));
207
208/*! \brief
209  Sets the FPU rounding mode as it was before initialization of the PPL.
210
211  After calling this function it is absolutely necessary to call
212  set_rounding_for_PPL() before using any PPL abstractions based on
213  floating point numbers.
214  This is performed automatically at finalization-time.
215*/
216int
217ppl_restore_pre_PPL_rounding PPL_PROTO((void));
218
219/*! \brief
220  Writes to \p p the precision parameter used for irrational calculations.
221*/
222int
223ppl_irrational_precision PPL_PROTO((unsigned* p));
224
225/*! \brief
226  Sets the precision parameter used for irrational calculations.
227
228  If \p p is less than or equal to <CODE>INT_MAX</CODE>, sets the
229  precision parameter used for irrational calculations to \p p.
230  Then, in the irrational calculations returning an unbounded rational,
231  (e.g., when computing a square root), the lesser between numerator
232  and denominator will be limited to 2**\p p.
233*/
234int
235ppl_set_irrational_precision PPL_PROTO((unsigned p));
236
237/*@}*/ /* Init */
238
239/*! \defgroup Version Version Checking
240  Symbolic constants and functions related to library version checking.
241*/
242/*@{*/
243
244/* Automatically generated from PPL source file ../../interfaces/C/ppl_c_version.h line 1. */
245/* Header file providing version information for the C interface.  -*- C -*-
246*/
247
248/*! \brief
249  A string containing the PPL version.
250
251  \ingroup Version
252  Let <CODE>M</CODE> and <CODE>m</CODE> denote the numbers associated
253  to PPL_VERSION_MAJOR and PPL_VERSION_MINOR, respectively.  The
254  format of PPL_VERSION is <CODE>M "." m</CODE> if both
255  PPL_VERSION_REVISION (<CODE>r</CODE>) and PPL_VERSION_BETA
256  (<CODE>b</CODE>)are zero, <CODE>M "." m "pre" b</CODE> if
257  PPL_VERSION_REVISION is zero and PPL_VERSION_BETA is not zero,
258  <CODE>M "." m "." r</CODE> if PPL_VERSION_REVISION is not zero and
259  PPL_VERSION_BETA is zero, <CODE>M "." m "." r "pre" b</CODE> if
260  neither PPL_VERSION_REVISION nor PPL_VERSION_BETA are zero.
261*/
262#define PPL_VERSION "1.2"
263
264/*! \brief
265  The major number of the PPL version.
266  \ingroup Version
267*/
268#define PPL_VERSION_MAJOR 1
269
270/*! \brief
271  The minor number of the PPL version.
272  \ingroup Version
273*/
274#define PPL_VERSION_MINOR 2
275
276/*! \brief
277  The revision number of the PPL version.
278  \ingroup Version
279*/
280#define PPL_VERSION_REVISION 0
281
282/*! \brief
283  The beta number of the PPL version.  This is zero for official
284  releases and nonzero for development snapshots.
285  \ingroup Version
286*/
287#define PPL_VERSION_BETA 0
288
289/*! \brief
290  Returns the major number of the PPL version.
291*/
292int
293ppl_version_major PPL_PROTO((void));
294
295/*! \brief
296  Returns the minor number of the PPL version.
297*/
298int
299ppl_version_minor PPL_PROTO((void));
300
301/*! \brief
302  Returns the revision number of the PPL version.
303*/
304int
305ppl_version_revision PPL_PROTO((void));
306
307/*! \brief
308  Returns the beta number of the PPL version.
309*/
310int
311ppl_version_beta PPL_PROTO((void));
312
313/*! \brief
314  Writes to \c *p a pointer to a character string containing the
315  PPL version.
316*/
317int
318ppl_version PPL_PROTO((const char** p));
319
320/*! \brief
321  Writes to \c *p a pointer to a character string containing the PPL banner.
322
323  The banner provides information about the PPL version, the licensing,
324  the lack of any warranty whatsoever, the C++ compiler used to build
325  the library, where to report bugs and where to look for further
326  information.
327*/
328int
329ppl_banner PPL_PROTO((const char** p));
330
331/*@}*/ /* Version Checking */
332
333/*! \defgroup Error Error Handling
334  Symbolic constants and functions related to error reporting/handling.
335*/
336/*@{*/
337
338/*! \brief
339  Defines the error codes that any function may return.
340*/
341enum ppl_enum_error_code {
342  /*! \hideinitializer
343    The virtual memory available to the process has been exhausted. */
344  PPL_ERROR_OUT_OF_MEMORY = -2,
345  /*! \hideinitializer
346    A function has been invoked with an invalid argument. */
347  PPL_ERROR_INVALID_ARGUMENT = -3,
348  /*! \hideinitializer
349    A function has been invoked outside its domain of definition. */
350  PPL_ERROR_DOMAIN_ERROR = -4,
351  /*! \hideinitializer
352    The construction of an object that would exceed its maximum
353    permitted size was attempted. */
354  PPL_ERROR_LENGTH_ERROR = -5,
355  /*! \hideinitializer
356    An arithmetic overflow occurred and the computation was consequently
357    interrupted.  This can <EM>only</EM> happen in library's incarnations
358    using bounded integers as coefficients. */
359  PPL_ARITHMETIC_OVERFLOW = -6,
360  /*! \hideinitializer
361    An error occurred during a C input/output operation.  A more
362    precise indication of what went wrong is available via
363    <CODE>errno</CODE>. */
364  PPL_STDIO_ERROR = -7,
365  /*! \hideinitializer
366    An internal error that was diagnosed by the PPL itself.
367    This indicates a bug in the PPL. */
368  PPL_ERROR_INTERNAL_ERROR = -8,
369  /*! \hideinitializer
370    A standard exception has been raised by the C++ run-time environment.
371    This indicates a bug in the PPL. */
372  PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION = -9,
373  /*! \hideinitializer
374    A totally unknown, totally unexpected error happened.
375    This indicates a bug in the PPL. */
376  PPL_ERROR_UNEXPECTED_ERROR = -10,
377  /*! \hideinitializer
378    An exception has been raised by the PPL as a timeout previously set
379    by the user has expired.
380  */
381  PPL_TIMEOUT_EXCEPTION = -11,
382  /*! \hideinitializer
383    The client program attempted to use the PPL in a way that violates
384    its internal logic.  This happens, for instance, when the client
385    attempts to use the timeout facilities on a system that does not
386    support them. */
387  PPL_ERROR_LOGIC_ERROR = -12
388};
389
390/*! \brief
391  Installs the user-defined error handler pointed at by \p h.
392
393  The error handler takes an error code and a textual description that
394  gives further information about the actual error.  The C string
395  containing the textual description is read-only and its existence is
396  not guaranteed after the handler has returned.
397*/
398int
399ppl_set_error_handler PPL_PROTO((void (*h)(enum ppl_enum_error_code code,
400                                           const char* description)));
401
402/*@}*/ /* Error */
403
404/*! \defgroup Timeout Timeout Handling
405  Functions for setting and resetting timeouts.
406*/
407/*@{*/
408
409/*! \brief
410  Sets the timeout for computations whose completion could require
411  an exponential amount of time.
412
413  \param csecs
414  The number of centiseconds sometimes after which a timeout will occur;
415  it must be strictly greater than zero.
416
417  Computations taking exponential time will be interrupted some time
418  after \p csecs centiseconds have elapsed since the call to
419  the timeout setting function. If the computation is interrupted that
420  way, the interrupted function will return error code
421  <code>PPL_TIMEOUT_EXCEPTION</code>.
422  Otherwise, if the computation completes without being interrupted,
423  then the timeout should be reset by calling
424  <code>ppl_reset_timeout()</code>.
425*/
426int
427ppl_set_timeout PPL_PROTO((unsigned csecs));
428
429/*! \brief
430  Resets the timeout time so that the computation is not interrupted.
431*/
432int
433ppl_reset_timeout PPL_PROTO((void));
434
435/*! \brief
436  Sets a threshold for computations whose completion could require
437  an exponential amount of time.
438
439  \return
440  <CODE>PPL_ERROR_INVALID_ARGUMENT</CODE> if \p unscaled_weight is zero
441  or if the computed weight threshold exceeds the maximum allowed value.
442
443  \param unscaled_weight
444  The unscaled maximum computational weight; it has to be non-zero.
445
446  \param scale
447  The scaling factor to be applied to \p unscaled_weight.
448
449  If \p unscaled_weight has value \f$u\f$ and \p scale has value \f$s\f$,
450  then the (scaled) weight threshold is computed as \f$w = u \cdot 2^s\f$.
451  Computations taking exponential time will be interrupted some time
452  after reaching the complexity threshold \f$w\f$.
453  If the computation is interrupted that way, the interrupted function
454  will return error code <code>PPL_TIMEOUT_EXCEPTION</code>.
455  Otherwise, if the computation completes without being interrupted,
456  then the deterministic timeout should be reset by calling
457  <code>ppl_reset_deterministic_timeout()</code>.
458
459  \note
460  This "timeout" checking functionality is said to be \e deterministic
461  because it is not based on actual elapsed time. Its behavior will
462  only depend on (some of the) computations performed in the PPL library
463  and it will be otherwise independent from the computation environment
464  (CPU, operating system, compiler, etc.).
465
466  \warning
467  The weight mechanism is under beta testing. In particular,
468  there is still no clear relation between the weight threshold and
469  the actual computational complexity. As a consequence, client
470  applications should be ready to reconsider the tuning of these
471  weight thresholds when upgrading to newer version of the PPL.
472*/
473int
474ppl_set_deterministic_timeout PPL_PROTO((unsigned long unscaled_weight,
475                                         unsigned scale));
476
477/*! \brief
478  Resets the deterministic timeout so that the computation is not interrupted.
479*/
480int
481ppl_reset_deterministic_timeout PPL_PROTO((void));
482
483/*@}*/ /* Timeout */
484
485/*! \defgroup Datatypes Library Datatypes
486  \brief
487  Typedefs for the library datatypes and related symbolic constants.
488
489  The datatypes provided by the library should be manipulated
490  by means of the corresponding opaque pointer types and
491  the functions working on them.
492
493  \note
494  To simplify the detection of common programming mistakes,
495  we provide both pointer-to-const and pointer-to-nonconst
496  opaque pointers, with implicit conversions mapping each
497  pointer-to-nonconst to the corresponding pointer-to-const when needed.
498  The user of the C interface is therefore recommended to adopt
499  the pointer-to-const type whenever read-only access is meant.
500*/
501/*@{*/
502
503/*! \brief
504  An unsigned integral type for representing space dimensions.
505*/
506typedef size_t ppl_dimension_type;
507
508/*! \brief
509  Writes to \p m the maximum space dimension this library can handle.
510*/
511int
512ppl_max_space_dimension PPL_PROTO((ppl_dimension_type* m));
513
514/*! \brief
515  Writes to \p m a value that does not designate a valid dimension.
516*/
517int
518ppl_not_a_dimension PPL_PROTO((ppl_dimension_type* m));
519
520/*! \brief
521  Pretty-prints \p var to <CODE>stdout</CODE>.
522*/
523int
524ppl_io_print_variable PPL_PROTO((ppl_dimension_type var));
525
526/*! \brief
527  Pretty-prints \p var to the given output \p stream.
528*/
529int
530ppl_io_fprint_variable PPL_PROTO((FILE* stream, ppl_dimension_type var));
531
532/*! \brief
533  Pretty-prints \p var to a malloc-allocated string, a pointer to which
534  is returned via \p strp.
535*/
536int
537ppl_io_asprint_variable PPL_PROTO((char** strp, ppl_dimension_type var));
538
539/*! \brief
540  The type of output functions used for printing variables.
541
542  An output function for variables must write a textual representation
543  for \p var to a character buffer, null-terminate it, and return a
544  pointer to the beginning of the buffer.  In case the operation fails,
545  0 should be returned and perhaps <CODE>errno</CODE> should be set
546  in a meaningful way.  The library does nothing with the buffer, besides
547  printing its contents.
548*/
549typedef const char*
550ppl_io_variable_output_function_type(ppl_dimension_type var);
551
552/*! \brief
553  Sets the output function to be used for printing variables to \p p.
554*/
555int
556ppl_io_set_variable_output_function(ppl_io_variable_output_function_type* p);
557
558/*! \brief
559  Writes a pointer to the current variable output function to \p pp.
560*/
561int
562ppl_io_get_variable_output_function(ppl_io_variable_output_function_type** pp);
563
564/*! \brief Utility function for the wrapping of lines of text.
565
566  \param src
567  The source string holding the text to wrap.
568
569  \param indent_depth
570  The indentation depth.
571
572  \param preferred_first_line_length
573  The preferred length for the first line of text.
574
575  \param preferred_line_length
576  The preferred length for all the lines but the first one.
577
578  \return
579  The wrapped string in a malloc-allocated buffer.
580*/
581char*
582ppl_io_wrap_string(const char* src,
583                   unsigned indent_depth,
584                   unsigned preferred_first_line_length,
585                   unsigned preferred_line_length);
586
587/*@}*/ /* Datatypes */
588
589#undef PPL_TYPE_DECLARATION
590
591#define PPL_TYPE_DECLARATION(Type)                                    \
592/*! \brief Opaque pointer \ingroup Datatypes */                       \
593typedef struct ppl_##Type##_tag* ppl_##Type##_t;                      \
594/*! \brief Opaque pointer to const object \ingroup Datatypes */       \
595typedef struct ppl_##Type##_tag const* ppl_const_##Type##_t;
596
597/*! \interface ppl_Coefficient_tag
598  \brief
599  Types and functions for coefficients.
600
601  The types and functions for coefficients provide an interface towards
602  \extref{Parma_Polyhedra_Library::Coefficient, Coefficient}.
603  Depending on configuration, the PPL coefficients may be implemented
604  by the unbounded precision integers provided by GMP (default),
605  or by bounded precision integers (with checks for overflows).
606*/
607PPL_TYPE_DECLARATION(Coefficient)
608
609/*! \interface ppl_Linear_Expression_tag
610  \brief
611  Types and functions for linear expressions.
612
613  The types and functions for linear expression provide an interface towards
614  \extref{Parma_Polyhedra_Library::Linear_Expression, Linear_Expression}.
615*/
616PPL_TYPE_DECLARATION(Linear_Expression)
617
618/*! \interface ppl_Constraint_tag
619  \brief
620  Types and functions for constraints.
621
622  The types and functions for constraints provide an interface towards
623  \extref{Parma_Polyhedra_Library::Constraint, Constraint}.
624*/
625PPL_TYPE_DECLARATION(Constraint)
626
627/*! \interface ppl_Constraint_System_tag
628  \brief
629  Types and functions for constraint systems.
630
631  The types and functions for constraint systems provide an interface
632  towards
633  \extref{Parma_Polyhedra_Library::Constraint_System, Constraint_System}.
634*/
635PPL_TYPE_DECLARATION(Constraint_System)
636
637/*! \interface ppl_Constraint_System_const_iterator_tag
638  \brief
639  Types and functions for iterating on constraint systems.
640
641  The types and functions for constraint systems iterators provide
642  read-only access to the elements of a constraint system by interfacing
643  \extref{Parma_Polyhedra_Library::Constraint_System_const_iterator,
644  Constraint_System::const_iterator}.
645*/
646PPL_TYPE_DECLARATION(Constraint_System_const_iterator)
647
648/*! \interface ppl_Generator_tag
649  \brief
650  Types and functions for generators.
651
652  The types and functions for generators provide an interface
653  towards \extref{Parma_Polyhedra_Library::Generator, Generator}.
654*/
655PPL_TYPE_DECLARATION(Generator)
656
657/*! \interface ppl_Generator_System_tag
658  \brief
659  Types and functions for generator systems.
660
661  The types and functions for generator systems provide an interface
662  towards
663  \extref{Parma_Polyhedra_Library::Generator_System, Generator_System}.
664*/
665PPL_TYPE_DECLARATION(Generator_System)
666
667/*! \interface ppl_Generator_System_const_iterator_tag
668  \brief
669  Types and functions for iterating on generator systems.
670
671  The types and functions for generator systems iterators provide
672  read-only access to the elements of a generator system by interfacing
673  \extref{Parma_Polyhedra_Library::Generator_System_const_iterator,
674  Generator_System::const_iterator}.
675*/
676PPL_TYPE_DECLARATION(Generator_System_const_iterator)
677
678/*! \interface ppl_Congruence_tag
679  \brief
680  Types and functions for congruences.
681
682  The types and functions for congruences provide an interface
683  towards \extref{Parma_Polyhedra_Library::Congruence, Congruence}.
684*/
685PPL_TYPE_DECLARATION(Congruence)
686
687/*! \interface ppl_Congruence_System_tag
688  \brief
689  Types and functions for congruence systems.
690
691  The types and functions for congruence systems provide an interface
692  towards
693  \extref{Parma_Polyhedra_Library::Congruence_System, Congruence_System}.
694*/
695PPL_TYPE_DECLARATION(Congruence_System)
696
697/*! \interface ppl_Congruence_System_const_iterator_tag
698  \brief
699  Types and functions for iterating on congruence systems.
700
701  The types and functions for congruence systems iterators provide
702  read-only access to the elements of a congruence system by interfacing
703  \extref{Parma_Polyhedra_Library::Congruence_System::const_iterator,
704  Congruence_System::const_iterator}.
705*/
706PPL_TYPE_DECLARATION(Congruence_System_const_iterator)
707
708/*! \interface ppl_Grid_Generator_tag
709  \brief
710  Types and functions for grid generators.
711
712  The types and functions for grid generators provide an interface
713  towards \extref{Parma_Polyhedra_Library::Grid_Generator, Grid_Generator}.
714*/
715PPL_TYPE_DECLARATION(Grid_Generator)
716
717/*! \interface ppl_Grid_Generator_System_tag
718  \brief
719  Types and functions for grid generator systems.
720
721  The types and functions for grid generator systems provide an interface
722  towards
723  \extref{Parma_Polyhedra_Library::Grid_Generator_System,
724  Grid_Generator_System}.
725*/
726PPL_TYPE_DECLARATION(Grid_Generator_System)
727
728/*! \interface ppl_Grid_Generator_System_const_iterator_tag
729  \brief
730  Types and functions for iterating on grid generator systems.
731
732  The types and functions for grid generator systems iterators provide
733  read-only access to the elements of a grid generator system by interfacing
734  \extref{Parma_Polyhedra_Library::Grid_Generator_System::const_iterator,
735  Grid_Generator_System::const_iterator}.
736*/
737PPL_TYPE_DECLARATION(Grid_Generator_System_const_iterator)
738
739/*! \interface ppl_MIP_Problem_tag
740  \brief
741  Types and functions for MIP problems.
742
743  The types and functions for MIP problems provide an interface
744  towards \extref{Parma_Polyhedra_Library::MIP_Problem, MIP_Problem}.
745*/
746PPL_TYPE_DECLARATION(MIP_Problem)
747
748/*! \interface ppl_PIP_Problem_tag
749  \brief
750  Types and functions for PIP problems.
751
752  The types and functions for PIP problems provide an interface
753  towards \extref{Parma_Polyhedra_Library::PIP_Problem, PIP_Problem}.
754*/
755PPL_TYPE_DECLARATION(PIP_Problem)
756
757/*! \interface ppl_PIP_Tree_Node_tag
758  \brief
759  Types and functions for generic PIP tree nodes.
760
761  The types and functions for tree nodes provide an interface
762  towards \extref{Parma_Polyhedra_Library::PIP_Tree_Node, PIP_Tree_Node}.
763*/
764PPL_TYPE_DECLARATION(PIP_Tree_Node)
765
766/*! \interface ppl_PIP_Decision_Node_tag
767  \brief
768  Types and functions for PIP decision nodes.
769
770  The types and functions for decision nodes provide an interface towards
771  \extref{Parma_Polyhedra_Library::PIP_Decision_Node, PIP_Decision_Node}.
772*/
773PPL_TYPE_DECLARATION(PIP_Decision_Node)
774
775/*! \interface ppl_PIP_Solution_Node_tag
776  \brief
777  Types and functions for PIP solution nodes.
778
779  The types and functions for solution nodes provide an interface towards
780  \extref{Parma_Polyhedra_Library::PIP_Solution_Node, PIP_Solution_Node}.
781*/
782PPL_TYPE_DECLARATION(PIP_Solution_Node)
783
784/*! \interface ppl_Artificial_Parameter_tag
785  \brief
786  Types and functions for PIP artificial parameters.
787
788  The types and functions for PIP artificial parameters provide
789  an interface towards
790  \extref{Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter, Artificial_Parameter}.
791*/
792PPL_TYPE_DECLARATION(Artificial_Parameter)
793PPL_TYPE_DECLARATION(Artificial_Parameter_Sequence)
794
795/*! \interface ppl_Artificial_Parameter_Sequence_const_iterator_tag
796  \brief
797  Types and functions for iterating on PIP artificial parameters.
798*/
799PPL_TYPE_DECLARATION(Artificial_Parameter_Sequence_const_iterator)
800
801
802#undef PPL_DECLARE_PRINT_FUNCTIONS
803#undef PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS
804#undef PPL_DECLARE_IO_FUNCTIONS
805#undef PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS
806#undef PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS
807#undef PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS
808
809#define PPL_DECLARE_PRINT_FUNCTIONS(Type)                               \
810/*! \relates ppl_##Type##_tag */                                        \
811int                                                                     \
812ppl_io_print_##Type PPL_PROTO((ppl_const_##Type##_t x));                \
813/*! \relates ppl_##Type##_tag */                                        \
814int                                                                     \
815ppl_io_fprint_##Type PPL_PROTO((FILE* stream, ppl_const_##Type##_t x)); \
816/*! \relates ppl_##Type##_tag */                                        \
817int                                                                     \
818ppl_io_asprint_##Type PPL_PROTO((char** strp, ppl_const_##Type##_t x));
819
820#define PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
821/*! \relates ppl_##Type##_tag */                    \
822int                                                 \
823ppl_##Type##_ascii_dump                             \
824PPL_PROTO((ppl_const_##Type##_t x, FILE* stream));  \
825/*! \relates ppl_##Type##_tag */                    \
826int                                                 \
827ppl_##Type##_ascii_load                             \
828PPL_PROTO((ppl_##Type##_t x, FILE* stream));
829
830#define PPL_DECLARE_IO_FUNCTIONS(Type)      \
831PPL_DECLARE_PRINT_FUNCTIONS(Type)           \
832PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS(Type)
833
834#define PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Type)                  \
835/*! \relates ppl_##Type##_tag \brief Prints \p x to \c stdout. */       \
836int                                                                     \
837ppl_io_print_##Type PPL_PROTO((ppl_const_##Type##_t x));                \
838/*! \relates ppl_##Type##_tag \brief Prints \p x to the given output \p stream. */ \
839int                                                                     \
840ppl_io_fprint_##Type PPL_PROTO((FILE* stream, ppl_const_##Type##_t x)); \
841/*! \relates ppl_##Type##_tag \brief Prints \p x to a malloc-allocated string, a pointer to which is returned via \p strp. */ \
842int                                                                     \
843ppl_io_asprint_##Type PPL_PROTO((char** strp, ppl_const_##Type##_t x));
844
845
846#define PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
847/*! \relates ppl_##Type##_tag \brief Dumps an ascii representation of \p x on \p stream. */ \
848int                                                              \
849ppl_##Type##_ascii_dump                                          \
850PPL_PROTO((ppl_const_##Type##_t x, FILE* stream));               \
851/*! \relates ppl_##Type##_tag \brief Loads an ascii representation of \p x from \p stream. */ \
852int                                                              \
853ppl_##Type##_ascii_load                                          \
854PPL_PROTO((ppl_##Type##_t x, FILE* stream));
855
856#define PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Type)      \
857/*! \brief \name Input/Output Functions */               \
858/*@{*/                                                   \
859PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Type)           \
860PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
861/*@}*/ /* Input/Output Functions */
862
863
864/*! \brief \name Constructors, Assignment and Destructor */
865/*@{*/
866
867/*! \relates ppl_Coefficient_tag \brief
868  Creates a new coefficient with value 0 and writes a handle for the
869  newly created coefficient at address \p pc.
870*/
871int
872ppl_new_Coefficient PPL_PROTO((ppl_Coefficient_t* pc));
873
874/*! \relates ppl_Coefficient_tag \brief
875  Creates a new coefficient with the value given by the GMP integer
876  \p z and writes a handle for the newly created coefficient
877  at address \p pc.
878*/
879int
880ppl_new_Coefficient_from_mpz_t PPL_PROTO((ppl_Coefficient_t* pc, mpz_t z));
881
882/*! \relates ppl_Coefficient_tag \brief
883  Builds a coefficient that is a copy of \p c; writes a handle
884  for the newly created coefficient at address \p pc.
885*/
886int
887ppl_new_Coefficient_from_Coefficient PPL_PROTO((ppl_Coefficient_t* pc,
888                                                ppl_const_Coefficient_t c));
889
890/*! \relates ppl_Coefficient_tag \brief
891  Assign to \p dst the value given by the GMP integer \p z.
892*/
893int
894ppl_assign_Coefficient_from_mpz_t PPL_PROTO((ppl_Coefficient_t dst, mpz_t z));
895
896/*! \relates ppl_Coefficient_tag \brief
897  Assigns a copy of the coefficient \p src to \p dst.
898*/
899int
900ppl_assign_Coefficient_from_Coefficient
901PPL_PROTO((ppl_Coefficient_t dst, ppl_const_Coefficient_t src));
902
903/*! \relates ppl_Coefficient_tag \brief
904  Invalidates the handle \p c: this makes sure the corresponding
905  resources will eventually be released.
906*/
907int
908ppl_delete_Coefficient PPL_PROTO((ppl_const_Coefficient_t c));
909
910/*@}*/ /* Constructors, Assignment and Destructor */
911
912/*! \brief \name Read-Only Accessor Functions */
913/*@{*/
914
915/*! \relates ppl_Coefficient_tag \brief
916  Sets the value of the GMP integer \p z to the value of \p c.
917*/
918int
919ppl_Coefficient_to_mpz_t PPL_PROTO((ppl_const_Coefficient_t c, mpz_t z));
920
921/*! \relates ppl_Coefficient_tag \brief
922  Returns a positive integer if \p c is well formed, i.e., if it
923  satisfies all its implementation invariants; returns 0 and perhaps
924  makes some noise if \p c is broken.  Useful for debugging purposes.
925*/
926int
927ppl_Coefficient_OK PPL_PROTO((ppl_const_Coefficient_t c));
928
929/*! \relates ppl_Coefficient_tag \brief
930  Returns a positive integer if coefficients are bounded; returns 0
931  otherwise.
932*/
933int
934ppl_Coefficient_is_bounded PPL_PROTO((void));
935
936/*! \relates ppl_Coefficient_tag \brief
937  Returns a positive integer if coefficients are bounded, in which case
938  \p min is set to their minimum value; returns 0 otherwise.
939*/
940int
941ppl_Coefficient_min PPL_PROTO((mpz_t min));
942
943/*! \relates ppl_Coefficient_tag \brief
944  Returns a positive integer if coefficients are bounded, in which case
945  \p max is set to their maximum value; returns 0 otherwise.
946*/
947int
948ppl_Coefficient_max PPL_PROTO((mpz_t max));
949
950/*@}*/ /* Read-Only Accessor Functions */
951
952/* No ascii dump for Coefficient */
953/*! \brief \name I/O Functions */
954/*@{*/
955PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Coefficient)
956/*@}*/ /* I/O Functions */
957
958
959/*! \brief \name Constructors, Assignment and Destructor */
960/*@{*/
961
962/*! \relates ppl_Linear_Expression_tag \brief
963  Creates a new linear expression corresponding to the constant 0 in a
964  zero-dimensional space; writes a handle for the new linear
965  expression at address \p ple.
966*/
967int
968ppl_new_Linear_Expression PPL_PROTO((ppl_Linear_Expression_t* ple));
969
970/*! \relates ppl_Linear_Expression_tag \brief
971  Creates a new linear expression corresponding to the constant 0 in a
972  <TT>d</TT>-dimensional space; writes a handle for the new linear
973  expression at address \p ple.
974*/
975int
976ppl_new_Linear_Expression_with_dimension
977PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_dimension_type d));
978
979/*! \relates ppl_Linear_Expression_tag \brief
980  Builds a linear expression that is a copy of \p le; writes a handle
981  for the newly created linear expression at address \p ple.
982*/
983int
984ppl_new_Linear_Expression_from_Linear_Expression
985PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Linear_Expression_t le));
986
987/*! \relates ppl_Linear_Expression_tag \brief
988  Builds a linear expression corresponding to constraint \p c;
989  writes a handle for the newly created linear expression at address \p ple.
990*/
991int
992ppl_new_Linear_Expression_from_Constraint
993PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Constraint_t c));
994
995/*! \relates ppl_Linear_Expression_tag \brief
996  Builds a linear expression corresponding to generator \p g;
997  writes a handle for the newly created linear expression at address \p ple.
998*/
999int
1000ppl_new_Linear_Expression_from_Generator
1001PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Generator_t g));
1002
1003/*! \relates ppl_Linear_Expression_tag \brief
1004  Builds a linear expression corresponding to congruence \p c;
1005  writes a handle for the newly created linear expression at address \p ple.
1006*/
1007int
1008ppl_new_Linear_Expression_from_Congruence
1009PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Congruence_t c));
1010
1011/*! \relates ppl_Linear_Expression_tag \brief
1012  Builds a linear expression corresponding to grid generator \p g;
1013  writes a handle for the newly created linear expression at address \p ple.
1014*/
1015int
1016ppl_new_Linear_Expression_from_Grid_Generator
1017PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Grid_Generator_t g));
1018
1019/*! \relates ppl_Linear_Expression_tag \brief
1020  Assigns a copy of the linear expression \p src to \p dst.
1021*/
1022int
1023ppl_assign_Linear_Expression_from_Linear_Expression
1024PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
1025
1026/*! \relates ppl_Linear_Expression_tag \brief
1027  Invalidates the handle \p le: this makes sure the corresponding
1028  resources will eventually be released.
1029*/
1030int
1031ppl_delete_Linear_Expression PPL_PROTO((ppl_const_Linear_Expression_t le));
1032
1033/*@}*/ /* Constructors, Assignment and Destructor */
1034
1035/*! \brief \name Functions that Do Not Modify the Linear Expression */
1036/*@{*/
1037
1038/*! \relates ppl_Linear_Expression_tag \brief
1039  Writes to \p m the space dimension of \p le.
1040*/
1041int
1042ppl_Linear_Expression_space_dimension
1043PPL_PROTO((ppl_const_Linear_Expression_t le, ppl_dimension_type* m));
1044
1045/*! \relates ppl_Linear_Expression_tag \brief
1046  Copies into \p n the coefficient of variable \p var in
1047  the linear expression \p le.
1048*/
1049int
1050ppl_Linear_Expression_coefficient PPL_PROTO((ppl_const_Linear_Expression_t le,
1051                                             ppl_dimension_type var,
1052                                             ppl_Coefficient_t n));
1053
1054/*! \relates ppl_Linear_Expression_tag \brief
1055  Copies into \p n the inhomogeneous term of linear expression \p le.
1056*/
1057int
1058ppl_Linear_Expression_inhomogeneous_term
1059PPL_PROTO((ppl_const_Linear_Expression_t le, ppl_Coefficient_t n));
1060
1061/*! \relates ppl_Linear_Expression_tag \brief
1062  Returns a positive integer if \p le is well formed, i.e., if it
1063  satisfies all its implementation invariants; returns 0 and perhaps
1064  makes some noise if \p le is broken.  Useful for debugging purposes.
1065*/
1066int
1067ppl_Linear_Expression_OK PPL_PROTO((ppl_const_Linear_Expression_t le));
1068
1069/*! \relates ppl_Linear_Expression_tag \brief
1070    Returns <CODE>true</CODE> if and only if \p *this is \f$0\f$.
1071*/
1072int
1073ppl_Linear_Expression_is_zero PPL_PROTO((ppl_const_Linear_Expression_t le));
1074
1075/*! \relates ppl_Linear_Expression_tag \brief
1076    Returns <CODE>true</CODE> if and only if all the homogeneous
1077    terms of \p *this are \f$0\f$.
1078*/
1079int
1080ppl_Linear_Expression_all_homogeneous_terms_are_zero
1081PPL_PROTO((ppl_const_Linear_Expression_t le));
1082
1083/*@}*/ /* Functions that Do Not Modify the Linear Expression */
1084
1085/*! \brief \name Functions that May Modify the Linear Expression */
1086/*@{*/
1087
1088/*! \relates ppl_Linear_Expression_tag \brief
1089  Adds \p n to the coefficient of variable \p var in the linear
1090  expression \p le.  The space dimension is set to be the maximum
1091  between \p var + 1 and the old space dimension.
1092*/
1093int
1094ppl_Linear_Expression_add_to_coefficient
1095PPL_PROTO((ppl_Linear_Expression_t le,
1096           ppl_dimension_type var,
1097           ppl_const_Coefficient_t n));
1098
1099/*! \relates ppl_Linear_Expression_tag \brief
1100  Adds \p n to the inhomogeneous term of the linear expression \p le.
1101*/
1102int
1103ppl_Linear_Expression_add_to_inhomogeneous
1104PPL_PROTO((ppl_Linear_Expression_t le, ppl_const_Coefficient_t n));
1105
1106/*! \relates ppl_Linear_Expression_tag \brief
1107  Adds the linear expression \p src to \p dst.
1108*/
1109int
1110ppl_add_Linear_Expression_to_Linear_Expression
1111PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
1112
1113/*! \relates ppl_Linear_Expression_tag \brief
1114  Subtracts the linear expression \p src from \p dst.
1115*/
1116int
1117ppl_subtract_Linear_Expression_from_Linear_Expression
1118PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
1119
1120/*! \relates ppl_Linear_Expression_tag \brief
1121  Multiply the linear expression \p dst by \p n.
1122*/
1123int
1124ppl_multiply_Linear_Expression_by_Coefficient
1125PPL_PROTO((ppl_Linear_Expression_t le, ppl_const_Coefficient_t n));
1126
1127/*@}*/ /* Functions that May Modify the Linear Expression */
1128
1129PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Linear_Expression)
1130
1131/*! \brief \ingroup Datatypes
1132  Describes the relations represented by a constraint.
1133*/
1134enum ppl_enum_Constraint_Type {
1135  /*! The constraint is of the form \f$e < 0\f$. */
1136  PPL_CONSTRAINT_TYPE_LESS_THAN,
1137  /*! The constraint is of the form \f$e \leq 0\f$. */
1138  PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL,
1139  /*! The constraint is of the form \f$e = 0\f$. */
1140  PPL_CONSTRAINT_TYPE_EQUAL,
1141  /*! The constraint is of the form \f$e \geq 0\f$. */
1142  PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL,
1143  /*! The constraint is of the form \f$e > 0\f$. */
1144  PPL_CONSTRAINT_TYPE_GREATER_THAN
1145};
1146
1147/*! \brief \name Constructors, Assignment and Destructor */
1148/*@{*/
1149
1150/*! \relates ppl_Constraint_tag \brief
1151  Creates the new constraint `\p le \p rel 0' and writes a handle for
1152  it at address \p pc.  The space dimension of the new constraint is
1153  equal to the space dimension of \p le.
1154*/
1155int
1156ppl_new_Constraint PPL_PROTO((ppl_Constraint_t* pc,
1157                              ppl_const_Linear_Expression_t le,
1158                              enum ppl_enum_Constraint_Type rel));
1159
1160/*! \relates ppl_Constraint_tag \brief
1161  Creates the unsatisfiable (zero-dimension space) constraint \f$0 = 1\f$
1162  and writes a handle for it at address \p pc.
1163*/
1164int
1165ppl_new_Constraint_zero_dim_false PPL_PROTO((ppl_Constraint_t* pc));
1166
1167/*! \relates ppl_Constraint_tag \brief
1168  Creates the true (zero-dimension space) constraint \f$0 \leq 1\f$,
1169  also known as <EM>positivity constraint</EM>.
1170  A handle for the newly created constraint is written at address \p pc.
1171*/
1172int
1173ppl_new_Constraint_zero_dim_positivity PPL_PROTO((ppl_Constraint_t* pc));
1174
1175/*! \relates ppl_Constraint_tag \brief
1176  Builds a constraint that is a copy of \p c; writes a handle
1177  for the newly created constraint at address \p pc.
1178*/
1179int
1180ppl_new_Constraint_from_Constraint PPL_PROTO((ppl_Constraint_t* pc,
1181                                              ppl_const_Constraint_t c));
1182
1183/*! \relates ppl_Constraint_tag \brief
1184  Assigns a copy of the constraint \p src to \p dst.
1185*/
1186int
1187ppl_assign_Constraint_from_Constraint PPL_PROTO((ppl_Constraint_t dst,
1188                                                 ppl_const_Constraint_t src));
1189
1190/*! \relates ppl_Constraint_tag \brief
1191  Invalidates the handle \p c: this makes sure the corresponding
1192  resources will eventually be released.
1193*/
1194int
1195ppl_delete_Constraint PPL_PROTO((ppl_const_Constraint_t c));
1196
1197/*@}*/ /* Constructors, Assignment and Destructor */
1198
1199/*! \brief \name Functions that Do Not Modify the Constraint */
1200/*@{*/
1201
1202/*! \relates ppl_Constraint_tag \brief
1203  Writes to \p m the space dimension of \p c.
1204*/
1205int
1206ppl_Constraint_space_dimension PPL_PROTO((ppl_const_Constraint_t c,
1207                                          ppl_dimension_type* m));
1208
1209/*! \relates ppl_Constraint_tag \brief
1210  Returns the type of constraint \p c.
1211*/
1212int
1213ppl_Constraint_type PPL_PROTO((ppl_const_Constraint_t c));
1214
1215/*! \relates ppl_Constraint_tag \brief
1216  Copies into \p n the coefficient of variable \p var in
1217  constraint \p c.
1218*/
1219int
1220ppl_Constraint_coefficient PPL_PROTO((ppl_const_Constraint_t c,
1221                                      ppl_dimension_type var,
1222                                      ppl_Coefficient_t n));
1223
1224/*! \relates ppl_Constraint_tag \brief
1225  Copies into \p n the inhomogeneous term of constraint \p c.
1226*/
1227int
1228ppl_Constraint_inhomogeneous_term PPL_PROTO((ppl_const_Constraint_t c,
1229                                             ppl_Coefficient_t n));
1230
1231/*! \relates ppl_Constraint_tag \brief
1232  Returns a positive integer if \p c is well formed, i.e., if it
1233  satisfies all its implementation invariants; returns 0 and perhaps
1234  makes some noise if \p c is broken.  Useful for debugging purposes.
1235*/
1236int
1237ppl_Constraint_OK PPL_PROTO((ppl_const_Constraint_t c));
1238
1239/*@}*/ /* Functions that Do Not Modify the Constraint */
1240
1241PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Constraint)
1242
1243
1244/*! \brief \name Constructors, Assignment and Destructor */
1245/*@{*/
1246
1247/*! \relates ppl_Constraint_System_tag \brief
1248  Builds an empty system of constraints and writes a handle to it at
1249  address \p pcs.
1250*/
1251int
1252ppl_new_Constraint_System PPL_PROTO((ppl_Constraint_System_t* pcs));
1253
1254/*! \relates ppl_Constraint_System_tag \brief
1255  Builds a zero-dimensional, unsatisfiable constraint system and
1256  writes a handle to it at address \p pcs.
1257*/
1258int
1259ppl_new_Constraint_System_zero_dim_empty
1260PPL_PROTO((ppl_Constraint_System_t* pcs));
1261
1262/*! \relates ppl_Constraint_System_tag \brief
1263  Builds the singleton constraint system containing only a copy of
1264  constraint \p c; writes a handle for the newly created system at
1265  address \p pcs.
1266*/
1267int
1268ppl_new_Constraint_System_from_Constraint
1269PPL_PROTO((ppl_Constraint_System_t* pcs, ppl_const_Constraint_t c));
1270
1271/*! \relates ppl_Constraint_System_tag \brief
1272  Builds a constraint system that is a copy of \p cs; writes a handle
1273  for the newly created system at address \p pcs.
1274*/
1275int
1276ppl_new_Constraint_System_from_Constraint_System
1277PPL_PROTO((ppl_Constraint_System_t* pcs, ppl_const_Constraint_System_t cs));
1278
1279/*! \relates ppl_Constraint_System_tag \brief
1280  Assigns a copy of the constraint system \p src to \p dst.
1281*/
1282int
1283ppl_assign_Constraint_System_from_Constraint_System
1284PPL_PROTO((ppl_Constraint_System_t dst, ppl_const_Constraint_System_t src));
1285
1286/*! \relates ppl_Constraint_System_tag \brief
1287  Invalidates the handle \p cs: this makes sure the corresponding
1288  resources will eventually be released.
1289*/
1290int
1291ppl_delete_Constraint_System PPL_PROTO((ppl_const_Constraint_System_t cs));
1292
1293/*@}*/ /* Constructors, Assignment and Destructor */
1294
1295/*! \brief \name Functions that Do Not Modify the Constraint System */
1296/*@{*/
1297
1298/*! \relates ppl_Constraint_System_tag \brief
1299  Writes to \p m the dimension of the vector space enclosing \p cs.
1300*/
1301int
1302ppl_Constraint_System_space_dimension
1303PPL_PROTO((ppl_const_Constraint_System_t cs, ppl_dimension_type* m));
1304
1305/*! \relates ppl_Constraint_System_tag \brief
1306  Returns a positive integer if \p cs contains no (non-trivial) constraint;
1307  returns 0 otherwise.
1308*/
1309int
1310ppl_Constraint_System_empty
1311PPL_PROTO((ppl_const_Constraint_System_t cs));
1312
1313/*! \relates ppl_Constraint_System_tag \brief
1314  Returns a positive integer if \p cs contains any (non-trivial) strict
1315  inequality; returns 0 otherwise.
1316*/
1317int
1318ppl_Constraint_System_has_strict_inequalities
1319PPL_PROTO((ppl_const_Constraint_System_t cs));
1320
1321/*! \relates ppl_Constraint_System_tag \brief
1322  Assigns to \p cit a const iterator "pointing" to the beginning of
1323  the constraint system \p cs.
1324*/
1325int
1326ppl_Constraint_System_begin
1327PPL_PROTO((ppl_const_Constraint_System_t cs,
1328           ppl_Constraint_System_const_iterator_t cit));
1329
1330/*! \relates ppl_Constraint_System_tag \brief
1331  Assigns to \p cit a const iterator "pointing" past the end of the
1332  constraint system \p cs.
1333*/
1334int
1335ppl_Constraint_System_end
1336PPL_PROTO((ppl_const_Constraint_System_t cs,
1337           ppl_Constraint_System_const_iterator_t cit));
1338
1339/*! \relates ppl_Constraint_System_tag \brief
1340  Returns a positive integer if \p cs is well formed, i.e., if it
1341  satisfies all its implementation invariants; returns 0 and perhaps
1342  makes some noise if \p cs is broken.  Useful for debugging purposes.
1343*/
1344int
1345ppl_Constraint_System_OK PPL_PROTO((ppl_const_Constraint_System_t cs));
1346
1347/*@}*/ /* Functions that Do Not Modify the Constraint System */
1348
1349/*! \brief \name Functions that May Modify the Constraint System */
1350/*@{*/
1351
1352/*! \relates ppl_Constraint_System_tag \brief
1353  Removes all the constraints from the constraint system \p cs
1354  and sets its space dimension to 0.
1355*/
1356int
1357ppl_Constraint_System_clear PPL_PROTO((ppl_Constraint_System_t cs));
1358
1359/*! \relates ppl_Constraint_System_tag \brief
1360  Inserts a copy of the constraint \p c into \p cs; the space
1361  dimension is increased, if necessary.
1362*/
1363int
1364ppl_Constraint_System_insert_Constraint PPL_PROTO((ppl_Constraint_System_t cs,
1365                                                   ppl_const_Constraint_t c));
1366
1367/*@}*/ /* Functions that May Modify the Constraint System */
1368
1369PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Constraint_System)
1370
1371
1372/*! \brief \name Constructors, Assignment and Destructor */
1373/*@{*/
1374
1375/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1376  Builds a new `const iterator' and writes a handle to it at address
1377  \p pcit.
1378*/
1379int
1380ppl_new_Constraint_System_const_iterator
1381PPL_PROTO((ppl_Constraint_System_const_iterator_t* pcit));
1382
1383/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1384  Builds a const iterator that is a copy of \p cit; writes a
1385  handle for the newly created const iterator at address \p pcit.
1386*/
1387int
1388ppl_new_Constraint_System_const_iterator_from_Constraint_System_const_iterator
1389PPL_PROTO((ppl_Constraint_System_const_iterator_t* pcit,
1390           ppl_const_Constraint_System_const_iterator_t cit));
1391
1392/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1393  Assigns a copy of the const iterator \p src to \p dst.
1394*/
1395int
1396ppl_assign_Constraint_System_const_iterator_from_Constraint_System_const_iterator
1397PPL_PROTO((ppl_Constraint_System_const_iterator_t dst,
1398           ppl_const_Constraint_System_const_iterator_t src));
1399
1400/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1401  Invalidates the handle \p cit: this makes sure the corresponding
1402  resources will eventually be released.
1403*/
1404int
1405ppl_delete_Constraint_System_const_iterator
1406PPL_PROTO((ppl_const_Constraint_System_const_iterator_t cit));
1407
1408/*@}*/ /* Constructors, Assignment and Destructor */
1409
1410/*! \brief \name Dereferencing, Incrementing and Equality Testing */
1411/*@{*/
1412
1413/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1414  Dereference \p cit writing a const handle to the resulting
1415  constraint at address \p pc.
1416*/
1417int
1418ppl_Constraint_System_const_iterator_dereference
1419PPL_PROTO((ppl_const_Constraint_System_const_iterator_t cit,
1420           ppl_const_Constraint_t* pc));
1421
1422/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1423  Increment \p cit so that it "points" to the next constraint.
1424*/
1425int
1426ppl_Constraint_System_const_iterator_increment
1427PPL_PROTO((ppl_Constraint_System_const_iterator_t cit));
1428
1429/*! \relates ppl_Constraint_System_const_iterator_tag \brief
1430  Returns a positive integer if the iterators corresponding to \p x and
1431  \p y are equal; returns 0 if they are different.
1432*/
1433int
1434ppl_Constraint_System_const_iterator_equal_test
1435PPL_PROTO((ppl_const_Constraint_System_const_iterator_t x,
1436           ppl_const_Constraint_System_const_iterator_t y));
1437
1438/*@}*/ /* Dereferencing, Incrementing and Equality Testing */
1439
1440
1441/*! \brief \ingroup Datatypes
1442  Describes the different kinds of generators.
1443*/
1444enum ppl_enum_Generator_Type {
1445  /*! The generator is a line. */
1446  PPL_GENERATOR_TYPE_LINE,
1447  /*! The generator is a ray. */
1448  PPL_GENERATOR_TYPE_RAY,
1449  /*! The generator is a point. */
1450  PPL_GENERATOR_TYPE_POINT,
1451  /*! The generator is a closure point. */
1452  PPL_GENERATOR_TYPE_CLOSURE_POINT
1453};
1454
1455/*! \brief \name Constructors, Assignment and Destructor */
1456/*@{*/
1457
1458/*! \relates ppl_Generator_tag \brief
1459  Creates a new generator of direction \p le and type \p t.  If the
1460  generator to be created is a point or a closure point, the divisor
1461  \p d is applied to \p le.  For other types of generators \p d is
1462  simply disregarded.  A handle for the new generator is written at
1463  address \p pg.  The space dimension of the new generator is equal to
1464  the space dimension of \p le.
1465*/
1466int
1467ppl_new_Generator PPL_PROTO((ppl_Generator_t* pg,
1468                             ppl_const_Linear_Expression_t le,
1469                             enum ppl_enum_Generator_Type t,
1470                             ppl_const_Coefficient_t d));
1471
1472/*! \relates ppl_Generator_tag \brief
1473  Creates the point that is the origin of the zero-dimensional space
1474  \f$\Rset^0\f$.  Writes a handle for the new generator at address
1475  \p pg.
1476*/
1477int
1478ppl_new_Generator_zero_dim_point PPL_PROTO((ppl_Generator_t* pg));
1479
1480/*! \relates ppl_Generator_tag \brief
1481  Creates, as a closure point, the point that is the origin of the
1482  zero-dimensional space \f$\Rset^0\f$.  Writes a handle for the new
1483  generator at address \p pg.
1484*/
1485int
1486ppl_new_Generator_zero_dim_closure_point PPL_PROTO((ppl_Generator_t* pg));
1487
1488/*! \relates ppl_Generator_tag \brief
1489  Builds a generator that is a copy of \p g; writes a handle
1490  for the newly created generator at address \p pg.
1491*/
1492int
1493ppl_new_Generator_from_Generator PPL_PROTO((ppl_Generator_t* pg,
1494                                            ppl_const_Generator_t g));
1495
1496/*! \relates ppl_Generator_tag \brief
1497  Assigns a copy of the generator \p src to \p dst.
1498*/
1499int
1500ppl_assign_Generator_from_Generator PPL_PROTO((ppl_Generator_t dst,
1501                                               ppl_const_Generator_t src));
1502
1503/*! \relates ppl_Generator_tag \brief
1504  Invalidates the handle \p g: this makes sure the corresponding
1505  resources will eventually be released.
1506*/
1507int
1508ppl_delete_Generator PPL_PROTO((ppl_const_Generator_t g));
1509
1510/*@}*/ /* Constructors, Assignment and Destructor */
1511
1512/*! \brief \name Functions that Do Not Modify the Generator */
1513/*@{*/
1514
1515/*! \relates ppl_Generator_tag \brief
1516  Writes to \p m the space dimension of \p g.
1517*/
1518int
1519ppl_Generator_space_dimension PPL_PROTO((ppl_const_Generator_t g,
1520                                         ppl_dimension_type* m));
1521
1522/*! \relates ppl_Generator_tag \brief
1523  Returns the type of generator \p g.
1524*/
1525int
1526ppl_Generator_type PPL_PROTO((ppl_const_Generator_t g));
1527
1528/*! \relates ppl_Generator_tag \brief
1529  Copies into \p n the coefficient of variable \p var in generator \p g.
1530*/
1531int
1532ppl_Generator_coefficient PPL_PROTO((ppl_const_Generator_t g,
1533                                     ppl_dimension_type var,
1534                                     ppl_Coefficient_t n));
1535
1536/*! \relates ppl_Generator_tag \brief
1537  If \p g is a point or a closure point assigns its divisor to \p n.
1538*/
1539int
1540ppl_Generator_divisor PPL_PROTO((ppl_const_Generator_t g,
1541                                 ppl_Coefficient_t n));
1542
1543/*! \relates ppl_Generator_tag \brief
1544  Returns a positive integer if \p g is well formed, i.e., if it
1545  satisfies all its implementation invariants; returns 0 and perhaps
1546  makes some noise if \p g is broken.  Useful for debugging purposes.
1547*/
1548int
1549ppl_Generator_OK PPL_PROTO((ppl_const_Generator_t g));
1550
1551/*@}*/ /* Functions that Do Not Modify the Generator */
1552
1553PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Generator)
1554
1555
1556/*! \brief \name Constructors, Assignment and Destructor */
1557/*@{*/
1558
1559/*! \relates ppl_Generator_System_tag \brief
1560  Builds an empty system of generators and writes a handle to it at
1561  address \p pgs.
1562*/
1563int
1564ppl_new_Generator_System PPL_PROTO((ppl_Generator_System_t* pgs));
1565
1566/*
1567  Creates the universe zero-dimensional system of generators (i.e.,
1568  containing the origin only).  Writes a handle to the new system at
1569  address \p pgs.
1570*/
1571int
1572ppl_new_Generator_System_zero_dim_univ
1573PPL_PROTO((ppl_Generator_System_t* pgs));
1574
1575/*! \relates ppl_Generator_System_tag \brief
1576  Builds the singleton generator system containing only a copy of
1577  generator \p g; writes a handle for the newly created system at
1578  address \p pgs.
1579*/
1580int
1581ppl_new_Generator_System_from_Generator PPL_PROTO((ppl_Generator_System_t* pgs,
1582                                                   ppl_const_Generator_t g));
1583
1584/*! \relates ppl_Generator_System_tag \brief
1585  Builds a generator system that is a copy of \p gs; writes a handle
1586  for the newly created system at address \p pgs.
1587*/
1588int
1589ppl_new_Generator_System_from_Generator_System
1590PPL_PROTO((ppl_Generator_System_t* pgs, ppl_const_Generator_System_t gs));
1591
1592/*! \relates ppl_Generator_System_tag \brief
1593  Assigns a copy of the generator system \p src to \p dst.
1594*/
1595int
1596ppl_assign_Generator_System_from_Generator_System
1597PPL_PROTO((ppl_Generator_System_t dst, ppl_const_Generator_System_t src));
1598
1599/*! \relates ppl_Generator_System_tag \brief
1600  Invalidates the handle \p gs: this makes sure the corresponding
1601  resources will eventually be released.
1602*/
1603int
1604ppl_delete_Generator_System PPL_PROTO((ppl_const_Generator_System_t gs));
1605
1606/*@}*/ /* Constructors, Assignment and Destructor */
1607
1608/*! \brief \name Functions that Do Not Modify the Generator System */
1609/*@{*/
1610
1611/*! \relates ppl_Generator_System_tag \brief
1612  Writes to \p m the dimension of the vector space enclosing \p gs.
1613*/
1614int
1615ppl_Generator_System_space_dimension
1616PPL_PROTO((ppl_const_Generator_System_t gs, ppl_dimension_type* m));
1617
1618/*! \relates ppl_Generator_System_tag \brief
1619  Returns a positive integer if \p gs contains no generators;
1620  returns 0 otherwise.
1621*/
1622int
1623ppl_Generator_System_empty
1624PPL_PROTO((ppl_const_Generator_System_t gs));
1625
1626/*! \relates ppl_Generator_System_tag \brief
1627  Assigns to \p git a const iterator "pointing" to the beginning of
1628  the generator system \p gs.
1629*/
1630int
1631ppl_Generator_System_begin
1632PPL_PROTO((ppl_const_Generator_System_t gs,
1633           ppl_Generator_System_const_iterator_t git));
1634
1635/*! \relates ppl_Generator_System_tag \brief
1636  Assigns to \p git a const iterator "pointing" past the end of the
1637  generator system \p gs.
1638*/
1639int
1640ppl_Generator_System_end
1641PPL_PROTO((ppl_const_Generator_System_t gs,
1642           ppl_Generator_System_const_iterator_t git));
1643
1644/*! \relates ppl_Generator_System_tag \brief
1645  Returns a positive integer if \p gs is well formed, i.e., if it
1646  satisfies all its implementation invariants; returns 0 and perhaps
1647  makes some noise if \p gs is broken.  Useful for debugging purposes.
1648*/
1649int
1650ppl_Generator_System_OK PPL_PROTO((ppl_const_Generator_System_t gs));
1651
1652/*@}*/ /* Functions that Do Not Modify the Generator System */
1653
1654/*! \brief \name Functions that May Modify the Generator System */
1655/*@{*/
1656
1657/*! \relates ppl_Generator_System_tag \brief
1658  Removes all the generators from the generator system \p gs
1659  and sets its space dimension to 0.
1660*/
1661int
1662ppl_Generator_System_clear PPL_PROTO((ppl_Generator_System_t gs));
1663
1664/*! \relates ppl_Generator_System_tag \brief
1665  Inserts a copy of the generator \p g into \p gs; the space
1666  dimension is increased, if necessary.
1667*/
1668int
1669ppl_Generator_System_insert_Generator PPL_PROTO((ppl_Generator_System_t gs,
1670                                                 ppl_const_Generator_t g));
1671
1672/*@}*/ /* Functions that May Modify the Generator System */
1673
1674PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Generator_System)
1675
1676
1677/*! \brief \name Constructors, Assignment and Destructor */
1678/*@{*/
1679
1680/*! \relates ppl_Generator_System_const_iterator_tag \brief
1681  Builds a new `const iterator' and writes a handle to it at address
1682  \p pgit.
1683*/
1684int
1685ppl_new_Generator_System_const_iterator
1686PPL_PROTO((ppl_Generator_System_const_iterator_t* pgit));
1687
1688/*! \relates ppl_Generator_System_const_iterator_tag \brief
1689  Builds a const iterator that is a copy of \p git; writes a
1690  handle for the newly created const iterator at address \p pgit.
1691*/
1692int
1693ppl_new_Generator_System_const_iterator_from_Generator_System_const_iterator
1694PPL_PROTO((ppl_Generator_System_const_iterator_t* pgit,
1695           ppl_const_Generator_System_const_iterator_t git));
1696
1697/*! \relates ppl_Generator_System_const_iterator_tag \brief
1698  Assigns a copy of the const iterator \p src to \p dst.
1699*/
1700int
1701ppl_assign_Generator_System_const_iterator_from_Generator_System_const_iterator
1702PPL_PROTO((ppl_Generator_System_const_iterator_t dst,
1703           ppl_const_Generator_System_const_iterator_t src));
1704
1705/*! \relates ppl_Generator_System_const_iterator_tag \brief
1706  Invalidates the handle \p git: this makes sure the corresponding
1707  resources will eventually be released.
1708*/
1709int
1710ppl_delete_Generator_System_const_iterator
1711PPL_PROTO((ppl_const_Generator_System_const_iterator_t git));
1712
1713/*@}*/ /* Constructors, Assignment and Destructor */
1714
1715/*! \brief \name Dereferencing, Incrementing and Equality Testing */
1716/*@{*/
1717
1718/*! \relates ppl_Generator_System_const_iterator_tag \brief
1719  Dereference \p git writing a const handle to the resulting
1720  generator at address \p pg.
1721*/
1722int
1723ppl_Generator_System_const_iterator_dereference
1724PPL_PROTO((ppl_const_Generator_System_const_iterator_t git,
1725           ppl_const_Generator_t* pg));
1726
1727/*! \relates ppl_Generator_System_const_iterator_tag \brief
1728  Increment \p git so that it "points" to the next generator.
1729*/
1730int
1731ppl_Generator_System_const_iterator_increment
1732PPL_PROTO((ppl_Generator_System_const_iterator_t git));
1733
1734/*! \relates ppl_Generator_System_const_iterator_tag \brief
1735  Returns a positive integer if the iterators corresponding to \p x and
1736  \p y are equal; returns 0 if they are different.
1737*/
1738int
1739ppl_Generator_System_const_iterator_equal_test
1740PPL_PROTO((ppl_const_Generator_System_const_iterator_t x,
1741           ppl_const_Generator_System_const_iterator_t y));
1742
1743/*@}*/ /* Dereferencing, Incrementing and Equality Testing */
1744
1745
1746/*! \brief \name Constructors, Assignment and Destructor */
1747/*@{*/
1748
1749/*! \relates ppl_Congruence_tag \brief
1750  Creates the new congruence \f$le = 0 \pmod{m}\f$ and writes a handle for
1751  it at address \p pc.  The space dimension of the new congruence is
1752  equal to the space dimension of \p le.
1753*/
1754int
1755ppl_new_Congruence PPL_PROTO((ppl_Congruence_t* pc,
1756                              ppl_const_Linear_Expression_t le,
1757                              ppl_const_Coefficient_t m));
1758
1759/*! \relates ppl_Congruence_tag \brief
1760  Creates the unsatisfiable (zero-dimension space) congruence
1761  \f$0 = 1 \pmod{0}\f$ and writes a handle for it at address \p pc.
1762*/
1763int
1764ppl_new_Congruence_zero_dim_false PPL_PROTO((ppl_Congruence_t* pc));
1765
1766/*! \relates ppl_Congruence_tag \brief
1767  Creates the true (zero-dimension space) congruence \f$0 = 1 \pmod{1}\f$,
1768  also known as <EM>integrality congruence</EM>.
1769  A handle for the newly created congruence is written at address \p pc.
1770*/
1771int
1772ppl_new_Congruence_zero_dim_integrality PPL_PROTO((ppl_Congruence_t* pc));
1773
1774/*! \relates ppl_Congruence_tag \brief
1775  Builds a congruence that is a copy of \p c; writes a handle
1776  for the newly created congruence at address \p pc.
1777*/
1778int
1779ppl_new_Congruence_from_Congruence PPL_PROTO((ppl_Congruence_t* pc,
1780                                              ppl_const_Congruence_t c));
1781
1782/*! \relates ppl_Congruence_tag \brief
1783  Assigns a copy of the congruence \p src to \p dst.
1784*/
1785int
1786ppl_assign_Congruence_from_Congruence PPL_PROTO((ppl_Congruence_t dst,
1787                                                 ppl_const_Congruence_t src));
1788
1789/*! \relates ppl_Congruence_tag \brief
1790  Invalidates the handle \p c: this makes sure the corresponding
1791  resources will eventually be released.
1792*/
1793int
1794ppl_delete_Congruence PPL_PROTO((ppl_const_Congruence_t c));
1795
1796/*@}*/ /* Constructors, Assignment and Destructor */
1797
1798/*! \brief \name Functions that Do Not Modify the Congruence */
1799/*@{*/
1800
1801/*! \relates ppl_Congruence_tag \brief
1802  Writes to \p m the space dimension of \p c.
1803*/
1804int
1805ppl_Congruence_space_dimension PPL_PROTO((ppl_const_Congruence_t c,
1806                                          ppl_dimension_type* m));
1807
1808/*! \relates ppl_Congruence_tag \brief
1809  Copies into \p n the coefficient of variable \p var in
1810  congruence \p c.
1811*/
1812int
1813ppl_Congruence_coefficient PPL_PROTO((ppl_const_Congruence_t c,
1814                                      ppl_dimension_type var,
1815                                      ppl_Coefficient_t n));
1816
1817/*! \relates ppl_Congruence_tag \brief
1818  Copies into \p n the inhomogeneous term of congruence \p c.
1819*/
1820int
1821ppl_Congruence_inhomogeneous_term PPL_PROTO((ppl_const_Congruence_t c,
1822                                             ppl_Coefficient_t n));
1823
1824/*! \relates ppl_Congruence_tag \brief
1825  Copies into \p m the modulus of congruence \p c.
1826*/
1827int
1828ppl_Congruence_modulus PPL_PROTO((ppl_const_Congruence_t c,
1829                                  ppl_Coefficient_t m));
1830
1831/*! \relates ppl_Congruence_tag \brief
1832  Returns a positive integer if \p c is well formed, i.e., if it
1833  satisfies all its implementation invariants; returns 0 and perhaps
1834  makes some noise if \p c is broken.  Useful for debugging purposes.
1835*/
1836int
1837ppl_Congruence_OK PPL_PROTO((ppl_const_Congruence_t c));
1838
1839/*@}*/ /* Functions that Do Not Modify the Congruence */
1840
1841PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Congruence)
1842
1843
1844/*! \brief \name Constructors, Assignment and Destructor */
1845/*@{*/
1846
1847/*! \relates ppl_Congruence_System_tag \brief
1848  Builds an empty system of congruences and writes a handle to it at
1849  address \p pcs.
1850*/
1851int
1852ppl_new_Congruence_System PPL_PROTO((ppl_Congruence_System_t* pcs));
1853
1854/*! \relates ppl_Congruence_System_tag \brief
1855  Builds a zero-dimensional, unsatisfiable congruence system and
1856  writes a handle to it at address \p pcs.
1857*/
1858int
1859ppl_new_Congruence_System_zero_dim_empty
1860PPL_PROTO((ppl_Congruence_System_t* pcs));
1861
1862/*! \relates ppl_Congruence_System_tag \brief
1863  Builds the singleton congruence system containing only a copy of
1864  congruence \p c; writes a handle for the newly created system at
1865  address \p pcs.
1866*/
1867int
1868ppl_new_Congruence_System_from_Congruence
1869PPL_PROTO((ppl_Congruence_System_t* pcs, ppl_const_Congruence_t c));
1870
1871/*! \relates ppl_Congruence_System_tag \brief
1872  Builds a congruence system that is a copy of \p cs; writes a handle
1873  for the newly created system at address \p pcs.
1874*/
1875int
1876ppl_new_Congruence_System_from_Congruence_System
1877PPL_PROTO((ppl_Congruence_System_t* pcs, ppl_const_Congruence_System_t cs));
1878
1879/*! \relates ppl_Congruence_System_tag \brief
1880  Assigns a copy of the congruence system \p src to \p dst.
1881*/
1882int
1883ppl_assign_Congruence_System_from_Congruence_System
1884PPL_PROTO((ppl_Congruence_System_t dst, ppl_const_Congruence_System_t src));
1885
1886/*! \relates ppl_Congruence_System_tag \brief
1887  Invalidates the handle \p cs: this makes sure the corresponding
1888  resources will eventually be released.
1889*/
1890int
1891ppl_delete_Congruence_System PPL_PROTO((ppl_const_Congruence_System_t cs));
1892
1893/*@}*/ /* Constructors, Assignment and Destructor */
1894
1895/*! \brief \name Functions that Do Not Modify the Congruence System */
1896/*@{*/
1897
1898/*! \relates ppl_Congruence_System_tag \brief
1899  Writes to \p m the dimension of the vector space enclosing \p cs.
1900*/
1901int
1902ppl_Congruence_System_space_dimension
1903PPL_PROTO((ppl_const_Congruence_System_t cs, ppl_dimension_type* m));
1904
1905/*! \relates ppl_Congruence_System_tag \brief
1906  Returns a positive integer if \p cs contains no (non-trivial) congruence;
1907  returns 0 otherwise.
1908*/
1909int
1910ppl_Congruence_System_empty
1911PPL_PROTO((ppl_const_Congruence_System_t cs));
1912
1913/*! \relates ppl_Congruence_System_tag \brief
1914  Assigns to \p cit a const iterator "pointing" to the beginning of
1915  the congruence system \p cs.
1916*/
1917int
1918ppl_Congruence_System_begin
1919PPL_PROTO((ppl_const_Congruence_System_t cs,
1920           ppl_Congruence_System_const_iterator_t cit));
1921
1922/*! \relates ppl_Congruence_System_tag \brief
1923  Assigns to \p cit a const iterator "pointing" past the end of the
1924  congruence system \p cs.
1925*/
1926int
1927ppl_Congruence_System_end
1928PPL_PROTO((ppl_const_Congruence_System_t cs,
1929           ppl_Congruence_System_const_iterator_t cit));
1930
1931/*! \relates ppl_Congruence_System_tag \brief
1932  Returns a positive integer if \p cs is well formed, i.e., if it
1933  satisfies all its implementation invariants; returns 0 and perhaps
1934  makes some noise if \p cs is broken.  Useful for debugging purposes.
1935*/
1936int
1937ppl_Congruence_System_OK PPL_PROTO((ppl_const_Congruence_System_t cs));
1938
1939/*@}*/ /* Functions that Do Not Modify the Congruence System */
1940
1941/*! \brief \name Functions that May Modify the Congruence System */
1942/*@{*/
1943
1944/*! \relates ppl_Congruence_System_tag \brief
1945  Removes all the congruences from the congruence system \p cs
1946  and sets its space dimension to 0.
1947*/
1948int
1949ppl_Congruence_System_clear PPL_PROTO((ppl_Congruence_System_t cs));
1950
1951/*! \relates ppl_Congruence_System_tag \brief
1952  Inserts a copy of the congruence \p c into \p cs; the space
1953  dimension is increased, if necessary.
1954*/
1955int
1956ppl_Congruence_System_insert_Congruence PPL_PROTO((ppl_Congruence_System_t cs,
1957                                                   ppl_const_Congruence_t c));
1958
1959/*@}*/ /* Functions that May Modify the Congruence System */
1960
1961PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Congruence_System)
1962
1963
1964/*! \brief \name Constructors, Assignment and Destructor */
1965/*@{*/
1966
1967/*! \relates ppl_Congruence_System_const_iterator_tag \brief
1968  Builds a new `const iterator' and writes a handle to it at address
1969  \p pcit.
1970*/
1971int
1972ppl_new_Congruence_System_const_iterator
1973PPL_PROTO((ppl_Congruence_System_const_iterator_t* pcit));
1974
1975/*! \relates ppl_Congruence_System_const_iterator_tag \brief
1976  Builds a const iterator that is a copy of \p cit; writes a
1977  handle for the newly created const iterator at address \p pcit.
1978*/
1979int
1980ppl_new_Congruence_System_const_iterator_from_Congruence_System_const_iterator
1981PPL_PROTO((ppl_Congruence_System_const_iterator_t* pcit,
1982           ppl_const_Congruence_System_const_iterator_t cit));
1983
1984/*! \relates ppl_Congruence_System_const_iterator_tag \brief
1985  Assigns a copy of the const iterator \p src to \p dst.
1986*/
1987int
1988ppl_assign_Congruence_System_const_iterator_from_Congruence_System_const_iterator
1989PPL_PROTO((ppl_Congruence_System_const_iterator_t dst,
1990           ppl_const_Congruence_System_const_iterator_t src));
1991
1992/*! \relates ppl_Congruence_System_const_iterator_tag \brief
1993  Invalidates the handle \p cit: this makes sure the corresponding
1994  resources will eventually be released.
1995*/
1996int
1997ppl_delete_Congruence_System_const_iterator
1998PPL_PROTO((ppl_const_Congruence_System_const_iterator_t cit));
1999
2000/*@}*/ /* Constructors, Assignment and Destructor */
2001
2002/*! \brief \name Dereferencing, Incrementing and Equality Testing */
2003/*@{*/
2004
2005/*! \relates ppl_Congruence_System_const_iterator_tag \brief
2006  Dereference \p cit writing a const handle to the resulting
2007  congruence at address \p pc.
2008*/
2009int
2010ppl_Congruence_System_const_iterator_dereference
2011PPL_PROTO((ppl_const_Congruence_System_const_iterator_t cit,
2012           ppl_const_Congruence_t* pc));
2013
2014/*! \relates ppl_Congruence_System_const_iterator_tag \brief
2015  Increment \p cit so that it "points" to the next congruence.
2016*/
2017int
2018ppl_Congruence_System_const_iterator_increment
2019PPL_PROTO((ppl_Congruence_System_const_iterator_t cit));
2020
2021/*! \relates ppl_Congruence_System_const_iterator_tag \brief
2022  Returns a positive integer if the iterators corresponding to \p x and
2023  \p y are equal; returns 0 if they are different.
2024*/
2025int
2026ppl_Congruence_System_const_iterator_equal_test
2027PPL_PROTO((ppl_const_Congruence_System_const_iterator_t x,
2028           ppl_const_Congruence_System_const_iterator_t y));
2029
2030/*@}*/ /* Dereferencing, Incrementing and Equality Testing */
2031
2032
2033/*! \brief \ingroup Datatypes
2034  Describes the different kinds of grid generators.
2035*/
2036enum ppl_enum_Grid_Generator_Type {
2037  /*! The grid generator is a line. */
2038  PPL_GRID_GENERATOR_TYPE_LINE,
2039  /*! The grid generator is a parameter. */
2040  PPL_GRID_GENERATOR_TYPE_PARAMETER,
2041  /*! The grid generator is a point. */
2042  PPL_GRID_GENERATOR_TYPE_POINT
2043};
2044
2045/*! \brief \name Constructors, Assignment and Destructor */
2046/*@{*/
2047
2048/*! \relates ppl_Grid_Generator_tag \brief
2049  Creates a new grid generator of direction \p le and type \p t.  If the
2050  grid generator to be created is a point or a parameter, the divisor
2051  \p d is applied to \p le.  If it is a line, \p d is simply disregarded.
2052  A handle for the new grid generator is written at address \p pg.
2053  The space dimension of the new grid generator is equal to the space
2054  dimension of \p le.
2055*/
2056int
2057ppl_new_Grid_Generator PPL_PROTO((ppl_Grid_Generator_t* pg,
2058                                  ppl_const_Linear_Expression_t le,
2059                                  enum ppl_enum_Grid_Generator_Type t,
2060                                  ppl_const_Coefficient_t d));
2061
2062/*! \relates ppl_Grid_Generator_tag \brief
2063  Creates the point that is the origin of the zero-dimensional space
2064  \f$\Rset^0\f$.  Writes a handle for the new grid generator at address
2065  \p pg.
2066*/
2067int
2068ppl_new_Grid_Generator_zero_dim_point PPL_PROTO((ppl_Grid_Generator_t* pg));
2069
2070/*! \relates ppl_Grid_Generator_tag \brief
2071  Builds a grid generator that is a copy of \p g; writes a handle
2072  for the newly created grid generator at address \p pg.
2073*/
2074int
2075ppl_new_Grid_Generator_from_Grid_Generator
2076PPL_PROTO((ppl_Grid_Generator_t* pg, ppl_const_Grid_Generator_t g));
2077
2078/*! \relates ppl_Grid_Generator_tag \brief
2079  Assigns a copy of the grid generator \p src to \p dst.
2080*/
2081int
2082ppl_assign_Grid_Generator_from_Grid_Generator
2083PPL_PROTO((ppl_Grid_Generator_t dst,
2084           ppl_const_Grid_Generator_t src));
2085
2086/*! \relates ppl_Grid_Generator_tag \brief
2087  Invalidates the handle \p g: this makes sure the corresponding
2088  resources will eventually be released.
2089*/
2090int
2091ppl_delete_Grid_Generator PPL_PROTO((ppl_const_Grid_Generator_t g));
2092
2093/*@}*/ /* Constructors, Assignment and Destructor */
2094
2095/*! \brief \name Functions that Do Not Modify the Grid Generator */
2096/*@{*/
2097
2098/*! \relates ppl_Grid_Generator_tag \brief
2099  Writes to \p m the space dimension of \p g.
2100*/
2101int
2102ppl_Grid_Generator_space_dimension PPL_PROTO((ppl_const_Grid_Generator_t g,
2103                                              ppl_dimension_type* m));
2104
2105/*! \relates ppl_Grid_Generator_tag \brief
2106  Returns the type of grid generator \p g.
2107*/
2108int
2109ppl_Grid_Generator_type PPL_PROTO((ppl_const_Grid_Generator_t g));
2110
2111/*! \relates ppl_Grid_Generator_tag \brief
2112  Copies into \p n the coefficient of variable \p var in
2113  grid generator \p g.
2114*/
2115int
2116ppl_Grid_Generator_coefficient PPL_PROTO((ppl_const_Grid_Generator_t g,
2117                                          ppl_dimension_type var,
2118                                          ppl_Coefficient_t n));
2119
2120/*! \relates ppl_Grid_Generator_tag \brief
2121  If \p g is a point or a parameter assigns its divisor to \p n.
2122*/
2123int
2124ppl_Grid_Generator_divisor PPL_PROTO((ppl_const_Grid_Generator_t g,
2125                                      ppl_Coefficient_t n));
2126
2127/*! \relates ppl_Grid_Generator_tag \brief
2128  Returns a positive integer if \p g is well formed, i.e., if it
2129  satisfies all its implementation invariants; returns 0 and perhaps
2130  makes some noise if \p g is broken.  Useful for debugging purposes.
2131*/
2132int
2133ppl_Grid_Generator_OK PPL_PROTO((ppl_const_Grid_Generator_t g));
2134
2135/*@}*/ /* Functions that Do Not Modify the Generator */
2136
2137PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Grid_Generator)
2138
2139
2140/*! \brief \name Constructors, Assignment and Destructor */
2141/*@{*/
2142
2143/*! \relates ppl_Grid_Generator_System_tag \brief
2144  Builds an empty system of grid generators and writes a handle to it at
2145  address \p pgs.
2146*/
2147int
2148ppl_new_Grid_Generator_System PPL_PROTO((ppl_Grid_Generator_System_t* pgs));
2149
2150/*
2151  Creates the universe zero-dimensional system of grid generators (i.e.,
2152  containing the origin only).  Writes a handle to the new system at
2153  address \p pgs.
2154*/
2155int
2156ppl_new_Grid_Generator_System_zero_dim_univ
2157PPL_PROTO((ppl_Grid_Generator_System_t* pgs));
2158
2159/*! \relates ppl_Grid_Generator_System_tag \brief
2160  Builds the singleton grid generator system containing only a copy of
2161  generator \p g; writes a handle for the newly created system at
2162  address \p pgs.
2163*/
2164int
2165ppl_new_Grid_Generator_System_from_Grid_Generator
2166PPL_PROTO((ppl_Grid_Generator_System_t* pgs,
2167           ppl_const_Grid_Generator_t g));
2168
2169/*! \relates ppl_Grid_Generator_System_tag \brief
2170  Builds a grid generator system that is a copy of \p gs; writes a handle
2171  for the newly created system at address \p pgs.
2172*/
2173int
2174ppl_new_Grid_Generator_System_from_Grid_Generator_System
2175PPL_PROTO((ppl_Grid_Generator_System_t* pgs,
2176           ppl_const_Grid_Generator_System_t gs));
2177
2178/*! \relates ppl_Grid_Generator_System_tag \brief
2179  Assigns a copy of the grid generator system \p src to \p dst.
2180*/
2181int
2182ppl_assign_Grid_Generator_System_from_Grid_Generator_System
2183PPL_PROTO((ppl_Grid_Generator_System_t dst,
2184           ppl_const_Grid_Generator_System_t src));
2185
2186/*! \relates ppl_Grid_Generator_System_tag \brief
2187  Invalidates the handle \p gs: this makes sure the corresponding
2188  resources will eventually be released.
2189*/
2190int
2191ppl_delete_Grid_Generator_System
2192PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
2193
2194/*@}*/ /* Constructors, Assignment and Destructor */
2195
2196/*! \brief \name Functions that Do Not Modify the Grid Generator System */
2197/*@{*/
2198
2199/*! \relates ppl_Grid_Generator_System_tag \brief
2200  Writes to \p m the dimension of the vector space enclosing \p gs.
2201*/
2202int
2203ppl_Grid_Generator_System_space_dimension
2204PPL_PROTO((ppl_const_Grid_Generator_System_t gs, ppl_dimension_type* m));
2205
2206/*! \relates ppl_Grid_Generator_System_tag \brief
2207  Returns a positive integer if \p gs contains no generator;
2208  returns 0 otherwise.
2209*/
2210int
2211ppl_Grid_Generator_System_empty
2212PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
2213
2214/*! \relates ppl_Grid_Generator_System_tag \brief
2215  Assigns to \p git a const iterator "pointing" to the beginning of
2216  the grid generator system \p gs.
2217*/
2218int
2219ppl_Grid_Generator_System_begin
2220PPL_PROTO((ppl_const_Grid_Generator_System_t gs,
2221           ppl_Grid_Generator_System_const_iterator_t git));
2222
2223/*! \relates ppl_Grid_Generator_System_tag \brief
2224  Assigns to \p git a const iterator "pointing" past the end of the
2225  grid generator system \p gs.
2226*/
2227int
2228ppl_Grid_Generator_System_end
2229PPL_PROTO((ppl_const_Grid_Generator_System_t gs,
2230           ppl_Grid_Generator_System_const_iterator_t git));
2231
2232/*! \relates ppl_Grid_Generator_System_tag \brief
2233  Returns a positive integer if \p gs is well formed, i.e., if it
2234  satisfies all its implementation invariants; returns 0 and perhaps
2235  makes some noise if \p gs is broken.  Useful for debugging purposes.
2236*/
2237int
2238ppl_Grid_Generator_System_OK PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
2239
2240/*@}*/ /* Functions that Do Not Modify the Grid Generator System */
2241
2242/*! \brief \name Functions that May Modify the Grid Generator System */
2243/*@{*/
2244
2245/*! \relates ppl_Grid_Generator_System_tag \brief
2246  Removes all the generators from the grid generator system \p gs
2247  and sets its space dimension to 0.
2248*/
2249int
2250ppl_Grid_Generator_System_clear PPL_PROTO((ppl_Grid_Generator_System_t gs));
2251
2252/*! \relates ppl_Grid_Generator_System_tag \brief
2253  Inserts a copy of the grid generator \p g into \p gs; the space
2254  dimension is increased, if necessary.
2255*/
2256int
2257ppl_Grid_Generator_System_insert_Grid_Generator
2258PPL_PROTO((ppl_Grid_Generator_System_t gs,
2259           ppl_const_Grid_Generator_t g));
2260
2261/*@}*/ /* Functions that May Modify the Grid Generator System */
2262
2263PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Grid_Generator_System)
2264
2265
2266/*! \brief \name Constructors, Assignment and Destructor */
2267/*@{*/
2268
2269/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2270  Builds a new `const iterator' and writes a handle to it at address
2271  \p pgit.
2272*/
2273int
2274ppl_new_Grid_Generator_System_const_iterator
2275PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t* pgit));
2276
2277/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2278  Builds a const iterator that is a copy of \p git; writes a
2279  handle for the newly created const iterator at address \p pgit.
2280*/
2281int
2282ppl_new_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator
2283PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t* pgit,
2284           ppl_const_Grid_Generator_System_const_iterator_t git));
2285
2286/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2287  Assigns a copy of the const iterator \p src to \p dst.
2288*/
2289int
2290ppl_assign_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator
2291PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t dst,
2292           ppl_const_Grid_Generator_System_const_iterator_t src));
2293
2294/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2295  Invalidates the handle \p git: this makes sure the corresponding
2296  resources will eventually be released.
2297*/
2298int
2299ppl_delete_Grid_Generator_System_const_iterator
2300PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t git));
2301
2302/*@}*/ /* Constructors, Assignment and Destructor */
2303
2304/*! \brief \name Dereferencing, Incrementing and Equality Testing */
2305/*@{*/
2306
2307/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2308  Dereference \p git writing a const handle to the resulting
2309  grid generator at address \p pg.
2310*/
2311int
2312ppl_Grid_Generator_System_const_iterator_dereference
2313PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t git,
2314           ppl_const_Grid_Generator_t* pg));
2315
2316/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2317  Increment \p git so that it "points" to the next grid generator.
2318*/
2319int
2320ppl_Grid_Generator_System_const_iterator_increment
2321PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t git));
2322
2323/*! \relates ppl_Grid_Generator_System_const_iterator_tag \brief
2324  Returns a positive integer if the iterators corresponding to \p x and
2325  \p y are equal; returns 0 if they are different.
2326*/
2327int
2328ppl_Grid_Generator_System_const_iterator_equal_test
2329PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t x,
2330           ppl_const_Grid_Generator_System_const_iterator_t y));
2331
2332/*@}*/ /* Dereferencing, Incrementing and Equality Testing */
2333
2334
2335/*! \brief \ingroup Datatypes
2336  Code of the worst-case polynomial complexity class.
2337*/
2338extern unsigned int PPL_COMPLEXITY_CLASS_POLYNOMIAL;
2339
2340/*! \brief \ingroup Datatypes
2341  Code of the worst-case exponential but typically polynomial
2342  complexity class.
2343*/
2344extern unsigned int PPL_COMPLEXITY_CLASS_SIMPLEX;
2345
2346/*! \brief \ingroup Datatypes
2347  Code of the universal complexity class.
2348*/
2349extern unsigned int PPL_COMPLEXITY_CLASS_ANY;
2350
2351/*! \brief \ingroup Datatypes
2352  Individual bit saying that the polyhedron and the set of points
2353  satisfying the constraint are disjoint.
2354*/
2355extern unsigned int PPL_POLY_CON_RELATION_IS_DISJOINT;
2356
2357/*! \brief \ingroup Datatypes
2358  Individual bit saying that the polyhedron intersects the set of
2359  points satisfying the constraint, but it is not included in it.
2360*/
2361extern unsigned int PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS;
2362
2363/*! \brief \ingroup Datatypes
2364  Individual bit saying that the polyhedron is included in the set of
2365  points satisfying the constraint.
2366*/
2367extern unsigned int PPL_POLY_CON_RELATION_IS_INCLUDED;
2368
2369/*! \brief \ingroup Datatypes
2370  Individual bit saying that the polyhedron is included in the set of
2371  points saturating the constraint.
2372*/
2373extern unsigned int PPL_POLY_CON_RELATION_SATURATES;
2374
2375/*! \brief \ingroup Datatypes
2376  Individual bit saying that adding the generator would not change the
2377  polyhedron.
2378*/
2379extern unsigned int PPL_POLY_GEN_RELATION_SUBSUMES;
2380
2381
2382/*! \brief \ingroup Datatypes
2383  Widths of bounded integer types.
2384*/
2385enum ppl_enum_Bounded_Integer_Type_Width {
2386  /*! \hideinitializer 8 bits. */
2387  PPL_BITS_8 = 8,
2388  /*! \hideinitializer 16 bits. */
2389  PPL_BITS_16 = 16,
2390  /*! \hideinitializer 32 bits. */
2391  PPL_BITS_32 = 32,
2392  /*! \hideinitializer 64 bits. */
2393  PPL_BITS_64 = 64,
2394  /*! \hideinitializer 128 bits. */
2395  PPL_BITS_128 = 128
2396};
2397
2398/*! \brief \ingroup Datatypes
2399  Representation of bounded integer types.
2400*/
2401enum ppl_enum_Bounded_Integer_Type_Representation {
2402  /*! Unsigned binary. */
2403  PPL_UNSIGNED,
2404  /*! \brief
2405    Signed binary where negative values are represented by the two's
2406    complement of the absolute value.
2407  */
2408  PPL_SIGNED_2_COMPLEMENT
2409};
2410
2411/*! \brief \ingroup Datatypes
2412  Overflow behavior of bounded integer types.
2413*/
2414enum ppl_enum_Bounded_Integer_Type_Overflow {
2415  /*! \brief
2416    On overflow, wrapping takes place.
2417
2418    This means that, for a \f$w\f$-bit bounded integer, the computation
2419    happens modulo \f$2^w\f$.
2420  */
2421  PPL_OVERFLOW_WRAPS,
2422
2423  /*! \brief
2424    On overflow, the result is undefined.
2425
2426    This simply means that the result of the operation resulting in an
2427    overflow can take any value.
2428
2429    \note
2430    Even though something more serious can happen in the system
2431    being analyzed ---due to, e.g., C's undefined behavior---, here we
2432    are only concerned with the results of arithmetic operations.
2433    It is the responsibility of the analyzer to ensure that other
2434    manifestations of undefined behavior are conservatively approximated.
2435  */
2436  PPL_OVERFLOW_UNDEFINED,
2437
2438  /*! \brief
2439    Overflow is impossible.
2440
2441    This is for the analysis of languages where overflow is trapped
2442    before it affects the state, for which, thus, any indication that
2443    an overflow may have affected the state is necessarily due to
2444    the imprecision of the analysis.
2445  */
2446  PPL_OVERFLOW_IMPOSSIBLE
2447};
2448
2449/*! \brief \name Symbolic Constants */
2450/*@{*/
2451
2452/*! \relates ppl_MIP_Problem_tag \brief
2453  Code of the "maximization" optimization mode.
2454*/
2455extern int PPL_OPTIMIZATION_MODE_MAXIMIZATION;
2456
2457/*! \relates ppl_MIP_Problem_tag \brief
2458  Code of the "minimization" optimization mode.
2459*/
2460extern int PPL_OPTIMIZATION_MODE_MINIMIZATION;
2461
2462/*! \relates ppl_MIP_Problem_tag \brief
2463  Code of the "unfeasible MIP problem" status.
2464*/
2465extern int PPL_MIP_PROBLEM_STATUS_UNFEASIBLE;
2466
2467/*! \relates ppl_MIP_Problem_tag \brief
2468  Code of the "unbounded MIP problem" status.
2469*/
2470extern int PPL_MIP_PROBLEM_STATUS_UNBOUNDED;
2471
2472/*! \relates ppl_MIP_Problem_tag \brief
2473  Code of the "optimized MIP problem" status.
2474*/
2475extern int PPL_MIP_PROBLEM_STATUS_OPTIMIZED;
2476
2477/*! \relates ppl_MIP_Problem_tag \brief
2478  Code for the MIP problem's "pricing" control parameter name.
2479*/
2480extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_NAME_PRICING;
2481
2482/*! \relates ppl_MIP_Problem_tag \brief
2483  Code of MIP problem's "textbook" pricing method.
2484*/
2485extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_TEXTBOOK;
2486
2487/*! \relates ppl_MIP_Problem_tag \brief
2488  Code of MIP problem's "exact steepest-edge" pricing method.
2489*/
2490extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_EXACT;
2491
2492/*! \relates ppl_MIP_Problem_tag \brief
2493  Code of MIP problem's "float steepest-edge" pricing method.
2494*/
2495extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_FLOAT;
2496
2497
2498
2499/*! \relates ppl_PIP_Problem_tag \brief
2500  Code of the "unfeasible PIP problem" status.
2501*/
2502extern int PPL_PIP_PROBLEM_STATUS_UNFEASIBLE;
2503
2504/*! \relates ppl_PIP_Problem_tag \brief
2505  Code of the "optimized PIP problem" status.
2506*/
2507extern int PPL_PIP_PROBLEM_STATUS_OPTIMIZED;
2508
2509/*! \relates ppl_PIP_Problem_tag \brief
2510  Code for the PIP problem's "cutting strategy" control parameter name.
2511*/
2512extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_CUTTING_STRATEGY;
2513
2514/*! \relates ppl_PIP_Problem_tag \brief
2515  Code for the PIP problem's "pivot row strategy" control parameter name.
2516*/
2517extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_PIVOT_ROW_STRATEGY;
2518
2519/*! \relates ppl_PIP_Problem_tag \brief
2520  Code of PIP problem's "first" cutting strategy.
2521*/
2522extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_FIRST;
2523
2524/*! \relates ppl_PIP_Problem_tag \brief
2525  Code of PIP problem's "deepest" cutting strategy.
2526*/
2527extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_DEEPEST;
2528
2529/*! \relates ppl_PIP_Problem_tag \brief
2530  Code of PIP problem's "all" cutting strategy.
2531*/
2532extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_ALL;
2533
2534/*! \relates ppl_PIP_Problem_tag \brief
2535  Code of PIP problem's "first" pivot row strategy.
2536*/
2537extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_FIRST;
2538
2539/*! \relates ppl_PIP_Problem_tag \brief
2540  Code of PIP problem's "max column" pivot row strategy.
2541*/
2542extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_MAX_COLUMN;
2543
2544/*@}*/ /* Symbolic Constants */
2545
2546/*! \brief \name Constructors, Assignment and Destructor */
2547/*@{*/
2548
2549/*! \relates ppl_MIP_Problem_tag \brief
2550  Builds a trivial MIP problem of dimension \p d and writes a
2551  handle to it at address \p pmip.
2552*/
2553int
2554ppl_new_MIP_Problem_from_space_dimension PPL_PROTO((ppl_MIP_Problem_t* pmip,
2555                                                    ppl_dimension_type d));
2556
2557/*! \relates ppl_MIP_Problem_tag \brief
2558  Builds a MIP problem of space dimension \p d having feasible region \p cs,
2559  objective function \p le and optimization mode \p m; writes a handle to
2560  it at address \p pmip.
2561*/
2562int
2563ppl_new_MIP_Problem PPL_PROTO((ppl_MIP_Problem_t* pmip,
2564                               ppl_dimension_type d,
2565                               ppl_const_Constraint_System_t cs,
2566                               ppl_const_Linear_Expression_t le,
2567                               int m));
2568
2569/*! \relates ppl_MIP_Problem_tag \brief
2570  Builds a MIP problem that is a copy of \p mip; writes a handle
2571  for the newly created system at address \p pmip.
2572*/
2573int
2574ppl_new_MIP_Problem_from_MIP_Problem
2575PPL_PROTO((ppl_MIP_Problem_t* pmip, ppl_const_MIP_Problem_t mip));
2576
2577/*! \relates ppl_MIP_Problem_tag \brief
2578  Assigns a copy of the MIP problem \p src to \p dst.
2579*/
2580int
2581ppl_assign_MIP_Problem_from_MIP_Problem
2582PPL_PROTO((ppl_MIP_Problem_t dst, ppl_const_MIP_Problem_t src));
2583
2584/*! \relates ppl_MIP_Problem_tag \brief
2585  Invalidates the handle \p mip: this makes sure the corresponding
2586  resources will eventually be released.
2587*/
2588int
2589ppl_delete_MIP_Problem PPL_PROTO((ppl_const_MIP_Problem_t mip));
2590
2591/*@}*/ /* Constructors, Assignment and Destructor for MIP_Problem */
2592
2593/*! \brief \name Functions that Do Not Modify the MIP_Problem */
2594/*@{*/
2595
2596/*! \relates ppl_MIP_Problem_tag \brief
2597  Writes to \p m the dimension of the vector space enclosing \p mip.
2598*/
2599int
2600ppl_MIP_Problem_space_dimension
2601PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type* m));
2602
2603/*! \relates ppl_MIP_Problem_tag \brief
2604  Writes to \p m the number of integer space dimensions of \p mip.
2605*/
2606int
2607ppl_MIP_Problem_number_of_integer_space_dimensions
2608PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type* m));
2609
2610/*! \relates ppl_MIP_Problem_tag \brief
2611  Writes in the first positions of the array \p ds all the integer space
2612  dimensions of problem \p mip. If the array is not big enough to hold
2613  all of the integer space dimensions, the behavior is undefined.
2614*/
2615int
2616ppl_MIP_Problem_integer_space_dimensions
2617PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type ds[]));
2618
2619/*! \relates ppl_MIP_Problem_tag \brief
2620  Writes to \p m the number of constraints defining
2621  the feasible region of \p mip.
2622*/
2623int
2624ppl_MIP_Problem_number_of_constraints PPL_PROTO((ppl_const_MIP_Problem_t mip,
2625                                                 ppl_dimension_type* m));
2626
2627/*! \relates ppl_MIP_Problem_tag \brief
2628  Writes at address \p pc a const handle to the \p i-th constraint
2629  defining the feasible region of the MIP problem \p mip
2630*/
2631int
2632ppl_MIP_Problem_constraint_at_index PPL_PROTO((ppl_const_MIP_Problem_t mip,
2633                                               ppl_dimension_type i,
2634                                               ppl_const_Constraint_t* pc));
2635
2636/*! \relates ppl_MIP_Problem_tag \brief
2637  Writes a const handle to the linear expression defining the
2638  objective function of the MIP problem \p mip at address \p ple.
2639*/
2640int
2641ppl_MIP_Problem_objective_function
2642PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_const_Linear_Expression_t* ple));
2643
2644/*! \relates ppl_MIP_Problem_tag \brief
2645  Returns the optimization mode of the MIP problem \p mip.
2646*/
2647int
2648ppl_MIP_Problem_optimization_mode PPL_PROTO((ppl_const_MIP_Problem_t mip));
2649
2650/*! \relates ppl_MIP_Problem_tag \brief
2651  Returns a positive integer if \p mip is well formed, i.e., if it
2652  satisfies all its implementation invariants; returns 0 and perhaps
2653  makes some noise if \p mip is broken.  Useful for debugging purposes.
2654*/
2655int
2656ppl_MIP_Problem_OK PPL_PROTO((ppl_const_MIP_Problem_t mip));
2657
2658/*@}*/ /* Functions that Do Not Modify the MIP_Problem */
2659
2660/*! \brief \name Functions that May Modify the MIP_Problem */
2661/*@{*/
2662
2663/*! \relates ppl_MIP_Problem_tag \brief
2664  Resets the MIP problem to be a trivial problem of space dimension 0.
2665*/
2666int
2667ppl_MIP_Problem_clear PPL_PROTO((ppl_MIP_Problem_t mip));
2668
2669/*! \relates ppl_MIP_Problem_tag \brief
2670  Adds \p d new dimensions to the space enclosing the MIP problem \p mip
2671  and to \p mip itself.
2672*/
2673int
2674ppl_MIP_Problem_add_space_dimensions_and_embed
2675PPL_PROTO((ppl_MIP_Problem_t mip, ppl_dimension_type d));
2676
2677/*! \relates ppl_MIP_Problem_tag \brief
2678  Sets the space dimensions that are specified in first \p n positions
2679  of the array \p ds to be integer dimensions of problem \p mip.
2680  The presence of duplicates in \p ds is a waste but an innocuous one.
2681*/
2682int
2683ppl_MIP_Problem_add_to_integer_space_dimensions
2684PPL_PROTO((ppl_MIP_Problem_t mip, ppl_dimension_type ds[], size_t n));
2685
2686/*! \relates ppl_MIP_Problem_tag \brief
2687  Modifies the feasible region of the MIP problem \p mip by adding a copy
2688  of the constraint \p c.
2689*/
2690int
2691ppl_MIP_Problem_add_constraint PPL_PROTO((ppl_MIP_Problem_t mip,
2692                                          ppl_const_Constraint_t c));
2693
2694/*! \relates ppl_MIP_Problem_tag \brief
2695  Modifies the feasible region of the MIP problem \p mip by adding a copy
2696  of the constraints in \p cs.
2697*/
2698int
2699ppl_MIP_Problem_add_constraints PPL_PROTO((ppl_MIP_Problem_t mip,
2700                                           ppl_const_Constraint_System_t cs));
2701
2702/*! \relates ppl_MIP_Problem_tag \brief
2703  Sets the objective function of the MIP problem \p mip to a copy of \p le.
2704*/
2705int
2706ppl_MIP_Problem_set_objective_function
2707PPL_PROTO((ppl_MIP_Problem_t mip, ppl_const_Linear_Expression_t le));
2708
2709/*! \relates ppl_MIP_Problem_tag \brief
2710  Sets the optimization mode of the MIP problem \p mip to \p mode.
2711*/
2712int
2713ppl_MIP_Problem_set_optimization_mode PPL_PROTO((ppl_MIP_Problem_t mip,
2714                                                 int mode));
2715
2716/*@}*/ /* Functions that May Modify the MIP_Problem */
2717
2718/*! \brief \name Computing the Solution of the MIP_Problem */
2719/*@{*/
2720
2721/*! \relates ppl_MIP_Problem_tag \brief
2722  Returns a positive integer if \p mip is satisfiable; returns 0 otherwise.
2723*/
2724int
2725ppl_MIP_Problem_is_satisfiable PPL_PROTO((ppl_const_MIP_Problem_t mip));
2726
2727/*! \relates ppl_MIP_Problem_tag \brief
2728  Solves the MIP problem \p mip, returning an exit status.
2729
2730  \return
2731  <CODE>PPL_MIP_PROBLEM_STATUS_UNFEASIBLE</CODE> if the MIP problem
2732  is not satisfiable;
2733  <CODE>PPL_MIP_PROBLEM_STATUS_UNBOUNDED</CODE> if the MIP problem
2734  is satisfiable but there is no finite bound to the value of
2735  the objective function;
2736  <CODE>PPL_MIP_PROBLEM_STATUS_OPTIMIZED</CODE> if the MIP problem
2737  admits an optimal solution.
2738*/
2739int
2740ppl_MIP_Problem_solve PPL_PROTO((ppl_const_MIP_Problem_t mip));
2741
2742/*! \relates ppl_MIP_Problem_tag \brief
2743  Evaluates the objective function of \p mip on point \p g.
2744
2745  \param mip
2746  The MIP problem defining the objective function;
2747
2748  \param g
2749  The generator on which the objective function will be evaluated;
2750
2751  \param num
2752  Will be assigned the numerator of the objective function value;
2753
2754  \param den
2755  Will be assigned the denominator of the objective function value;
2756*/
2757int
2758ppl_MIP_Problem_evaluate_objective_function
2759PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_const_Generator_t g,
2760           ppl_Coefficient_t num, ppl_Coefficient_t den));
2761
2762/*! \relates ppl_MIP_Problem_tag \brief
2763  Writes a const handle to a feasible point for the MIP problem \p mip
2764  at address \p pg.
2765*/
2766int
2767ppl_MIP_Problem_feasible_point PPL_PROTO((ppl_const_MIP_Problem_t mip,
2768                                          ppl_const_Generator_t* pg));
2769
2770/*! \relates ppl_MIP_Problem_tag \brief
2771  Writes a const handle to an optimizing point for the MIP problem \p mip
2772  at address \p pg.
2773*/
2774int
2775ppl_MIP_Problem_optimizing_point PPL_PROTO((ppl_const_MIP_Problem_t mip,
2776                                            ppl_const_Generator_t* pg));
2777
2778/*! \relates ppl_MIP_Problem_tag \brief
2779  Returns the optimal value for \p mip.
2780
2781  \param mip
2782  The MIP problem;
2783
2784  \param num
2785  Will be assigned the numerator of the optimal value;
2786
2787  \param den
2788  Will be assigned the denominator of the optimal value.
2789*/
2790int
2791ppl_MIP_Problem_optimal_value
2792PPL_PROTO((ppl_const_MIP_Problem_t mip,
2793           ppl_Coefficient_t num, ppl_Coefficient_t den));
2794
2795/*@}*/ /* Computing the Solution of the MIP_Problem */
2796
2797/*! \brief \name Querying/Setting Control Parameters */
2798/*@{*/
2799
2800/*! \relates ppl_MIP_Problem_tag \brief
2801  Returns the value of control parameter \p name in problem \p mip.
2802*/
2803int
2804ppl_MIP_Problem_get_control_parameter
2805PPL_PROTO((ppl_const_MIP_Problem_t mip, int name));
2806
2807/*! \relates ppl_MIP_Problem_tag \brief
2808  Sets control parameter \p value in problem \p mip.
2809*/
2810int
2811ppl_MIP_Problem_set_control_parameter
2812PPL_PROTO((ppl_MIP_Problem_t mip, int value));
2813
2814/*! \relates ppl_MIP_Problem_tag \brief
2815  Writes into \p *sz the size in bytes of the memory occupied by \p mip.
2816*/
2817int
2818ppl_MIP_Problem_total_memory_in_bytes
2819PPL_PROTO((ppl_const_MIP_Problem_t mip, size_t* sz));
2820
2821/*! \relates ppl_MIP_Problem_tag \brief
2822  Writes into \p *sz the size in bytes of the memory managed by \p mip.
2823*/
2824int
2825ppl_MIP_Problem_external_memory_in_bytes
2826PPL_PROTO((ppl_const_MIP_Problem_t mip, size_t* sz));
2827
2828/*@}*/ /* Querying/Setting Control Parameters */
2829
2830
2831/*! \brief \name Constructors, Assignment and Destructor */
2832/*@{*/
2833
2834/*! \relates ppl_PIP_Problem_tag \brief
2835  Builds a trivial PIP problem of dimension \p d and writes a
2836  handle to it at address \p ppip.
2837*/
2838int
2839ppl_new_PIP_Problem_from_space_dimension PPL_PROTO((ppl_PIP_Problem_t* ppip,
2840                                                    ppl_dimension_type d));
2841
2842/*! \relates ppl_PIP_Problem_tag \brief
2843  Builds a PIP problem that is a copy of \p pip; writes a handle
2844  for the newly created problem at address \p ppip.
2845*/
2846int
2847ppl_new_PIP_Problem_from_PIP_Problem
2848PPL_PROTO((ppl_PIP_Problem_t* ppip, ppl_const_PIP_Problem_t pip));
2849
2850/*! \relates ppl_PIP_Problem_tag \brief
2851  Assigns a copy of the PIP problem \p src to \p dst.
2852*/
2853int
2854ppl_assign_PIP_Problem_from_PIP_Problem
2855PPL_PROTO((ppl_PIP_Problem_t dst, ppl_const_PIP_Problem_t src));
2856
2857/*! \relates ppl_PIP_Problem_tag \brief
2858  Builds a PIP problem having space dimension \p d from the sequence
2859  of constraints in the range \f$[\mathrm{first}, \mathrm{last})\f$;
2860  the \p n dimensions whose indices occur in \p ds are interpreted as
2861  parameters.
2862*/
2863int
2864ppl_new_PIP_Problem_from_constraints
2865PPL_PROTO((ppl_PIP_Problem_t* ppip,
2866           ppl_dimension_type d,
2867           ppl_Constraint_System_const_iterator_t first,
2868           ppl_Constraint_System_const_iterator_t last,
2869           size_t n,
2870           ppl_dimension_type ds[]));
2871
2872/*! \relates ppl_PIP_Problem_tag \brief
2873  Invalidates the handle \p pip: this makes sure the corresponding
2874  resources will eventually be released.
2875*/
2876int
2877ppl_delete_PIP_Problem PPL_PROTO((ppl_const_PIP_Problem_t pip));
2878
2879/*@}*/ /* Constructors, Assignment and Destructor for PIP_Problem */
2880
2881/*! \brief \name Functions that Do Not Modify the PIP_Problem */
2882/*@{*/
2883
2884/*! \relates ppl_PIP_Problem_tag \brief
2885  Writes to \p m the dimension of the vector space enclosing \p pip.
2886
2887  The vector space dimensions includes both the problem variables
2888  and the problem parameters, but they do not include the artificial
2889  parameters.
2890*/
2891int
2892ppl_PIP_Problem_space_dimension
2893PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* m));
2894
2895/*! \relates ppl_PIP_Problem_tag \brief
2896  Writes to \p m the number of parameter space dimensions of \p pip.
2897*/
2898int
2899ppl_PIP_Problem_number_of_parameter_space_dimensions
2900PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* m));
2901
2902/*! \relates ppl_PIP_Problem_tag \brief
2903  Writes in the first positions of the array \p ds all the parameter space
2904  dimensions of problem \p pip. If the array is not big enough to hold
2905  all of the parameter space dimensions, the behavior is undefined.
2906*/
2907int
2908ppl_PIP_Problem_parameter_space_dimensions
2909PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type ds[]));
2910
2911/*! \relates ppl_PIP_Problem_tag \brief
2912  Writes into \p *pd the big parameter dimension of PIP problem \p pip.
2913*/
2914int
2915ppl_PIP_Problem_get_big_parameter_dimension
2916PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* pd));
2917
2918/*! \relates ppl_PIP_Problem_tag \brief
2919  Writes to \p m the number of constraints defining
2920  the feasible region of \p pip.
2921*/
2922int
2923ppl_PIP_Problem_number_of_constraints PPL_PROTO((ppl_const_PIP_Problem_t pip,
2924                                                 ppl_dimension_type* m));
2925
2926/*! \relates ppl_PIP_Problem_tag \brief
2927  Writes at address \p pc a const handle to the \p i-th constraint
2928  defining the feasible region of the PIP problem \p pip
2929*/
2930int
2931ppl_PIP_Problem_constraint_at_index PPL_PROTO((ppl_const_PIP_Problem_t pip,
2932                                               ppl_dimension_type i,
2933                                               ppl_const_Constraint_t* pc));
2934
2935/*! \relates ppl_PIP_Problem_tag \brief
2936  Writes into \p *sz the size in bytes of the memory occupied by \p pip.
2937*/
2938int
2939ppl_PIP_Problem_total_memory_in_bytes
2940PPL_PROTO((ppl_const_PIP_Problem_t pip, size_t* sz));
2941
2942/*! \relates ppl_PIP_Problem_tag \brief
2943  Writes into \p *sz the size in bytes of the memory managed by \p pip.
2944*/
2945int
2946ppl_PIP_Problem_external_memory_in_bytes
2947PPL_PROTO((ppl_const_PIP_Problem_t pip, size_t* sz));
2948
2949/*! \relates ppl_PIP_Problem_tag \brief
2950  Returns a positive integer if \p pip is well formed, i.e., if it
2951  satisfies all its implementation invariants; returns 0 and perhaps
2952  makes some noise if \p pip is broken.  Useful for debugging purposes.
2953*/
2954int
2955ppl_PIP_Problem_OK PPL_PROTO((ppl_const_PIP_Problem_t pip));
2956
2957/*@}*/ /* Functions that Do Not Modify the PIP_Problem */
2958
2959/*! \brief \name Functions that May Modify the PIP_Problem */
2960/*@{*/
2961
2962/*! \relates ppl_PIP_Problem_tag \brief
2963  Resets the PIP problem to be a trivial problem of space dimension 0.
2964*/
2965int
2966ppl_PIP_Problem_clear PPL_PROTO((ppl_PIP_Problem_t pip));
2967
2968/*! \relates ppl_PIP_Problem_tag \brief
2969  Adds <CODE>pip_vars + pip_params</CODE> new space dimensions
2970  and embeds the PIP problem \p pip in the new vector space.
2971
2972  \param pip
2973  The PIP problem to be embedded in the new vector space.
2974
2975  \param pip_vars
2976  The number of space dimensions to add that are interpreted as
2977  PIP problem variables (i.e., non parameters). These are added
2978  \e before adding the \p pip_params parameters.
2979
2980  \param pip_params
2981  The number of space dimensions to add that are interpreted as
2982  PIP problem parameters. These are added \e after having added the
2983  \p pip_vars problem variables.
2984
2985  The new space dimensions will be those having the highest indexes
2986  in the new PIP problem; they are initially unconstrained.
2987*/
2988int
2989ppl_PIP_Problem_add_space_dimensions_and_embed
2990PPL_PROTO((ppl_PIP_Problem_t pip,
2991           ppl_dimension_type pip_vars,
2992           ppl_dimension_type pip_params));
2993
2994/*! \relates ppl_PIP_Problem_tag \brief
2995  Sets the space dimensions that are specified in first \p n positions
2996  of the array \p ds to be parameter dimensions of problem \p pip.
2997  The presence of duplicates in \p ds is a waste but an innocuous one.
2998*/
2999int
3000ppl_PIP_Problem_add_to_parameter_space_dimensions
3001PPL_PROTO((ppl_PIP_Problem_t pip, ppl_dimension_type ds[], size_t n));
3002
3003/*! \relates ppl_PIP_Problem_tag \brief
3004  Sets the big parameter dimension of PIP problem \p pip to \p d.
3005*/
3006int
3007ppl_PIP_Problem_set_big_parameter_dimension
3008PPL_PROTO((ppl_PIP_Problem_t pip, ppl_dimension_type d));
3009
3010/*! \relates ppl_PIP_Problem_tag \brief
3011  Modifies the feasible region of the PIP problem \p pip by adding a copy
3012  of the constraint \p c.
3013*/
3014int
3015ppl_PIP_Problem_add_constraint PPL_PROTO((ppl_PIP_Problem_t pip,
3016                                          ppl_const_Constraint_t c));
3017
3018/*! \relates ppl_PIP_Problem_tag \brief
3019  Modifies the feasible region of the PIP problem \p pip by adding a copy
3020  of the constraints in \p cs.
3021*/
3022int
3023ppl_PIP_Problem_add_constraints PPL_PROTO((ppl_PIP_Problem_t pip,
3024                                           ppl_const_Constraint_System_t cs));
3025
3026/*@}*/ /* Functions that May Modify the PIP_Problem */
3027
3028/*! \brief \name Computing and Printing the Solution of the PIP_Problem */
3029/*@{*/
3030
3031/*! \relates ppl_PIP_Problem_tag \brief
3032  Returns a positive integer if \p pip is satisfiable and an optimal
3033  solution can be found; returns 0 otherwise.
3034*/
3035int
3036ppl_PIP_Problem_is_satisfiable PPL_PROTO((ppl_const_PIP_Problem_t pip));
3037
3038/*! \relates ppl_PIP_Problem_tag \brief
3039  Solves the PIP problem \p pip, returning an exit status.
3040
3041  \return
3042  <CODE>PPL_PIP_PROBLEM_STATUS_UNFEASIBLE</CODE> if the PIP problem
3043  is not satisfiable;
3044  <CODE>PPL_PIP_PROBLEM_STATUS_OPTIMIZED</CODE> if the PIP problem
3045  admits an optimal solution.
3046*/
3047int
3048ppl_PIP_Problem_solve PPL_PROTO((ppl_const_PIP_Problem_t pip));
3049
3050/*! \relates ppl_PIP_Problem_tag \brief
3051  Writes to \p pip_tree a solution for \p pip, if it exists.
3052*/
3053int
3054ppl_PIP_Problem_solution PPL_PROTO((ppl_const_PIP_Problem_t pip,
3055                                    ppl_const_PIP_Tree_Node_t* pip_tree));
3056
3057/*! \relates ppl_PIP_Problem_tag \brief
3058  Writes to \p pip_tree an optimizing solution for \p pip, if it exists.
3059*/
3060int
3061ppl_PIP_Problem_optimizing_solution
3062PPL_PROTO((ppl_const_PIP_Problem_t pip,
3063           ppl_const_PIP_Tree_Node_t* pip_tree));
3064
3065/*@}*/ /* Computing the Solution of the PIP_Problem */
3066
3067/*! \brief \name Querying/Setting Control Parameters */
3068/*@{*/
3069
3070/*! \relates ppl_PIP_Problem_tag \brief
3071  Returns the value of control parameter \p name in problem \p pip.
3072*/
3073int
3074ppl_PIP_Problem_get_control_parameter
3075PPL_PROTO((ppl_const_PIP_Problem_t pip, int name));
3076
3077/*! \relates ppl_PIP_Problem_tag \brief
3078  Sets control parameter \p value in problem \p pip.
3079*/
3080int
3081ppl_PIP_Problem_set_control_parameter
3082PPL_PROTO((ppl_PIP_Problem_t pip, int value));
3083
3084/*@}*/ /* Querying/Setting Control Parameters */
3085
3086
3087/*! \relates ppl_PIP_Tree_Node_tag \brief
3088  Writes to \p dpip_tree the solution node if \p spip_tree is
3089  a solution node, and 0 otherwise.
3090*/
3091int
3092ppl_PIP_Tree_Node_as_solution
3093PPL_PROTO((ppl_const_PIP_Tree_Node_t spip_tree,
3094           ppl_const_PIP_Solution_Node_t* dpip_tree));
3095
3096/*! \relates ppl_PIP_Tree_Node_tag \brief
3097  Writes to \p dpip_tree the decision node if \p spip_tree
3098  is a decision node, and 0 otherwise.
3099*/
3100int
3101ppl_PIP_Tree_Node_as_decision
3102PPL_PROTO((ppl_const_PIP_Tree_Node_t spip_tree,
3103           ppl_const_PIP_Decision_Node_t* dpip_tree));
3104
3105/*! \relates ppl_PIP_Tree_Node_tag \brief
3106  Writes to \p pcs the local system of parameter constraints
3107  at the pip tree node \p pip_tree.
3108*/
3109int
3110ppl_PIP_Tree_Node_get_constraints
3111PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
3112           ppl_const_Constraint_System_t* pcs));
3113
3114/*! \relates ppl_PIP_Tree_Node_tag \brief
3115  Returns a positive integer if \p pip_tree is well formed, i.e., if it
3116  satisfies all its implementation invariants; returns 0 and perhaps
3117  makes some noise if \p pip_tree is broken.  Useful for debugging purposes.
3118*/
3119int
3120ppl_PIP_Tree_Node_OK PPL_PROTO((ppl_const_PIP_Tree_Node_t pip));
3121
3122/*! \relates ppl_PIP_Tree_Node_tag \brief
3123  Writes to \p m the number of elements in the artificial parameter sequence
3124  in the pip tree node \p pip_tree.
3125*/
3126int
3127ppl_PIP_Tree_Node_number_of_artificials
3128PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
3129           ppl_dimension_type* m));
3130
3131/*! \relates ppl_PIP_Tree_Node_tag \brief
3132  Assigns to \p pit a const iterator "pointing" to the beginning of
3133  the artificial parameter sequence in the pip tree node \p pip_tree.
3134*/
3135int
3136ppl_PIP_Tree_Node_begin
3137PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
3138           ppl_Artificial_Parameter_Sequence_const_iterator_t pit));
3139
3140/*! \relates ppl_PIP_Tree_Node_tag \brief
3141  Assigns to \p pit a const iterator "pointing" to the end of
3142  the artificial parameter sequence in the pip tree node \p pip_tree.
3143*/
3144int
3145ppl_PIP_Tree_Node_end
3146PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
3147           ppl_Artificial_Parameter_Sequence_const_iterator_t pit));
3148
3149/*! \relates ppl_PIP_Solution_Node_tag \brief
3150  Writes to \p le a const pointer to the parametric expression of the values
3151  of variable \p var in solution node \p pip_sol.
3152
3153  The linear expression assigned to \p le will only refer to
3154  (problem or artificial) parameters.
3155
3156  \param pip_sol
3157  The solution tree node.
3158
3159  \param var
3160  The variable which is queried about.
3161
3162  \param le
3163  The returned expression for variable \p var.
3164
3165  \return PPL_ERROR_INVALID_ARGUMENT
3166  Returned if \p var is dimension-incompatible with \p *this
3167  or if \p var is a problem parameter.
3168*/
3169int
3170ppl_PIP_Solution_Node_get_parametric_values
3171PPL_PROTO((ppl_const_PIP_Solution_Node_t pip_sol,
3172           ppl_dimension_type var,
3173           ppl_const_Linear_Expression_t* le));
3174
3175/*! \relates ppl_PIP_Decision_Node_tag \brief
3176  Writes to \p pip_tree a const pointer to either the true branch
3177  (if \p b is not zero) or the false branch (if \p b is zero) of \p pip_dec.
3178*/
3179int
3180ppl_PIP_Decision_Node_get_child_node
3181PPL_PROTO((ppl_const_PIP_Decision_Node_t pip_dec,
3182           int b,
3183           ppl_const_PIP_Tree_Node_t* pip_tree));
3184
3185/*! \relates ppl_Artificial_Parameter_tag \brief
3186  Copies into \p le the linear expression in artificial parameter \p ap.
3187*/
3188int
3189ppl_Artificial_Parameter_get_Linear_Expression
3190PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
3191           ppl_Linear_Expression_t le));
3192
3193/*! \relates ppl_Artificial_Parameter_tag \brief
3194  Copies into \p n the coefficient of variable \p var in
3195  the artificial parameter \p ap.
3196*/
3197int
3198ppl_Artificial_Parameter_coefficient
3199PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
3200           ppl_dimension_type var,
3201           ppl_Coefficient_t n));
3202
3203/*! \relates ppl_Artificial_Parameter_tag \brief
3204  Copies into \p n the inhomogeneous term of the artificial
3205  parameter \p ap.
3206*/
3207int
3208ppl_Artificial_Parameter_get_inhomogeneous_term
3209PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
3210           ppl_Coefficient_t n));
3211
3212/*! \relates ppl_Artificial_Parameter_tag \brief
3213  Copies into \p n the denominator in artificial parameter \p ap.
3214*/
3215int
3216ppl_Artificial_Parameter_denominator
3217PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
3218           ppl_Coefficient_t n));
3219
3220/*! \brief \name Constructors, Assignment and Destructor */
3221/*@{*/
3222
3223/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3224  Builds a new `const iterator' and writes a handle to it at address
3225  \p papit.
3226*/
3227int
3228ppl_new_Artificial_Parameter_Sequence_const_iterator
3229PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t* papit));
3230
3231/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3232  Builds a const iterator that is a copy of \p apit; writes a
3233  handle for the newly created const iterator at address \p papit.
3234*/
3235int
3236ppl_new_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator
3237PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t* papit,
3238           ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit));
3239
3240/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3241  Assigns a copy of the const iterator \p src to \p dst.
3242*/
3243int
3244ppl_assign_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator
3245PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t dst,
3246           ppl_const_Artificial_Parameter_Sequence_const_iterator_t src));
3247
3248/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3249  Invalidates the handle \p apit: this makes sure the corresponding
3250  resources will eventually be released.
3251*/
3252int
3253ppl_delete_Artificial_Parameter_Sequence_const_iterator
3254PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit));
3255
3256/*@}*/ /* Constructors, Assignment and Destructor */
3257
3258/*! \brief \name Dereferencing, Incrementing and Equality Testing */
3259/*@{*/
3260
3261/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3262  Dereference \p apit writing a const handle to the resulting
3263  artificial parameter at address \p pap.
3264*/
3265int
3266ppl_Artificial_Parameter_Sequence_const_iterator_dereference
3267PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit,
3268           ppl_const_Artificial_Parameter_t* pap));
3269
3270/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3271  Increment \p apit so that it "points" to the next artificial parameter.
3272*/
3273int
3274ppl_Artificial_Parameter_Sequence_const_iterator_increment
3275PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t apit));
3276
3277/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief
3278  Returns a positive integer if the iterators corresponding to \p x and
3279  \p y are equal; returns 0 if they are different.
3280*/
3281int
3282ppl_Artificial_Parameter_Sequence_const_iterator_equal_test
3283PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t x,
3284           ppl_const_Artificial_Parameter_Sequence_const_iterator_t y));
3285
3286/*@}*/ /* Dereferencing, Incrementing and Equality Testing */
3287
3288PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(MIP_Problem)
3289
3290PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Problem)
3291
3292PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Tree_Node)
3293
3294PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Solution_Node)
3295
3296PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Decision_Node)
3297
3298PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Artificial_Parameter)
3299
3300/* Automatically generated from PPL source file ../../interfaces/C/ppl_c_domains.h line 1. */
3301/*C interface code: header file.
3302*/
3303
3304PPL_TYPE_DECLARATION(Polyhedron)
3305PPL_TYPE_DECLARATION(Grid)
3306PPL_TYPE_DECLARATION(Rational_Box)
3307PPL_TYPE_DECLARATION(BD_Shape_mpz_class)
3308PPL_TYPE_DECLARATION(BD_Shape_mpq_class)
3309PPL_TYPE_DECLARATION(Octagonal_Shape_mpz_class)
3310PPL_TYPE_DECLARATION(Octagonal_Shape_mpq_class)
3311PPL_TYPE_DECLARATION(Constraints_Product_C_Polyhedron_Grid)
3312PPL_TYPE_DECLARATION(Pointset_Powerset_C_Polyhedron)
3313PPL_TYPE_DECLARATION(Pointset_Powerset_NNC_Polyhedron)
3314PPL_TYPE_DECLARATION(Double_Box)
3315PPL_TYPE_DECLARATION(BD_Shape_double)
3316PPL_TYPE_DECLARATION(Octagonal_Shape_double)
3317
3318/*! \interface ppl_Polyhedron_tag
3319  \brief Types and functions for ppl_Polyhedron_tag
3320*/
3321
3322/*! \relates ppl_Polyhedron_tag */
3323int
3324ppl_delete_Polyhedron
3325PPL_PROTO((ppl_const_Polyhedron_t ph));
3326
3327
3328
3329
3330/*! \relates ppl_Polyhedron_tag */
3331int
3332ppl_new_C_Polyhedron_from_space_dimension
3333PPL_PROTO((ppl_Polyhedron_t* pph, ppl_dimension_type d, int empty));
3334
3335/*! \relates ppl_Polyhedron_tag */
3336int
3337ppl_new_NNC_Polyhedron_from_space_dimension
3338PPL_PROTO((ppl_Polyhedron_t* pph, ppl_dimension_type d, int empty));
3339
3340
3341
3342
3343
3344/*! \relates ppl_Polyhedron_tag */
3345int
3346ppl_new_C_Polyhedron_from_C_Polyhedron
3347PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
3348
3349/*! \relates ppl_Polyhedron_tag */
3350int
3351ppl_new_NNC_Polyhedron_from_C_Polyhedron
3352PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
3353
3354/*! \relates ppl_Polyhedron_tag */
3355int
3356ppl_new_C_Polyhedron_from_NNC_Polyhedron
3357PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
3358
3359/*! \relates ppl_Polyhedron_tag */
3360int
3361ppl_new_NNC_Polyhedron_from_NNC_Polyhedron
3362PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
3363
3364/*! \relates ppl_Polyhedron_tag */
3365int
3366ppl_new_C_Polyhedron_from_Grid
3367PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Grid_t ph));
3368
3369/*! \relates ppl_Polyhedron_tag */
3370int
3371ppl_new_NNC_Polyhedron_from_Grid
3372PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Grid_t ph));
3373
3374/*! \relates ppl_Polyhedron_tag */
3375int
3376ppl_new_C_Polyhedron_from_Rational_Box
3377PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Rational_Box_t ph));
3378
3379/*! \relates ppl_Polyhedron_tag */
3380int
3381ppl_new_NNC_Polyhedron_from_Rational_Box
3382PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Rational_Box_t ph));
3383
3384/*! \relates ppl_Polyhedron_tag */
3385int
3386ppl_new_C_Polyhedron_from_BD_Shape_mpz_class
3387PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
3388
3389/*! \relates ppl_Polyhedron_tag */
3390int
3391ppl_new_NNC_Polyhedron_from_BD_Shape_mpz_class
3392PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
3393
3394/*! \relates ppl_Polyhedron_tag */
3395int
3396ppl_new_C_Polyhedron_from_BD_Shape_mpq_class
3397PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
3398
3399/*! \relates ppl_Polyhedron_tag */
3400int
3401ppl_new_NNC_Polyhedron_from_BD_Shape_mpq_class
3402PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
3403
3404/*! \relates ppl_Polyhedron_tag */
3405int
3406ppl_new_C_Polyhedron_from_Octagonal_Shape_mpz_class
3407PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
3408
3409/*! \relates ppl_Polyhedron_tag */
3410int
3411ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpz_class
3412PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
3413
3414/*! \relates ppl_Polyhedron_tag */
3415int
3416ppl_new_C_Polyhedron_from_Octagonal_Shape_mpq_class
3417PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
3418
3419/*! \relates ppl_Polyhedron_tag */
3420int
3421ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpq_class
3422PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
3423
3424/*! \relates ppl_Polyhedron_tag */
3425int
3426ppl_new_C_Polyhedron_from_Double_Box
3427PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Double_Box_t ph));
3428
3429/*! \relates ppl_Polyhedron_tag */
3430int
3431ppl_new_NNC_Polyhedron_from_Double_Box
3432PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Double_Box_t ph));
3433
3434/*! \relates ppl_Polyhedron_tag */
3435int
3436ppl_new_C_Polyhedron_from_BD_Shape_double
3437PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_double_t ph));
3438
3439/*! \relates ppl_Polyhedron_tag */
3440int
3441ppl_new_NNC_Polyhedron_from_BD_Shape_double
3442PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_double_t ph));
3443
3444/*! \relates ppl_Polyhedron_tag */
3445int
3446ppl_new_C_Polyhedron_from_Octagonal_Shape_double
3447PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_double_t ph));
3448
3449/*! \relates ppl_Polyhedron_tag */
3450int
3451ppl_new_NNC_Polyhedron_from_Octagonal_Shape_double
3452PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_double_t ph));
3453
3454
3455
3456
3457
3458
3459/*! \relates ppl_Polyhedron_tag */
3460int
3461ppl_new_C_Polyhedron_from_C_Polyhedron_with_complexity
3462PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
3463
3464/*! \relates ppl_Polyhedron_tag */
3465int
3466ppl_new_NNC_Polyhedron_from_C_Polyhedron_with_complexity
3467PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
3468
3469/*! \relates ppl_Polyhedron_tag */
3470int
3471ppl_new_C_Polyhedron_from_NNC_Polyhedron_with_complexity
3472PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
3473
3474/*! \relates ppl_Polyhedron_tag */
3475int
3476ppl_new_NNC_Polyhedron_from_NNC_Polyhedron_with_complexity
3477PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
3478
3479/*! \relates ppl_Polyhedron_tag */
3480int
3481ppl_new_C_Polyhedron_from_Grid_with_complexity
3482PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Grid_t ph, int complexity));
3483
3484/*! \relates ppl_Polyhedron_tag */
3485int
3486ppl_new_NNC_Polyhedron_from_Grid_with_complexity
3487PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Grid_t ph, int complexity));
3488
3489/*! \relates ppl_Polyhedron_tag */
3490int
3491ppl_new_C_Polyhedron_from_Rational_Box_with_complexity
3492PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Rational_Box_t ph, int complexity));
3493
3494/*! \relates ppl_Polyhedron_tag */
3495int
3496ppl_new_NNC_Polyhedron_from_Rational_Box_with_complexity
3497PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Rational_Box_t ph, int complexity));
3498
3499/*! \relates ppl_Polyhedron_tag */
3500int
3501ppl_new_C_Polyhedron_from_BD_Shape_mpz_class_with_complexity
3502PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
3503
3504/*! \relates ppl_Polyhedron_tag */
3505int
3506ppl_new_NNC_Polyhedron_from_BD_Shape_mpz_class_with_complexity
3507PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
3508
3509/*! \relates ppl_Polyhedron_tag */
3510int
3511ppl_new_C_Polyhedron_from_BD_Shape_mpq_class_with_complexity
3512PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
3513
3514/*! \relates ppl_Polyhedron_tag */
3515int
3516ppl_new_NNC_Polyhedron_from_BD_Shape_mpq_class_with_complexity
3517PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
3518
3519/*! \relates ppl_Polyhedron_tag */
3520int
3521ppl_new_C_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity
3522PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
3523
3524/*! \relates ppl_Polyhedron_tag */
3525int
3526ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpz_class_with_complexity
3527PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
3528
3529/*! \relates ppl_Polyhedron_tag */
3530int
3531ppl_new_C_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity
3532PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
3533
3534/*! \relates ppl_Polyhedron_tag */
3535int
3536ppl_new_NNC_Polyhedron_from_Octagonal_Shape_mpq_class_with_complexity
3537PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
3538
3539/*! \relates ppl_Polyhedron_tag */
3540int
3541ppl_new_C_Polyhedron_from_Double_Box_with_complexity
3542PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Double_Box_t ph, int complexity));
3543
3544/*! \relates ppl_Polyhedron_tag */
3545int
3546ppl_new_NNC_Polyhedron_from_Double_Box_with_complexity
3547PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Double_Box_t ph, int complexity));
3548
3549/*! \relates ppl_Polyhedron_tag */
3550int
3551ppl_new_C_Polyhedron_from_BD_Shape_double_with_complexity
3552PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
3553
3554/*! \relates ppl_Polyhedron_tag */
3555int
3556ppl_new_NNC_Polyhedron_from_BD_Shape_double_with_complexity
3557PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
3558
3559/*! \relates ppl_Polyhedron_tag */
3560int
3561ppl_new_C_Polyhedron_from_Octagonal_Shape_double_with_complexity
3562PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
3563
3564/*! \relates ppl_Polyhedron_tag */
3565int
3566ppl_new_NNC_Polyhedron_from_Octagonal_Shape_double_with_complexity
3567PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
3568
3569
3570
3571
3572
3573
3574/*! \relates ppl_Polyhedron_tag */
3575int
3576ppl_new_C_Polyhedron_from_Constraint_System
3577PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Constraint_System_t cs));
3578
3579/*! \relates ppl_Polyhedron_tag */
3580int
3581ppl_new_NNC_Polyhedron_from_Constraint_System
3582PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Constraint_System_t cs));
3583
3584/*! \relates ppl_Polyhedron_tag */
3585int
3586ppl_new_C_Polyhedron_from_Congruence_System
3587PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Congruence_System_t cs));
3588
3589/*! \relates ppl_Polyhedron_tag */
3590int
3591ppl_new_NNC_Polyhedron_from_Congruence_System
3592PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Congruence_System_t cs));
3593
3594/*! \relates ppl_Polyhedron_tag */
3595int
3596ppl_new_C_Polyhedron_from_Generator_System
3597PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Generator_System_t cs));
3598
3599/*! \relates ppl_Polyhedron_tag */
3600int
3601ppl_new_NNC_Polyhedron_from_Generator_System
3602PPL_PROTO((ppl_Polyhedron_t* pph, ppl_const_Generator_System_t cs));
3603
3604
3605
3606
3607
3608
3609
3610
3611/*! \relates ppl_Polyhedron_tag */
3612int
3613ppl_Polyhedron_space_dimension
3614PPL_PROTO((ppl_const_Polyhedron_t ph, ppl_dimension_type* m));
3615
3616/*! \relates ppl_Polyhedron_tag */
3617int
3618ppl_Polyhedron_affine_dimension
3619PPL_PROTO((ppl_const_Polyhedron_t ph, ppl_dimension_type* m));
3620
3621
3622
3623
3624
3625/*! \relates ppl_Polyhedron_tag */
3626int
3627ppl_Polyhedron_relation_with_Constraint
3628PPL_PROTO((ppl_const_Polyhedron_t ph,
3629           ppl_const_Constraint_t c));
3630
3631/*! \relates ppl_Polyhedron_tag */
3632int
3633ppl_Polyhedron_relation_with_Generator
3634PPL_PROTO((ppl_const_Polyhedron_t ph,
3635           ppl_const_Generator_t c));
3636
3637/*! \relates ppl_Polyhedron_tag */
3638int
3639ppl_Polyhedron_relation_with_Congruence
3640PPL_PROTO((ppl_const_Polyhedron_t ph,
3641           ppl_const_Congruence_t c));
3642
3643
3644
3645
3646
3647/*! \relates ppl_Polyhedron_tag */
3648int
3649ppl_Polyhedron_get_constraints
3650PPL_PROTO((ppl_const_Polyhedron_t ph,
3651           ppl_const_Constraint_System_t* pcs));
3652
3653/*! \relates ppl_Polyhedron_tag */
3654int
3655ppl_Polyhedron_get_congruences
3656PPL_PROTO((ppl_const_Polyhedron_t ph,
3657           ppl_const_Congruence_System_t* pcs));
3658
3659/*! \relates ppl_Polyhedron_tag */
3660int
3661ppl_Polyhedron_get_generators
3662PPL_PROTO((ppl_const_Polyhedron_t ph,
3663           ppl_const_Generator_System_t* pcs));
3664
3665
3666
3667
3668
3669/*! \relates ppl_Polyhedron_tag */
3670int
3671ppl_Polyhedron_get_minimized_constraints
3672PPL_PROTO((ppl_const_Polyhedron_t ph,
3673           ppl_const_Constraint_System_t* pcs));
3674
3675/*! \relates ppl_Polyhedron_tag */
3676int
3677ppl_Polyhedron_get_minimized_congruences
3678PPL_PROTO((ppl_const_Polyhedron_t ph,
3679           ppl_const_Congruence_System_t* pcs));
3680
3681/*! \relates ppl_Polyhedron_tag */
3682int
3683ppl_Polyhedron_get_minimized_generators
3684PPL_PROTO((ppl_const_Polyhedron_t ph,
3685           ppl_const_Generator_System_t* pcs));
3686
3687
3688
3689
3690
3691/*! \relates ppl_Polyhedron_tag */
3692int
3693ppl_Polyhedron_is_empty
3694PPL_PROTO((ppl_const_Polyhedron_t ph));
3695
3696/*! \relates ppl_Polyhedron_tag */
3697int
3698ppl_Polyhedron_is_universe
3699PPL_PROTO((ppl_const_Polyhedron_t ph));
3700
3701/*! \relates ppl_Polyhedron_tag */
3702int
3703ppl_Polyhedron_is_bounded
3704PPL_PROTO((ppl_const_Polyhedron_t ph));
3705
3706/*! \relates ppl_Polyhedron_tag */
3707int
3708ppl_Polyhedron_contains_integer_point
3709PPL_PROTO((ppl_const_Polyhedron_t ph));
3710
3711/*! \relates ppl_Polyhedron_tag */
3712int
3713ppl_Polyhedron_is_topologically_closed
3714PPL_PROTO((ppl_const_Polyhedron_t ph));
3715
3716/*! \relates ppl_Polyhedron_tag */
3717int
3718ppl_Polyhedron_is_discrete
3719PPL_PROTO((ppl_const_Polyhedron_t ph));
3720
3721
3722
3723
3724
3725/*! \relates ppl_Polyhedron_tag */
3726int
3727ppl_Polyhedron_topological_closure_assign
3728PPL_PROTO((ppl_Polyhedron_t ph));
3729
3730
3731
3732
3733
3734/*! \relates ppl_Polyhedron_tag */
3735int
3736ppl_Polyhedron_bounds_from_above
3737PPL_PROTO((ppl_const_Polyhedron_t ph,
3738           ppl_const_Linear_Expression_t le));
3739
3740/*! \relates ppl_Polyhedron_tag */
3741int
3742ppl_Polyhedron_bounds_from_below
3743PPL_PROTO((ppl_const_Polyhedron_t ph,
3744           ppl_const_Linear_Expression_t le));
3745
3746
3747
3748
3749
3750/*! \relates ppl_Polyhedron_tag */
3751int
3752ppl_Polyhedron_maximize
3753PPL_PROTO((ppl_const_Polyhedron_t ph,
3754           ppl_const_Linear_Expression_t le,
3755           ppl_Coefficient_t ext_n,
3756           ppl_Coefficient_t ext_d,
3757           int* poptimum));
3758
3759/*! \relates ppl_Polyhedron_tag */
3760int
3761ppl_Polyhedron_minimize
3762PPL_PROTO((ppl_const_Polyhedron_t ph,
3763           ppl_const_Linear_Expression_t le,
3764           ppl_Coefficient_t ext_n,
3765           ppl_Coefficient_t ext_d,
3766           int* poptimum));
3767
3768
3769
3770
3771
3772/*! \relates ppl_Polyhedron_tag */
3773int
3774ppl_Polyhedron_maximize_with_point
3775PPL_PROTO((ppl_const_Polyhedron_t ph,
3776           ppl_const_Linear_Expression_t le,
3777           ppl_Coefficient_t ext_n,
3778           ppl_Coefficient_t ext_d,
3779           int* poptimum,
3780           ppl_Generator_t point));
3781
3782/*! \relates ppl_Polyhedron_tag */
3783int
3784ppl_Polyhedron_minimize_with_point
3785PPL_PROTO((ppl_const_Polyhedron_t ph,
3786           ppl_const_Linear_Expression_t le,
3787           ppl_Coefficient_t ext_n,
3788           ppl_Coefficient_t ext_d,
3789           int* poptimum,
3790           ppl_Generator_t point));
3791
3792
3793
3794
3795
3796/*! \relates ppl_Polyhedron_tag */
3797int
3798ppl_Polyhedron_frequency
3799PPL_PROTO((ppl_const_Polyhedron_t ph,
3800           ppl_const_Linear_Expression_t le,
3801           ppl_Coefficient_t ext_fn,
3802           ppl_Coefficient_t ext_fd,
3803           ppl_Coefficient_t ext_vn,
3804           ppl_Coefficient_t ext_vd));
3805
3806
3807
3808
3809/*! \relates ppl_Polyhedron_tag */
3810int
3811ppl_Polyhedron_contains_Polyhedron
3812PPL_PROTO((ppl_const_Polyhedron_t x,
3813           ppl_const_Polyhedron_t y));
3814
3815/*! \relates ppl_Polyhedron_tag */
3816int
3817ppl_Polyhedron_strictly_contains_Polyhedron
3818PPL_PROTO((ppl_const_Polyhedron_t x,
3819           ppl_const_Polyhedron_t y));
3820
3821/*! \relates ppl_Polyhedron_tag */
3822int
3823ppl_Polyhedron_is_disjoint_from_Polyhedron
3824PPL_PROTO((ppl_const_Polyhedron_t x,
3825           ppl_const_Polyhedron_t y));
3826
3827
3828
3829
3830
3831/*! \relates ppl_Polyhedron_tag */
3832int
3833ppl_Polyhedron_equals_Polyhedron
3834PPL_PROTO((ppl_const_Polyhedron_t x,
3835           ppl_const_Polyhedron_t y));
3836
3837
3838
3839
3840/*! \relates ppl_Polyhedron_tag */
3841int
3842ppl_Polyhedron_OK
3843PPL_PROTO((ppl_const_Polyhedron_t ph));
3844
3845
3846
3847
3848/*! \relates ppl_Polyhedron_tag */
3849int
3850ppl_Polyhedron_add_constraint
3851PPL_PROTO((ppl_Polyhedron_t ph,
3852           ppl_const_Constraint_t c));
3853
3854/*! \relates ppl_Polyhedron_tag */
3855int
3856ppl_Polyhedron_add_congruence
3857PPL_PROTO((ppl_Polyhedron_t ph,
3858           ppl_const_Congruence_t c));
3859
3860/*! \relates ppl_Polyhedron_tag */
3861int
3862ppl_Polyhedron_add_generator
3863PPL_PROTO((ppl_Polyhedron_t ph,
3864           ppl_const_Generator_t c));
3865
3866
3867
3868
3869
3870/*! \relates ppl_Polyhedron_tag */
3871int
3872ppl_Polyhedron_add_constraints
3873PPL_PROTO((ppl_Polyhedron_t ph,
3874           ppl_const_Constraint_System_t cs));
3875
3876/*! \relates ppl_Polyhedron_tag */
3877int
3878ppl_Polyhedron_add_congruences
3879PPL_PROTO((ppl_Polyhedron_t ph,
3880           ppl_const_Congruence_System_t cs));
3881
3882/*! \relates ppl_Polyhedron_tag */
3883int
3884ppl_Polyhedron_add_generators
3885PPL_PROTO((ppl_Polyhedron_t ph,
3886           ppl_const_Generator_System_t cs));
3887
3888
3889
3890
3891
3892/*! \relates ppl_Polyhedron_tag */
3893int
3894ppl_Polyhedron_refine_with_constraint
3895PPL_PROTO((ppl_Polyhedron_t ph,
3896           ppl_const_Constraint_t c));
3897
3898/*! \relates ppl_Polyhedron_tag */
3899int
3900ppl_Polyhedron_refine_with_congruence
3901PPL_PROTO((ppl_Polyhedron_t ph,
3902           ppl_const_Congruence_t c));
3903
3904
3905
3906
3907
3908/*! \relates ppl_Polyhedron_tag */
3909int
3910ppl_Polyhedron_refine_with_constraints
3911PPL_PROTO((ppl_Polyhedron_t ph,
3912           ppl_const_Constraint_System_t cs));
3913
3914/*! \relates ppl_Polyhedron_tag */
3915int
3916ppl_Polyhedron_refine_with_congruences
3917PPL_PROTO((ppl_Polyhedron_t ph,
3918           ppl_const_Congruence_System_t cs));
3919
3920
3921
3922
3923
3924/*! \relates ppl_Polyhedron_tag */
3925int
3926ppl_Polyhedron_intersection_assign
3927PPL_PROTO((ppl_Polyhedron_t x,
3928           ppl_const_Polyhedron_t y));
3929
3930/*! \relates ppl_Polyhedron_tag */
3931int
3932ppl_Polyhedron_upper_bound_assign
3933PPL_PROTO((ppl_Polyhedron_t x,
3934           ppl_const_Polyhedron_t y));
3935
3936/*! \relates ppl_Polyhedron_tag */
3937int
3938ppl_Polyhedron_difference_assign
3939PPL_PROTO((ppl_Polyhedron_t x,
3940           ppl_const_Polyhedron_t y));
3941
3942/*! \relates ppl_Polyhedron_tag */
3943int
3944ppl_Polyhedron_concatenate_assign
3945PPL_PROTO((ppl_Polyhedron_t x,
3946           ppl_const_Polyhedron_t y));
3947
3948/*! \relates ppl_Polyhedron_tag */
3949int
3950ppl_Polyhedron_time_elapse_assign
3951PPL_PROTO((ppl_Polyhedron_t x,
3952           ppl_const_Polyhedron_t y));
3953
3954/*! \relates ppl_Polyhedron_tag */
3955int
3956ppl_Polyhedron_poly_hull_assign
3957PPL_PROTO((ppl_Polyhedron_t x,
3958           ppl_const_Polyhedron_t y));
3959
3960/*! \relates ppl_Polyhedron_tag */
3961int
3962ppl_Polyhedron_poly_difference_assign
3963PPL_PROTO((ppl_Polyhedron_t x,
3964           ppl_const_Polyhedron_t y));
3965
3966
3967
3968
3969
3970/*! \relates ppl_Polyhedron_tag */
3971int
3972ppl_Polyhedron_upper_bound_assign_if_exact
3973PPL_PROTO((ppl_Polyhedron_t x,
3974           ppl_const_Polyhedron_t y));
3975
3976/*! \relates ppl_Polyhedron_tag */
3977int
3978ppl_Polyhedron_poly_hull_assign_if_exact
3979PPL_PROTO((ppl_Polyhedron_t x,
3980           ppl_const_Polyhedron_t y));
3981
3982
3983
3984
3985
3986/*! \relates ppl_Polyhedron_tag */
3987int
3988ppl_Polyhedron_positive_time_elapse_assign
3989PPL_PROTO((ppl_Polyhedron_t x,
3990           ppl_const_Polyhedron_t y));
3991
3992
3993
3994
3995/*! \relates ppl_Polyhedron_tag */
3996int
3997ppl_Polyhedron_simplify_using_context_assign
3998PPL_PROTO((ppl_Polyhedron_t x,
3999           ppl_const_Polyhedron_t y));
4000
4001
4002
4003
4004/*! \relates ppl_Polyhedron_tag */
4005int
4006ppl_Polyhedron_constrains
4007PPL_PROTO((ppl_Polyhedron_t ph,
4008           ppl_dimension_type var));
4009
4010
4011
4012
4013/*! \relates ppl_Polyhedron_tag */
4014int
4015ppl_Polyhedron_unconstrain_space_dimension
4016PPL_PROTO((ppl_Polyhedron_t ph,
4017           ppl_dimension_type var));
4018
4019
4020
4021
4022/*! \relates ppl_Polyhedron_tag */
4023int
4024ppl_Polyhedron_unconstrain_space_dimensions
4025PPL_PROTO((ppl_Polyhedron_t ph,
4026           ppl_dimension_type ds[],
4027           size_t n));
4028
4029
4030
4031
4032/*! \relates ppl_Polyhedron_tag */
4033int
4034ppl_Polyhedron_affine_image
4035PPL_PROTO((ppl_Polyhedron_t ph,
4036           ppl_dimension_type var,
4037           ppl_const_Linear_Expression_t le,
4038           ppl_const_Coefficient_t d));
4039
4040/*! \relates ppl_Polyhedron_tag */
4041int
4042ppl_Polyhedron_affine_preimage
4043PPL_PROTO((ppl_Polyhedron_t ph,
4044           ppl_dimension_type var,
4045           ppl_const_Linear_Expression_t le,
4046           ppl_const_Coefficient_t d));
4047
4048
4049
4050
4051
4052/*! \relates ppl_Polyhedron_tag */
4053int
4054ppl_Polyhedron_bounded_affine_image
4055PPL_PROTO((ppl_Polyhedron_t ph,
4056           ppl_dimension_type var,
4057           ppl_const_Linear_Expression_t lb,
4058           ppl_const_Linear_Expression_t ub,
4059           ppl_const_Coefficient_t d));
4060
4061/*! \relates ppl_Polyhedron_tag */
4062int
4063ppl_Polyhedron_bounded_affine_preimage
4064PPL_PROTO((ppl_Polyhedron_t ph,
4065           ppl_dimension_type var,
4066           ppl_const_Linear_Expression_t lb,
4067           ppl_const_Linear_Expression_t ub,
4068           ppl_const_Coefficient_t d));
4069
4070
4071
4072
4073
4074/*! \relates ppl_Polyhedron_tag */
4075int
4076ppl_Polyhedron_generalized_affine_image
4077PPL_PROTO((ppl_Polyhedron_t ph,
4078           ppl_dimension_type var,
4079           enum ppl_enum_Constraint_Type relsym,
4080           ppl_const_Linear_Expression_t le,
4081           ppl_const_Coefficient_t d));
4082
4083/*! \relates ppl_Polyhedron_tag */
4084int
4085ppl_Polyhedron_generalized_affine_preimage
4086PPL_PROTO((ppl_Polyhedron_t ph,
4087           ppl_dimension_type var,
4088           enum ppl_enum_Constraint_Type relsym,
4089           ppl_const_Linear_Expression_t le,
4090           ppl_const_Coefficient_t d));
4091
4092
4093
4094
4095
4096/*! \relates ppl_Polyhedron_tag */
4097int
4098ppl_Polyhedron_generalized_affine_image_lhs_rhs
4099PPL_PROTO((ppl_Polyhedron_t ph,
4100           ppl_const_Linear_Expression_t lhs,
4101           enum ppl_enum_Constraint_Type relsym,
4102           ppl_const_Linear_Expression_t rhs));
4103
4104/*! \relates ppl_Polyhedron_tag */
4105int
4106ppl_Polyhedron_generalized_affine_preimage_lhs_rhs
4107PPL_PROTO((ppl_Polyhedron_t ph,
4108           ppl_const_Linear_Expression_t lhs,
4109           enum ppl_enum_Constraint_Type relsym,
4110           ppl_const_Linear_Expression_t rhs));
4111
4112
4113
4114
4115
4116/*! \relates ppl_Polyhedron_tag */
4117int
4118ppl_Polyhedron_add_space_dimensions_and_embed
4119PPL_PROTO((ppl_Polyhedron_t ph,
4120           ppl_dimension_type d));
4121
4122/*! \relates ppl_Polyhedron_tag */
4123int
4124ppl_Polyhedron_add_space_dimensions_and_project
4125PPL_PROTO((ppl_Polyhedron_t ph,
4126           ppl_dimension_type d));
4127
4128
4129
4130
4131
4132/*! \relates ppl_Polyhedron_tag */
4133int
4134ppl_Polyhedron_remove_space_dimensions
4135PPL_PROTO((ppl_Polyhedron_t ph,
4136           ppl_dimension_type ds[],
4137           size_t n));
4138
4139
4140
4141
4142/*! \relates ppl_Polyhedron_tag */
4143int
4144ppl_Polyhedron_remove_higher_space_dimensions
4145PPL_PROTO((ppl_Polyhedron_t ph,
4146           ppl_dimension_type d));
4147
4148
4149
4150
4151/*! \relates ppl_Polyhedron_tag */
4152int
4153ppl_Polyhedron_expand_space_dimension
4154PPL_PROTO((ppl_Polyhedron_t ph,
4155           ppl_dimension_type d,
4156           ppl_dimension_type m));
4157
4158
4159
4160
4161/*! \relates ppl_Polyhedron_tag */
4162int
4163ppl_Polyhedron_fold_space_dimensions
4164PPL_PROTO((ppl_Polyhedron_t ph,
4165           ppl_dimension_type ds[],
4166           size_t n,
4167           ppl_dimension_type d));
4168
4169
4170
4171
4172/*! \relates ppl_Polyhedron_tag */
4173int
4174ppl_Polyhedron_map_space_dimensions
4175PPL_PROTO((ppl_Polyhedron_t ph,
4176           ppl_dimension_type maps[],
4177           size_t n));
4178
4179
4180
4181
4182/*! \relates ppl_Polyhedron_tag */
4183int
4184ppl_Polyhedron_drop_some_non_integer_points
4185PPL_PROTO((ppl_Polyhedron_t ph,
4186           int complexity));
4187
4188
4189
4190
4191/*! \relates ppl_Polyhedron_tag */
4192int
4193ppl_Polyhedron_drop_some_non_integer_points_2
4194PPL_PROTO((ppl_Polyhedron_t ph,
4195           ppl_dimension_type ds[],
4196           size_t n,
4197           int complexity));
4198
4199
4200
4201
4202
4203
4204/*! \relates ppl_Polyhedron_tag */
4205int
4206ppl_Polyhedron_external_memory_in_bytes
4207PPL_PROTO((ppl_const_Polyhedron_t ps,
4208           size_t* sz));
4209
4210/*! \relates ppl_Polyhedron_tag */
4211int
4212ppl_Polyhedron_total_memory_in_bytes
4213PPL_PROTO((ppl_const_Polyhedron_t ps,
4214           size_t* sz));
4215
4216
4217
4218
4219
4220/*! \relates ppl_Polyhedron_tag */
4221int
4222ppl_Polyhedron_BHRZ03_widening_assign_with_tokens
4223PPL_PROTO((ppl_Polyhedron_t x,
4224           ppl_const_Polyhedron_t y,
4225           unsigned* tp));
4226
4227/*! \relates ppl_Polyhedron_tag */
4228int
4229ppl_Polyhedron_H79_widening_assign_with_tokens
4230PPL_PROTO((ppl_Polyhedron_t x,
4231           ppl_const_Polyhedron_t y,
4232           unsigned* tp));
4233
4234
4235
4236
4237
4238/*! \relates ppl_Polyhedron_tag */
4239int
4240ppl_Polyhedron_BHRZ03_widening_assign
4241PPL_PROTO((ppl_Polyhedron_t x,
4242           ppl_const_Polyhedron_t y));
4243
4244/*! \relates ppl_Polyhedron_tag */
4245int
4246ppl_Polyhedron_H79_widening_assign
4247PPL_PROTO((ppl_Polyhedron_t x,
4248           ppl_const_Polyhedron_t y));
4249
4250
4251
4252
4253
4254/*! \relates ppl_Polyhedron_tag */
4255int
4256ppl_Polyhedron_widening_assign_with_tokens
4257PPL_PROTO((ppl_Polyhedron_t x,
4258           ppl_const_Polyhedron_t y,
4259           unsigned* tp));
4260
4261
4262
4263
4264/*! \relates ppl_Polyhedron_tag */
4265int
4266ppl_Polyhedron_widening_assign
4267PPL_PROTO((ppl_Polyhedron_t x,
4268           ppl_const_Polyhedron_t y));
4269
4270
4271
4272
4273/*! \relates ppl_Polyhedron_tag */
4274int
4275ppl_Polyhedron_limited_BHRZ03_extrapolation_assign_with_tokens
4276PPL_PROTO((ppl_Polyhedron_t x,
4277           ppl_const_Polyhedron_t y,
4278           ppl_const_Constraint_System_t cs,
4279           unsigned* tp));
4280
4281/*! \relates ppl_Polyhedron_tag */
4282int
4283ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign_with_tokens
4284PPL_PROTO((ppl_Polyhedron_t x,
4285           ppl_const_Polyhedron_t y,
4286           ppl_const_Constraint_System_t cs,
4287           unsigned* tp));
4288
4289/*! \relates ppl_Polyhedron_tag */
4290int
4291ppl_Polyhedron_limited_H79_extrapolation_assign_with_tokens
4292PPL_PROTO((ppl_Polyhedron_t x,
4293           ppl_const_Polyhedron_t y,
4294           ppl_const_Constraint_System_t cs,
4295           unsigned* tp));
4296
4297/*! \relates ppl_Polyhedron_tag */
4298int
4299ppl_Polyhedron_bounded_H79_extrapolation_assign_with_tokens
4300PPL_PROTO((ppl_Polyhedron_t x,
4301           ppl_const_Polyhedron_t y,
4302           ppl_const_Constraint_System_t cs,
4303           unsigned* tp));
4304
4305
4306
4307
4308
4309
4310
4311/*! \relates ppl_Polyhedron_tag */
4312int
4313ppl_Polyhedron_limited_BHRZ03_extrapolation_assign
4314PPL_PROTO((ppl_Polyhedron_t x,
4315           ppl_const_Polyhedron_t y,
4316           ppl_const_Constraint_System_t cs));
4317
4318/*! \relates ppl_Polyhedron_tag */
4319int
4320ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign
4321PPL_PROTO((ppl_Polyhedron_t x,
4322           ppl_const_Polyhedron_t y,
4323           ppl_const_Constraint_System_t cs));
4324
4325/*! \relates ppl_Polyhedron_tag */
4326int
4327ppl_Polyhedron_limited_H79_extrapolation_assign
4328PPL_PROTO((ppl_Polyhedron_t x,
4329           ppl_const_Polyhedron_t y,
4330           ppl_const_Constraint_System_t cs));
4331
4332/*! \relates ppl_Polyhedron_tag */
4333int
4334ppl_Polyhedron_bounded_H79_extrapolation_assign
4335PPL_PROTO((ppl_Polyhedron_t x,
4336           ppl_const_Polyhedron_t y,
4337           ppl_const_Constraint_System_t cs));
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349/*! \relates ppl_Polyhedron_tag */
4350int
4351ppl_Polyhedron_linear_partition
4352PPL_PROTO((ppl_const_Polyhedron_t x,
4353           ppl_const_Polyhedron_t y,
4354           ppl_Polyhedron_t* p_inters,
4355           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
4356
4357
4358
4359
4360
4361/*! \relates ppl_Polyhedron_tag */
4362int
4363ppl_Polyhedron_wrap_assign
4364PPL_PROTO((ppl_Polyhedron_t ph,
4365           ppl_dimension_type ds[],
4366           size_t n,
4367           enum ppl_enum_Bounded_Integer_Type_Width w,
4368           enum ppl_enum_Bounded_Integer_Type_Representation r,
4369           enum ppl_enum_Bounded_Integer_Type_Overflow o,
4370           const ppl_const_Constraint_System_t* pcs,
4371           unsigned complexity_threshold,
4372           int wrap_individually));
4373
4374
4375
4376/*! \relates ppl_Polyhedron_tag */
4377int
4378ppl_new_C_Polyhedron_recycle_Constraint_System
4379PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Constraint_System_t cs));
4380
4381/*! \relates ppl_Polyhedron_tag */
4382int
4383ppl_new_NNC_Polyhedron_recycle_Constraint_System
4384PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Constraint_System_t cs));
4385
4386/*! \relates ppl_Polyhedron_tag */
4387int
4388ppl_new_C_Polyhedron_recycle_Congruence_System
4389PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Congruence_System_t cs));
4390
4391/*! \relates ppl_Polyhedron_tag */
4392int
4393ppl_new_NNC_Polyhedron_recycle_Congruence_System
4394PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Congruence_System_t cs));
4395
4396/*! \relates ppl_Polyhedron_tag */
4397int
4398ppl_new_C_Polyhedron_recycle_Generator_System
4399PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Generator_System_t cs));
4400
4401/*! \relates ppl_Polyhedron_tag */
4402int
4403ppl_new_NNC_Polyhedron_recycle_Generator_System
4404PPL_PROTO((ppl_Polyhedron_t* pph, ppl_Generator_System_t cs));
4405
4406
4407
4408
4409
4410
4411/*! \relates ppl_Polyhedron_tag */
4412int
4413ppl_assign_C_Polyhedron_from_C_Polyhedron
4414PPL_PROTO((ppl_Polyhedron_t dst, ppl_const_Polyhedron_t src));
4415
4416/*! \relates ppl_Polyhedron_tag */
4417int
4418ppl_assign_NNC_Polyhedron_from_NNC_Polyhedron
4419PPL_PROTO((ppl_Polyhedron_t dst, ppl_const_Polyhedron_t src));
4420
4421
4422
4423
4424
4425/*! \relates ppl_Polyhedron_tag */
4426int
4427ppl_Polyhedron_add_recycled_constraints
4428PPL_PROTO((ppl_Polyhedron_t ph,
4429           ppl_Constraint_System_t cs));
4430
4431/*! \relates ppl_Polyhedron_tag */
4432int
4433ppl_Polyhedron_add_recycled_congruences
4434PPL_PROTO((ppl_Polyhedron_t ph,
4435           ppl_Congruence_System_t cs));
4436
4437/*! \relates ppl_Polyhedron_tag */
4438int
4439ppl_Polyhedron_add_recycled_generators
4440PPL_PROTO((ppl_Polyhedron_t ph,
4441           ppl_Generator_System_t cs));
4442
4443
4444
4445
4446
4447/*! \relates ppl_Polyhedron_tag */
4448int
4449ppl_termination_test_MS_C_Polyhedron
4450PPL_PROTO((ppl_const_Polyhedron_t pset));
4451
4452/*! \relates ppl_Polyhedron_tag */
4453int
4454ppl_termination_test_PR_C_Polyhedron
4455PPL_PROTO((ppl_const_Polyhedron_t pset));
4456
4457/*! \relates ppl_Polyhedron_tag */
4458int
4459ppl_termination_test_MS_NNC_Polyhedron
4460PPL_PROTO((ppl_const_Polyhedron_t pset));
4461
4462/*! \relates ppl_Polyhedron_tag */
4463int
4464ppl_termination_test_PR_NNC_Polyhedron
4465PPL_PROTO((ppl_const_Polyhedron_t pset));
4466
4467
4468
4469
4470
4471
4472/*! \relates ppl_Polyhedron_tag */
4473int
4474ppl_one_affine_ranking_function_MS_C_Polyhedron
4475PPL_PROTO((ppl_const_Polyhedron_t pset,
4476           ppl_Generator_t point));
4477
4478/*! \relates ppl_Polyhedron_tag */
4479int
4480ppl_one_affine_ranking_function_PR_C_Polyhedron
4481PPL_PROTO((ppl_const_Polyhedron_t pset,
4482           ppl_Generator_t point));
4483
4484/*! \relates ppl_Polyhedron_tag */
4485int
4486ppl_one_affine_ranking_function_MS_NNC_Polyhedron
4487PPL_PROTO((ppl_const_Polyhedron_t pset,
4488           ppl_Generator_t point));
4489
4490/*! \relates ppl_Polyhedron_tag */
4491int
4492ppl_one_affine_ranking_function_PR_NNC_Polyhedron
4493PPL_PROTO((ppl_const_Polyhedron_t pset,
4494           ppl_Generator_t point));
4495
4496
4497
4498
4499
4500
4501/*! \relates ppl_Polyhedron_tag */
4502int
4503ppl_all_affine_ranking_functions_MS_C_Polyhedron
4504PPL_PROTO((ppl_const_Polyhedron_t pset,
4505           ppl_Polyhedron_t ph));
4506
4507/*! \relates ppl_Polyhedron_tag */
4508int
4509ppl_all_affine_ranking_functions_PR_C_Polyhedron
4510PPL_PROTO((ppl_const_Polyhedron_t pset,
4511           ppl_Polyhedron_t ph));
4512
4513/*! \relates ppl_Polyhedron_tag */
4514int
4515ppl_all_affine_ranking_functions_MS_NNC_Polyhedron
4516PPL_PROTO((ppl_const_Polyhedron_t pset,
4517           ppl_Polyhedron_t ph));
4518
4519/*! \relates ppl_Polyhedron_tag */
4520int
4521ppl_all_affine_ranking_functions_PR_NNC_Polyhedron
4522PPL_PROTO((ppl_const_Polyhedron_t pset,
4523           ppl_Polyhedron_t ph));
4524
4525
4526
4527
4528
4529
4530/*! \relates ppl_Polyhedron_tag */
4531int
4532ppl_termination_test_MS_C_Polyhedron_2
4533PPL_PROTO((ppl_const_Polyhedron_t pset_before, ppl_const_Polyhedron_t pset_after));
4534
4535/*! \relates ppl_Polyhedron_tag */
4536int
4537ppl_termination_test_PR_C_Polyhedron_2
4538PPL_PROTO((ppl_const_Polyhedron_t pset_before, ppl_const_Polyhedron_t pset_after));
4539
4540/*! \relates ppl_Polyhedron_tag */
4541int
4542ppl_termination_test_MS_NNC_Polyhedron_2
4543PPL_PROTO((ppl_const_Polyhedron_t pset_before, ppl_const_Polyhedron_t pset_after));
4544
4545/*! \relates ppl_Polyhedron_tag */
4546int
4547ppl_termination_test_PR_NNC_Polyhedron_2
4548PPL_PROTO((ppl_const_Polyhedron_t pset_before, ppl_const_Polyhedron_t pset_after));
4549
4550
4551
4552
4553
4554
4555/*! \relates ppl_Polyhedron_tag */
4556int
4557ppl_one_affine_ranking_function_MS_C_Polyhedron_2
4558PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4559           ppl_const_Polyhedron_t pset_after,
4560           ppl_Generator_t point));
4561
4562/*! \relates ppl_Polyhedron_tag */
4563int
4564ppl_one_affine_ranking_function_PR_C_Polyhedron_2
4565PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4566           ppl_const_Polyhedron_t pset_after,
4567           ppl_Generator_t point));
4568
4569/*! \relates ppl_Polyhedron_tag */
4570int
4571ppl_one_affine_ranking_function_MS_NNC_Polyhedron_2
4572PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4573           ppl_const_Polyhedron_t pset_after,
4574           ppl_Generator_t point));
4575
4576/*! \relates ppl_Polyhedron_tag */
4577int
4578ppl_one_affine_ranking_function_PR_NNC_Polyhedron_2
4579PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4580           ppl_const_Polyhedron_t pset_after,
4581           ppl_Generator_t point));
4582
4583
4584
4585
4586
4587
4588/*! \relates ppl_Polyhedron_tag */
4589int
4590ppl_all_affine_ranking_functions_MS_C_Polyhedron_2
4591PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4592           ppl_const_Polyhedron_t pset_after,
4593           ppl_Polyhedron_t ph));
4594
4595/*! \relates ppl_Polyhedron_tag */
4596int
4597ppl_all_affine_ranking_functions_PR_C_Polyhedron_2
4598PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4599           ppl_const_Polyhedron_t pset_after,
4600           ppl_Polyhedron_t ph));
4601
4602/*! \relates ppl_Polyhedron_tag */
4603int
4604ppl_all_affine_ranking_functions_MS_NNC_Polyhedron_2
4605PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4606           ppl_const_Polyhedron_t pset_after,
4607           ppl_Polyhedron_t ph));
4608
4609/*! \relates ppl_Polyhedron_tag */
4610int
4611ppl_all_affine_ranking_functions_PR_NNC_Polyhedron_2
4612PPL_PROTO((ppl_const_Polyhedron_t pset_before,
4613           ppl_const_Polyhedron_t pset_after,
4614           ppl_Polyhedron_t ph));
4615
4616
4617
4618
4619
4620
4621
4622PPL_DECLARE_IO_FUNCTIONS(Polyhedron)
4623
4624/* End of Functions Related to ppl_Polyhedron_tag */
4625
4626/*! \interface ppl_Grid_tag
4627  \brief Types and functions for ppl_Grid_tag
4628*/
4629
4630/*! \relates ppl_Grid_tag */
4631int
4632ppl_delete_Grid
4633PPL_PROTO((ppl_const_Grid_t ph));
4634
4635
4636
4637
4638/*! \relates ppl_Grid_tag */
4639int
4640ppl_new_Grid_from_space_dimension
4641PPL_PROTO((ppl_Grid_t* pph, ppl_dimension_type d, int empty));
4642
4643
4644
4645
4646
4647/*! \relates ppl_Grid_tag */
4648int
4649ppl_new_Grid_from_C_Polyhedron
4650PPL_PROTO((ppl_Grid_t* pph, ppl_const_Polyhedron_t ph));
4651
4652/*! \relates ppl_Grid_tag */
4653int
4654ppl_new_Grid_from_NNC_Polyhedron
4655PPL_PROTO((ppl_Grid_t* pph, ppl_const_Polyhedron_t ph));
4656
4657/*! \relates ppl_Grid_tag */
4658int
4659ppl_new_Grid_from_Grid
4660PPL_PROTO((ppl_Grid_t* pph, ppl_const_Grid_t ph));
4661
4662/*! \relates ppl_Grid_tag */
4663int
4664ppl_new_Grid_from_Rational_Box
4665PPL_PROTO((ppl_Grid_t* pph, ppl_const_Rational_Box_t ph));
4666
4667/*! \relates ppl_Grid_tag */
4668int
4669ppl_new_Grid_from_BD_Shape_mpz_class
4670PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
4671
4672/*! \relates ppl_Grid_tag */
4673int
4674ppl_new_Grid_from_BD_Shape_mpq_class
4675PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
4676
4677/*! \relates ppl_Grid_tag */
4678int
4679ppl_new_Grid_from_Octagonal_Shape_mpz_class
4680PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
4681
4682/*! \relates ppl_Grid_tag */
4683int
4684ppl_new_Grid_from_Octagonal_Shape_mpq_class
4685PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
4686
4687/*! \relates ppl_Grid_tag */
4688int
4689ppl_new_Grid_from_Double_Box
4690PPL_PROTO((ppl_Grid_t* pph, ppl_const_Double_Box_t ph));
4691
4692/*! \relates ppl_Grid_tag */
4693int
4694ppl_new_Grid_from_BD_Shape_double
4695PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_double_t ph));
4696
4697/*! \relates ppl_Grid_tag */
4698int
4699ppl_new_Grid_from_Octagonal_Shape_double
4700PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_double_t ph));
4701
4702
4703
4704
4705
4706
4707/*! \relates ppl_Grid_tag */
4708int
4709ppl_new_Grid_from_C_Polyhedron_with_complexity
4710PPL_PROTO((ppl_Grid_t* pph, ppl_const_Polyhedron_t ph, int complexity));
4711
4712/*! \relates ppl_Grid_tag */
4713int
4714ppl_new_Grid_from_NNC_Polyhedron_with_complexity
4715PPL_PROTO((ppl_Grid_t* pph, ppl_const_Polyhedron_t ph, int complexity));
4716
4717/*! \relates ppl_Grid_tag */
4718int
4719ppl_new_Grid_from_Grid_with_complexity
4720PPL_PROTO((ppl_Grid_t* pph, ppl_const_Grid_t ph, int complexity));
4721
4722/*! \relates ppl_Grid_tag */
4723int
4724ppl_new_Grid_from_Rational_Box_with_complexity
4725PPL_PROTO((ppl_Grid_t* pph, ppl_const_Rational_Box_t ph, int complexity));
4726
4727/*! \relates ppl_Grid_tag */
4728int
4729ppl_new_Grid_from_BD_Shape_mpz_class_with_complexity
4730PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
4731
4732/*! \relates ppl_Grid_tag */
4733int
4734ppl_new_Grid_from_BD_Shape_mpq_class_with_complexity
4735PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
4736
4737/*! \relates ppl_Grid_tag */
4738int
4739ppl_new_Grid_from_Octagonal_Shape_mpz_class_with_complexity
4740PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
4741
4742/*! \relates ppl_Grid_tag */
4743int
4744ppl_new_Grid_from_Octagonal_Shape_mpq_class_with_complexity
4745PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
4746
4747/*! \relates ppl_Grid_tag */
4748int
4749ppl_new_Grid_from_Double_Box_with_complexity
4750PPL_PROTO((ppl_Grid_t* pph, ppl_const_Double_Box_t ph, int complexity));
4751
4752/*! \relates ppl_Grid_tag */
4753int
4754ppl_new_Grid_from_BD_Shape_double_with_complexity
4755PPL_PROTO((ppl_Grid_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
4756
4757/*! \relates ppl_Grid_tag */
4758int
4759ppl_new_Grid_from_Octagonal_Shape_double_with_complexity
4760PPL_PROTO((ppl_Grid_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
4761
4762
4763
4764
4765
4766
4767/*! \relates ppl_Grid_tag */
4768int
4769ppl_new_Grid_from_Constraint_System
4770PPL_PROTO((ppl_Grid_t* pph, ppl_const_Constraint_System_t cs));
4771
4772/*! \relates ppl_Grid_tag */
4773int
4774ppl_new_Grid_from_Congruence_System
4775PPL_PROTO((ppl_Grid_t* pph, ppl_const_Congruence_System_t cs));
4776
4777/*! \relates ppl_Grid_tag */
4778int
4779ppl_new_Grid_from_Grid_Generator_System
4780PPL_PROTO((ppl_Grid_t* pph, ppl_const_Grid_Generator_System_t cs));
4781
4782
4783
4784
4785
4786
4787
4788
4789/*! \relates ppl_Grid_tag */
4790int
4791ppl_Grid_space_dimension
4792PPL_PROTO((ppl_const_Grid_t ph, ppl_dimension_type* m));
4793
4794/*! \relates ppl_Grid_tag */
4795int
4796ppl_Grid_affine_dimension
4797PPL_PROTO((ppl_const_Grid_t ph, ppl_dimension_type* m));
4798
4799
4800
4801
4802
4803/*! \relates ppl_Grid_tag */
4804int
4805ppl_Grid_relation_with_Constraint
4806PPL_PROTO((ppl_const_Grid_t ph,
4807           ppl_const_Constraint_t c));
4808
4809/*! \relates ppl_Grid_tag */
4810int
4811ppl_Grid_relation_with_Generator
4812PPL_PROTO((ppl_const_Grid_t ph,
4813           ppl_const_Generator_t c));
4814
4815/*! \relates ppl_Grid_tag */
4816int
4817ppl_Grid_relation_with_Congruence
4818PPL_PROTO((ppl_const_Grid_t ph,
4819           ppl_const_Congruence_t c));
4820
4821/*! \relates ppl_Grid_tag */
4822int
4823ppl_Grid_relation_with_Grid_Generator
4824PPL_PROTO((ppl_const_Grid_t ph,
4825           ppl_const_Grid_Generator_t c));
4826
4827
4828
4829
4830
4831/*! \relates ppl_Grid_tag */
4832int
4833ppl_Grid_get_constraints
4834PPL_PROTO((ppl_const_Grid_t ph,
4835           ppl_const_Constraint_System_t* pcs));
4836
4837/*! \relates ppl_Grid_tag */
4838int
4839ppl_Grid_get_congruences
4840PPL_PROTO((ppl_const_Grid_t ph,
4841           ppl_const_Congruence_System_t* pcs));
4842
4843/*! \relates ppl_Grid_tag */
4844int
4845ppl_Grid_get_grid_generators
4846PPL_PROTO((ppl_const_Grid_t ph,
4847           ppl_const_Grid_Generator_System_t* pcs));
4848
4849
4850
4851
4852
4853/*! \relates ppl_Grid_tag */
4854int
4855ppl_Grid_get_minimized_constraints
4856PPL_PROTO((ppl_const_Grid_t ph,
4857           ppl_const_Constraint_System_t* pcs));
4858
4859/*! \relates ppl_Grid_tag */
4860int
4861ppl_Grid_get_minimized_congruences
4862PPL_PROTO((ppl_const_Grid_t ph,
4863           ppl_const_Congruence_System_t* pcs));
4864
4865/*! \relates ppl_Grid_tag */
4866int
4867ppl_Grid_get_minimized_grid_generators
4868PPL_PROTO((ppl_const_Grid_t ph,
4869           ppl_const_Grid_Generator_System_t* pcs));
4870
4871
4872
4873
4874
4875/*! \relates ppl_Grid_tag */
4876int
4877ppl_Grid_is_empty
4878PPL_PROTO((ppl_const_Grid_t ph));
4879
4880/*! \relates ppl_Grid_tag */
4881int
4882ppl_Grid_is_universe
4883PPL_PROTO((ppl_const_Grid_t ph));
4884
4885/*! \relates ppl_Grid_tag */
4886int
4887ppl_Grid_is_bounded
4888PPL_PROTO((ppl_const_Grid_t ph));
4889
4890/*! \relates ppl_Grid_tag */
4891int
4892ppl_Grid_contains_integer_point
4893PPL_PROTO((ppl_const_Grid_t ph));
4894
4895/*! \relates ppl_Grid_tag */
4896int
4897ppl_Grid_is_topologically_closed
4898PPL_PROTO((ppl_const_Grid_t ph));
4899
4900/*! \relates ppl_Grid_tag */
4901int
4902ppl_Grid_is_discrete
4903PPL_PROTO((ppl_const_Grid_t ph));
4904
4905
4906
4907
4908
4909/*! \relates ppl_Grid_tag */
4910int
4911ppl_Grid_topological_closure_assign
4912PPL_PROTO((ppl_Grid_t ph));
4913
4914
4915
4916
4917
4918/*! \relates ppl_Grid_tag */
4919int
4920ppl_Grid_bounds_from_above
4921PPL_PROTO((ppl_const_Grid_t ph,
4922           ppl_const_Linear_Expression_t le));
4923
4924/*! \relates ppl_Grid_tag */
4925int
4926ppl_Grid_bounds_from_below
4927PPL_PROTO((ppl_const_Grid_t ph,
4928           ppl_const_Linear_Expression_t le));
4929
4930
4931
4932
4933
4934/*! \relates ppl_Grid_tag */
4935int
4936ppl_Grid_maximize
4937PPL_PROTO((ppl_const_Grid_t ph,
4938           ppl_const_Linear_Expression_t le,
4939           ppl_Coefficient_t ext_n,
4940           ppl_Coefficient_t ext_d,
4941           int* poptimum));
4942
4943/*! \relates ppl_Grid_tag */
4944int
4945ppl_Grid_minimize
4946PPL_PROTO((ppl_const_Grid_t ph,
4947           ppl_const_Linear_Expression_t le,
4948           ppl_Coefficient_t ext_n,
4949           ppl_Coefficient_t ext_d,
4950           int* poptimum));
4951
4952
4953
4954
4955
4956/*! \relates ppl_Grid_tag */
4957int
4958ppl_Grid_maximize_with_point
4959PPL_PROTO((ppl_const_Grid_t ph,
4960           ppl_const_Linear_Expression_t le,
4961           ppl_Coefficient_t ext_n,
4962           ppl_Coefficient_t ext_d,
4963           int* poptimum,
4964           ppl_Generator_t point));
4965
4966/*! \relates ppl_Grid_tag */
4967int
4968ppl_Grid_minimize_with_point
4969PPL_PROTO((ppl_const_Grid_t ph,
4970           ppl_const_Linear_Expression_t le,
4971           ppl_Coefficient_t ext_n,
4972           ppl_Coefficient_t ext_d,
4973           int* poptimum,
4974           ppl_Generator_t point));
4975
4976
4977
4978
4979
4980/*! \relates ppl_Grid_tag */
4981int
4982ppl_Grid_frequency
4983PPL_PROTO((ppl_const_Grid_t ph,
4984           ppl_const_Linear_Expression_t le,
4985           ppl_Coefficient_t ext_fn,
4986           ppl_Coefficient_t ext_fd,
4987           ppl_Coefficient_t ext_vn,
4988           ppl_Coefficient_t ext_vd));
4989
4990
4991
4992
4993/*! \relates ppl_Grid_tag */
4994int
4995ppl_Grid_contains_Grid
4996PPL_PROTO((ppl_const_Grid_t x,
4997           ppl_const_Grid_t y));
4998
4999/*! \relates ppl_Grid_tag */
5000int
5001ppl_Grid_strictly_contains_Grid
5002PPL_PROTO((ppl_const_Grid_t x,
5003           ppl_const_Grid_t y));
5004
5005/*! \relates ppl_Grid_tag */
5006int
5007ppl_Grid_is_disjoint_from_Grid
5008PPL_PROTO((ppl_const_Grid_t x,
5009           ppl_const_Grid_t y));
5010
5011
5012
5013
5014
5015/*! \relates ppl_Grid_tag */
5016int
5017ppl_Grid_equals_Grid
5018PPL_PROTO((ppl_const_Grid_t x,
5019           ppl_const_Grid_t y));
5020
5021
5022
5023
5024/*! \relates ppl_Grid_tag */
5025int
5026ppl_Grid_OK
5027PPL_PROTO((ppl_const_Grid_t ph));
5028
5029
5030
5031
5032/*! \relates ppl_Grid_tag */
5033int
5034ppl_Grid_add_constraint
5035PPL_PROTO((ppl_Grid_t ph,
5036           ppl_const_Constraint_t c));
5037
5038/*! \relates ppl_Grid_tag */
5039int
5040ppl_Grid_add_congruence
5041PPL_PROTO((ppl_Grid_t ph,
5042           ppl_const_Congruence_t c));
5043
5044/*! \relates ppl_Grid_tag */
5045int
5046ppl_Grid_add_grid_generator
5047PPL_PROTO((ppl_Grid_t ph,
5048           ppl_const_Grid_Generator_t c));
5049
5050
5051
5052
5053
5054/*! \relates ppl_Grid_tag */
5055int
5056ppl_Grid_add_constraints
5057PPL_PROTO((ppl_Grid_t ph,
5058           ppl_const_Constraint_System_t cs));
5059
5060/*! \relates ppl_Grid_tag */
5061int
5062ppl_Grid_add_congruences
5063PPL_PROTO((ppl_Grid_t ph,
5064           ppl_const_Congruence_System_t cs));
5065
5066/*! \relates ppl_Grid_tag */
5067int
5068ppl_Grid_add_grid_generators
5069PPL_PROTO((ppl_Grid_t ph,
5070           ppl_const_Grid_Generator_System_t cs));
5071
5072
5073
5074
5075
5076/*! \relates ppl_Grid_tag */
5077int
5078ppl_Grid_refine_with_constraint
5079PPL_PROTO((ppl_Grid_t ph,
5080           ppl_const_Constraint_t c));
5081
5082/*! \relates ppl_Grid_tag */
5083int
5084ppl_Grid_refine_with_congruence
5085PPL_PROTO((ppl_Grid_t ph,
5086           ppl_const_Congruence_t c));
5087
5088
5089
5090
5091
5092/*! \relates ppl_Grid_tag */
5093int
5094ppl_Grid_refine_with_constraints
5095PPL_PROTO((ppl_Grid_t ph,
5096           ppl_const_Constraint_System_t cs));
5097
5098/*! \relates ppl_Grid_tag */
5099int
5100ppl_Grid_refine_with_congruences
5101PPL_PROTO((ppl_Grid_t ph,
5102           ppl_const_Congruence_System_t cs));
5103
5104
5105
5106
5107
5108/*! \relates ppl_Grid_tag */
5109int
5110ppl_Grid_intersection_assign
5111PPL_PROTO((ppl_Grid_t x,
5112           ppl_const_Grid_t y));
5113
5114/*! \relates ppl_Grid_tag */
5115int
5116ppl_Grid_upper_bound_assign
5117PPL_PROTO((ppl_Grid_t x,
5118           ppl_const_Grid_t y));
5119
5120/*! \relates ppl_Grid_tag */
5121int
5122ppl_Grid_difference_assign
5123PPL_PROTO((ppl_Grid_t x,
5124           ppl_const_Grid_t y));
5125
5126/*! \relates ppl_Grid_tag */
5127int
5128ppl_Grid_concatenate_assign
5129PPL_PROTO((ppl_Grid_t x,
5130           ppl_const_Grid_t y));
5131
5132/*! \relates ppl_Grid_tag */
5133int
5134ppl_Grid_time_elapse_assign
5135PPL_PROTO((ppl_Grid_t x,
5136           ppl_const_Grid_t y));
5137
5138
5139
5140
5141
5142/*! \relates ppl_Grid_tag */
5143int
5144ppl_Grid_upper_bound_assign_if_exact
5145PPL_PROTO((ppl_Grid_t x,
5146           ppl_const_Grid_t y));
5147
5148
5149
5150
5151
5152/*! \relates ppl_Grid_tag */
5153int
5154ppl_Grid_simplify_using_context_assign
5155PPL_PROTO((ppl_Grid_t x,
5156           ppl_const_Grid_t y));
5157
5158
5159
5160
5161/*! \relates ppl_Grid_tag */
5162int
5163ppl_Grid_constrains
5164PPL_PROTO((ppl_Grid_t ph,
5165           ppl_dimension_type var));
5166
5167
5168
5169
5170/*! \relates ppl_Grid_tag */
5171int
5172ppl_Grid_unconstrain_space_dimension
5173PPL_PROTO((ppl_Grid_t ph,
5174           ppl_dimension_type var));
5175
5176
5177
5178
5179/*! \relates ppl_Grid_tag */
5180int
5181ppl_Grid_unconstrain_space_dimensions
5182PPL_PROTO((ppl_Grid_t ph,
5183           ppl_dimension_type ds[],
5184           size_t n));
5185
5186
5187
5188
5189/*! \relates ppl_Grid_tag */
5190int
5191ppl_Grid_affine_image
5192PPL_PROTO((ppl_Grid_t ph,
5193           ppl_dimension_type var,
5194           ppl_const_Linear_Expression_t le,
5195           ppl_const_Coefficient_t d));
5196
5197/*! \relates ppl_Grid_tag */
5198int
5199ppl_Grid_affine_preimage
5200PPL_PROTO((ppl_Grid_t ph,
5201           ppl_dimension_type var,
5202           ppl_const_Linear_Expression_t le,
5203           ppl_const_Coefficient_t d));
5204
5205
5206
5207
5208
5209/*! \relates ppl_Grid_tag */
5210int
5211ppl_Grid_bounded_affine_image
5212PPL_PROTO((ppl_Grid_t ph,
5213           ppl_dimension_type var,
5214           ppl_const_Linear_Expression_t lb,
5215           ppl_const_Linear_Expression_t ub,
5216           ppl_const_Coefficient_t d));
5217
5218/*! \relates ppl_Grid_tag */
5219int
5220ppl_Grid_bounded_affine_preimage
5221PPL_PROTO((ppl_Grid_t ph,
5222           ppl_dimension_type var,
5223           ppl_const_Linear_Expression_t lb,
5224           ppl_const_Linear_Expression_t ub,
5225           ppl_const_Coefficient_t d));
5226
5227
5228
5229
5230
5231/*! \relates ppl_Grid_tag */
5232int
5233ppl_Grid_generalized_affine_image
5234PPL_PROTO((ppl_Grid_t ph,
5235           ppl_dimension_type var,
5236           enum ppl_enum_Constraint_Type relsym,
5237           ppl_const_Linear_Expression_t le,
5238           ppl_const_Coefficient_t d));
5239
5240/*! \relates ppl_Grid_tag */
5241int
5242ppl_Grid_generalized_affine_preimage
5243PPL_PROTO((ppl_Grid_t ph,
5244           ppl_dimension_type var,
5245           enum ppl_enum_Constraint_Type relsym,
5246           ppl_const_Linear_Expression_t le,
5247           ppl_const_Coefficient_t d));
5248
5249
5250
5251
5252
5253/*! \relates ppl_Grid_tag */
5254int
5255ppl_Grid_generalized_affine_image_lhs_rhs
5256PPL_PROTO((ppl_Grid_t ph,
5257           ppl_const_Linear_Expression_t lhs,
5258           enum ppl_enum_Constraint_Type relsym,
5259           ppl_const_Linear_Expression_t rhs));
5260
5261/*! \relates ppl_Grid_tag */
5262int
5263ppl_Grid_generalized_affine_preimage_lhs_rhs
5264PPL_PROTO((ppl_Grid_t ph,
5265           ppl_const_Linear_Expression_t lhs,
5266           enum ppl_enum_Constraint_Type relsym,
5267           ppl_const_Linear_Expression_t rhs));
5268
5269
5270
5271
5272
5273/*! \relates ppl_Grid_tag */
5274int
5275ppl_Grid_generalized_affine_image_with_congruence
5276PPL_PROTO((ppl_Grid_t ph,
5277           ppl_dimension_type var,
5278           enum ppl_enum_Constraint_Type relsym,
5279           ppl_const_Linear_Expression_t le,
5280           ppl_const_Coefficient_t d,
5281           ppl_const_Coefficient_t m));
5282
5283/*! \relates ppl_Grid_tag */
5284int
5285ppl_Grid_generalized_affine_preimage_with_congruence
5286PPL_PROTO((ppl_Grid_t ph,
5287           ppl_dimension_type var,
5288           enum ppl_enum_Constraint_Type relsym,
5289           ppl_const_Linear_Expression_t le,
5290           ppl_const_Coefficient_t d,
5291           ppl_const_Coefficient_t m));
5292
5293
5294
5295
5296
5297/*! \relates ppl_Grid_tag */
5298int
5299ppl_Grid_generalized_affine_image_lhs_rhs_with_congruence
5300PPL_PROTO((ppl_Grid_t ph,
5301           ppl_const_Linear_Expression_t lhs,
5302           enum ppl_enum_Constraint_Type relsym,
5303           ppl_const_Linear_Expression_t rhs,
5304           ppl_const_Coefficient_t m));
5305
5306/*! \relates ppl_Grid_tag */
5307int
5308ppl_Grid_generalized_affine_preimage_lhs_rhs_with_congruence
5309PPL_PROTO((ppl_Grid_t ph,
5310           ppl_const_Linear_Expression_t lhs,
5311           enum ppl_enum_Constraint_Type relsym,
5312           ppl_const_Linear_Expression_t rhs,
5313           ppl_const_Coefficient_t m));
5314
5315
5316
5317
5318
5319/*! \relates ppl_Grid_tag */
5320int
5321ppl_Grid_add_space_dimensions_and_embed
5322PPL_PROTO((ppl_Grid_t ph,
5323           ppl_dimension_type d));
5324
5325/*! \relates ppl_Grid_tag */
5326int
5327ppl_Grid_add_space_dimensions_and_project
5328PPL_PROTO((ppl_Grid_t ph,
5329           ppl_dimension_type d));
5330
5331
5332
5333
5334
5335/*! \relates ppl_Grid_tag */
5336int
5337ppl_Grid_remove_space_dimensions
5338PPL_PROTO((ppl_Grid_t ph,
5339           ppl_dimension_type ds[],
5340           size_t n));
5341
5342
5343
5344
5345/*! \relates ppl_Grid_tag */
5346int
5347ppl_Grid_remove_higher_space_dimensions
5348PPL_PROTO((ppl_Grid_t ph,
5349           ppl_dimension_type d));
5350
5351
5352
5353
5354/*! \relates ppl_Grid_tag */
5355int
5356ppl_Grid_expand_space_dimension
5357PPL_PROTO((ppl_Grid_t ph,
5358           ppl_dimension_type d,
5359           ppl_dimension_type m));
5360
5361
5362
5363
5364/*! \relates ppl_Grid_tag */
5365int
5366ppl_Grid_fold_space_dimensions
5367PPL_PROTO((ppl_Grid_t ph,
5368           ppl_dimension_type ds[],
5369           size_t n,
5370           ppl_dimension_type d));
5371
5372
5373
5374
5375/*! \relates ppl_Grid_tag */
5376int
5377ppl_Grid_map_space_dimensions
5378PPL_PROTO((ppl_Grid_t ph,
5379           ppl_dimension_type maps[],
5380           size_t n));
5381
5382
5383
5384
5385/*! \relates ppl_Grid_tag */
5386int
5387ppl_Grid_drop_some_non_integer_points
5388PPL_PROTO((ppl_Grid_t ph,
5389           int complexity));
5390
5391
5392
5393
5394/*! \relates ppl_Grid_tag */
5395int
5396ppl_Grid_drop_some_non_integer_points_2
5397PPL_PROTO((ppl_Grid_t ph,
5398           ppl_dimension_type ds[],
5399           size_t n,
5400           int complexity));
5401
5402
5403
5404
5405
5406
5407/*! \relates ppl_Grid_tag */
5408int
5409ppl_Grid_external_memory_in_bytes
5410PPL_PROTO((ppl_const_Grid_t ps,
5411           size_t* sz));
5412
5413/*! \relates ppl_Grid_tag */
5414int
5415ppl_Grid_total_memory_in_bytes
5416PPL_PROTO((ppl_const_Grid_t ps,
5417           size_t* sz));
5418
5419
5420
5421
5422
5423/*! \relates ppl_Grid_tag */
5424int
5425ppl_Grid_congruence_widening_assign_with_tokens
5426PPL_PROTO((ppl_Grid_t x,
5427           ppl_const_Grid_t y,
5428           unsigned* tp));
5429
5430/*! \relates ppl_Grid_tag */
5431int
5432ppl_Grid_generator_widening_assign_with_tokens
5433PPL_PROTO((ppl_Grid_t x,
5434           ppl_const_Grid_t y,
5435           unsigned* tp));
5436
5437
5438
5439
5440
5441/*! \relates ppl_Grid_tag */
5442int
5443ppl_Grid_congruence_widening_assign
5444PPL_PROTO((ppl_Grid_t x,
5445           ppl_const_Grid_t y));
5446
5447/*! \relates ppl_Grid_tag */
5448int
5449ppl_Grid_generator_widening_assign
5450PPL_PROTO((ppl_Grid_t x,
5451           ppl_const_Grid_t y));
5452
5453
5454
5455
5456
5457/*! \relates ppl_Grid_tag */
5458int
5459ppl_Grid_widening_assign_with_tokens
5460PPL_PROTO((ppl_Grid_t x,
5461           ppl_const_Grid_t y,
5462           unsigned* tp));
5463
5464
5465
5466
5467/*! \relates ppl_Grid_tag */
5468int
5469ppl_Grid_widening_assign
5470PPL_PROTO((ppl_Grid_t x,
5471           ppl_const_Grid_t y));
5472
5473
5474
5475
5476/*! \relates ppl_Grid_tag */
5477int
5478ppl_Grid_limited_congruence_extrapolation_assign_with_tokens
5479PPL_PROTO((ppl_Grid_t x,
5480           ppl_const_Grid_t y,
5481           ppl_const_Congruence_System_t cs,
5482           unsigned* tp));
5483
5484/*! \relates ppl_Grid_tag */
5485int
5486ppl_Grid_limited_generator_extrapolation_assign_with_tokens
5487PPL_PROTO((ppl_Grid_t x,
5488           ppl_const_Grid_t y,
5489           ppl_const_Congruence_System_t cs,
5490           unsigned* tp));
5491
5492
5493
5494
5495
5496
5497
5498/*! \relates ppl_Grid_tag */
5499int
5500ppl_Grid_limited_congruence_extrapolation_assign
5501PPL_PROTO((ppl_Grid_t x,
5502           ppl_const_Grid_t y,
5503           ppl_const_Congruence_System_t cs));
5504
5505/*! \relates ppl_Grid_tag */
5506int
5507ppl_Grid_limited_generator_extrapolation_assign
5508PPL_PROTO((ppl_Grid_t x,
5509           ppl_const_Grid_t y,
5510           ppl_const_Congruence_System_t cs));
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522/*! \relates ppl_Grid_tag */
5523int
5524ppl_Grid_wrap_assign
5525PPL_PROTO((ppl_Grid_t ph,
5526           ppl_dimension_type ds[],
5527           size_t n,
5528           enum ppl_enum_Bounded_Integer_Type_Width w,
5529           enum ppl_enum_Bounded_Integer_Type_Representation r,
5530           enum ppl_enum_Bounded_Integer_Type_Overflow o,
5531           const ppl_const_Constraint_System_t* pcs,
5532           unsigned complexity_threshold,
5533           int wrap_individually));
5534
5535
5536
5537/*! \relates ppl_Grid_tag */
5538int
5539ppl_new_Grid_recycle_Constraint_System
5540PPL_PROTO((ppl_Grid_t* pph, ppl_Constraint_System_t cs));
5541
5542/*! \relates ppl_Grid_tag */
5543int
5544ppl_new_Grid_recycle_Congruence_System
5545PPL_PROTO((ppl_Grid_t* pph, ppl_Congruence_System_t cs));
5546
5547/*! \relates ppl_Grid_tag */
5548int
5549ppl_new_Grid_recycle_Grid_Generator_System
5550PPL_PROTO((ppl_Grid_t* pph, ppl_Grid_Generator_System_t cs));
5551
5552
5553
5554
5555
5556
5557/*! \relates ppl_Grid_tag */
5558int
5559ppl_assign_Grid_from_Grid
5560PPL_PROTO((ppl_Grid_t dst, ppl_const_Grid_t src));
5561
5562
5563
5564
5565
5566/*! \relates ppl_Grid_tag */
5567int
5568ppl_Grid_add_recycled_constraints
5569PPL_PROTO((ppl_Grid_t ph,
5570           ppl_Constraint_System_t cs));
5571
5572/*! \relates ppl_Grid_tag */
5573int
5574ppl_Grid_add_recycled_congruences
5575PPL_PROTO((ppl_Grid_t ph,
5576           ppl_Congruence_System_t cs));
5577
5578/*! \relates ppl_Grid_tag */
5579int
5580ppl_Grid_add_recycled_grid_generators
5581PPL_PROTO((ppl_Grid_t ph,
5582           ppl_Grid_Generator_System_t cs));
5583
5584
5585
5586
5587
5588/*! \relates ppl_Grid_tag */
5589int
5590ppl_termination_test_MS_Grid
5591PPL_PROTO((ppl_const_Grid_t pset));
5592
5593/*! \relates ppl_Grid_tag */
5594int
5595ppl_termination_test_PR_Grid
5596PPL_PROTO((ppl_const_Grid_t pset));
5597
5598
5599
5600
5601
5602
5603/*! \relates ppl_Grid_tag */
5604int
5605ppl_one_affine_ranking_function_MS_Grid
5606PPL_PROTO((ppl_const_Grid_t pset,
5607           ppl_Generator_t point));
5608
5609/*! \relates ppl_Grid_tag */
5610int
5611ppl_one_affine_ranking_function_PR_Grid
5612PPL_PROTO((ppl_const_Grid_t pset,
5613           ppl_Generator_t point));
5614
5615
5616
5617
5618
5619
5620/*! \relates ppl_Grid_tag */
5621int
5622ppl_all_affine_ranking_functions_MS_Grid
5623PPL_PROTO((ppl_const_Grid_t pset,
5624           ppl_Polyhedron_t ph));
5625
5626/*! \relates ppl_Grid_tag */
5627int
5628ppl_all_affine_ranking_functions_PR_Grid
5629PPL_PROTO((ppl_const_Grid_t pset,
5630           ppl_Polyhedron_t ph));
5631
5632
5633
5634
5635
5636
5637/*! \relates ppl_Grid_tag */
5638int
5639ppl_termination_test_MS_Grid_2
5640PPL_PROTO((ppl_const_Grid_t pset_before, ppl_const_Grid_t pset_after));
5641
5642/*! \relates ppl_Grid_tag */
5643int
5644ppl_termination_test_PR_Grid_2
5645PPL_PROTO((ppl_const_Grid_t pset_before, ppl_const_Grid_t pset_after));
5646
5647
5648
5649
5650
5651
5652/*! \relates ppl_Grid_tag */
5653int
5654ppl_one_affine_ranking_function_MS_Grid_2
5655PPL_PROTO((ppl_const_Grid_t pset_before,
5656           ppl_const_Grid_t pset_after,
5657           ppl_Generator_t point));
5658
5659/*! \relates ppl_Grid_tag */
5660int
5661ppl_one_affine_ranking_function_PR_Grid_2
5662PPL_PROTO((ppl_const_Grid_t pset_before,
5663           ppl_const_Grid_t pset_after,
5664           ppl_Generator_t point));
5665
5666
5667
5668
5669
5670
5671/*! \relates ppl_Grid_tag */
5672int
5673ppl_all_affine_ranking_functions_MS_Grid_2
5674PPL_PROTO((ppl_const_Grid_t pset_before,
5675           ppl_const_Grid_t pset_after,
5676           ppl_Polyhedron_t ph));
5677
5678/*! \relates ppl_Grid_tag */
5679int
5680ppl_all_affine_ranking_functions_PR_Grid_2
5681PPL_PROTO((ppl_const_Grid_t pset_before,
5682           ppl_const_Grid_t pset_after,
5683           ppl_Polyhedron_t ph));
5684
5685
5686
5687
5688
5689
5690
5691PPL_DECLARE_IO_FUNCTIONS(Grid)
5692
5693/* End of Functions Related to ppl_Grid_tag */
5694
5695/*! \interface ppl_Rational_Box_tag
5696  \brief Types and functions for ppl_Rational_Box_tag
5697*/
5698
5699/*! \relates ppl_Rational_Box_tag */
5700int
5701ppl_delete_Rational_Box
5702PPL_PROTO((ppl_const_Rational_Box_t ph));
5703
5704
5705
5706
5707/*! \relates ppl_Rational_Box_tag */
5708int
5709ppl_new_Rational_Box_from_space_dimension
5710PPL_PROTO((ppl_Rational_Box_t* pph, ppl_dimension_type d, int empty));
5711
5712
5713
5714
5715
5716/*! \relates ppl_Rational_Box_tag */
5717int
5718ppl_new_Rational_Box_from_C_Polyhedron
5719PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Polyhedron_t ph));
5720
5721/*! \relates ppl_Rational_Box_tag */
5722int
5723ppl_new_Rational_Box_from_NNC_Polyhedron
5724PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Polyhedron_t ph));
5725
5726/*! \relates ppl_Rational_Box_tag */
5727int
5728ppl_new_Rational_Box_from_Grid
5729PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Grid_t ph));
5730
5731/*! \relates ppl_Rational_Box_tag */
5732int
5733ppl_new_Rational_Box_from_Rational_Box
5734PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Rational_Box_t ph));
5735
5736/*! \relates ppl_Rational_Box_tag */
5737int
5738ppl_new_Rational_Box_from_BD_Shape_mpz_class
5739PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
5740
5741/*! \relates ppl_Rational_Box_tag */
5742int
5743ppl_new_Rational_Box_from_BD_Shape_mpq_class
5744PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
5745
5746/*! \relates ppl_Rational_Box_tag */
5747int
5748ppl_new_Rational_Box_from_Octagonal_Shape_mpz_class
5749PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
5750
5751/*! \relates ppl_Rational_Box_tag */
5752int
5753ppl_new_Rational_Box_from_Octagonal_Shape_mpq_class
5754PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
5755
5756/*! \relates ppl_Rational_Box_tag */
5757int
5758ppl_new_Rational_Box_from_Double_Box
5759PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Double_Box_t ph));
5760
5761/*! \relates ppl_Rational_Box_tag */
5762int
5763ppl_new_Rational_Box_from_BD_Shape_double
5764PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_double_t ph));
5765
5766/*! \relates ppl_Rational_Box_tag */
5767int
5768ppl_new_Rational_Box_from_Octagonal_Shape_double
5769PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_double_t ph));
5770
5771
5772
5773
5774
5775
5776/*! \relates ppl_Rational_Box_tag */
5777int
5778ppl_new_Rational_Box_from_C_Polyhedron_with_complexity
5779PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Polyhedron_t ph, int complexity));
5780
5781/*! \relates ppl_Rational_Box_tag */
5782int
5783ppl_new_Rational_Box_from_NNC_Polyhedron_with_complexity
5784PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Polyhedron_t ph, int complexity));
5785
5786/*! \relates ppl_Rational_Box_tag */
5787int
5788ppl_new_Rational_Box_from_Grid_with_complexity
5789PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Grid_t ph, int complexity));
5790
5791/*! \relates ppl_Rational_Box_tag */
5792int
5793ppl_new_Rational_Box_from_Rational_Box_with_complexity
5794PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Rational_Box_t ph, int complexity));
5795
5796/*! \relates ppl_Rational_Box_tag */
5797int
5798ppl_new_Rational_Box_from_BD_Shape_mpz_class_with_complexity
5799PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
5800
5801/*! \relates ppl_Rational_Box_tag */
5802int
5803ppl_new_Rational_Box_from_BD_Shape_mpq_class_with_complexity
5804PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
5805
5806/*! \relates ppl_Rational_Box_tag */
5807int
5808ppl_new_Rational_Box_from_Octagonal_Shape_mpz_class_with_complexity
5809PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
5810
5811/*! \relates ppl_Rational_Box_tag */
5812int
5813ppl_new_Rational_Box_from_Octagonal_Shape_mpq_class_with_complexity
5814PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
5815
5816/*! \relates ppl_Rational_Box_tag */
5817int
5818ppl_new_Rational_Box_from_Double_Box_with_complexity
5819PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Double_Box_t ph, int complexity));
5820
5821/*! \relates ppl_Rational_Box_tag */
5822int
5823ppl_new_Rational_Box_from_BD_Shape_double_with_complexity
5824PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
5825
5826/*! \relates ppl_Rational_Box_tag */
5827int
5828ppl_new_Rational_Box_from_Octagonal_Shape_double_with_complexity
5829PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
5830
5831
5832
5833
5834
5835
5836/*! \relates ppl_Rational_Box_tag */
5837int
5838ppl_new_Rational_Box_from_Constraint_System
5839PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Constraint_System_t cs));
5840
5841/*! \relates ppl_Rational_Box_tag */
5842int
5843ppl_new_Rational_Box_from_Congruence_System
5844PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Congruence_System_t cs));
5845
5846/*! \relates ppl_Rational_Box_tag */
5847int
5848ppl_new_Rational_Box_from_Generator_System
5849PPL_PROTO((ppl_Rational_Box_t* pph, ppl_const_Generator_System_t cs));
5850
5851
5852
5853
5854
5855
5856
5857
5858/*! \relates ppl_Rational_Box_tag */
5859int
5860ppl_Rational_Box_space_dimension
5861PPL_PROTO((ppl_const_Rational_Box_t ph, ppl_dimension_type* m));
5862
5863/*! \relates ppl_Rational_Box_tag */
5864int
5865ppl_Rational_Box_affine_dimension
5866PPL_PROTO((ppl_const_Rational_Box_t ph, ppl_dimension_type* m));
5867
5868
5869
5870
5871
5872/*! \relates ppl_Rational_Box_tag */
5873int
5874ppl_Rational_Box_relation_with_Constraint
5875PPL_PROTO((ppl_const_Rational_Box_t ph,
5876           ppl_const_Constraint_t c));
5877
5878/*! \relates ppl_Rational_Box_tag */
5879int
5880ppl_Rational_Box_relation_with_Generator
5881PPL_PROTO((ppl_const_Rational_Box_t ph,
5882           ppl_const_Generator_t c));
5883
5884/*! \relates ppl_Rational_Box_tag */
5885int
5886ppl_Rational_Box_relation_with_Congruence
5887PPL_PROTO((ppl_const_Rational_Box_t ph,
5888           ppl_const_Congruence_t c));
5889
5890
5891
5892
5893
5894/*! \relates ppl_Rational_Box_tag */
5895int
5896ppl_Rational_Box_get_constraints
5897PPL_PROTO((ppl_const_Rational_Box_t ph,
5898           ppl_const_Constraint_System_t* pcs));
5899
5900/*! \relates ppl_Rational_Box_tag */
5901int
5902ppl_Rational_Box_get_congruences
5903PPL_PROTO((ppl_const_Rational_Box_t ph,
5904           ppl_const_Congruence_System_t* pcs));
5905
5906
5907
5908
5909
5910/*! \relates ppl_Rational_Box_tag */
5911int
5912ppl_Rational_Box_get_minimized_constraints
5913PPL_PROTO((ppl_const_Rational_Box_t ph,
5914           ppl_const_Constraint_System_t* pcs));
5915
5916/*! \relates ppl_Rational_Box_tag */
5917int
5918ppl_Rational_Box_get_minimized_congruences
5919PPL_PROTO((ppl_const_Rational_Box_t ph,
5920           ppl_const_Congruence_System_t* pcs));
5921
5922
5923
5924
5925
5926/*! \relates ppl_Rational_Box_tag */
5927int
5928ppl_Rational_Box_is_empty
5929PPL_PROTO((ppl_const_Rational_Box_t ph));
5930
5931/*! \relates ppl_Rational_Box_tag */
5932int
5933ppl_Rational_Box_is_universe
5934PPL_PROTO((ppl_const_Rational_Box_t ph));
5935
5936/*! \relates ppl_Rational_Box_tag */
5937int
5938ppl_Rational_Box_is_bounded
5939PPL_PROTO((ppl_const_Rational_Box_t ph));
5940
5941/*! \relates ppl_Rational_Box_tag */
5942int
5943ppl_Rational_Box_contains_integer_point
5944PPL_PROTO((ppl_const_Rational_Box_t ph));
5945
5946/*! \relates ppl_Rational_Box_tag */
5947int
5948ppl_Rational_Box_is_topologically_closed
5949PPL_PROTO((ppl_const_Rational_Box_t ph));
5950
5951/*! \relates ppl_Rational_Box_tag */
5952int
5953ppl_Rational_Box_is_discrete
5954PPL_PROTO((ppl_const_Rational_Box_t ph));
5955
5956
5957
5958
5959
5960/*! \relates ppl_Rational_Box_tag */
5961int
5962ppl_Rational_Box_topological_closure_assign
5963PPL_PROTO((ppl_Rational_Box_t ph));
5964
5965
5966
5967
5968
5969/*! \relates ppl_Rational_Box_tag */
5970int
5971ppl_Rational_Box_bounds_from_above
5972PPL_PROTO((ppl_const_Rational_Box_t ph,
5973           ppl_const_Linear_Expression_t le));
5974
5975/*! \relates ppl_Rational_Box_tag */
5976int
5977ppl_Rational_Box_bounds_from_below
5978PPL_PROTO((ppl_const_Rational_Box_t ph,
5979           ppl_const_Linear_Expression_t le));
5980
5981
5982
5983
5984
5985/*! \relates ppl_Rational_Box_tag */
5986int
5987ppl_Rational_Box_get_upper_bound
5988PPL_PROTO((ppl_Rational_Box_t ps,
5989           ppl_dimension_type var,
5990           ppl_Coefficient_t ext_n,
5991           ppl_Coefficient_t ext_d,
5992           int* pclosed));
5993
5994/*! \relates ppl_Rational_Box_tag */
5995int
5996ppl_Rational_Box_get_lower_bound
5997PPL_PROTO((ppl_Rational_Box_t ps,
5998           ppl_dimension_type var,
5999           ppl_Coefficient_t ext_n,
6000           ppl_Coefficient_t ext_d,
6001           int* pclosed));
6002
6003
6004
6005
6006
6007/*! \relates ppl_Rational_Box_tag */
6008int
6009ppl_Rational_Box_maximize
6010PPL_PROTO((ppl_const_Rational_Box_t ph,
6011           ppl_const_Linear_Expression_t le,
6012           ppl_Coefficient_t ext_n,
6013           ppl_Coefficient_t ext_d,
6014           int* poptimum));
6015
6016/*! \relates ppl_Rational_Box_tag */
6017int
6018ppl_Rational_Box_minimize
6019PPL_PROTO((ppl_const_Rational_Box_t ph,
6020           ppl_const_Linear_Expression_t le,
6021           ppl_Coefficient_t ext_n,
6022           ppl_Coefficient_t ext_d,
6023           int* poptimum));
6024
6025
6026
6027
6028
6029/*! \relates ppl_Rational_Box_tag */
6030int
6031ppl_Rational_Box_maximize_with_point
6032PPL_PROTO((ppl_const_Rational_Box_t ph,
6033           ppl_const_Linear_Expression_t le,
6034           ppl_Coefficient_t ext_n,
6035           ppl_Coefficient_t ext_d,
6036           int* poptimum,
6037           ppl_Generator_t point));
6038
6039/*! \relates ppl_Rational_Box_tag */
6040int
6041ppl_Rational_Box_minimize_with_point
6042PPL_PROTO((ppl_const_Rational_Box_t ph,
6043           ppl_const_Linear_Expression_t le,
6044           ppl_Coefficient_t ext_n,
6045           ppl_Coefficient_t ext_d,
6046           int* poptimum,
6047           ppl_Generator_t point));
6048
6049
6050
6051
6052
6053/*! \relates ppl_Rational_Box_tag */
6054int
6055ppl_Rational_Box_frequency
6056PPL_PROTO((ppl_const_Rational_Box_t ph,
6057           ppl_const_Linear_Expression_t le,
6058           ppl_Coefficient_t ext_fn,
6059           ppl_Coefficient_t ext_fd,
6060           ppl_Coefficient_t ext_vn,
6061           ppl_Coefficient_t ext_vd));
6062
6063
6064
6065
6066/*! \relates ppl_Rational_Box_tag */
6067int
6068ppl_Rational_Box_contains_Rational_Box
6069PPL_PROTO((ppl_const_Rational_Box_t x,
6070           ppl_const_Rational_Box_t y));
6071
6072/*! \relates ppl_Rational_Box_tag */
6073int
6074ppl_Rational_Box_strictly_contains_Rational_Box
6075PPL_PROTO((ppl_const_Rational_Box_t x,
6076           ppl_const_Rational_Box_t y));
6077
6078/*! \relates ppl_Rational_Box_tag */
6079int
6080ppl_Rational_Box_is_disjoint_from_Rational_Box
6081PPL_PROTO((ppl_const_Rational_Box_t x,
6082           ppl_const_Rational_Box_t y));
6083
6084
6085
6086
6087
6088/*! \relates ppl_Rational_Box_tag */
6089int
6090ppl_Rational_Box_equals_Rational_Box
6091PPL_PROTO((ppl_const_Rational_Box_t x,
6092           ppl_const_Rational_Box_t y));
6093
6094
6095
6096
6097/*! \relates ppl_Rational_Box_tag */
6098int
6099ppl_Rational_Box_OK
6100PPL_PROTO((ppl_const_Rational_Box_t ph));
6101
6102
6103
6104
6105/*! \relates ppl_Rational_Box_tag */
6106int
6107ppl_Rational_Box_add_constraint
6108PPL_PROTO((ppl_Rational_Box_t ph,
6109           ppl_const_Constraint_t c));
6110
6111/*! \relates ppl_Rational_Box_tag */
6112int
6113ppl_Rational_Box_add_congruence
6114PPL_PROTO((ppl_Rational_Box_t ph,
6115           ppl_const_Congruence_t c));
6116
6117
6118
6119
6120
6121/*! \relates ppl_Rational_Box_tag */
6122int
6123ppl_Rational_Box_add_constraints
6124PPL_PROTO((ppl_Rational_Box_t ph,
6125           ppl_const_Constraint_System_t cs));
6126
6127/*! \relates ppl_Rational_Box_tag */
6128int
6129ppl_Rational_Box_add_congruences
6130PPL_PROTO((ppl_Rational_Box_t ph,
6131           ppl_const_Congruence_System_t cs));
6132
6133
6134
6135
6136
6137/*! \relates ppl_Rational_Box_tag */
6138int
6139ppl_Rational_Box_refine_with_constraint
6140PPL_PROTO((ppl_Rational_Box_t ph,
6141           ppl_const_Constraint_t c));
6142
6143/*! \relates ppl_Rational_Box_tag */
6144int
6145ppl_Rational_Box_refine_with_congruence
6146PPL_PROTO((ppl_Rational_Box_t ph,
6147           ppl_const_Congruence_t c));
6148
6149
6150
6151
6152
6153/*! \relates ppl_Rational_Box_tag */
6154int
6155ppl_Rational_Box_refine_with_constraints
6156PPL_PROTO((ppl_Rational_Box_t ph,
6157           ppl_const_Constraint_System_t cs));
6158
6159/*! \relates ppl_Rational_Box_tag */
6160int
6161ppl_Rational_Box_refine_with_congruences
6162PPL_PROTO((ppl_Rational_Box_t ph,
6163           ppl_const_Congruence_System_t cs));
6164
6165
6166
6167
6168
6169/*! \relates ppl_Rational_Box_tag */
6170int
6171ppl_Rational_Box_intersection_assign
6172PPL_PROTO((ppl_Rational_Box_t x,
6173           ppl_const_Rational_Box_t y));
6174
6175/*! \relates ppl_Rational_Box_tag */
6176int
6177ppl_Rational_Box_upper_bound_assign
6178PPL_PROTO((ppl_Rational_Box_t x,
6179           ppl_const_Rational_Box_t y));
6180
6181/*! \relates ppl_Rational_Box_tag */
6182int
6183ppl_Rational_Box_difference_assign
6184PPL_PROTO((ppl_Rational_Box_t x,
6185           ppl_const_Rational_Box_t y));
6186
6187/*! \relates ppl_Rational_Box_tag */
6188int
6189ppl_Rational_Box_concatenate_assign
6190PPL_PROTO((ppl_Rational_Box_t x,
6191           ppl_const_Rational_Box_t y));
6192
6193/*! \relates ppl_Rational_Box_tag */
6194int
6195ppl_Rational_Box_time_elapse_assign
6196PPL_PROTO((ppl_Rational_Box_t x,
6197           ppl_const_Rational_Box_t y));
6198
6199
6200
6201
6202
6203/*! \relates ppl_Rational_Box_tag */
6204int
6205ppl_Rational_Box_upper_bound_assign_if_exact
6206PPL_PROTO((ppl_Rational_Box_t x,
6207           ppl_const_Rational_Box_t y));
6208
6209
6210
6211
6212
6213/*! \relates ppl_Rational_Box_tag */
6214int
6215ppl_Rational_Box_simplify_using_context_assign
6216PPL_PROTO((ppl_Rational_Box_t x,
6217           ppl_const_Rational_Box_t y));
6218
6219
6220
6221
6222/*! \relates ppl_Rational_Box_tag */
6223int
6224ppl_Rational_Box_constrains
6225PPL_PROTO((ppl_Rational_Box_t ph,
6226           ppl_dimension_type var));
6227
6228
6229
6230
6231/*! \relates ppl_Rational_Box_tag */
6232int
6233ppl_Rational_Box_unconstrain_space_dimension
6234PPL_PROTO((ppl_Rational_Box_t ph,
6235           ppl_dimension_type var));
6236
6237
6238
6239
6240/*! \relates ppl_Rational_Box_tag */
6241int
6242ppl_Rational_Box_unconstrain_space_dimensions
6243PPL_PROTO((ppl_Rational_Box_t ph,
6244           ppl_dimension_type ds[],
6245           size_t n));
6246
6247
6248
6249
6250/*! \relates ppl_Rational_Box_tag */
6251int
6252ppl_Rational_Box_affine_image
6253PPL_PROTO((ppl_Rational_Box_t ph,
6254           ppl_dimension_type var,
6255           ppl_const_Linear_Expression_t le,
6256           ppl_const_Coefficient_t d));
6257
6258/*! \relates ppl_Rational_Box_tag */
6259int
6260ppl_Rational_Box_affine_preimage
6261PPL_PROTO((ppl_Rational_Box_t ph,
6262           ppl_dimension_type var,
6263           ppl_const_Linear_Expression_t le,
6264           ppl_const_Coefficient_t d));
6265
6266
6267
6268
6269
6270/*! \relates ppl_Rational_Box_tag */
6271int
6272ppl_Rational_Box_bounded_affine_image
6273PPL_PROTO((ppl_Rational_Box_t ph,
6274           ppl_dimension_type var,
6275           ppl_const_Linear_Expression_t lb,
6276           ppl_const_Linear_Expression_t ub,
6277           ppl_const_Coefficient_t d));
6278
6279/*! \relates ppl_Rational_Box_tag */
6280int
6281ppl_Rational_Box_bounded_affine_preimage
6282PPL_PROTO((ppl_Rational_Box_t ph,
6283           ppl_dimension_type var,
6284           ppl_const_Linear_Expression_t lb,
6285           ppl_const_Linear_Expression_t ub,
6286           ppl_const_Coefficient_t d));
6287
6288
6289
6290
6291
6292/*! \relates ppl_Rational_Box_tag */
6293int
6294ppl_Rational_Box_generalized_affine_image
6295PPL_PROTO((ppl_Rational_Box_t ph,
6296           ppl_dimension_type var,
6297           enum ppl_enum_Constraint_Type relsym,
6298           ppl_const_Linear_Expression_t le,
6299           ppl_const_Coefficient_t d));
6300
6301/*! \relates ppl_Rational_Box_tag */
6302int
6303ppl_Rational_Box_generalized_affine_preimage
6304PPL_PROTO((ppl_Rational_Box_t ph,
6305           ppl_dimension_type var,
6306           enum ppl_enum_Constraint_Type relsym,
6307           ppl_const_Linear_Expression_t le,
6308           ppl_const_Coefficient_t d));
6309
6310
6311
6312
6313
6314/*! \relates ppl_Rational_Box_tag */
6315int
6316ppl_Rational_Box_generalized_affine_image_lhs_rhs
6317PPL_PROTO((ppl_Rational_Box_t ph,
6318           ppl_const_Linear_Expression_t lhs,
6319           enum ppl_enum_Constraint_Type relsym,
6320           ppl_const_Linear_Expression_t rhs));
6321
6322/*! \relates ppl_Rational_Box_tag */
6323int
6324ppl_Rational_Box_generalized_affine_preimage_lhs_rhs
6325PPL_PROTO((ppl_Rational_Box_t ph,
6326           ppl_const_Linear_Expression_t lhs,
6327           enum ppl_enum_Constraint_Type relsym,
6328           ppl_const_Linear_Expression_t rhs));
6329
6330
6331
6332
6333
6334/*! \relates ppl_Rational_Box_tag */
6335int
6336ppl_Rational_Box_add_space_dimensions_and_embed
6337PPL_PROTO((ppl_Rational_Box_t ph,
6338           ppl_dimension_type d));
6339
6340/*! \relates ppl_Rational_Box_tag */
6341int
6342ppl_Rational_Box_add_space_dimensions_and_project
6343PPL_PROTO((ppl_Rational_Box_t ph,
6344           ppl_dimension_type d));
6345
6346
6347
6348
6349
6350/*! \relates ppl_Rational_Box_tag */
6351int
6352ppl_Rational_Box_remove_space_dimensions
6353PPL_PROTO((ppl_Rational_Box_t ph,
6354           ppl_dimension_type ds[],
6355           size_t n));
6356
6357
6358
6359
6360/*! \relates ppl_Rational_Box_tag */
6361int
6362ppl_Rational_Box_remove_higher_space_dimensions
6363PPL_PROTO((ppl_Rational_Box_t ph,
6364           ppl_dimension_type d));
6365
6366
6367
6368
6369/*! \relates ppl_Rational_Box_tag */
6370int
6371ppl_Rational_Box_expand_space_dimension
6372PPL_PROTO((ppl_Rational_Box_t ph,
6373           ppl_dimension_type d,
6374           ppl_dimension_type m));
6375
6376
6377
6378
6379/*! \relates ppl_Rational_Box_tag */
6380int
6381ppl_Rational_Box_fold_space_dimensions
6382PPL_PROTO((ppl_Rational_Box_t ph,
6383           ppl_dimension_type ds[],
6384           size_t n,
6385           ppl_dimension_type d));
6386
6387
6388
6389
6390/*! \relates ppl_Rational_Box_tag */
6391int
6392ppl_Rational_Box_map_space_dimensions
6393PPL_PROTO((ppl_Rational_Box_t ph,
6394           ppl_dimension_type maps[],
6395           size_t n));
6396
6397
6398
6399
6400/*! \relates ppl_Rational_Box_tag */
6401int
6402ppl_Rational_Box_drop_some_non_integer_points
6403PPL_PROTO((ppl_Rational_Box_t ph,
6404           int complexity));
6405
6406
6407
6408
6409/*! \relates ppl_Rational_Box_tag */
6410int
6411ppl_Rational_Box_drop_some_non_integer_points_2
6412PPL_PROTO((ppl_Rational_Box_t ph,
6413           ppl_dimension_type ds[],
6414           size_t n,
6415           int complexity));
6416
6417
6418
6419
6420
6421
6422/*! \relates ppl_Rational_Box_tag */
6423int
6424ppl_Rational_Box_external_memory_in_bytes
6425PPL_PROTO((ppl_const_Rational_Box_t ps,
6426           size_t* sz));
6427
6428/*! \relates ppl_Rational_Box_tag */
6429int
6430ppl_Rational_Box_total_memory_in_bytes
6431PPL_PROTO((ppl_const_Rational_Box_t ps,
6432           size_t* sz));
6433
6434
6435
6436
6437
6438/*! \relates ppl_Rational_Box_tag */
6439int
6440ppl_Rational_Box_CC76_widening_assign_with_tokens
6441PPL_PROTO((ppl_Rational_Box_t x,
6442           ppl_const_Rational_Box_t y,
6443           unsigned* tp));
6444
6445
6446
6447
6448
6449/*! \relates ppl_Rational_Box_tag */
6450int
6451ppl_Rational_Box_CC76_widening_assign
6452PPL_PROTO((ppl_Rational_Box_t x,
6453           ppl_const_Rational_Box_t y));
6454
6455
6456
6457
6458
6459/*! \relates ppl_Rational_Box_tag */
6460int
6461ppl_Rational_Box_widening_assign_with_tokens
6462PPL_PROTO((ppl_Rational_Box_t x,
6463           ppl_const_Rational_Box_t y,
6464           unsigned* tp));
6465
6466
6467
6468
6469/*! \relates ppl_Rational_Box_tag */
6470int
6471ppl_Rational_Box_widening_assign
6472PPL_PROTO((ppl_Rational_Box_t x,
6473           ppl_const_Rational_Box_t y));
6474
6475
6476
6477
6478/*! \relates ppl_Rational_Box_tag */
6479int
6480ppl_Rational_Box_limited_CC76_extrapolation_assign_with_tokens
6481PPL_PROTO((ppl_Rational_Box_t x,
6482           ppl_const_Rational_Box_t y,
6483           ppl_const_Constraint_System_t cs,
6484           unsigned* tp));
6485
6486
6487
6488
6489
6490
6491
6492/*! \relates ppl_Rational_Box_tag */
6493int
6494ppl_Rational_Box_limited_CC76_extrapolation_assign
6495PPL_PROTO((ppl_Rational_Box_t x,
6496           ppl_const_Rational_Box_t y,
6497           ppl_const_Constraint_System_t cs));
6498
6499
6500
6501
6502
6503
6504
6505/*! \relates ppl_Rational_Box_tag */
6506int
6507ppl_Rational_Box_CC76_narrowing_assign
6508PPL_PROTO((ppl_Rational_Box_t x,
6509           ppl_const_Rational_Box_t y));
6510
6511
6512
6513
6514
6515/*! \relates ppl_Rational_Box_tag */
6516int
6517ppl_Rational_Box_linear_partition
6518PPL_PROTO((ppl_const_Rational_Box_t x,
6519           ppl_const_Rational_Box_t y,
6520           ppl_Rational_Box_t* p_inters,
6521           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
6522
6523
6524
6525
6526
6527/*! \relates ppl_Rational_Box_tag */
6528int
6529ppl_Rational_Box_wrap_assign
6530PPL_PROTO((ppl_Rational_Box_t ph,
6531           ppl_dimension_type ds[],
6532           size_t n,
6533           enum ppl_enum_Bounded_Integer_Type_Width w,
6534           enum ppl_enum_Bounded_Integer_Type_Representation r,
6535           enum ppl_enum_Bounded_Integer_Type_Overflow o,
6536           const ppl_const_Constraint_System_t* pcs,
6537           unsigned complexity_threshold,
6538           int wrap_individually));
6539
6540
6541
6542/*! \relates ppl_Rational_Box_tag */
6543int
6544ppl_new_Rational_Box_recycle_Constraint_System
6545PPL_PROTO((ppl_Rational_Box_t* pph, ppl_Constraint_System_t cs));
6546
6547/*! \relates ppl_Rational_Box_tag */
6548int
6549ppl_new_Rational_Box_recycle_Congruence_System
6550PPL_PROTO((ppl_Rational_Box_t* pph, ppl_Congruence_System_t cs));
6551
6552/*! \relates ppl_Rational_Box_tag */
6553int
6554ppl_new_Rational_Box_recycle_Generator_System
6555PPL_PROTO((ppl_Rational_Box_t* pph, ppl_Generator_System_t cs));
6556
6557
6558
6559
6560
6561
6562/*! \relates ppl_Rational_Box_tag */
6563int
6564ppl_assign_Rational_Box_from_Rational_Box
6565PPL_PROTO((ppl_Rational_Box_t dst, ppl_const_Rational_Box_t src));
6566
6567
6568
6569
6570
6571/*! \relates ppl_Rational_Box_tag */
6572int
6573ppl_Rational_Box_add_recycled_constraints
6574PPL_PROTO((ppl_Rational_Box_t ph,
6575           ppl_Constraint_System_t cs));
6576
6577/*! \relates ppl_Rational_Box_tag */
6578int
6579ppl_Rational_Box_add_recycled_congruences
6580PPL_PROTO((ppl_Rational_Box_t ph,
6581           ppl_Congruence_System_t cs));
6582
6583
6584
6585
6586
6587/*! \relates ppl_Rational_Box_tag */
6588int
6589ppl_termination_test_MS_Rational_Box
6590PPL_PROTO((ppl_const_Rational_Box_t pset));
6591
6592/*! \relates ppl_Rational_Box_tag */
6593int
6594ppl_termination_test_PR_Rational_Box
6595PPL_PROTO((ppl_const_Rational_Box_t pset));
6596
6597
6598
6599
6600
6601
6602/*! \relates ppl_Rational_Box_tag */
6603int
6604ppl_one_affine_ranking_function_MS_Rational_Box
6605PPL_PROTO((ppl_const_Rational_Box_t pset,
6606           ppl_Generator_t point));
6607
6608/*! \relates ppl_Rational_Box_tag */
6609int
6610ppl_one_affine_ranking_function_PR_Rational_Box
6611PPL_PROTO((ppl_const_Rational_Box_t pset,
6612           ppl_Generator_t point));
6613
6614
6615
6616
6617
6618
6619/*! \relates ppl_Rational_Box_tag */
6620int
6621ppl_all_affine_ranking_functions_MS_Rational_Box
6622PPL_PROTO((ppl_const_Rational_Box_t pset,
6623           ppl_Polyhedron_t ph));
6624
6625/*! \relates ppl_Rational_Box_tag */
6626int
6627ppl_all_affine_ranking_functions_PR_Rational_Box
6628PPL_PROTO((ppl_const_Rational_Box_t pset,
6629           ppl_Polyhedron_t ph));
6630
6631
6632
6633
6634
6635
6636/*! \relates ppl_Rational_Box_tag */
6637int
6638ppl_termination_test_MS_Rational_Box_2
6639PPL_PROTO((ppl_const_Rational_Box_t pset_before, ppl_const_Rational_Box_t pset_after));
6640
6641/*! \relates ppl_Rational_Box_tag */
6642int
6643ppl_termination_test_PR_Rational_Box_2
6644PPL_PROTO((ppl_const_Rational_Box_t pset_before, ppl_const_Rational_Box_t pset_after));
6645
6646
6647
6648
6649
6650
6651/*! \relates ppl_Rational_Box_tag */
6652int
6653ppl_one_affine_ranking_function_MS_Rational_Box_2
6654PPL_PROTO((ppl_const_Rational_Box_t pset_before,
6655           ppl_const_Rational_Box_t pset_after,
6656           ppl_Generator_t point));
6657
6658/*! \relates ppl_Rational_Box_tag */
6659int
6660ppl_one_affine_ranking_function_PR_Rational_Box_2
6661PPL_PROTO((ppl_const_Rational_Box_t pset_before,
6662           ppl_const_Rational_Box_t pset_after,
6663           ppl_Generator_t point));
6664
6665
6666
6667
6668
6669
6670/*! \relates ppl_Rational_Box_tag */
6671int
6672ppl_all_affine_ranking_functions_MS_Rational_Box_2
6673PPL_PROTO((ppl_const_Rational_Box_t pset_before,
6674           ppl_const_Rational_Box_t pset_after,
6675           ppl_Polyhedron_t ph));
6676
6677/*! \relates ppl_Rational_Box_tag */
6678int
6679ppl_all_affine_ranking_functions_PR_Rational_Box_2
6680PPL_PROTO((ppl_const_Rational_Box_t pset_before,
6681           ppl_const_Rational_Box_t pset_after,
6682           ppl_Polyhedron_t ph));
6683
6684
6685
6686
6687
6688
6689
6690PPL_DECLARE_IO_FUNCTIONS(Rational_Box)
6691
6692/* End of Functions Related to ppl_Rational_Box_tag */
6693
6694/*! \interface ppl_BD_Shape_mpz_class_tag
6695  \brief Types and functions for ppl_BD_Shape_mpz_class_tag
6696*/
6697
6698/*! \relates ppl_BD_Shape_mpz_class_tag */
6699int
6700ppl_delete_BD_Shape_mpz_class
6701PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6702
6703
6704
6705
6706/*! \relates ppl_BD_Shape_mpz_class_tag */
6707int
6708ppl_new_BD_Shape_mpz_class_from_space_dimension
6709PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_dimension_type d, int empty));
6710
6711
6712
6713
6714
6715/*! \relates ppl_BD_Shape_mpz_class_tag */
6716int
6717ppl_new_BD_Shape_mpz_class_from_C_Polyhedron
6718PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph));
6719
6720/*! \relates ppl_BD_Shape_mpz_class_tag */
6721int
6722ppl_new_BD_Shape_mpz_class_from_NNC_Polyhedron
6723PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph));
6724
6725/*! \relates ppl_BD_Shape_mpz_class_tag */
6726int
6727ppl_new_BD_Shape_mpz_class_from_Grid
6728PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Grid_t ph));
6729
6730/*! \relates ppl_BD_Shape_mpz_class_tag */
6731int
6732ppl_new_BD_Shape_mpz_class_from_Rational_Box
6733PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Rational_Box_t ph));
6734
6735/*! \relates ppl_BD_Shape_mpz_class_tag */
6736int
6737ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpz_class
6738PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
6739
6740/*! \relates ppl_BD_Shape_mpz_class_tag */
6741int
6742ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpq_class
6743PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
6744
6745/*! \relates ppl_BD_Shape_mpz_class_tag */
6746int
6747ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpz_class
6748PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
6749
6750/*! \relates ppl_BD_Shape_mpz_class_tag */
6751int
6752ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpq_class
6753PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
6754
6755/*! \relates ppl_BD_Shape_mpz_class_tag */
6756int
6757ppl_new_BD_Shape_mpz_class_from_Double_Box
6758PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Double_Box_t ph));
6759
6760/*! \relates ppl_BD_Shape_mpz_class_tag */
6761int
6762ppl_new_BD_Shape_mpz_class_from_BD_Shape_double
6763PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_double_t ph));
6764
6765/*! \relates ppl_BD_Shape_mpz_class_tag */
6766int
6767ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_double
6768PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_double_t ph));
6769
6770
6771
6772
6773
6774
6775/*! \relates ppl_BD_Shape_mpz_class_tag */
6776int
6777ppl_new_BD_Shape_mpz_class_from_C_Polyhedron_with_complexity
6778PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
6779
6780/*! \relates ppl_BD_Shape_mpz_class_tag */
6781int
6782ppl_new_BD_Shape_mpz_class_from_NNC_Polyhedron_with_complexity
6783PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
6784
6785/*! \relates ppl_BD_Shape_mpz_class_tag */
6786int
6787ppl_new_BD_Shape_mpz_class_from_Grid_with_complexity
6788PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Grid_t ph, int complexity));
6789
6790/*! \relates ppl_BD_Shape_mpz_class_tag */
6791int
6792ppl_new_BD_Shape_mpz_class_from_Rational_Box_with_complexity
6793PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Rational_Box_t ph, int complexity));
6794
6795/*! \relates ppl_BD_Shape_mpz_class_tag */
6796int
6797ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpz_class_with_complexity
6798PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
6799
6800/*! \relates ppl_BD_Shape_mpz_class_tag */
6801int
6802ppl_new_BD_Shape_mpz_class_from_BD_Shape_mpq_class_with_complexity
6803PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
6804
6805/*! \relates ppl_BD_Shape_mpz_class_tag */
6806int
6807ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpz_class_with_complexity
6808PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
6809
6810/*! \relates ppl_BD_Shape_mpz_class_tag */
6811int
6812ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_mpq_class_with_complexity
6813PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
6814
6815/*! \relates ppl_BD_Shape_mpz_class_tag */
6816int
6817ppl_new_BD_Shape_mpz_class_from_Double_Box_with_complexity
6818PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Double_Box_t ph, int complexity));
6819
6820/*! \relates ppl_BD_Shape_mpz_class_tag */
6821int
6822ppl_new_BD_Shape_mpz_class_from_BD_Shape_double_with_complexity
6823PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
6824
6825/*! \relates ppl_BD_Shape_mpz_class_tag */
6826int
6827ppl_new_BD_Shape_mpz_class_from_Octagonal_Shape_double_with_complexity
6828PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
6829
6830
6831
6832
6833
6834
6835/*! \relates ppl_BD_Shape_mpz_class_tag */
6836int
6837ppl_new_BD_Shape_mpz_class_from_Constraint_System
6838PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Constraint_System_t cs));
6839
6840/*! \relates ppl_BD_Shape_mpz_class_tag */
6841int
6842ppl_new_BD_Shape_mpz_class_from_Congruence_System
6843PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Congruence_System_t cs));
6844
6845/*! \relates ppl_BD_Shape_mpz_class_tag */
6846int
6847ppl_new_BD_Shape_mpz_class_from_Generator_System
6848PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_const_Generator_System_t cs));
6849
6850
6851
6852
6853
6854
6855
6856
6857/*! \relates ppl_BD_Shape_mpz_class_tag */
6858int
6859ppl_BD_Shape_mpz_class_space_dimension
6860PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph, ppl_dimension_type* m));
6861
6862/*! \relates ppl_BD_Shape_mpz_class_tag */
6863int
6864ppl_BD_Shape_mpz_class_affine_dimension
6865PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph, ppl_dimension_type* m));
6866
6867
6868
6869
6870
6871/*! \relates ppl_BD_Shape_mpz_class_tag */
6872int
6873ppl_BD_Shape_mpz_class_relation_with_Constraint
6874PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6875           ppl_const_Constraint_t c));
6876
6877/*! \relates ppl_BD_Shape_mpz_class_tag */
6878int
6879ppl_BD_Shape_mpz_class_relation_with_Generator
6880PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6881           ppl_const_Generator_t c));
6882
6883/*! \relates ppl_BD_Shape_mpz_class_tag */
6884int
6885ppl_BD_Shape_mpz_class_relation_with_Congruence
6886PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6887           ppl_const_Congruence_t c));
6888
6889
6890
6891
6892
6893/*! \relates ppl_BD_Shape_mpz_class_tag */
6894int
6895ppl_BD_Shape_mpz_class_get_constraints
6896PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6897           ppl_const_Constraint_System_t* pcs));
6898
6899/*! \relates ppl_BD_Shape_mpz_class_tag */
6900int
6901ppl_BD_Shape_mpz_class_get_congruences
6902PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6903           ppl_const_Congruence_System_t* pcs));
6904
6905
6906
6907
6908
6909/*! \relates ppl_BD_Shape_mpz_class_tag */
6910int
6911ppl_BD_Shape_mpz_class_get_minimized_constraints
6912PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6913           ppl_const_Constraint_System_t* pcs));
6914
6915/*! \relates ppl_BD_Shape_mpz_class_tag */
6916int
6917ppl_BD_Shape_mpz_class_get_minimized_congruences
6918PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6919           ppl_const_Congruence_System_t* pcs));
6920
6921
6922
6923
6924
6925/*! \relates ppl_BD_Shape_mpz_class_tag */
6926int
6927ppl_BD_Shape_mpz_class_is_empty
6928PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6929
6930/*! \relates ppl_BD_Shape_mpz_class_tag */
6931int
6932ppl_BD_Shape_mpz_class_is_universe
6933PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6934
6935/*! \relates ppl_BD_Shape_mpz_class_tag */
6936int
6937ppl_BD_Shape_mpz_class_is_bounded
6938PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6939
6940/*! \relates ppl_BD_Shape_mpz_class_tag */
6941int
6942ppl_BD_Shape_mpz_class_contains_integer_point
6943PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6944
6945/*! \relates ppl_BD_Shape_mpz_class_tag */
6946int
6947ppl_BD_Shape_mpz_class_is_topologically_closed
6948PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6949
6950/*! \relates ppl_BD_Shape_mpz_class_tag */
6951int
6952ppl_BD_Shape_mpz_class_is_discrete
6953PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
6954
6955
6956
6957
6958
6959/*! \relates ppl_BD_Shape_mpz_class_tag */
6960int
6961ppl_BD_Shape_mpz_class_topological_closure_assign
6962PPL_PROTO((ppl_BD_Shape_mpz_class_t ph));
6963
6964
6965
6966
6967
6968/*! \relates ppl_BD_Shape_mpz_class_tag */
6969int
6970ppl_BD_Shape_mpz_class_bounds_from_above
6971PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6972           ppl_const_Linear_Expression_t le));
6973
6974/*! \relates ppl_BD_Shape_mpz_class_tag */
6975int
6976ppl_BD_Shape_mpz_class_bounds_from_below
6977PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6978           ppl_const_Linear_Expression_t le));
6979
6980
6981
6982
6983
6984/*! \relates ppl_BD_Shape_mpz_class_tag */
6985int
6986ppl_BD_Shape_mpz_class_maximize
6987PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6988           ppl_const_Linear_Expression_t le,
6989           ppl_Coefficient_t ext_n,
6990           ppl_Coefficient_t ext_d,
6991           int* poptimum));
6992
6993/*! \relates ppl_BD_Shape_mpz_class_tag */
6994int
6995ppl_BD_Shape_mpz_class_minimize
6996PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
6997           ppl_const_Linear_Expression_t le,
6998           ppl_Coefficient_t ext_n,
6999           ppl_Coefficient_t ext_d,
7000           int* poptimum));
7001
7002
7003
7004
7005
7006/*! \relates ppl_BD_Shape_mpz_class_tag */
7007int
7008ppl_BD_Shape_mpz_class_maximize_with_point
7009PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
7010           ppl_const_Linear_Expression_t le,
7011           ppl_Coefficient_t ext_n,
7012           ppl_Coefficient_t ext_d,
7013           int* poptimum,
7014           ppl_Generator_t point));
7015
7016/*! \relates ppl_BD_Shape_mpz_class_tag */
7017int
7018ppl_BD_Shape_mpz_class_minimize_with_point
7019PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
7020           ppl_const_Linear_Expression_t le,
7021           ppl_Coefficient_t ext_n,
7022           ppl_Coefficient_t ext_d,
7023           int* poptimum,
7024           ppl_Generator_t point));
7025
7026
7027
7028
7029
7030/*! \relates ppl_BD_Shape_mpz_class_tag */
7031int
7032ppl_BD_Shape_mpz_class_frequency
7033PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph,
7034           ppl_const_Linear_Expression_t le,
7035           ppl_Coefficient_t ext_fn,
7036           ppl_Coefficient_t ext_fd,
7037           ppl_Coefficient_t ext_vn,
7038           ppl_Coefficient_t ext_vd));
7039
7040
7041
7042
7043/*! \relates ppl_BD_Shape_mpz_class_tag */
7044int
7045ppl_BD_Shape_mpz_class_contains_BD_Shape_mpz_class
7046PPL_PROTO((ppl_const_BD_Shape_mpz_class_t x,
7047           ppl_const_BD_Shape_mpz_class_t y));
7048
7049/*! \relates ppl_BD_Shape_mpz_class_tag */
7050int
7051ppl_BD_Shape_mpz_class_strictly_contains_BD_Shape_mpz_class
7052PPL_PROTO((ppl_const_BD_Shape_mpz_class_t x,
7053           ppl_const_BD_Shape_mpz_class_t y));
7054
7055/*! \relates ppl_BD_Shape_mpz_class_tag */
7056int
7057ppl_BD_Shape_mpz_class_is_disjoint_from_BD_Shape_mpz_class
7058PPL_PROTO((ppl_const_BD_Shape_mpz_class_t x,
7059           ppl_const_BD_Shape_mpz_class_t y));
7060
7061
7062
7063
7064
7065/*! \relates ppl_BD_Shape_mpz_class_tag */
7066int
7067ppl_BD_Shape_mpz_class_equals_BD_Shape_mpz_class
7068PPL_PROTO((ppl_const_BD_Shape_mpz_class_t x,
7069           ppl_const_BD_Shape_mpz_class_t y));
7070
7071
7072
7073
7074/*! \relates ppl_BD_Shape_mpz_class_tag */
7075int
7076ppl_BD_Shape_mpz_class_OK
7077PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ph));
7078
7079
7080
7081
7082/*! \relates ppl_BD_Shape_mpz_class_tag */
7083int
7084ppl_BD_Shape_mpz_class_add_constraint
7085PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7086           ppl_const_Constraint_t c));
7087
7088/*! \relates ppl_BD_Shape_mpz_class_tag */
7089int
7090ppl_BD_Shape_mpz_class_add_congruence
7091PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7092           ppl_const_Congruence_t c));
7093
7094
7095
7096
7097
7098/*! \relates ppl_BD_Shape_mpz_class_tag */
7099int
7100ppl_BD_Shape_mpz_class_add_constraints
7101PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7102           ppl_const_Constraint_System_t cs));
7103
7104/*! \relates ppl_BD_Shape_mpz_class_tag */
7105int
7106ppl_BD_Shape_mpz_class_add_congruences
7107PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7108           ppl_const_Congruence_System_t cs));
7109
7110
7111
7112
7113
7114/*! \relates ppl_BD_Shape_mpz_class_tag */
7115int
7116ppl_BD_Shape_mpz_class_refine_with_constraint
7117PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7118           ppl_const_Constraint_t c));
7119
7120/*! \relates ppl_BD_Shape_mpz_class_tag */
7121int
7122ppl_BD_Shape_mpz_class_refine_with_congruence
7123PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7124           ppl_const_Congruence_t c));
7125
7126
7127
7128
7129
7130/*! \relates ppl_BD_Shape_mpz_class_tag */
7131int
7132ppl_BD_Shape_mpz_class_refine_with_constraints
7133PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7134           ppl_const_Constraint_System_t cs));
7135
7136/*! \relates ppl_BD_Shape_mpz_class_tag */
7137int
7138ppl_BD_Shape_mpz_class_refine_with_congruences
7139PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7140           ppl_const_Congruence_System_t cs));
7141
7142
7143
7144
7145
7146/*! \relates ppl_BD_Shape_mpz_class_tag */
7147int
7148ppl_BD_Shape_mpz_class_intersection_assign
7149PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7150           ppl_const_BD_Shape_mpz_class_t y));
7151
7152/*! \relates ppl_BD_Shape_mpz_class_tag */
7153int
7154ppl_BD_Shape_mpz_class_upper_bound_assign
7155PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7156           ppl_const_BD_Shape_mpz_class_t y));
7157
7158/*! \relates ppl_BD_Shape_mpz_class_tag */
7159int
7160ppl_BD_Shape_mpz_class_difference_assign
7161PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7162           ppl_const_BD_Shape_mpz_class_t y));
7163
7164/*! \relates ppl_BD_Shape_mpz_class_tag */
7165int
7166ppl_BD_Shape_mpz_class_concatenate_assign
7167PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7168           ppl_const_BD_Shape_mpz_class_t y));
7169
7170/*! \relates ppl_BD_Shape_mpz_class_tag */
7171int
7172ppl_BD_Shape_mpz_class_time_elapse_assign
7173PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7174           ppl_const_BD_Shape_mpz_class_t y));
7175
7176
7177
7178
7179
7180/*! \relates ppl_BD_Shape_mpz_class_tag */
7181int
7182ppl_BD_Shape_mpz_class_upper_bound_assign_if_exact
7183PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7184           ppl_const_BD_Shape_mpz_class_t y));
7185
7186
7187
7188
7189
7190/*! \relates ppl_BD_Shape_mpz_class_tag */
7191int
7192ppl_BD_Shape_mpz_class_simplify_using_context_assign
7193PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7194           ppl_const_BD_Shape_mpz_class_t y));
7195
7196
7197
7198
7199/*! \relates ppl_BD_Shape_mpz_class_tag */
7200int
7201ppl_BD_Shape_mpz_class_constrains
7202PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7203           ppl_dimension_type var));
7204
7205
7206
7207
7208/*! \relates ppl_BD_Shape_mpz_class_tag */
7209int
7210ppl_BD_Shape_mpz_class_unconstrain_space_dimension
7211PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7212           ppl_dimension_type var));
7213
7214
7215
7216
7217/*! \relates ppl_BD_Shape_mpz_class_tag */
7218int
7219ppl_BD_Shape_mpz_class_unconstrain_space_dimensions
7220PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7221           ppl_dimension_type ds[],
7222           size_t n));
7223
7224
7225
7226
7227/*! \relates ppl_BD_Shape_mpz_class_tag */
7228int
7229ppl_BD_Shape_mpz_class_affine_image
7230PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7231           ppl_dimension_type var,
7232           ppl_const_Linear_Expression_t le,
7233           ppl_const_Coefficient_t d));
7234
7235/*! \relates ppl_BD_Shape_mpz_class_tag */
7236int
7237ppl_BD_Shape_mpz_class_affine_preimage
7238PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7239           ppl_dimension_type var,
7240           ppl_const_Linear_Expression_t le,
7241           ppl_const_Coefficient_t d));
7242
7243
7244
7245
7246
7247/*! \relates ppl_BD_Shape_mpz_class_tag */
7248int
7249ppl_BD_Shape_mpz_class_bounded_affine_image
7250PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7251           ppl_dimension_type var,
7252           ppl_const_Linear_Expression_t lb,
7253           ppl_const_Linear_Expression_t ub,
7254           ppl_const_Coefficient_t d));
7255
7256/*! \relates ppl_BD_Shape_mpz_class_tag */
7257int
7258ppl_BD_Shape_mpz_class_bounded_affine_preimage
7259PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7260           ppl_dimension_type var,
7261           ppl_const_Linear_Expression_t lb,
7262           ppl_const_Linear_Expression_t ub,
7263           ppl_const_Coefficient_t d));
7264
7265
7266
7267
7268
7269/*! \relates ppl_BD_Shape_mpz_class_tag */
7270int
7271ppl_BD_Shape_mpz_class_generalized_affine_image
7272PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7273           ppl_dimension_type var,
7274           enum ppl_enum_Constraint_Type relsym,
7275           ppl_const_Linear_Expression_t le,
7276           ppl_const_Coefficient_t d));
7277
7278/*! \relates ppl_BD_Shape_mpz_class_tag */
7279int
7280ppl_BD_Shape_mpz_class_generalized_affine_preimage
7281PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7282           ppl_dimension_type var,
7283           enum ppl_enum_Constraint_Type relsym,
7284           ppl_const_Linear_Expression_t le,
7285           ppl_const_Coefficient_t d));
7286
7287
7288
7289
7290
7291/*! \relates ppl_BD_Shape_mpz_class_tag */
7292int
7293ppl_BD_Shape_mpz_class_generalized_affine_image_lhs_rhs
7294PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7295           ppl_const_Linear_Expression_t lhs,
7296           enum ppl_enum_Constraint_Type relsym,
7297           ppl_const_Linear_Expression_t rhs));
7298
7299/*! \relates ppl_BD_Shape_mpz_class_tag */
7300int
7301ppl_BD_Shape_mpz_class_generalized_affine_preimage_lhs_rhs
7302PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7303           ppl_const_Linear_Expression_t lhs,
7304           enum ppl_enum_Constraint_Type relsym,
7305           ppl_const_Linear_Expression_t rhs));
7306
7307
7308
7309
7310
7311/*! \relates ppl_BD_Shape_mpz_class_tag */
7312int
7313ppl_BD_Shape_mpz_class_add_space_dimensions_and_embed
7314PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7315           ppl_dimension_type d));
7316
7317/*! \relates ppl_BD_Shape_mpz_class_tag */
7318int
7319ppl_BD_Shape_mpz_class_add_space_dimensions_and_project
7320PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7321           ppl_dimension_type d));
7322
7323
7324
7325
7326
7327/*! \relates ppl_BD_Shape_mpz_class_tag */
7328int
7329ppl_BD_Shape_mpz_class_remove_space_dimensions
7330PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7331           ppl_dimension_type ds[],
7332           size_t n));
7333
7334
7335
7336
7337/*! \relates ppl_BD_Shape_mpz_class_tag */
7338int
7339ppl_BD_Shape_mpz_class_remove_higher_space_dimensions
7340PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7341           ppl_dimension_type d));
7342
7343
7344
7345
7346/*! \relates ppl_BD_Shape_mpz_class_tag */
7347int
7348ppl_BD_Shape_mpz_class_expand_space_dimension
7349PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7350           ppl_dimension_type d,
7351           ppl_dimension_type m));
7352
7353
7354
7355
7356/*! \relates ppl_BD_Shape_mpz_class_tag */
7357int
7358ppl_BD_Shape_mpz_class_fold_space_dimensions
7359PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7360           ppl_dimension_type ds[],
7361           size_t n,
7362           ppl_dimension_type d));
7363
7364
7365
7366
7367/*! \relates ppl_BD_Shape_mpz_class_tag */
7368int
7369ppl_BD_Shape_mpz_class_map_space_dimensions
7370PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7371           ppl_dimension_type maps[],
7372           size_t n));
7373
7374
7375
7376
7377/*! \relates ppl_BD_Shape_mpz_class_tag */
7378int
7379ppl_BD_Shape_mpz_class_drop_some_non_integer_points
7380PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7381           int complexity));
7382
7383
7384
7385
7386/*! \relates ppl_BD_Shape_mpz_class_tag */
7387int
7388ppl_BD_Shape_mpz_class_drop_some_non_integer_points_2
7389PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7390           ppl_dimension_type ds[],
7391           size_t n,
7392           int complexity));
7393
7394
7395
7396
7397
7398
7399/*! \relates ppl_BD_Shape_mpz_class_tag */
7400int
7401ppl_BD_Shape_mpz_class_external_memory_in_bytes
7402PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ps,
7403           size_t* sz));
7404
7405/*! \relates ppl_BD_Shape_mpz_class_tag */
7406int
7407ppl_BD_Shape_mpz_class_total_memory_in_bytes
7408PPL_PROTO((ppl_const_BD_Shape_mpz_class_t ps,
7409           size_t* sz));
7410
7411
7412
7413
7414
7415/*! \relates ppl_BD_Shape_mpz_class_tag */
7416int
7417ppl_BD_Shape_mpz_class_BHMZ05_widening_assign_with_tokens
7418PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7419           ppl_const_BD_Shape_mpz_class_t y,
7420           unsigned* tp));
7421
7422/*! \relates ppl_BD_Shape_mpz_class_tag */
7423int
7424ppl_BD_Shape_mpz_class_H79_widening_assign_with_tokens
7425PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7426           ppl_const_BD_Shape_mpz_class_t y,
7427           unsigned* tp));
7428
7429
7430
7431
7432
7433/*! \relates ppl_BD_Shape_mpz_class_tag */
7434int
7435ppl_BD_Shape_mpz_class_BHMZ05_widening_assign
7436PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7437           ppl_const_BD_Shape_mpz_class_t y));
7438
7439/*! \relates ppl_BD_Shape_mpz_class_tag */
7440int
7441ppl_BD_Shape_mpz_class_H79_widening_assign
7442PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7443           ppl_const_BD_Shape_mpz_class_t y));
7444
7445
7446
7447
7448
7449/*! \relates ppl_BD_Shape_mpz_class_tag */
7450int
7451ppl_BD_Shape_mpz_class_widening_assign_with_tokens
7452PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7453           ppl_const_BD_Shape_mpz_class_t y,
7454           unsigned* tp));
7455
7456
7457
7458
7459/*! \relates ppl_BD_Shape_mpz_class_tag */
7460int
7461ppl_BD_Shape_mpz_class_widening_assign
7462PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7463           ppl_const_BD_Shape_mpz_class_t y));
7464
7465
7466
7467
7468/*! \relates ppl_BD_Shape_mpz_class_tag */
7469int
7470ppl_BD_Shape_mpz_class_limited_BHMZ05_extrapolation_assign_with_tokens
7471PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7472           ppl_const_BD_Shape_mpz_class_t y,
7473           ppl_const_Constraint_System_t cs,
7474           unsigned* tp));
7475
7476/*! \relates ppl_BD_Shape_mpz_class_tag */
7477int
7478ppl_BD_Shape_mpz_class_limited_H79_extrapolation_assign_with_tokens
7479PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7480           ppl_const_BD_Shape_mpz_class_t y,
7481           ppl_const_Constraint_System_t cs,
7482           unsigned* tp));
7483
7484/*! \relates ppl_BD_Shape_mpz_class_tag */
7485int
7486ppl_BD_Shape_mpz_class_limited_CC76_extrapolation_assign_with_tokens
7487PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7488           ppl_const_BD_Shape_mpz_class_t y,
7489           ppl_const_Constraint_System_t cs,
7490           unsigned* tp));
7491
7492
7493
7494
7495
7496
7497
7498/*! \relates ppl_BD_Shape_mpz_class_tag */
7499int
7500ppl_BD_Shape_mpz_class_limited_BHMZ05_extrapolation_assign
7501PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7502           ppl_const_BD_Shape_mpz_class_t y,
7503           ppl_const_Constraint_System_t cs));
7504
7505/*! \relates ppl_BD_Shape_mpz_class_tag */
7506int
7507ppl_BD_Shape_mpz_class_limited_H79_extrapolation_assign
7508PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7509           ppl_const_BD_Shape_mpz_class_t y,
7510           ppl_const_Constraint_System_t cs));
7511
7512/*! \relates ppl_BD_Shape_mpz_class_tag */
7513int
7514ppl_BD_Shape_mpz_class_limited_CC76_extrapolation_assign
7515PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7516           ppl_const_BD_Shape_mpz_class_t y,
7517           ppl_const_Constraint_System_t cs));
7518
7519
7520
7521
7522
7523
7524
7525/*! \relates ppl_BD_Shape_mpz_class_tag */
7526int
7527ppl_BD_Shape_mpz_class_CC76_extrapolation_assign_with_tokens
7528PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7529           ppl_const_BD_Shape_mpz_class_t y,
7530           unsigned* tp));
7531
7532
7533
7534
7535
7536/*! \relates ppl_BD_Shape_mpz_class_tag */
7537int
7538ppl_BD_Shape_mpz_class_CC76_extrapolation_assign
7539PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7540           ppl_const_BD_Shape_mpz_class_t y));
7541
7542
7543
7544
7545
7546/*! \relates ppl_BD_Shape_mpz_class_tag */
7547int
7548ppl_BD_Shape_mpz_class_CC76_narrowing_assign
7549PPL_PROTO((ppl_BD_Shape_mpz_class_t x,
7550           ppl_const_BD_Shape_mpz_class_t y));
7551
7552
7553
7554
7555
7556/*! \relates ppl_BD_Shape_mpz_class_tag */
7557int
7558ppl_BD_Shape_mpz_class_linear_partition
7559PPL_PROTO((ppl_const_BD_Shape_mpz_class_t x,
7560           ppl_const_BD_Shape_mpz_class_t y,
7561           ppl_BD_Shape_mpz_class_t* p_inters,
7562           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
7563
7564
7565
7566
7567
7568/*! \relates ppl_BD_Shape_mpz_class_tag */
7569int
7570ppl_BD_Shape_mpz_class_wrap_assign
7571PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7572           ppl_dimension_type ds[],
7573           size_t n,
7574           enum ppl_enum_Bounded_Integer_Type_Width w,
7575           enum ppl_enum_Bounded_Integer_Type_Representation r,
7576           enum ppl_enum_Bounded_Integer_Type_Overflow o,
7577           const ppl_const_Constraint_System_t* pcs,
7578           unsigned complexity_threshold,
7579           int wrap_individually));
7580
7581
7582
7583/*! \relates ppl_BD_Shape_mpz_class_tag */
7584int
7585ppl_new_BD_Shape_mpz_class_recycle_Constraint_System
7586PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_Constraint_System_t cs));
7587
7588/*! \relates ppl_BD_Shape_mpz_class_tag */
7589int
7590ppl_new_BD_Shape_mpz_class_recycle_Congruence_System
7591PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_Congruence_System_t cs));
7592
7593/*! \relates ppl_BD_Shape_mpz_class_tag */
7594int
7595ppl_new_BD_Shape_mpz_class_recycle_Generator_System
7596PPL_PROTO((ppl_BD_Shape_mpz_class_t* pph, ppl_Generator_System_t cs));
7597
7598
7599
7600
7601
7602
7603/*! \relates ppl_BD_Shape_mpz_class_tag */
7604int
7605ppl_assign_BD_Shape_mpz_class_from_BD_Shape_mpz_class
7606PPL_PROTO((ppl_BD_Shape_mpz_class_t dst, ppl_const_BD_Shape_mpz_class_t src));
7607
7608
7609
7610
7611
7612/*! \relates ppl_BD_Shape_mpz_class_tag */
7613int
7614ppl_BD_Shape_mpz_class_add_recycled_constraints
7615PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7616           ppl_Constraint_System_t cs));
7617
7618/*! \relates ppl_BD_Shape_mpz_class_tag */
7619int
7620ppl_BD_Shape_mpz_class_add_recycled_congruences
7621PPL_PROTO((ppl_BD_Shape_mpz_class_t ph,
7622           ppl_Congruence_System_t cs));
7623
7624
7625
7626
7627
7628/*! \relates ppl_BD_Shape_mpz_class_tag */
7629int
7630ppl_termination_test_MS_BD_Shape_mpz_class
7631PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset));
7632
7633/*! \relates ppl_BD_Shape_mpz_class_tag */
7634int
7635ppl_termination_test_PR_BD_Shape_mpz_class
7636PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset));
7637
7638
7639
7640
7641
7642
7643/*! \relates ppl_BD_Shape_mpz_class_tag */
7644int
7645ppl_one_affine_ranking_function_MS_BD_Shape_mpz_class
7646PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset,
7647           ppl_Generator_t point));
7648
7649/*! \relates ppl_BD_Shape_mpz_class_tag */
7650int
7651ppl_one_affine_ranking_function_PR_BD_Shape_mpz_class
7652PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset,
7653           ppl_Generator_t point));
7654
7655
7656
7657
7658
7659
7660/*! \relates ppl_BD_Shape_mpz_class_tag */
7661int
7662ppl_all_affine_ranking_functions_MS_BD_Shape_mpz_class
7663PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset,
7664           ppl_Polyhedron_t ph));
7665
7666/*! \relates ppl_BD_Shape_mpz_class_tag */
7667int
7668ppl_all_affine_ranking_functions_PR_BD_Shape_mpz_class
7669PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset,
7670           ppl_Polyhedron_t ph));
7671
7672
7673
7674
7675
7676
7677/*! \relates ppl_BD_Shape_mpz_class_tag */
7678int
7679ppl_termination_test_MS_BD_Shape_mpz_class_2
7680PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before, ppl_const_BD_Shape_mpz_class_t pset_after));
7681
7682/*! \relates ppl_BD_Shape_mpz_class_tag */
7683int
7684ppl_termination_test_PR_BD_Shape_mpz_class_2
7685PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before, ppl_const_BD_Shape_mpz_class_t pset_after));
7686
7687
7688
7689
7690
7691
7692/*! \relates ppl_BD_Shape_mpz_class_tag */
7693int
7694ppl_one_affine_ranking_function_MS_BD_Shape_mpz_class_2
7695PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before,
7696           ppl_const_BD_Shape_mpz_class_t pset_after,
7697           ppl_Generator_t point));
7698
7699/*! \relates ppl_BD_Shape_mpz_class_tag */
7700int
7701ppl_one_affine_ranking_function_PR_BD_Shape_mpz_class_2
7702PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before,
7703           ppl_const_BD_Shape_mpz_class_t pset_after,
7704           ppl_Generator_t point));
7705
7706
7707
7708
7709
7710
7711/*! \relates ppl_BD_Shape_mpz_class_tag */
7712int
7713ppl_all_affine_ranking_functions_MS_BD_Shape_mpz_class_2
7714PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before,
7715           ppl_const_BD_Shape_mpz_class_t pset_after,
7716           ppl_Polyhedron_t ph));
7717
7718/*! \relates ppl_BD_Shape_mpz_class_tag */
7719int
7720ppl_all_affine_ranking_functions_PR_BD_Shape_mpz_class_2
7721PPL_PROTO((ppl_const_BD_Shape_mpz_class_t pset_before,
7722           ppl_const_BD_Shape_mpz_class_t pset_after,
7723           ppl_Polyhedron_t ph));
7724
7725
7726
7727
7728
7729
7730
7731PPL_DECLARE_IO_FUNCTIONS(BD_Shape_mpz_class)
7732
7733/* End of Functions Related to ppl_BD_Shape_mpz_class_tag */
7734
7735/*! \interface ppl_BD_Shape_mpq_class_tag
7736  \brief Types and functions for ppl_BD_Shape_mpq_class_tag
7737*/
7738
7739/*! \relates ppl_BD_Shape_mpq_class_tag */
7740int
7741ppl_delete_BD_Shape_mpq_class
7742PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7743
7744
7745
7746
7747/*! \relates ppl_BD_Shape_mpq_class_tag */
7748int
7749ppl_new_BD_Shape_mpq_class_from_space_dimension
7750PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_dimension_type d, int empty));
7751
7752
7753
7754
7755
7756/*! \relates ppl_BD_Shape_mpq_class_tag */
7757int
7758ppl_new_BD_Shape_mpq_class_from_C_Polyhedron
7759PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph));
7760
7761/*! \relates ppl_BD_Shape_mpq_class_tag */
7762int
7763ppl_new_BD_Shape_mpq_class_from_NNC_Polyhedron
7764PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph));
7765
7766/*! \relates ppl_BD_Shape_mpq_class_tag */
7767int
7768ppl_new_BD_Shape_mpq_class_from_Grid
7769PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Grid_t ph));
7770
7771/*! \relates ppl_BD_Shape_mpq_class_tag */
7772int
7773ppl_new_BD_Shape_mpq_class_from_Rational_Box
7774PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Rational_Box_t ph));
7775
7776/*! \relates ppl_BD_Shape_mpq_class_tag */
7777int
7778ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpz_class
7779PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
7780
7781/*! \relates ppl_BD_Shape_mpq_class_tag */
7782int
7783ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpq_class
7784PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
7785
7786/*! \relates ppl_BD_Shape_mpq_class_tag */
7787int
7788ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpz_class
7789PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
7790
7791/*! \relates ppl_BD_Shape_mpq_class_tag */
7792int
7793ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpq_class
7794PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
7795
7796/*! \relates ppl_BD_Shape_mpq_class_tag */
7797int
7798ppl_new_BD_Shape_mpq_class_from_Double_Box
7799PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Double_Box_t ph));
7800
7801/*! \relates ppl_BD_Shape_mpq_class_tag */
7802int
7803ppl_new_BD_Shape_mpq_class_from_BD_Shape_double
7804PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_double_t ph));
7805
7806/*! \relates ppl_BD_Shape_mpq_class_tag */
7807int
7808ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_double
7809PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_double_t ph));
7810
7811
7812
7813
7814
7815
7816/*! \relates ppl_BD_Shape_mpq_class_tag */
7817int
7818ppl_new_BD_Shape_mpq_class_from_C_Polyhedron_with_complexity
7819PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
7820
7821/*! \relates ppl_BD_Shape_mpq_class_tag */
7822int
7823ppl_new_BD_Shape_mpq_class_from_NNC_Polyhedron_with_complexity
7824PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
7825
7826/*! \relates ppl_BD_Shape_mpq_class_tag */
7827int
7828ppl_new_BD_Shape_mpq_class_from_Grid_with_complexity
7829PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Grid_t ph, int complexity));
7830
7831/*! \relates ppl_BD_Shape_mpq_class_tag */
7832int
7833ppl_new_BD_Shape_mpq_class_from_Rational_Box_with_complexity
7834PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Rational_Box_t ph, int complexity));
7835
7836/*! \relates ppl_BD_Shape_mpq_class_tag */
7837int
7838ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpz_class_with_complexity
7839PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
7840
7841/*! \relates ppl_BD_Shape_mpq_class_tag */
7842int
7843ppl_new_BD_Shape_mpq_class_from_BD_Shape_mpq_class_with_complexity
7844PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
7845
7846/*! \relates ppl_BD_Shape_mpq_class_tag */
7847int
7848ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpz_class_with_complexity
7849PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
7850
7851/*! \relates ppl_BD_Shape_mpq_class_tag */
7852int
7853ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_mpq_class_with_complexity
7854PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
7855
7856/*! \relates ppl_BD_Shape_mpq_class_tag */
7857int
7858ppl_new_BD_Shape_mpq_class_from_Double_Box_with_complexity
7859PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Double_Box_t ph, int complexity));
7860
7861/*! \relates ppl_BD_Shape_mpq_class_tag */
7862int
7863ppl_new_BD_Shape_mpq_class_from_BD_Shape_double_with_complexity
7864PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
7865
7866/*! \relates ppl_BD_Shape_mpq_class_tag */
7867int
7868ppl_new_BD_Shape_mpq_class_from_Octagonal_Shape_double_with_complexity
7869PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
7870
7871
7872
7873
7874
7875
7876/*! \relates ppl_BD_Shape_mpq_class_tag */
7877int
7878ppl_new_BD_Shape_mpq_class_from_Constraint_System
7879PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Constraint_System_t cs));
7880
7881/*! \relates ppl_BD_Shape_mpq_class_tag */
7882int
7883ppl_new_BD_Shape_mpq_class_from_Congruence_System
7884PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Congruence_System_t cs));
7885
7886/*! \relates ppl_BD_Shape_mpq_class_tag */
7887int
7888ppl_new_BD_Shape_mpq_class_from_Generator_System
7889PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_const_Generator_System_t cs));
7890
7891
7892
7893
7894
7895
7896
7897
7898/*! \relates ppl_BD_Shape_mpq_class_tag */
7899int
7900ppl_BD_Shape_mpq_class_space_dimension
7901PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph, ppl_dimension_type* m));
7902
7903/*! \relates ppl_BD_Shape_mpq_class_tag */
7904int
7905ppl_BD_Shape_mpq_class_affine_dimension
7906PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph, ppl_dimension_type* m));
7907
7908
7909
7910
7911
7912/*! \relates ppl_BD_Shape_mpq_class_tag */
7913int
7914ppl_BD_Shape_mpq_class_relation_with_Constraint
7915PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7916           ppl_const_Constraint_t c));
7917
7918/*! \relates ppl_BD_Shape_mpq_class_tag */
7919int
7920ppl_BD_Shape_mpq_class_relation_with_Generator
7921PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7922           ppl_const_Generator_t c));
7923
7924/*! \relates ppl_BD_Shape_mpq_class_tag */
7925int
7926ppl_BD_Shape_mpq_class_relation_with_Congruence
7927PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7928           ppl_const_Congruence_t c));
7929
7930
7931
7932
7933
7934/*! \relates ppl_BD_Shape_mpq_class_tag */
7935int
7936ppl_BD_Shape_mpq_class_get_constraints
7937PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7938           ppl_const_Constraint_System_t* pcs));
7939
7940/*! \relates ppl_BD_Shape_mpq_class_tag */
7941int
7942ppl_BD_Shape_mpq_class_get_congruences
7943PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7944           ppl_const_Congruence_System_t* pcs));
7945
7946
7947
7948
7949
7950/*! \relates ppl_BD_Shape_mpq_class_tag */
7951int
7952ppl_BD_Shape_mpq_class_get_minimized_constraints
7953PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7954           ppl_const_Constraint_System_t* pcs));
7955
7956/*! \relates ppl_BD_Shape_mpq_class_tag */
7957int
7958ppl_BD_Shape_mpq_class_get_minimized_congruences
7959PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
7960           ppl_const_Congruence_System_t* pcs));
7961
7962
7963
7964
7965
7966/*! \relates ppl_BD_Shape_mpq_class_tag */
7967int
7968ppl_BD_Shape_mpq_class_is_empty
7969PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7970
7971/*! \relates ppl_BD_Shape_mpq_class_tag */
7972int
7973ppl_BD_Shape_mpq_class_is_universe
7974PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7975
7976/*! \relates ppl_BD_Shape_mpq_class_tag */
7977int
7978ppl_BD_Shape_mpq_class_is_bounded
7979PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7980
7981/*! \relates ppl_BD_Shape_mpq_class_tag */
7982int
7983ppl_BD_Shape_mpq_class_contains_integer_point
7984PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7985
7986/*! \relates ppl_BD_Shape_mpq_class_tag */
7987int
7988ppl_BD_Shape_mpq_class_is_topologically_closed
7989PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7990
7991/*! \relates ppl_BD_Shape_mpq_class_tag */
7992int
7993ppl_BD_Shape_mpq_class_is_discrete
7994PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
7995
7996
7997
7998
7999
8000/*! \relates ppl_BD_Shape_mpq_class_tag */
8001int
8002ppl_BD_Shape_mpq_class_topological_closure_assign
8003PPL_PROTO((ppl_BD_Shape_mpq_class_t ph));
8004
8005
8006
8007
8008
8009/*! \relates ppl_BD_Shape_mpq_class_tag */
8010int
8011ppl_BD_Shape_mpq_class_bounds_from_above
8012PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8013           ppl_const_Linear_Expression_t le));
8014
8015/*! \relates ppl_BD_Shape_mpq_class_tag */
8016int
8017ppl_BD_Shape_mpq_class_bounds_from_below
8018PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8019           ppl_const_Linear_Expression_t le));
8020
8021
8022
8023
8024
8025/*! \relates ppl_BD_Shape_mpq_class_tag */
8026int
8027ppl_BD_Shape_mpq_class_maximize
8028PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8029           ppl_const_Linear_Expression_t le,
8030           ppl_Coefficient_t ext_n,
8031           ppl_Coefficient_t ext_d,
8032           int* poptimum));
8033
8034/*! \relates ppl_BD_Shape_mpq_class_tag */
8035int
8036ppl_BD_Shape_mpq_class_minimize
8037PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8038           ppl_const_Linear_Expression_t le,
8039           ppl_Coefficient_t ext_n,
8040           ppl_Coefficient_t ext_d,
8041           int* poptimum));
8042
8043
8044
8045
8046
8047/*! \relates ppl_BD_Shape_mpq_class_tag */
8048int
8049ppl_BD_Shape_mpq_class_maximize_with_point
8050PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8051           ppl_const_Linear_Expression_t le,
8052           ppl_Coefficient_t ext_n,
8053           ppl_Coefficient_t ext_d,
8054           int* poptimum,
8055           ppl_Generator_t point));
8056
8057/*! \relates ppl_BD_Shape_mpq_class_tag */
8058int
8059ppl_BD_Shape_mpq_class_minimize_with_point
8060PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8061           ppl_const_Linear_Expression_t le,
8062           ppl_Coefficient_t ext_n,
8063           ppl_Coefficient_t ext_d,
8064           int* poptimum,
8065           ppl_Generator_t point));
8066
8067
8068
8069
8070
8071/*! \relates ppl_BD_Shape_mpq_class_tag */
8072int
8073ppl_BD_Shape_mpq_class_frequency
8074PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph,
8075           ppl_const_Linear_Expression_t le,
8076           ppl_Coefficient_t ext_fn,
8077           ppl_Coefficient_t ext_fd,
8078           ppl_Coefficient_t ext_vn,
8079           ppl_Coefficient_t ext_vd));
8080
8081
8082
8083
8084/*! \relates ppl_BD_Shape_mpq_class_tag */
8085int
8086ppl_BD_Shape_mpq_class_contains_BD_Shape_mpq_class
8087PPL_PROTO((ppl_const_BD_Shape_mpq_class_t x,
8088           ppl_const_BD_Shape_mpq_class_t y));
8089
8090/*! \relates ppl_BD_Shape_mpq_class_tag */
8091int
8092ppl_BD_Shape_mpq_class_strictly_contains_BD_Shape_mpq_class
8093PPL_PROTO((ppl_const_BD_Shape_mpq_class_t x,
8094           ppl_const_BD_Shape_mpq_class_t y));
8095
8096/*! \relates ppl_BD_Shape_mpq_class_tag */
8097int
8098ppl_BD_Shape_mpq_class_is_disjoint_from_BD_Shape_mpq_class
8099PPL_PROTO((ppl_const_BD_Shape_mpq_class_t x,
8100           ppl_const_BD_Shape_mpq_class_t y));
8101
8102
8103
8104
8105
8106/*! \relates ppl_BD_Shape_mpq_class_tag */
8107int
8108ppl_BD_Shape_mpq_class_equals_BD_Shape_mpq_class
8109PPL_PROTO((ppl_const_BD_Shape_mpq_class_t x,
8110           ppl_const_BD_Shape_mpq_class_t y));
8111
8112
8113
8114
8115/*! \relates ppl_BD_Shape_mpq_class_tag */
8116int
8117ppl_BD_Shape_mpq_class_OK
8118PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ph));
8119
8120
8121
8122
8123/*! \relates ppl_BD_Shape_mpq_class_tag */
8124int
8125ppl_BD_Shape_mpq_class_add_constraint
8126PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8127           ppl_const_Constraint_t c));
8128
8129/*! \relates ppl_BD_Shape_mpq_class_tag */
8130int
8131ppl_BD_Shape_mpq_class_add_congruence
8132PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8133           ppl_const_Congruence_t c));
8134
8135
8136
8137
8138
8139/*! \relates ppl_BD_Shape_mpq_class_tag */
8140int
8141ppl_BD_Shape_mpq_class_add_constraints
8142PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8143           ppl_const_Constraint_System_t cs));
8144
8145/*! \relates ppl_BD_Shape_mpq_class_tag */
8146int
8147ppl_BD_Shape_mpq_class_add_congruences
8148PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8149           ppl_const_Congruence_System_t cs));
8150
8151
8152
8153
8154
8155/*! \relates ppl_BD_Shape_mpq_class_tag */
8156int
8157ppl_BD_Shape_mpq_class_refine_with_constraint
8158PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8159           ppl_const_Constraint_t c));
8160
8161/*! \relates ppl_BD_Shape_mpq_class_tag */
8162int
8163ppl_BD_Shape_mpq_class_refine_with_congruence
8164PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8165           ppl_const_Congruence_t c));
8166
8167
8168
8169
8170
8171/*! \relates ppl_BD_Shape_mpq_class_tag */
8172int
8173ppl_BD_Shape_mpq_class_refine_with_constraints
8174PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8175           ppl_const_Constraint_System_t cs));
8176
8177/*! \relates ppl_BD_Shape_mpq_class_tag */
8178int
8179ppl_BD_Shape_mpq_class_refine_with_congruences
8180PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8181           ppl_const_Congruence_System_t cs));
8182
8183
8184
8185
8186
8187/*! \relates ppl_BD_Shape_mpq_class_tag */
8188int
8189ppl_BD_Shape_mpq_class_intersection_assign
8190PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8191           ppl_const_BD_Shape_mpq_class_t y));
8192
8193/*! \relates ppl_BD_Shape_mpq_class_tag */
8194int
8195ppl_BD_Shape_mpq_class_upper_bound_assign
8196PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8197           ppl_const_BD_Shape_mpq_class_t y));
8198
8199/*! \relates ppl_BD_Shape_mpq_class_tag */
8200int
8201ppl_BD_Shape_mpq_class_difference_assign
8202PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8203           ppl_const_BD_Shape_mpq_class_t y));
8204
8205/*! \relates ppl_BD_Shape_mpq_class_tag */
8206int
8207ppl_BD_Shape_mpq_class_concatenate_assign
8208PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8209           ppl_const_BD_Shape_mpq_class_t y));
8210
8211/*! \relates ppl_BD_Shape_mpq_class_tag */
8212int
8213ppl_BD_Shape_mpq_class_time_elapse_assign
8214PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8215           ppl_const_BD_Shape_mpq_class_t y));
8216
8217
8218
8219
8220
8221/*! \relates ppl_BD_Shape_mpq_class_tag */
8222int
8223ppl_BD_Shape_mpq_class_upper_bound_assign_if_exact
8224PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8225           ppl_const_BD_Shape_mpq_class_t y));
8226
8227
8228
8229
8230
8231/*! \relates ppl_BD_Shape_mpq_class_tag */
8232int
8233ppl_BD_Shape_mpq_class_simplify_using_context_assign
8234PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8235           ppl_const_BD_Shape_mpq_class_t y));
8236
8237
8238
8239
8240/*! \relates ppl_BD_Shape_mpq_class_tag */
8241int
8242ppl_BD_Shape_mpq_class_constrains
8243PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8244           ppl_dimension_type var));
8245
8246
8247
8248
8249/*! \relates ppl_BD_Shape_mpq_class_tag */
8250int
8251ppl_BD_Shape_mpq_class_unconstrain_space_dimension
8252PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8253           ppl_dimension_type var));
8254
8255
8256
8257
8258/*! \relates ppl_BD_Shape_mpq_class_tag */
8259int
8260ppl_BD_Shape_mpq_class_unconstrain_space_dimensions
8261PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8262           ppl_dimension_type ds[],
8263           size_t n));
8264
8265
8266
8267
8268/*! \relates ppl_BD_Shape_mpq_class_tag */
8269int
8270ppl_BD_Shape_mpq_class_affine_image
8271PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8272           ppl_dimension_type var,
8273           ppl_const_Linear_Expression_t le,
8274           ppl_const_Coefficient_t d));
8275
8276/*! \relates ppl_BD_Shape_mpq_class_tag */
8277int
8278ppl_BD_Shape_mpq_class_affine_preimage
8279PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8280           ppl_dimension_type var,
8281           ppl_const_Linear_Expression_t le,
8282           ppl_const_Coefficient_t d));
8283
8284
8285
8286
8287
8288/*! \relates ppl_BD_Shape_mpq_class_tag */
8289int
8290ppl_BD_Shape_mpq_class_bounded_affine_image
8291PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8292           ppl_dimension_type var,
8293           ppl_const_Linear_Expression_t lb,
8294           ppl_const_Linear_Expression_t ub,
8295           ppl_const_Coefficient_t d));
8296
8297/*! \relates ppl_BD_Shape_mpq_class_tag */
8298int
8299ppl_BD_Shape_mpq_class_bounded_affine_preimage
8300PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8301           ppl_dimension_type var,
8302           ppl_const_Linear_Expression_t lb,
8303           ppl_const_Linear_Expression_t ub,
8304           ppl_const_Coefficient_t d));
8305
8306
8307
8308
8309
8310/*! \relates ppl_BD_Shape_mpq_class_tag */
8311int
8312ppl_BD_Shape_mpq_class_generalized_affine_image
8313PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8314           ppl_dimension_type var,
8315           enum ppl_enum_Constraint_Type relsym,
8316           ppl_const_Linear_Expression_t le,
8317           ppl_const_Coefficient_t d));
8318
8319/*! \relates ppl_BD_Shape_mpq_class_tag */
8320int
8321ppl_BD_Shape_mpq_class_generalized_affine_preimage
8322PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8323           ppl_dimension_type var,
8324           enum ppl_enum_Constraint_Type relsym,
8325           ppl_const_Linear_Expression_t le,
8326           ppl_const_Coefficient_t d));
8327
8328
8329
8330
8331
8332/*! \relates ppl_BD_Shape_mpq_class_tag */
8333int
8334ppl_BD_Shape_mpq_class_generalized_affine_image_lhs_rhs
8335PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8336           ppl_const_Linear_Expression_t lhs,
8337           enum ppl_enum_Constraint_Type relsym,
8338           ppl_const_Linear_Expression_t rhs));
8339
8340/*! \relates ppl_BD_Shape_mpq_class_tag */
8341int
8342ppl_BD_Shape_mpq_class_generalized_affine_preimage_lhs_rhs
8343PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8344           ppl_const_Linear_Expression_t lhs,
8345           enum ppl_enum_Constraint_Type relsym,
8346           ppl_const_Linear_Expression_t rhs));
8347
8348
8349
8350
8351
8352/*! \relates ppl_BD_Shape_mpq_class_tag */
8353int
8354ppl_BD_Shape_mpq_class_add_space_dimensions_and_embed
8355PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8356           ppl_dimension_type d));
8357
8358/*! \relates ppl_BD_Shape_mpq_class_tag */
8359int
8360ppl_BD_Shape_mpq_class_add_space_dimensions_and_project
8361PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8362           ppl_dimension_type d));
8363
8364
8365
8366
8367
8368/*! \relates ppl_BD_Shape_mpq_class_tag */
8369int
8370ppl_BD_Shape_mpq_class_remove_space_dimensions
8371PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8372           ppl_dimension_type ds[],
8373           size_t n));
8374
8375
8376
8377
8378/*! \relates ppl_BD_Shape_mpq_class_tag */
8379int
8380ppl_BD_Shape_mpq_class_remove_higher_space_dimensions
8381PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8382           ppl_dimension_type d));
8383
8384
8385
8386
8387/*! \relates ppl_BD_Shape_mpq_class_tag */
8388int
8389ppl_BD_Shape_mpq_class_expand_space_dimension
8390PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8391           ppl_dimension_type d,
8392           ppl_dimension_type m));
8393
8394
8395
8396
8397/*! \relates ppl_BD_Shape_mpq_class_tag */
8398int
8399ppl_BD_Shape_mpq_class_fold_space_dimensions
8400PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8401           ppl_dimension_type ds[],
8402           size_t n,
8403           ppl_dimension_type d));
8404
8405
8406
8407
8408/*! \relates ppl_BD_Shape_mpq_class_tag */
8409int
8410ppl_BD_Shape_mpq_class_map_space_dimensions
8411PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8412           ppl_dimension_type maps[],
8413           size_t n));
8414
8415
8416
8417
8418/*! \relates ppl_BD_Shape_mpq_class_tag */
8419int
8420ppl_BD_Shape_mpq_class_drop_some_non_integer_points
8421PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8422           int complexity));
8423
8424
8425
8426
8427/*! \relates ppl_BD_Shape_mpq_class_tag */
8428int
8429ppl_BD_Shape_mpq_class_drop_some_non_integer_points_2
8430PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8431           ppl_dimension_type ds[],
8432           size_t n,
8433           int complexity));
8434
8435
8436
8437
8438
8439
8440/*! \relates ppl_BD_Shape_mpq_class_tag */
8441int
8442ppl_BD_Shape_mpq_class_external_memory_in_bytes
8443PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ps,
8444           size_t* sz));
8445
8446/*! \relates ppl_BD_Shape_mpq_class_tag */
8447int
8448ppl_BD_Shape_mpq_class_total_memory_in_bytes
8449PPL_PROTO((ppl_const_BD_Shape_mpq_class_t ps,
8450           size_t* sz));
8451
8452
8453
8454
8455
8456/*! \relates ppl_BD_Shape_mpq_class_tag */
8457int
8458ppl_BD_Shape_mpq_class_BHMZ05_widening_assign_with_tokens
8459PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8460           ppl_const_BD_Shape_mpq_class_t y,
8461           unsigned* tp));
8462
8463/*! \relates ppl_BD_Shape_mpq_class_tag */
8464int
8465ppl_BD_Shape_mpq_class_H79_widening_assign_with_tokens
8466PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8467           ppl_const_BD_Shape_mpq_class_t y,
8468           unsigned* tp));
8469
8470
8471
8472
8473
8474/*! \relates ppl_BD_Shape_mpq_class_tag */
8475int
8476ppl_BD_Shape_mpq_class_BHMZ05_widening_assign
8477PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8478           ppl_const_BD_Shape_mpq_class_t y));
8479
8480/*! \relates ppl_BD_Shape_mpq_class_tag */
8481int
8482ppl_BD_Shape_mpq_class_H79_widening_assign
8483PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8484           ppl_const_BD_Shape_mpq_class_t y));
8485
8486
8487
8488
8489
8490/*! \relates ppl_BD_Shape_mpq_class_tag */
8491int
8492ppl_BD_Shape_mpq_class_widening_assign_with_tokens
8493PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8494           ppl_const_BD_Shape_mpq_class_t y,
8495           unsigned* tp));
8496
8497
8498
8499
8500/*! \relates ppl_BD_Shape_mpq_class_tag */
8501int
8502ppl_BD_Shape_mpq_class_widening_assign
8503PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8504           ppl_const_BD_Shape_mpq_class_t y));
8505
8506
8507
8508
8509/*! \relates ppl_BD_Shape_mpq_class_tag */
8510int
8511ppl_BD_Shape_mpq_class_limited_BHMZ05_extrapolation_assign_with_tokens
8512PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8513           ppl_const_BD_Shape_mpq_class_t y,
8514           ppl_const_Constraint_System_t cs,
8515           unsigned* tp));
8516
8517/*! \relates ppl_BD_Shape_mpq_class_tag */
8518int
8519ppl_BD_Shape_mpq_class_limited_H79_extrapolation_assign_with_tokens
8520PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8521           ppl_const_BD_Shape_mpq_class_t y,
8522           ppl_const_Constraint_System_t cs,
8523           unsigned* tp));
8524
8525/*! \relates ppl_BD_Shape_mpq_class_tag */
8526int
8527ppl_BD_Shape_mpq_class_limited_CC76_extrapolation_assign_with_tokens
8528PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8529           ppl_const_BD_Shape_mpq_class_t y,
8530           ppl_const_Constraint_System_t cs,
8531           unsigned* tp));
8532
8533
8534
8535
8536
8537
8538
8539/*! \relates ppl_BD_Shape_mpq_class_tag */
8540int
8541ppl_BD_Shape_mpq_class_limited_BHMZ05_extrapolation_assign
8542PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8543           ppl_const_BD_Shape_mpq_class_t y,
8544           ppl_const_Constraint_System_t cs));
8545
8546/*! \relates ppl_BD_Shape_mpq_class_tag */
8547int
8548ppl_BD_Shape_mpq_class_limited_H79_extrapolation_assign
8549PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8550           ppl_const_BD_Shape_mpq_class_t y,
8551           ppl_const_Constraint_System_t cs));
8552
8553/*! \relates ppl_BD_Shape_mpq_class_tag */
8554int
8555ppl_BD_Shape_mpq_class_limited_CC76_extrapolation_assign
8556PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8557           ppl_const_BD_Shape_mpq_class_t y,
8558           ppl_const_Constraint_System_t cs));
8559
8560
8561
8562
8563
8564
8565
8566/*! \relates ppl_BD_Shape_mpq_class_tag */
8567int
8568ppl_BD_Shape_mpq_class_CC76_extrapolation_assign_with_tokens
8569PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8570           ppl_const_BD_Shape_mpq_class_t y,
8571           unsigned* tp));
8572
8573
8574
8575
8576
8577/*! \relates ppl_BD_Shape_mpq_class_tag */
8578int
8579ppl_BD_Shape_mpq_class_CC76_extrapolation_assign
8580PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8581           ppl_const_BD_Shape_mpq_class_t y));
8582
8583
8584
8585
8586
8587/*! \relates ppl_BD_Shape_mpq_class_tag */
8588int
8589ppl_BD_Shape_mpq_class_CC76_narrowing_assign
8590PPL_PROTO((ppl_BD_Shape_mpq_class_t x,
8591           ppl_const_BD_Shape_mpq_class_t y));
8592
8593
8594
8595
8596
8597/*! \relates ppl_BD_Shape_mpq_class_tag */
8598int
8599ppl_BD_Shape_mpq_class_linear_partition
8600PPL_PROTO((ppl_const_BD_Shape_mpq_class_t x,
8601           ppl_const_BD_Shape_mpq_class_t y,
8602           ppl_BD_Shape_mpq_class_t* p_inters,
8603           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
8604
8605
8606
8607
8608
8609/*! \relates ppl_BD_Shape_mpq_class_tag */
8610int
8611ppl_BD_Shape_mpq_class_wrap_assign
8612PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8613           ppl_dimension_type ds[],
8614           size_t n,
8615           enum ppl_enum_Bounded_Integer_Type_Width w,
8616           enum ppl_enum_Bounded_Integer_Type_Representation r,
8617           enum ppl_enum_Bounded_Integer_Type_Overflow o,
8618           const ppl_const_Constraint_System_t* pcs,
8619           unsigned complexity_threshold,
8620           int wrap_individually));
8621
8622
8623
8624/*! \relates ppl_BD_Shape_mpq_class_tag */
8625int
8626ppl_new_BD_Shape_mpq_class_recycle_Constraint_System
8627PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_Constraint_System_t cs));
8628
8629/*! \relates ppl_BD_Shape_mpq_class_tag */
8630int
8631ppl_new_BD_Shape_mpq_class_recycle_Congruence_System
8632PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_Congruence_System_t cs));
8633
8634/*! \relates ppl_BD_Shape_mpq_class_tag */
8635int
8636ppl_new_BD_Shape_mpq_class_recycle_Generator_System
8637PPL_PROTO((ppl_BD_Shape_mpq_class_t* pph, ppl_Generator_System_t cs));
8638
8639
8640
8641
8642
8643
8644/*! \relates ppl_BD_Shape_mpq_class_tag */
8645int
8646ppl_assign_BD_Shape_mpq_class_from_BD_Shape_mpq_class
8647PPL_PROTO((ppl_BD_Shape_mpq_class_t dst, ppl_const_BD_Shape_mpq_class_t src));
8648
8649
8650
8651
8652
8653/*! \relates ppl_BD_Shape_mpq_class_tag */
8654int
8655ppl_BD_Shape_mpq_class_add_recycled_constraints
8656PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8657           ppl_Constraint_System_t cs));
8658
8659/*! \relates ppl_BD_Shape_mpq_class_tag */
8660int
8661ppl_BD_Shape_mpq_class_add_recycled_congruences
8662PPL_PROTO((ppl_BD_Shape_mpq_class_t ph,
8663           ppl_Congruence_System_t cs));
8664
8665
8666
8667
8668
8669/*! \relates ppl_BD_Shape_mpq_class_tag */
8670int
8671ppl_termination_test_MS_BD_Shape_mpq_class
8672PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset));
8673
8674/*! \relates ppl_BD_Shape_mpq_class_tag */
8675int
8676ppl_termination_test_PR_BD_Shape_mpq_class
8677PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset));
8678
8679
8680
8681
8682
8683
8684/*! \relates ppl_BD_Shape_mpq_class_tag */
8685int
8686ppl_one_affine_ranking_function_MS_BD_Shape_mpq_class
8687PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset,
8688           ppl_Generator_t point));
8689
8690/*! \relates ppl_BD_Shape_mpq_class_tag */
8691int
8692ppl_one_affine_ranking_function_PR_BD_Shape_mpq_class
8693PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset,
8694           ppl_Generator_t point));
8695
8696
8697
8698
8699
8700
8701/*! \relates ppl_BD_Shape_mpq_class_tag */
8702int
8703ppl_all_affine_ranking_functions_MS_BD_Shape_mpq_class
8704PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset,
8705           ppl_Polyhedron_t ph));
8706
8707/*! \relates ppl_BD_Shape_mpq_class_tag */
8708int
8709ppl_all_affine_ranking_functions_PR_BD_Shape_mpq_class
8710PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset,
8711           ppl_Polyhedron_t ph));
8712
8713
8714
8715
8716
8717
8718/*! \relates ppl_BD_Shape_mpq_class_tag */
8719int
8720ppl_termination_test_MS_BD_Shape_mpq_class_2
8721PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before, ppl_const_BD_Shape_mpq_class_t pset_after));
8722
8723/*! \relates ppl_BD_Shape_mpq_class_tag */
8724int
8725ppl_termination_test_PR_BD_Shape_mpq_class_2
8726PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before, ppl_const_BD_Shape_mpq_class_t pset_after));
8727
8728
8729
8730
8731
8732
8733/*! \relates ppl_BD_Shape_mpq_class_tag */
8734int
8735ppl_one_affine_ranking_function_MS_BD_Shape_mpq_class_2
8736PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before,
8737           ppl_const_BD_Shape_mpq_class_t pset_after,
8738           ppl_Generator_t point));
8739
8740/*! \relates ppl_BD_Shape_mpq_class_tag */
8741int
8742ppl_one_affine_ranking_function_PR_BD_Shape_mpq_class_2
8743PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before,
8744           ppl_const_BD_Shape_mpq_class_t pset_after,
8745           ppl_Generator_t point));
8746
8747
8748
8749
8750
8751
8752/*! \relates ppl_BD_Shape_mpq_class_tag */
8753int
8754ppl_all_affine_ranking_functions_MS_BD_Shape_mpq_class_2
8755PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before,
8756           ppl_const_BD_Shape_mpq_class_t pset_after,
8757           ppl_Polyhedron_t ph));
8758
8759/*! \relates ppl_BD_Shape_mpq_class_tag */
8760int
8761ppl_all_affine_ranking_functions_PR_BD_Shape_mpq_class_2
8762PPL_PROTO((ppl_const_BD_Shape_mpq_class_t pset_before,
8763           ppl_const_BD_Shape_mpq_class_t pset_after,
8764           ppl_Polyhedron_t ph));
8765
8766
8767
8768
8769
8770
8771
8772PPL_DECLARE_IO_FUNCTIONS(BD_Shape_mpq_class)
8773
8774/* End of Functions Related to ppl_BD_Shape_mpq_class_tag */
8775
8776/*! \interface ppl_Octagonal_Shape_mpz_class_tag
8777  \brief Types and functions for ppl_Octagonal_Shape_mpz_class_tag
8778*/
8779
8780/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8781int
8782ppl_delete_Octagonal_Shape_mpz_class
8783PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
8784
8785
8786
8787
8788/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8789int
8790ppl_new_Octagonal_Shape_mpz_class_from_space_dimension
8791PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_dimension_type d, int empty));
8792
8793
8794
8795
8796
8797/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8798int
8799ppl_new_Octagonal_Shape_mpz_class_from_C_Polyhedron
8800PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph));
8801
8802/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8803int
8804ppl_new_Octagonal_Shape_mpz_class_from_NNC_Polyhedron
8805PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph));
8806
8807/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8808int
8809ppl_new_Octagonal_Shape_mpz_class_from_Grid
8810PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Grid_t ph));
8811
8812/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8813int
8814ppl_new_Octagonal_Shape_mpz_class_from_Rational_Box
8815PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Rational_Box_t ph));
8816
8817/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8818int
8819ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpz_class
8820PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
8821
8822/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8823int
8824ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpq_class
8825PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
8826
8827/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8828int
8829ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class
8830PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
8831
8832/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8833int
8834ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpq_class
8835PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
8836
8837/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8838int
8839ppl_new_Octagonal_Shape_mpz_class_from_Double_Box
8840PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Double_Box_t ph));
8841
8842/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8843int
8844ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_double
8845PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_double_t ph));
8846
8847/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8848int
8849ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_double
8850PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_double_t ph));
8851
8852
8853
8854
8855
8856
8857/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8858int
8859ppl_new_Octagonal_Shape_mpz_class_from_C_Polyhedron_with_complexity
8860PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
8861
8862/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8863int
8864ppl_new_Octagonal_Shape_mpz_class_from_NNC_Polyhedron_with_complexity
8865PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
8866
8867/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8868int
8869ppl_new_Octagonal_Shape_mpz_class_from_Grid_with_complexity
8870PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Grid_t ph, int complexity));
8871
8872/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8873int
8874ppl_new_Octagonal_Shape_mpz_class_from_Rational_Box_with_complexity
8875PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Rational_Box_t ph, int complexity));
8876
8877/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8878int
8879ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpz_class_with_complexity
8880PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
8881
8882/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8883int
8884ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_mpq_class_with_complexity
8885PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
8886
8887/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8888int
8889ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class_with_complexity
8890PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
8891
8892/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8893int
8894ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpq_class_with_complexity
8895PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
8896
8897/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8898int
8899ppl_new_Octagonal_Shape_mpz_class_from_Double_Box_with_complexity
8900PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Double_Box_t ph, int complexity));
8901
8902/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8903int
8904ppl_new_Octagonal_Shape_mpz_class_from_BD_Shape_double_with_complexity
8905PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
8906
8907/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8908int
8909ppl_new_Octagonal_Shape_mpz_class_from_Octagonal_Shape_double_with_complexity
8910PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
8911
8912
8913
8914
8915
8916
8917/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8918int
8919ppl_new_Octagonal_Shape_mpz_class_from_Constraint_System
8920PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Constraint_System_t cs));
8921
8922/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8923int
8924ppl_new_Octagonal_Shape_mpz_class_from_Congruence_System
8925PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Congruence_System_t cs));
8926
8927/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8928int
8929ppl_new_Octagonal_Shape_mpz_class_from_Generator_System
8930PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_const_Generator_System_t cs));
8931
8932
8933
8934
8935
8936
8937
8938
8939/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8940int
8941ppl_Octagonal_Shape_mpz_class_space_dimension
8942PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph, ppl_dimension_type* m));
8943
8944/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8945int
8946ppl_Octagonal_Shape_mpz_class_affine_dimension
8947PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph, ppl_dimension_type* m));
8948
8949
8950
8951
8952
8953/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8954int
8955ppl_Octagonal_Shape_mpz_class_relation_with_Constraint
8956PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8957           ppl_const_Constraint_t c));
8958
8959/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8960int
8961ppl_Octagonal_Shape_mpz_class_relation_with_Generator
8962PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8963           ppl_const_Generator_t c));
8964
8965/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8966int
8967ppl_Octagonal_Shape_mpz_class_relation_with_Congruence
8968PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8969           ppl_const_Congruence_t c));
8970
8971
8972
8973
8974
8975/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8976int
8977ppl_Octagonal_Shape_mpz_class_get_constraints
8978PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8979           ppl_const_Constraint_System_t* pcs));
8980
8981/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8982int
8983ppl_Octagonal_Shape_mpz_class_get_congruences
8984PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8985           ppl_const_Congruence_System_t* pcs));
8986
8987
8988
8989
8990
8991/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8992int
8993ppl_Octagonal_Shape_mpz_class_get_minimized_constraints
8994PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
8995           ppl_const_Constraint_System_t* pcs));
8996
8997/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
8998int
8999ppl_Octagonal_Shape_mpz_class_get_minimized_congruences
9000PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9001           ppl_const_Congruence_System_t* pcs));
9002
9003
9004
9005
9006
9007/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9008int
9009ppl_Octagonal_Shape_mpz_class_is_empty
9010PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9011
9012/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9013int
9014ppl_Octagonal_Shape_mpz_class_is_universe
9015PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9016
9017/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9018int
9019ppl_Octagonal_Shape_mpz_class_is_bounded
9020PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9021
9022/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9023int
9024ppl_Octagonal_Shape_mpz_class_contains_integer_point
9025PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9026
9027/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9028int
9029ppl_Octagonal_Shape_mpz_class_is_topologically_closed
9030PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9031
9032/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9033int
9034ppl_Octagonal_Shape_mpz_class_is_discrete
9035PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9036
9037
9038
9039
9040
9041/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9042int
9043ppl_Octagonal_Shape_mpz_class_topological_closure_assign
9044PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph));
9045
9046
9047
9048
9049
9050/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9051int
9052ppl_Octagonal_Shape_mpz_class_bounds_from_above
9053PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9054           ppl_const_Linear_Expression_t le));
9055
9056/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9057int
9058ppl_Octagonal_Shape_mpz_class_bounds_from_below
9059PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9060           ppl_const_Linear_Expression_t le));
9061
9062
9063
9064
9065
9066/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9067int
9068ppl_Octagonal_Shape_mpz_class_maximize
9069PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9070           ppl_const_Linear_Expression_t le,
9071           ppl_Coefficient_t ext_n,
9072           ppl_Coefficient_t ext_d,
9073           int* poptimum));
9074
9075/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9076int
9077ppl_Octagonal_Shape_mpz_class_minimize
9078PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9079           ppl_const_Linear_Expression_t le,
9080           ppl_Coefficient_t ext_n,
9081           ppl_Coefficient_t ext_d,
9082           int* poptimum));
9083
9084
9085
9086
9087
9088/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9089int
9090ppl_Octagonal_Shape_mpz_class_maximize_with_point
9091PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9092           ppl_const_Linear_Expression_t le,
9093           ppl_Coefficient_t ext_n,
9094           ppl_Coefficient_t ext_d,
9095           int* poptimum,
9096           ppl_Generator_t point));
9097
9098/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9099int
9100ppl_Octagonal_Shape_mpz_class_minimize_with_point
9101PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9102           ppl_const_Linear_Expression_t le,
9103           ppl_Coefficient_t ext_n,
9104           ppl_Coefficient_t ext_d,
9105           int* poptimum,
9106           ppl_Generator_t point));
9107
9108
9109
9110
9111
9112/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9113int
9114ppl_Octagonal_Shape_mpz_class_frequency
9115PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph,
9116           ppl_const_Linear_Expression_t le,
9117           ppl_Coefficient_t ext_fn,
9118           ppl_Coefficient_t ext_fd,
9119           ppl_Coefficient_t ext_vn,
9120           ppl_Coefficient_t ext_vd));
9121
9122
9123
9124
9125/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9126int
9127ppl_Octagonal_Shape_mpz_class_contains_Octagonal_Shape_mpz_class
9128PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t x,
9129           ppl_const_Octagonal_Shape_mpz_class_t y));
9130
9131/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9132int
9133ppl_Octagonal_Shape_mpz_class_strictly_contains_Octagonal_Shape_mpz_class
9134PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t x,
9135           ppl_const_Octagonal_Shape_mpz_class_t y));
9136
9137/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9138int
9139ppl_Octagonal_Shape_mpz_class_is_disjoint_from_Octagonal_Shape_mpz_class
9140PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t x,
9141           ppl_const_Octagonal_Shape_mpz_class_t y));
9142
9143
9144
9145
9146
9147/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9148int
9149ppl_Octagonal_Shape_mpz_class_equals_Octagonal_Shape_mpz_class
9150PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t x,
9151           ppl_const_Octagonal_Shape_mpz_class_t y));
9152
9153
9154
9155
9156/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9157int
9158ppl_Octagonal_Shape_mpz_class_OK
9159PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ph));
9160
9161
9162
9163
9164/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9165int
9166ppl_Octagonal_Shape_mpz_class_add_constraint
9167PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9168           ppl_const_Constraint_t c));
9169
9170/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9171int
9172ppl_Octagonal_Shape_mpz_class_add_congruence
9173PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9174           ppl_const_Congruence_t c));
9175
9176
9177
9178
9179
9180/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9181int
9182ppl_Octagonal_Shape_mpz_class_add_constraints
9183PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9184           ppl_const_Constraint_System_t cs));
9185
9186/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9187int
9188ppl_Octagonal_Shape_mpz_class_add_congruences
9189PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9190           ppl_const_Congruence_System_t cs));
9191
9192
9193
9194
9195
9196/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9197int
9198ppl_Octagonal_Shape_mpz_class_refine_with_constraint
9199PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9200           ppl_const_Constraint_t c));
9201
9202/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9203int
9204ppl_Octagonal_Shape_mpz_class_refine_with_congruence
9205PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9206           ppl_const_Congruence_t c));
9207
9208
9209
9210
9211
9212/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9213int
9214ppl_Octagonal_Shape_mpz_class_refine_with_constraints
9215PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9216           ppl_const_Constraint_System_t cs));
9217
9218/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9219int
9220ppl_Octagonal_Shape_mpz_class_refine_with_congruences
9221PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9222           ppl_const_Congruence_System_t cs));
9223
9224
9225
9226
9227
9228/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9229int
9230ppl_Octagonal_Shape_mpz_class_intersection_assign
9231PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9232           ppl_const_Octagonal_Shape_mpz_class_t y));
9233
9234/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9235int
9236ppl_Octagonal_Shape_mpz_class_upper_bound_assign
9237PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9238           ppl_const_Octagonal_Shape_mpz_class_t y));
9239
9240/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9241int
9242ppl_Octagonal_Shape_mpz_class_difference_assign
9243PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9244           ppl_const_Octagonal_Shape_mpz_class_t y));
9245
9246/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9247int
9248ppl_Octagonal_Shape_mpz_class_concatenate_assign
9249PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9250           ppl_const_Octagonal_Shape_mpz_class_t y));
9251
9252/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9253int
9254ppl_Octagonal_Shape_mpz_class_time_elapse_assign
9255PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9256           ppl_const_Octagonal_Shape_mpz_class_t y));
9257
9258
9259
9260
9261
9262/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9263int
9264ppl_Octagonal_Shape_mpz_class_upper_bound_assign_if_exact
9265PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9266           ppl_const_Octagonal_Shape_mpz_class_t y));
9267
9268
9269
9270
9271
9272/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9273int
9274ppl_Octagonal_Shape_mpz_class_simplify_using_context_assign
9275PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9276           ppl_const_Octagonal_Shape_mpz_class_t y));
9277
9278
9279
9280
9281/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9282int
9283ppl_Octagonal_Shape_mpz_class_constrains
9284PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9285           ppl_dimension_type var));
9286
9287
9288
9289
9290/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9291int
9292ppl_Octagonal_Shape_mpz_class_unconstrain_space_dimension
9293PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9294           ppl_dimension_type var));
9295
9296
9297
9298
9299/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9300int
9301ppl_Octagonal_Shape_mpz_class_unconstrain_space_dimensions
9302PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9303           ppl_dimension_type ds[],
9304           size_t n));
9305
9306
9307
9308
9309/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9310int
9311ppl_Octagonal_Shape_mpz_class_affine_image
9312PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9313           ppl_dimension_type var,
9314           ppl_const_Linear_Expression_t le,
9315           ppl_const_Coefficient_t d));
9316
9317/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9318int
9319ppl_Octagonal_Shape_mpz_class_affine_preimage
9320PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9321           ppl_dimension_type var,
9322           ppl_const_Linear_Expression_t le,
9323           ppl_const_Coefficient_t d));
9324
9325
9326
9327
9328
9329/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9330int
9331ppl_Octagonal_Shape_mpz_class_bounded_affine_image
9332PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9333           ppl_dimension_type var,
9334           ppl_const_Linear_Expression_t lb,
9335           ppl_const_Linear_Expression_t ub,
9336           ppl_const_Coefficient_t d));
9337
9338/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9339int
9340ppl_Octagonal_Shape_mpz_class_bounded_affine_preimage
9341PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9342           ppl_dimension_type var,
9343           ppl_const_Linear_Expression_t lb,
9344           ppl_const_Linear_Expression_t ub,
9345           ppl_const_Coefficient_t d));
9346
9347
9348
9349
9350
9351/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9352int
9353ppl_Octagonal_Shape_mpz_class_generalized_affine_image
9354PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9355           ppl_dimension_type var,
9356           enum ppl_enum_Constraint_Type relsym,
9357           ppl_const_Linear_Expression_t le,
9358           ppl_const_Coefficient_t d));
9359
9360/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9361int
9362ppl_Octagonal_Shape_mpz_class_generalized_affine_preimage
9363PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9364           ppl_dimension_type var,
9365           enum ppl_enum_Constraint_Type relsym,
9366           ppl_const_Linear_Expression_t le,
9367           ppl_const_Coefficient_t d));
9368
9369
9370
9371
9372
9373/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9374int
9375ppl_Octagonal_Shape_mpz_class_generalized_affine_image_lhs_rhs
9376PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9377           ppl_const_Linear_Expression_t lhs,
9378           enum ppl_enum_Constraint_Type relsym,
9379           ppl_const_Linear_Expression_t rhs));
9380
9381/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9382int
9383ppl_Octagonal_Shape_mpz_class_generalized_affine_preimage_lhs_rhs
9384PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9385           ppl_const_Linear_Expression_t lhs,
9386           enum ppl_enum_Constraint_Type relsym,
9387           ppl_const_Linear_Expression_t rhs));
9388
9389
9390
9391
9392
9393/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9394int
9395ppl_Octagonal_Shape_mpz_class_add_space_dimensions_and_embed
9396PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9397           ppl_dimension_type d));
9398
9399/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9400int
9401ppl_Octagonal_Shape_mpz_class_add_space_dimensions_and_project
9402PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9403           ppl_dimension_type d));
9404
9405
9406
9407
9408
9409/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9410int
9411ppl_Octagonal_Shape_mpz_class_remove_space_dimensions
9412PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9413           ppl_dimension_type ds[],
9414           size_t n));
9415
9416
9417
9418
9419/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9420int
9421ppl_Octagonal_Shape_mpz_class_remove_higher_space_dimensions
9422PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9423           ppl_dimension_type d));
9424
9425
9426
9427
9428/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9429int
9430ppl_Octagonal_Shape_mpz_class_expand_space_dimension
9431PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9432           ppl_dimension_type d,
9433           ppl_dimension_type m));
9434
9435
9436
9437
9438/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9439int
9440ppl_Octagonal_Shape_mpz_class_fold_space_dimensions
9441PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9442           ppl_dimension_type ds[],
9443           size_t n,
9444           ppl_dimension_type d));
9445
9446
9447
9448
9449/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9450int
9451ppl_Octagonal_Shape_mpz_class_map_space_dimensions
9452PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9453           ppl_dimension_type maps[],
9454           size_t n));
9455
9456
9457
9458
9459/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9460int
9461ppl_Octagonal_Shape_mpz_class_drop_some_non_integer_points
9462PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9463           int complexity));
9464
9465
9466
9467
9468/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9469int
9470ppl_Octagonal_Shape_mpz_class_drop_some_non_integer_points_2
9471PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9472           ppl_dimension_type ds[],
9473           size_t n,
9474           int complexity));
9475
9476
9477
9478
9479
9480
9481/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9482int
9483ppl_Octagonal_Shape_mpz_class_external_memory_in_bytes
9484PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ps,
9485           size_t* sz));
9486
9487/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9488int
9489ppl_Octagonal_Shape_mpz_class_total_memory_in_bytes
9490PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t ps,
9491           size_t* sz));
9492
9493
9494
9495
9496
9497/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9498int
9499ppl_Octagonal_Shape_mpz_class_BHMZ05_widening_assign_with_tokens
9500PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9501           ppl_const_Octagonal_Shape_mpz_class_t y,
9502           unsigned* tp));
9503
9504
9505
9506
9507
9508/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9509int
9510ppl_Octagonal_Shape_mpz_class_BHMZ05_widening_assign
9511PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9512           ppl_const_Octagonal_Shape_mpz_class_t y));
9513
9514
9515
9516
9517
9518/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9519int
9520ppl_Octagonal_Shape_mpz_class_widening_assign_with_tokens
9521PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9522           ppl_const_Octagonal_Shape_mpz_class_t y,
9523           unsigned* tp));
9524
9525
9526
9527
9528/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9529int
9530ppl_Octagonal_Shape_mpz_class_widening_assign
9531PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9532           ppl_const_Octagonal_Shape_mpz_class_t y));
9533
9534
9535
9536
9537/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9538int
9539ppl_Octagonal_Shape_mpz_class_limited_BHMZ05_extrapolation_assign_with_tokens
9540PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9541           ppl_const_Octagonal_Shape_mpz_class_t y,
9542           ppl_const_Constraint_System_t cs,
9543           unsigned* tp));
9544
9545/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9546int
9547ppl_Octagonal_Shape_mpz_class_limited_CC76_extrapolation_assign_with_tokens
9548PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9549           ppl_const_Octagonal_Shape_mpz_class_t y,
9550           ppl_const_Constraint_System_t cs,
9551           unsigned* tp));
9552
9553
9554
9555
9556
9557
9558
9559/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9560int
9561ppl_Octagonal_Shape_mpz_class_limited_BHMZ05_extrapolation_assign
9562PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9563           ppl_const_Octagonal_Shape_mpz_class_t y,
9564           ppl_const_Constraint_System_t cs));
9565
9566/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9567int
9568ppl_Octagonal_Shape_mpz_class_limited_CC76_extrapolation_assign
9569PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9570           ppl_const_Octagonal_Shape_mpz_class_t y,
9571           ppl_const_Constraint_System_t cs));
9572
9573
9574
9575
9576
9577
9578
9579/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9580int
9581ppl_Octagonal_Shape_mpz_class_CC76_extrapolation_assign_with_tokens
9582PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9583           ppl_const_Octagonal_Shape_mpz_class_t y,
9584           unsigned* tp));
9585
9586
9587
9588
9589
9590/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9591int
9592ppl_Octagonal_Shape_mpz_class_CC76_extrapolation_assign
9593PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9594           ppl_const_Octagonal_Shape_mpz_class_t y));
9595
9596
9597
9598
9599
9600/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9601int
9602ppl_Octagonal_Shape_mpz_class_CC76_narrowing_assign
9603PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t x,
9604           ppl_const_Octagonal_Shape_mpz_class_t y));
9605
9606
9607
9608
9609
9610/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9611int
9612ppl_Octagonal_Shape_mpz_class_linear_partition
9613PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t x,
9614           ppl_const_Octagonal_Shape_mpz_class_t y,
9615           ppl_Octagonal_Shape_mpz_class_t* p_inters,
9616           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
9617
9618
9619
9620
9621
9622/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9623int
9624ppl_Octagonal_Shape_mpz_class_wrap_assign
9625PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9626           ppl_dimension_type ds[],
9627           size_t n,
9628           enum ppl_enum_Bounded_Integer_Type_Width w,
9629           enum ppl_enum_Bounded_Integer_Type_Representation r,
9630           enum ppl_enum_Bounded_Integer_Type_Overflow o,
9631           const ppl_const_Constraint_System_t* pcs,
9632           unsigned complexity_threshold,
9633           int wrap_individually));
9634
9635
9636
9637/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9638int
9639ppl_new_Octagonal_Shape_mpz_class_recycle_Constraint_System
9640PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_Constraint_System_t cs));
9641
9642/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9643int
9644ppl_new_Octagonal_Shape_mpz_class_recycle_Congruence_System
9645PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_Congruence_System_t cs));
9646
9647/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9648int
9649ppl_new_Octagonal_Shape_mpz_class_recycle_Generator_System
9650PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t* pph, ppl_Generator_System_t cs));
9651
9652
9653
9654
9655
9656
9657/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9658int
9659ppl_assign_Octagonal_Shape_mpz_class_from_Octagonal_Shape_mpz_class
9660PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t dst, ppl_const_Octagonal_Shape_mpz_class_t src));
9661
9662
9663
9664
9665
9666/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9667int
9668ppl_Octagonal_Shape_mpz_class_add_recycled_constraints
9669PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9670           ppl_Constraint_System_t cs));
9671
9672/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9673int
9674ppl_Octagonal_Shape_mpz_class_add_recycled_congruences
9675PPL_PROTO((ppl_Octagonal_Shape_mpz_class_t ph,
9676           ppl_Congruence_System_t cs));
9677
9678
9679
9680
9681
9682/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9683int
9684ppl_termination_test_MS_Octagonal_Shape_mpz_class
9685PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset));
9686
9687/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9688int
9689ppl_termination_test_PR_Octagonal_Shape_mpz_class
9690PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset));
9691
9692
9693
9694
9695
9696
9697/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9698int
9699ppl_one_affine_ranking_function_MS_Octagonal_Shape_mpz_class
9700PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset,
9701           ppl_Generator_t point));
9702
9703/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9704int
9705ppl_one_affine_ranking_function_PR_Octagonal_Shape_mpz_class
9706PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset,
9707           ppl_Generator_t point));
9708
9709
9710
9711
9712
9713
9714/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9715int
9716ppl_all_affine_ranking_functions_MS_Octagonal_Shape_mpz_class
9717PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset,
9718           ppl_Polyhedron_t ph));
9719
9720/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9721int
9722ppl_all_affine_ranking_functions_PR_Octagonal_Shape_mpz_class
9723PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset,
9724           ppl_Polyhedron_t ph));
9725
9726
9727
9728
9729
9730
9731/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9732int
9733ppl_termination_test_MS_Octagonal_Shape_mpz_class_2
9734PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before, ppl_const_Octagonal_Shape_mpz_class_t pset_after));
9735
9736/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9737int
9738ppl_termination_test_PR_Octagonal_Shape_mpz_class_2
9739PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before, ppl_const_Octagonal_Shape_mpz_class_t pset_after));
9740
9741
9742
9743
9744
9745
9746/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9747int
9748ppl_one_affine_ranking_function_MS_Octagonal_Shape_mpz_class_2
9749PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before,
9750           ppl_const_Octagonal_Shape_mpz_class_t pset_after,
9751           ppl_Generator_t point));
9752
9753/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9754int
9755ppl_one_affine_ranking_function_PR_Octagonal_Shape_mpz_class_2
9756PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before,
9757           ppl_const_Octagonal_Shape_mpz_class_t pset_after,
9758           ppl_Generator_t point));
9759
9760
9761
9762
9763
9764
9765/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9766int
9767ppl_all_affine_ranking_functions_MS_Octagonal_Shape_mpz_class_2
9768PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before,
9769           ppl_const_Octagonal_Shape_mpz_class_t pset_after,
9770           ppl_Polyhedron_t ph));
9771
9772/*! \relates ppl_Octagonal_Shape_mpz_class_tag */
9773int
9774ppl_all_affine_ranking_functions_PR_Octagonal_Shape_mpz_class_2
9775PPL_PROTO((ppl_const_Octagonal_Shape_mpz_class_t pset_before,
9776           ppl_const_Octagonal_Shape_mpz_class_t pset_after,
9777           ppl_Polyhedron_t ph));
9778
9779
9780
9781
9782
9783
9784
9785PPL_DECLARE_IO_FUNCTIONS(Octagonal_Shape_mpz_class)
9786
9787/* End of Functions Related to ppl_Octagonal_Shape_mpz_class_tag */
9788
9789/*! \interface ppl_Octagonal_Shape_mpq_class_tag
9790  \brief Types and functions for ppl_Octagonal_Shape_mpq_class_tag
9791*/
9792
9793/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9794int
9795ppl_delete_Octagonal_Shape_mpq_class
9796PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
9797
9798
9799
9800
9801/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9802int
9803ppl_new_Octagonal_Shape_mpq_class_from_space_dimension
9804PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_dimension_type d, int empty));
9805
9806
9807
9808
9809
9810/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9811int
9812ppl_new_Octagonal_Shape_mpq_class_from_C_Polyhedron
9813PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph));
9814
9815/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9816int
9817ppl_new_Octagonal_Shape_mpq_class_from_NNC_Polyhedron
9818PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph));
9819
9820/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9821int
9822ppl_new_Octagonal_Shape_mpq_class_from_Grid
9823PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Grid_t ph));
9824
9825/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9826int
9827ppl_new_Octagonal_Shape_mpq_class_from_Rational_Box
9828PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Rational_Box_t ph));
9829
9830/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9831int
9832ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpz_class
9833PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
9834
9835/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9836int
9837ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpq_class
9838PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
9839
9840/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9841int
9842ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpz_class
9843PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
9844
9845/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9846int
9847ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class
9848PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
9849
9850/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9851int
9852ppl_new_Octagonal_Shape_mpq_class_from_Double_Box
9853PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Double_Box_t ph));
9854
9855/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9856int
9857ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_double
9858PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_double_t ph));
9859
9860/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9861int
9862ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_double
9863PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_double_t ph));
9864
9865
9866
9867
9868
9869
9870/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9871int
9872ppl_new_Octagonal_Shape_mpq_class_from_C_Polyhedron_with_complexity
9873PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
9874
9875/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9876int
9877ppl_new_Octagonal_Shape_mpq_class_from_NNC_Polyhedron_with_complexity
9878PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Polyhedron_t ph, int complexity));
9879
9880/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9881int
9882ppl_new_Octagonal_Shape_mpq_class_from_Grid_with_complexity
9883PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Grid_t ph, int complexity));
9884
9885/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9886int
9887ppl_new_Octagonal_Shape_mpq_class_from_Rational_Box_with_complexity
9888PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Rational_Box_t ph, int complexity));
9889
9890/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9891int
9892ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpz_class_with_complexity
9893PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
9894
9895/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9896int
9897ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_mpq_class_with_complexity
9898PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
9899
9900/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9901int
9902ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpz_class_with_complexity
9903PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
9904
9905/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9906int
9907ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class_with_complexity
9908PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
9909
9910/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9911int
9912ppl_new_Octagonal_Shape_mpq_class_from_Double_Box_with_complexity
9913PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Double_Box_t ph, int complexity));
9914
9915/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9916int
9917ppl_new_Octagonal_Shape_mpq_class_from_BD_Shape_double_with_complexity
9918PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
9919
9920/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9921int
9922ppl_new_Octagonal_Shape_mpq_class_from_Octagonal_Shape_double_with_complexity
9923PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
9924
9925
9926
9927
9928
9929
9930/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9931int
9932ppl_new_Octagonal_Shape_mpq_class_from_Constraint_System
9933PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Constraint_System_t cs));
9934
9935/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9936int
9937ppl_new_Octagonal_Shape_mpq_class_from_Congruence_System
9938PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Congruence_System_t cs));
9939
9940/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9941int
9942ppl_new_Octagonal_Shape_mpq_class_from_Generator_System
9943PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_const_Generator_System_t cs));
9944
9945
9946
9947
9948
9949
9950
9951
9952/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9953int
9954ppl_Octagonal_Shape_mpq_class_space_dimension
9955PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph, ppl_dimension_type* m));
9956
9957/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9958int
9959ppl_Octagonal_Shape_mpq_class_affine_dimension
9960PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph, ppl_dimension_type* m));
9961
9962
9963
9964
9965
9966/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9967int
9968ppl_Octagonal_Shape_mpq_class_relation_with_Constraint
9969PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
9970           ppl_const_Constraint_t c));
9971
9972/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9973int
9974ppl_Octagonal_Shape_mpq_class_relation_with_Generator
9975PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
9976           ppl_const_Generator_t c));
9977
9978/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9979int
9980ppl_Octagonal_Shape_mpq_class_relation_with_Congruence
9981PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
9982           ppl_const_Congruence_t c));
9983
9984
9985
9986
9987
9988/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9989int
9990ppl_Octagonal_Shape_mpq_class_get_constraints
9991PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
9992           ppl_const_Constraint_System_t* pcs));
9993
9994/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
9995int
9996ppl_Octagonal_Shape_mpq_class_get_congruences
9997PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
9998           ppl_const_Congruence_System_t* pcs));
9999
10000
10001
10002
10003
10004/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10005int
10006ppl_Octagonal_Shape_mpq_class_get_minimized_constraints
10007PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10008           ppl_const_Constraint_System_t* pcs));
10009
10010/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10011int
10012ppl_Octagonal_Shape_mpq_class_get_minimized_congruences
10013PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10014           ppl_const_Congruence_System_t* pcs));
10015
10016
10017
10018
10019
10020/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10021int
10022ppl_Octagonal_Shape_mpq_class_is_empty
10023PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10024
10025/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10026int
10027ppl_Octagonal_Shape_mpq_class_is_universe
10028PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10029
10030/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10031int
10032ppl_Octagonal_Shape_mpq_class_is_bounded
10033PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10034
10035/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10036int
10037ppl_Octagonal_Shape_mpq_class_contains_integer_point
10038PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10039
10040/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10041int
10042ppl_Octagonal_Shape_mpq_class_is_topologically_closed
10043PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10044
10045/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10046int
10047ppl_Octagonal_Shape_mpq_class_is_discrete
10048PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10049
10050
10051
10052
10053
10054/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10055int
10056ppl_Octagonal_Shape_mpq_class_topological_closure_assign
10057PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph));
10058
10059
10060
10061
10062
10063/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10064int
10065ppl_Octagonal_Shape_mpq_class_bounds_from_above
10066PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10067           ppl_const_Linear_Expression_t le));
10068
10069/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10070int
10071ppl_Octagonal_Shape_mpq_class_bounds_from_below
10072PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10073           ppl_const_Linear_Expression_t le));
10074
10075
10076
10077
10078
10079/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10080int
10081ppl_Octagonal_Shape_mpq_class_maximize
10082PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10083           ppl_const_Linear_Expression_t le,
10084           ppl_Coefficient_t ext_n,
10085           ppl_Coefficient_t ext_d,
10086           int* poptimum));
10087
10088/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10089int
10090ppl_Octagonal_Shape_mpq_class_minimize
10091PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10092           ppl_const_Linear_Expression_t le,
10093           ppl_Coefficient_t ext_n,
10094           ppl_Coefficient_t ext_d,
10095           int* poptimum));
10096
10097
10098
10099
10100
10101/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10102int
10103ppl_Octagonal_Shape_mpq_class_maximize_with_point
10104PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10105           ppl_const_Linear_Expression_t le,
10106           ppl_Coefficient_t ext_n,
10107           ppl_Coefficient_t ext_d,
10108           int* poptimum,
10109           ppl_Generator_t point));
10110
10111/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10112int
10113ppl_Octagonal_Shape_mpq_class_minimize_with_point
10114PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10115           ppl_const_Linear_Expression_t le,
10116           ppl_Coefficient_t ext_n,
10117           ppl_Coefficient_t ext_d,
10118           int* poptimum,
10119           ppl_Generator_t point));
10120
10121
10122
10123
10124
10125/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10126int
10127ppl_Octagonal_Shape_mpq_class_frequency
10128PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph,
10129           ppl_const_Linear_Expression_t le,
10130           ppl_Coefficient_t ext_fn,
10131           ppl_Coefficient_t ext_fd,
10132           ppl_Coefficient_t ext_vn,
10133           ppl_Coefficient_t ext_vd));
10134
10135
10136
10137
10138/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10139int
10140ppl_Octagonal_Shape_mpq_class_contains_Octagonal_Shape_mpq_class
10141PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t x,
10142           ppl_const_Octagonal_Shape_mpq_class_t y));
10143
10144/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10145int
10146ppl_Octagonal_Shape_mpq_class_strictly_contains_Octagonal_Shape_mpq_class
10147PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t x,
10148           ppl_const_Octagonal_Shape_mpq_class_t y));
10149
10150/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10151int
10152ppl_Octagonal_Shape_mpq_class_is_disjoint_from_Octagonal_Shape_mpq_class
10153PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t x,
10154           ppl_const_Octagonal_Shape_mpq_class_t y));
10155
10156
10157
10158
10159
10160/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10161int
10162ppl_Octagonal_Shape_mpq_class_equals_Octagonal_Shape_mpq_class
10163PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t x,
10164           ppl_const_Octagonal_Shape_mpq_class_t y));
10165
10166
10167
10168
10169/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10170int
10171ppl_Octagonal_Shape_mpq_class_OK
10172PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ph));
10173
10174
10175
10176
10177/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10178int
10179ppl_Octagonal_Shape_mpq_class_add_constraint
10180PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10181           ppl_const_Constraint_t c));
10182
10183/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10184int
10185ppl_Octagonal_Shape_mpq_class_add_congruence
10186PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10187           ppl_const_Congruence_t c));
10188
10189
10190
10191
10192
10193/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10194int
10195ppl_Octagonal_Shape_mpq_class_add_constraints
10196PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10197           ppl_const_Constraint_System_t cs));
10198
10199/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10200int
10201ppl_Octagonal_Shape_mpq_class_add_congruences
10202PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10203           ppl_const_Congruence_System_t cs));
10204
10205
10206
10207
10208
10209/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10210int
10211ppl_Octagonal_Shape_mpq_class_refine_with_constraint
10212PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10213           ppl_const_Constraint_t c));
10214
10215/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10216int
10217ppl_Octagonal_Shape_mpq_class_refine_with_congruence
10218PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10219           ppl_const_Congruence_t c));
10220
10221
10222
10223
10224
10225/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10226int
10227ppl_Octagonal_Shape_mpq_class_refine_with_constraints
10228PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10229           ppl_const_Constraint_System_t cs));
10230
10231/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10232int
10233ppl_Octagonal_Shape_mpq_class_refine_with_congruences
10234PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10235           ppl_const_Congruence_System_t cs));
10236
10237
10238
10239
10240
10241/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10242int
10243ppl_Octagonal_Shape_mpq_class_intersection_assign
10244PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10245           ppl_const_Octagonal_Shape_mpq_class_t y));
10246
10247/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10248int
10249ppl_Octagonal_Shape_mpq_class_upper_bound_assign
10250PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10251           ppl_const_Octagonal_Shape_mpq_class_t y));
10252
10253/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10254int
10255ppl_Octagonal_Shape_mpq_class_difference_assign
10256PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10257           ppl_const_Octagonal_Shape_mpq_class_t y));
10258
10259/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10260int
10261ppl_Octagonal_Shape_mpq_class_concatenate_assign
10262PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10263           ppl_const_Octagonal_Shape_mpq_class_t y));
10264
10265/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10266int
10267ppl_Octagonal_Shape_mpq_class_time_elapse_assign
10268PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10269           ppl_const_Octagonal_Shape_mpq_class_t y));
10270
10271
10272
10273
10274
10275/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10276int
10277ppl_Octagonal_Shape_mpq_class_upper_bound_assign_if_exact
10278PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10279           ppl_const_Octagonal_Shape_mpq_class_t y));
10280
10281
10282
10283
10284
10285/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10286int
10287ppl_Octagonal_Shape_mpq_class_simplify_using_context_assign
10288PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10289           ppl_const_Octagonal_Shape_mpq_class_t y));
10290
10291
10292
10293
10294/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10295int
10296ppl_Octagonal_Shape_mpq_class_constrains
10297PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10298           ppl_dimension_type var));
10299
10300
10301
10302
10303/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10304int
10305ppl_Octagonal_Shape_mpq_class_unconstrain_space_dimension
10306PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10307           ppl_dimension_type var));
10308
10309
10310
10311
10312/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10313int
10314ppl_Octagonal_Shape_mpq_class_unconstrain_space_dimensions
10315PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10316           ppl_dimension_type ds[],
10317           size_t n));
10318
10319
10320
10321
10322/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10323int
10324ppl_Octagonal_Shape_mpq_class_affine_image
10325PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10326           ppl_dimension_type var,
10327           ppl_const_Linear_Expression_t le,
10328           ppl_const_Coefficient_t d));
10329
10330/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10331int
10332ppl_Octagonal_Shape_mpq_class_affine_preimage
10333PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10334           ppl_dimension_type var,
10335           ppl_const_Linear_Expression_t le,
10336           ppl_const_Coefficient_t d));
10337
10338
10339
10340
10341
10342/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10343int
10344ppl_Octagonal_Shape_mpq_class_bounded_affine_image
10345PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10346           ppl_dimension_type var,
10347           ppl_const_Linear_Expression_t lb,
10348           ppl_const_Linear_Expression_t ub,
10349           ppl_const_Coefficient_t d));
10350
10351/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10352int
10353ppl_Octagonal_Shape_mpq_class_bounded_affine_preimage
10354PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10355           ppl_dimension_type var,
10356           ppl_const_Linear_Expression_t lb,
10357           ppl_const_Linear_Expression_t ub,
10358           ppl_const_Coefficient_t d));
10359
10360
10361
10362
10363
10364/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10365int
10366ppl_Octagonal_Shape_mpq_class_generalized_affine_image
10367PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10368           ppl_dimension_type var,
10369           enum ppl_enum_Constraint_Type relsym,
10370           ppl_const_Linear_Expression_t le,
10371           ppl_const_Coefficient_t d));
10372
10373/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10374int
10375ppl_Octagonal_Shape_mpq_class_generalized_affine_preimage
10376PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10377           ppl_dimension_type var,
10378           enum ppl_enum_Constraint_Type relsym,
10379           ppl_const_Linear_Expression_t le,
10380           ppl_const_Coefficient_t d));
10381
10382
10383
10384
10385
10386/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10387int
10388ppl_Octagonal_Shape_mpq_class_generalized_affine_image_lhs_rhs
10389PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10390           ppl_const_Linear_Expression_t lhs,
10391           enum ppl_enum_Constraint_Type relsym,
10392           ppl_const_Linear_Expression_t rhs));
10393
10394/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10395int
10396ppl_Octagonal_Shape_mpq_class_generalized_affine_preimage_lhs_rhs
10397PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10398           ppl_const_Linear_Expression_t lhs,
10399           enum ppl_enum_Constraint_Type relsym,
10400           ppl_const_Linear_Expression_t rhs));
10401
10402
10403
10404
10405
10406/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10407int
10408ppl_Octagonal_Shape_mpq_class_add_space_dimensions_and_embed
10409PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10410           ppl_dimension_type d));
10411
10412/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10413int
10414ppl_Octagonal_Shape_mpq_class_add_space_dimensions_and_project
10415PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10416           ppl_dimension_type d));
10417
10418
10419
10420
10421
10422/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10423int
10424ppl_Octagonal_Shape_mpq_class_remove_space_dimensions
10425PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10426           ppl_dimension_type ds[],
10427           size_t n));
10428
10429
10430
10431
10432/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10433int
10434ppl_Octagonal_Shape_mpq_class_remove_higher_space_dimensions
10435PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10436           ppl_dimension_type d));
10437
10438
10439
10440
10441/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10442int
10443ppl_Octagonal_Shape_mpq_class_expand_space_dimension
10444PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10445           ppl_dimension_type d,
10446           ppl_dimension_type m));
10447
10448
10449
10450
10451/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10452int
10453ppl_Octagonal_Shape_mpq_class_fold_space_dimensions
10454PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10455           ppl_dimension_type ds[],
10456           size_t n,
10457           ppl_dimension_type d));
10458
10459
10460
10461
10462/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10463int
10464ppl_Octagonal_Shape_mpq_class_map_space_dimensions
10465PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10466           ppl_dimension_type maps[],
10467           size_t n));
10468
10469
10470
10471
10472/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10473int
10474ppl_Octagonal_Shape_mpq_class_drop_some_non_integer_points
10475PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10476           int complexity));
10477
10478
10479
10480
10481/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10482int
10483ppl_Octagonal_Shape_mpq_class_drop_some_non_integer_points_2
10484PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10485           ppl_dimension_type ds[],
10486           size_t n,
10487           int complexity));
10488
10489
10490
10491
10492
10493
10494/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10495int
10496ppl_Octagonal_Shape_mpq_class_external_memory_in_bytes
10497PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ps,
10498           size_t* sz));
10499
10500/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10501int
10502ppl_Octagonal_Shape_mpq_class_total_memory_in_bytes
10503PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t ps,
10504           size_t* sz));
10505
10506
10507
10508
10509
10510/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10511int
10512ppl_Octagonal_Shape_mpq_class_BHMZ05_widening_assign_with_tokens
10513PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10514           ppl_const_Octagonal_Shape_mpq_class_t y,
10515           unsigned* tp));
10516
10517
10518
10519
10520
10521/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10522int
10523ppl_Octagonal_Shape_mpq_class_BHMZ05_widening_assign
10524PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10525           ppl_const_Octagonal_Shape_mpq_class_t y));
10526
10527
10528
10529
10530
10531/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10532int
10533ppl_Octagonal_Shape_mpq_class_widening_assign_with_tokens
10534PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10535           ppl_const_Octagonal_Shape_mpq_class_t y,
10536           unsigned* tp));
10537
10538
10539
10540
10541/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10542int
10543ppl_Octagonal_Shape_mpq_class_widening_assign
10544PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10545           ppl_const_Octagonal_Shape_mpq_class_t y));
10546
10547
10548
10549
10550/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10551int
10552ppl_Octagonal_Shape_mpq_class_limited_BHMZ05_extrapolation_assign_with_tokens
10553PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10554           ppl_const_Octagonal_Shape_mpq_class_t y,
10555           ppl_const_Constraint_System_t cs,
10556           unsigned* tp));
10557
10558/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10559int
10560ppl_Octagonal_Shape_mpq_class_limited_CC76_extrapolation_assign_with_tokens
10561PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10562           ppl_const_Octagonal_Shape_mpq_class_t y,
10563           ppl_const_Constraint_System_t cs,
10564           unsigned* tp));
10565
10566
10567
10568
10569
10570
10571
10572/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10573int
10574ppl_Octagonal_Shape_mpq_class_limited_BHMZ05_extrapolation_assign
10575PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10576           ppl_const_Octagonal_Shape_mpq_class_t y,
10577           ppl_const_Constraint_System_t cs));
10578
10579/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10580int
10581ppl_Octagonal_Shape_mpq_class_limited_CC76_extrapolation_assign
10582PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10583           ppl_const_Octagonal_Shape_mpq_class_t y,
10584           ppl_const_Constraint_System_t cs));
10585
10586
10587
10588
10589
10590
10591
10592/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10593int
10594ppl_Octagonal_Shape_mpq_class_CC76_extrapolation_assign_with_tokens
10595PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10596           ppl_const_Octagonal_Shape_mpq_class_t y,
10597           unsigned* tp));
10598
10599
10600
10601
10602
10603/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10604int
10605ppl_Octagonal_Shape_mpq_class_CC76_extrapolation_assign
10606PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10607           ppl_const_Octagonal_Shape_mpq_class_t y));
10608
10609
10610
10611
10612
10613/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10614int
10615ppl_Octagonal_Shape_mpq_class_CC76_narrowing_assign
10616PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t x,
10617           ppl_const_Octagonal_Shape_mpq_class_t y));
10618
10619
10620
10621
10622
10623/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10624int
10625ppl_Octagonal_Shape_mpq_class_linear_partition
10626PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t x,
10627           ppl_const_Octagonal_Shape_mpq_class_t y,
10628           ppl_Octagonal_Shape_mpq_class_t* p_inters,
10629           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
10630
10631
10632
10633
10634
10635/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10636int
10637ppl_Octagonal_Shape_mpq_class_wrap_assign
10638PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10639           ppl_dimension_type ds[],
10640           size_t n,
10641           enum ppl_enum_Bounded_Integer_Type_Width w,
10642           enum ppl_enum_Bounded_Integer_Type_Representation r,
10643           enum ppl_enum_Bounded_Integer_Type_Overflow o,
10644           const ppl_const_Constraint_System_t* pcs,
10645           unsigned complexity_threshold,
10646           int wrap_individually));
10647
10648
10649
10650/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10651int
10652ppl_new_Octagonal_Shape_mpq_class_recycle_Constraint_System
10653PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_Constraint_System_t cs));
10654
10655/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10656int
10657ppl_new_Octagonal_Shape_mpq_class_recycle_Congruence_System
10658PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_Congruence_System_t cs));
10659
10660/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10661int
10662ppl_new_Octagonal_Shape_mpq_class_recycle_Generator_System
10663PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t* pph, ppl_Generator_System_t cs));
10664
10665
10666
10667
10668
10669
10670/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10671int
10672ppl_assign_Octagonal_Shape_mpq_class_from_Octagonal_Shape_mpq_class
10673PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t dst, ppl_const_Octagonal_Shape_mpq_class_t src));
10674
10675
10676
10677
10678
10679/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10680int
10681ppl_Octagonal_Shape_mpq_class_add_recycled_constraints
10682PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10683           ppl_Constraint_System_t cs));
10684
10685/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10686int
10687ppl_Octagonal_Shape_mpq_class_add_recycled_congruences
10688PPL_PROTO((ppl_Octagonal_Shape_mpq_class_t ph,
10689           ppl_Congruence_System_t cs));
10690
10691
10692
10693
10694
10695/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10696int
10697ppl_termination_test_MS_Octagonal_Shape_mpq_class
10698PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset));
10699
10700/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10701int
10702ppl_termination_test_PR_Octagonal_Shape_mpq_class
10703PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset));
10704
10705
10706
10707
10708
10709
10710/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10711int
10712ppl_one_affine_ranking_function_MS_Octagonal_Shape_mpq_class
10713PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset,
10714           ppl_Generator_t point));
10715
10716/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10717int
10718ppl_one_affine_ranking_function_PR_Octagonal_Shape_mpq_class
10719PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset,
10720           ppl_Generator_t point));
10721
10722
10723
10724
10725
10726
10727/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10728int
10729ppl_all_affine_ranking_functions_MS_Octagonal_Shape_mpq_class
10730PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset,
10731           ppl_Polyhedron_t ph));
10732
10733/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10734int
10735ppl_all_affine_ranking_functions_PR_Octagonal_Shape_mpq_class
10736PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset,
10737           ppl_Polyhedron_t ph));
10738
10739
10740
10741
10742
10743
10744/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10745int
10746ppl_termination_test_MS_Octagonal_Shape_mpq_class_2
10747PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before, ppl_const_Octagonal_Shape_mpq_class_t pset_after));
10748
10749/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10750int
10751ppl_termination_test_PR_Octagonal_Shape_mpq_class_2
10752PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before, ppl_const_Octagonal_Shape_mpq_class_t pset_after));
10753
10754
10755
10756
10757
10758
10759/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10760int
10761ppl_one_affine_ranking_function_MS_Octagonal_Shape_mpq_class_2
10762PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before,
10763           ppl_const_Octagonal_Shape_mpq_class_t pset_after,
10764           ppl_Generator_t point));
10765
10766/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10767int
10768ppl_one_affine_ranking_function_PR_Octagonal_Shape_mpq_class_2
10769PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before,
10770           ppl_const_Octagonal_Shape_mpq_class_t pset_after,
10771           ppl_Generator_t point));
10772
10773
10774
10775
10776
10777
10778/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10779int
10780ppl_all_affine_ranking_functions_MS_Octagonal_Shape_mpq_class_2
10781PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before,
10782           ppl_const_Octagonal_Shape_mpq_class_t pset_after,
10783           ppl_Polyhedron_t ph));
10784
10785/*! \relates ppl_Octagonal_Shape_mpq_class_tag */
10786int
10787ppl_all_affine_ranking_functions_PR_Octagonal_Shape_mpq_class_2
10788PPL_PROTO((ppl_const_Octagonal_Shape_mpq_class_t pset_before,
10789           ppl_const_Octagonal_Shape_mpq_class_t pset_after,
10790           ppl_Polyhedron_t ph));
10791
10792
10793
10794
10795
10796
10797
10798PPL_DECLARE_IO_FUNCTIONS(Octagonal_Shape_mpq_class)
10799
10800/* End of Functions Related to ppl_Octagonal_Shape_mpq_class_tag */
10801
10802/*! \interface ppl_Constraints_Product_C_Polyhedron_Grid_tag
10803  \brief Types and functions for ppl_Constraints_Product_C_Polyhedron_Grid_tag
10804*/
10805
10806/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10807int
10808ppl_delete_Constraints_Product_C_Polyhedron_Grid
10809PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
10810
10811
10812
10813
10814/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10815int
10816ppl_new_Constraints_Product_C_Polyhedron_Grid_from_space_dimension
10817PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_dimension_type d, int empty));
10818
10819
10820
10821
10822
10823/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10824int
10825ppl_new_Constraints_Product_C_Polyhedron_Grid_from_C_Polyhedron
10826PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Polyhedron_t ph));
10827
10828/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10829int
10830ppl_new_Constraints_Product_C_Polyhedron_Grid_from_NNC_Polyhedron
10831PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Polyhedron_t ph));
10832
10833/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10834int
10835ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Grid
10836PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Grid_t ph));
10837
10838/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10839int
10840ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Rational_Box
10841PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Rational_Box_t ph));
10842
10843/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10844int
10845ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpz_class
10846PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
10847
10848/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10849int
10850ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpq_class
10851PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
10852
10853/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10854int
10855ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpz_class
10856PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
10857
10858/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10859int
10860ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpq_class
10861PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
10862
10863/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10864int
10865ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Double_Box
10866PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Double_Box_t ph));
10867
10868/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10869int
10870ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_double
10871PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_double_t ph));
10872
10873/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10874int
10875ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_double
10876PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_double_t ph));
10877
10878/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10879int
10880ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Constraints_Product_C_Polyhedron_Grid
10881PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
10882
10883
10884
10885
10886
10887
10888/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10889int
10890ppl_new_Constraints_Product_C_Polyhedron_Grid_from_C_Polyhedron_with_complexity
10891PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Polyhedron_t ph, int complexity));
10892
10893/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10894int
10895ppl_new_Constraints_Product_C_Polyhedron_Grid_from_NNC_Polyhedron_with_complexity
10896PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Polyhedron_t ph, int complexity));
10897
10898/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10899int
10900ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Grid_with_complexity
10901PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Grid_t ph, int complexity));
10902
10903/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10904int
10905ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Rational_Box_with_complexity
10906PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Rational_Box_t ph, int complexity));
10907
10908/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10909int
10910ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpz_class_with_complexity
10911PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
10912
10913/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10914int
10915ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_mpq_class_with_complexity
10916PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
10917
10918/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10919int
10920ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpz_class_with_complexity
10921PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
10922
10923/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10924int
10925ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_mpq_class_with_complexity
10926PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
10927
10928/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10929int
10930ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Double_Box_with_complexity
10931PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Double_Box_t ph, int complexity));
10932
10933/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10934int
10935ppl_new_Constraints_Product_C_Polyhedron_Grid_from_BD_Shape_double_with_complexity
10936PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
10937
10938/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10939int
10940ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Octagonal_Shape_double_with_complexity
10941PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
10942
10943/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10944int
10945ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Constraints_Product_C_Polyhedron_Grid_with_complexity
10946PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph, int complexity));
10947
10948
10949
10950
10951
10952
10953/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10954int
10955ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Constraint_System
10956PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Constraint_System_t cs));
10957
10958/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10959int
10960ppl_new_Constraints_Product_C_Polyhedron_Grid_from_Congruence_System
10961PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t* pph, ppl_const_Congruence_System_t cs));
10962
10963
10964
10965
10966
10967
10968
10969
10970/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10971int
10972ppl_Constraints_Product_C_Polyhedron_Grid_space_dimension
10973PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph, ppl_dimension_type* m));
10974
10975/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10976int
10977ppl_Constraints_Product_C_Polyhedron_Grid_affine_dimension
10978PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph, ppl_dimension_type* m));
10979
10980
10981
10982
10983
10984/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10985int
10986ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_Constraint
10987PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
10988           ppl_const_Constraint_t c));
10989
10990/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10991int
10992ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_Generator
10993PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
10994           ppl_const_Generator_t c));
10995
10996/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
10997int
10998ppl_Constraints_Product_C_Polyhedron_Grid_relation_with_Congruence
10999PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11000           ppl_const_Congruence_t c));
11001
11002
11003
11004
11005
11006/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11007int
11008ppl_Constraints_Product_C_Polyhedron_Grid_is_empty
11009PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11010
11011/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11012int
11013ppl_Constraints_Product_C_Polyhedron_Grid_is_universe
11014PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11015
11016/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11017int
11018ppl_Constraints_Product_C_Polyhedron_Grid_is_bounded
11019PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11020
11021/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11022int
11023ppl_Constraints_Product_C_Polyhedron_Grid_is_topologically_closed
11024PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11025
11026/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11027int
11028ppl_Constraints_Product_C_Polyhedron_Grid_is_discrete
11029PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11030
11031
11032
11033
11034
11035/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11036int
11037ppl_Constraints_Product_C_Polyhedron_Grid_topological_closure_assign
11038PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph));
11039
11040
11041
11042
11043
11044/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11045int
11046ppl_Constraints_Product_C_Polyhedron_Grid_bounds_from_above
11047PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11048           ppl_const_Linear_Expression_t le));
11049
11050/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11051int
11052ppl_Constraints_Product_C_Polyhedron_Grid_bounds_from_below
11053PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11054           ppl_const_Linear_Expression_t le));
11055
11056
11057
11058
11059
11060/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11061int
11062ppl_Constraints_Product_C_Polyhedron_Grid_maximize
11063PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11064           ppl_const_Linear_Expression_t le,
11065           ppl_Coefficient_t ext_n,
11066           ppl_Coefficient_t ext_d,
11067           int* poptimum));
11068
11069/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11070int
11071ppl_Constraints_Product_C_Polyhedron_Grid_minimize
11072PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11073           ppl_const_Linear_Expression_t le,
11074           ppl_Coefficient_t ext_n,
11075           ppl_Coefficient_t ext_d,
11076           int* poptimum));
11077
11078
11079
11080
11081
11082/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11083int
11084ppl_Constraints_Product_C_Polyhedron_Grid_maximize_with_point
11085PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11086           ppl_const_Linear_Expression_t le,
11087           ppl_Coefficient_t ext_n,
11088           ppl_Coefficient_t ext_d,
11089           int* poptimum,
11090           ppl_Generator_t point));
11091
11092/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11093int
11094ppl_Constraints_Product_C_Polyhedron_Grid_minimize_with_point
11095PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph,
11096           ppl_const_Linear_Expression_t le,
11097           ppl_Coefficient_t ext_n,
11098           ppl_Coefficient_t ext_d,
11099           int* poptimum,
11100           ppl_Generator_t point));
11101
11102
11103
11104
11105
11106/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11107int
11108ppl_Constraints_Product_C_Polyhedron_Grid_contains_Constraints_Product_C_Polyhedron_Grid
11109PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t x,
11110           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11111
11112/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11113int
11114ppl_Constraints_Product_C_Polyhedron_Grid_strictly_contains_Constraints_Product_C_Polyhedron_Grid
11115PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t x,
11116           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11117
11118/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11119int
11120ppl_Constraints_Product_C_Polyhedron_Grid_is_disjoint_from_Constraints_Product_C_Polyhedron_Grid
11121PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t x,
11122           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11123
11124
11125
11126
11127
11128/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11129int
11130ppl_Constraints_Product_C_Polyhedron_Grid_equals_Constraints_Product_C_Polyhedron_Grid
11131PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t x,
11132           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11133
11134
11135
11136
11137/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11138int
11139ppl_Constraints_Product_C_Polyhedron_Grid_OK
11140PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ph));
11141
11142
11143
11144
11145/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11146int
11147ppl_Constraints_Product_C_Polyhedron_Grid_add_constraint
11148PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11149           ppl_const_Constraint_t c));
11150
11151/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11152int
11153ppl_Constraints_Product_C_Polyhedron_Grid_add_congruence
11154PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11155           ppl_const_Congruence_t c));
11156
11157
11158
11159
11160
11161/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11162int
11163ppl_Constraints_Product_C_Polyhedron_Grid_add_constraints
11164PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11165           ppl_const_Constraint_System_t cs));
11166
11167/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11168int
11169ppl_Constraints_Product_C_Polyhedron_Grid_add_congruences
11170PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11171           ppl_const_Congruence_System_t cs));
11172
11173
11174
11175
11176
11177/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11178int
11179ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_constraint
11180PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11181           ppl_const_Constraint_t c));
11182
11183/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11184int
11185ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_congruence
11186PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11187           ppl_const_Congruence_t c));
11188
11189
11190
11191
11192
11193/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11194int
11195ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_constraints
11196PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11197           ppl_const_Constraint_System_t cs));
11198
11199/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11200int
11201ppl_Constraints_Product_C_Polyhedron_Grid_refine_with_congruences
11202PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11203           ppl_const_Congruence_System_t cs));
11204
11205
11206
11207
11208
11209/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11210int
11211ppl_Constraints_Product_C_Polyhedron_Grid_intersection_assign
11212PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11213           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11214
11215/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11216int
11217ppl_Constraints_Product_C_Polyhedron_Grid_upper_bound_assign
11218PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11219           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11220
11221/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11222int
11223ppl_Constraints_Product_C_Polyhedron_Grid_difference_assign
11224PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11225           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11226
11227/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11228int
11229ppl_Constraints_Product_C_Polyhedron_Grid_concatenate_assign
11230PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11231           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11232
11233/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11234int
11235ppl_Constraints_Product_C_Polyhedron_Grid_time_elapse_assign
11236PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11237           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11238
11239
11240
11241
11242
11243/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11244int
11245ppl_Constraints_Product_C_Polyhedron_Grid_upper_bound_assign_if_exact
11246PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11247           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11248
11249
11250
11251
11252
11253/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11254int
11255ppl_Constraints_Product_C_Polyhedron_Grid_constrains
11256PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11257           ppl_dimension_type var));
11258
11259
11260
11261
11262/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11263int
11264ppl_Constraints_Product_C_Polyhedron_Grid_unconstrain_space_dimension
11265PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11266           ppl_dimension_type var));
11267
11268
11269
11270
11271/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11272int
11273ppl_Constraints_Product_C_Polyhedron_Grid_unconstrain_space_dimensions
11274PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11275           ppl_dimension_type ds[],
11276           size_t n));
11277
11278
11279
11280
11281/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11282int
11283ppl_Constraints_Product_C_Polyhedron_Grid_affine_image
11284PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11285           ppl_dimension_type var,
11286           ppl_const_Linear_Expression_t le,
11287           ppl_const_Coefficient_t d));
11288
11289/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11290int
11291ppl_Constraints_Product_C_Polyhedron_Grid_affine_preimage
11292PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11293           ppl_dimension_type var,
11294           ppl_const_Linear_Expression_t le,
11295           ppl_const_Coefficient_t d));
11296
11297
11298
11299
11300
11301/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11302int
11303ppl_Constraints_Product_C_Polyhedron_Grid_bounded_affine_image
11304PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11305           ppl_dimension_type var,
11306           ppl_const_Linear_Expression_t lb,
11307           ppl_const_Linear_Expression_t ub,
11308           ppl_const_Coefficient_t d));
11309
11310/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11311int
11312ppl_Constraints_Product_C_Polyhedron_Grid_bounded_affine_preimage
11313PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11314           ppl_dimension_type var,
11315           ppl_const_Linear_Expression_t lb,
11316           ppl_const_Linear_Expression_t ub,
11317           ppl_const_Coefficient_t d));
11318
11319
11320
11321
11322
11323/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11324int
11325ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_image
11326PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11327           ppl_dimension_type var,
11328           enum ppl_enum_Constraint_Type relsym,
11329           ppl_const_Linear_Expression_t le,
11330           ppl_const_Coefficient_t d));
11331
11332/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11333int
11334ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_preimage
11335PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11336           ppl_dimension_type var,
11337           enum ppl_enum_Constraint_Type relsym,
11338           ppl_const_Linear_Expression_t le,
11339           ppl_const_Coefficient_t d));
11340
11341
11342
11343
11344
11345/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11346int
11347ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_image_lhs_rhs
11348PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11349           ppl_const_Linear_Expression_t lhs,
11350           enum ppl_enum_Constraint_Type relsym,
11351           ppl_const_Linear_Expression_t rhs));
11352
11353/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11354int
11355ppl_Constraints_Product_C_Polyhedron_Grid_generalized_affine_preimage_lhs_rhs
11356PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11357           ppl_const_Linear_Expression_t lhs,
11358           enum ppl_enum_Constraint_Type relsym,
11359           ppl_const_Linear_Expression_t rhs));
11360
11361
11362
11363
11364
11365/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11366int
11367ppl_Constraints_Product_C_Polyhedron_Grid_add_space_dimensions_and_embed
11368PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11369           ppl_dimension_type d));
11370
11371/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11372int
11373ppl_Constraints_Product_C_Polyhedron_Grid_add_space_dimensions_and_project
11374PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11375           ppl_dimension_type d));
11376
11377
11378
11379
11380
11381/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11382int
11383ppl_Constraints_Product_C_Polyhedron_Grid_remove_space_dimensions
11384PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11385           ppl_dimension_type ds[],
11386           size_t n));
11387
11388
11389
11390
11391/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11392int
11393ppl_Constraints_Product_C_Polyhedron_Grid_remove_higher_space_dimensions
11394PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11395           ppl_dimension_type d));
11396
11397
11398
11399
11400/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11401int
11402ppl_Constraints_Product_C_Polyhedron_Grid_expand_space_dimension
11403PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11404           ppl_dimension_type d,
11405           ppl_dimension_type m));
11406
11407
11408
11409
11410/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11411int
11412ppl_Constraints_Product_C_Polyhedron_Grid_fold_space_dimensions
11413PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11414           ppl_dimension_type ds[],
11415           size_t n,
11416           ppl_dimension_type d));
11417
11418
11419
11420
11421/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11422int
11423ppl_Constraints_Product_C_Polyhedron_Grid_map_space_dimensions
11424PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11425           ppl_dimension_type maps[],
11426           size_t n));
11427
11428
11429
11430
11431/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11432int
11433ppl_Constraints_Product_C_Polyhedron_Grid_drop_some_non_integer_points
11434PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11435           int complexity));
11436
11437
11438
11439
11440/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11441int
11442ppl_Constraints_Product_C_Polyhedron_Grid_drop_some_non_integer_points_2
11443PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t ph,
11444           ppl_dimension_type ds[],
11445           size_t n,
11446           int complexity));
11447
11448
11449
11450
11451
11452
11453/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11454int
11455ppl_Constraints_Product_C_Polyhedron_Grid_external_memory_in_bytes
11456PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ps,
11457           size_t* sz));
11458
11459/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11460int
11461ppl_Constraints_Product_C_Polyhedron_Grid_total_memory_in_bytes
11462PPL_PROTO((ppl_const_Constraints_Product_C_Polyhedron_Grid_t ps,
11463           size_t* sz));
11464
11465
11466
11467
11468
11469/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11470int
11471ppl_Constraints_Product_C_Polyhedron_Grid_widening_assign_with_tokens
11472PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11473           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y,
11474           unsigned* tp));
11475
11476
11477
11478
11479/*! \relates ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11480int
11481ppl_Constraints_Product_C_Polyhedron_Grid_widening_assign
11482PPL_PROTO((ppl_Constraints_Product_C_Polyhedron_Grid_t x,
11483           ppl_const_Constraints_Product_C_Polyhedron_Grid_t y));
11484
11485
11486
11487
11488
11489PPL_DECLARE_IO_FUNCTIONS(Constraints_Product_C_Polyhedron_Grid)
11490
11491/* End of Functions Related to ppl_Constraints_Product_C_Polyhedron_Grid_tag */
11492
11493/*! \interface ppl_Pointset_Powerset_C_Polyhedron_tag
11494  \brief Types and functions for ppl_Pointset_Powerset_C_Polyhedron_tag
11495*/
11496
11497/*! \interface ppl_Pointset_Powerset_C_Polyhedron_iterator_tag
11498  \brief Types and functions for iterating on the disjuncts of a
11499  ppl_Pointset_Powerset_C_Polyhedron_tag.
11500*/
11501/*! \interface ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag
11502  \brief Types and functions for iterating on the disjuncts of a
11503  const ppl_Pointset_Powerset_C_Polyhedron_tag.
11504*/
11505
11506PPL_TYPE_DECLARATION(Pointset_Powerset_C_Polyhedron_iterator)
11507PPL_TYPE_DECLARATION(Pointset_Powerset_C_Polyhedron_const_iterator)
11508
11509/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
11510int
11511ppl_new_Pointset_Powerset_C_Polyhedron_iterator
11512PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_iterator_t* pit));
11513
11514/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
11515int
11516ppl_new_Pointset_Powerset_C_Polyhedron_const_iterator
11517PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t* pit));
11518
11519
11520
11521
11522/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11523int
11524ppl_delete_Pointset_Powerset_C_Polyhedron
11525PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11526
11527
11528
11529
11530/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11531int
11532ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension
11533PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_dimension_type d, int empty));
11534
11535
11536
11537
11538
11539/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11540int
11541ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
11542PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11543
11544/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11545int
11546ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
11547PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
11548
11549
11550
11551
11552
11553
11554/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11555int
11556ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron_with_complexity
11557PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Pointset_Powerset_C_Polyhedron_t ph, int complexity));
11558
11559/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11560int
11561ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron_with_complexity
11562PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
11563
11564
11565
11566
11567
11568
11569/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11570int
11571ppl_new_Pointset_Powerset_C_Polyhedron_from_Constraint_System
11572PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Constraint_System_t cs));
11573
11574/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11575int
11576ppl_new_Pointset_Powerset_C_Polyhedron_from_Congruence_System
11577PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t* pph, ppl_const_Congruence_System_t cs));
11578
11579
11580
11581
11582
11583
11584
11585
11586/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11587int
11588ppl_Pointset_Powerset_C_Polyhedron_space_dimension
11589PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph, ppl_dimension_type* m));
11590
11591/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11592int
11593ppl_Pointset_Powerset_C_Polyhedron_affine_dimension
11594PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph, ppl_dimension_type* m));
11595
11596
11597
11598
11599
11600/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11601int
11602ppl_Pointset_Powerset_C_Polyhedron_relation_with_Constraint
11603PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11604           ppl_const_Constraint_t c));
11605
11606/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11607int
11608ppl_Pointset_Powerset_C_Polyhedron_relation_with_Generator
11609PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11610           ppl_const_Generator_t c));
11611
11612/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11613int
11614ppl_Pointset_Powerset_C_Polyhedron_relation_with_Congruence
11615PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11616           ppl_const_Congruence_t c));
11617
11618
11619
11620
11621
11622/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11623int
11624ppl_Pointset_Powerset_C_Polyhedron_is_empty
11625PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11626
11627/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11628int
11629ppl_Pointset_Powerset_C_Polyhedron_is_universe
11630PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11631
11632/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11633int
11634ppl_Pointset_Powerset_C_Polyhedron_is_bounded
11635PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11636
11637/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11638int
11639ppl_Pointset_Powerset_C_Polyhedron_contains_integer_point
11640PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11641
11642/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11643int
11644ppl_Pointset_Powerset_C_Polyhedron_is_topologically_closed
11645PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11646
11647/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11648int
11649ppl_Pointset_Powerset_C_Polyhedron_is_discrete
11650PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11651
11652
11653
11654
11655
11656/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11657int
11658ppl_Pointset_Powerset_C_Polyhedron_topological_closure_assign
11659PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph));
11660
11661/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11662int
11663ppl_Pointset_Powerset_C_Polyhedron_pairwise_reduce
11664PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph));
11665
11666/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11667int
11668ppl_Pointset_Powerset_C_Polyhedron_omega_reduce
11669PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph));
11670
11671
11672
11673
11674
11675/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11676int
11677ppl_Pointset_Powerset_C_Polyhedron_bounds_from_above
11678PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11679           ppl_const_Linear_Expression_t le));
11680
11681/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11682int
11683ppl_Pointset_Powerset_C_Polyhedron_bounds_from_below
11684PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11685           ppl_const_Linear_Expression_t le));
11686
11687
11688
11689
11690
11691/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11692int
11693ppl_Pointset_Powerset_C_Polyhedron_maximize
11694PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11695           ppl_const_Linear_Expression_t le,
11696           ppl_Coefficient_t ext_n,
11697           ppl_Coefficient_t ext_d,
11698           int* poptimum));
11699
11700/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11701int
11702ppl_Pointset_Powerset_C_Polyhedron_minimize
11703PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11704           ppl_const_Linear_Expression_t le,
11705           ppl_Coefficient_t ext_n,
11706           ppl_Coefficient_t ext_d,
11707           int* poptimum));
11708
11709
11710
11711
11712
11713/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11714int
11715ppl_Pointset_Powerset_C_Polyhedron_maximize_with_point
11716PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11717           ppl_const_Linear_Expression_t le,
11718           ppl_Coefficient_t ext_n,
11719           ppl_Coefficient_t ext_d,
11720           int* poptimum,
11721           ppl_Generator_t point));
11722
11723/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11724int
11725ppl_Pointset_Powerset_C_Polyhedron_minimize_with_point
11726PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph,
11727           ppl_const_Linear_Expression_t le,
11728           ppl_Coefficient_t ext_n,
11729           ppl_Coefficient_t ext_d,
11730           int* poptimum,
11731           ppl_Generator_t point));
11732
11733
11734
11735
11736
11737/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11738int
11739ppl_Pointset_Powerset_C_Polyhedron_contains_Pointset_Powerset_C_Polyhedron
11740PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11741           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11742
11743/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11744int
11745ppl_Pointset_Powerset_C_Polyhedron_strictly_contains_Pointset_Powerset_C_Polyhedron
11746PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11747           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11748
11749/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11750int
11751ppl_Pointset_Powerset_C_Polyhedron_is_disjoint_from_Pointset_Powerset_C_Polyhedron
11752PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11753           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11754
11755/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11756int
11757ppl_Pointset_Powerset_C_Polyhedron_geometrically_covers_Pointset_Powerset_C_Polyhedron
11758PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11759           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11760
11761/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11762int
11763ppl_Pointset_Powerset_C_Polyhedron_geometrically_equals_Pointset_Powerset_C_Polyhedron
11764PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11765           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11766
11767
11768
11769
11770
11771/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11772int
11773ppl_Pointset_Powerset_C_Polyhedron_equals_Pointset_Powerset_C_Polyhedron
11774PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t x,
11775           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11776
11777
11778
11779
11780/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11781int
11782ppl_Pointset_Powerset_C_Polyhedron_OK
11783PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ph));
11784
11785
11786
11787
11788/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11789int
11790ppl_Pointset_Powerset_C_Polyhedron_add_constraint
11791PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11792           ppl_const_Constraint_t c));
11793
11794/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11795int
11796ppl_Pointset_Powerset_C_Polyhedron_add_congruence
11797PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11798           ppl_const_Congruence_t c));
11799
11800
11801
11802
11803
11804/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11805int
11806ppl_Pointset_Powerset_C_Polyhedron_add_constraints
11807PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11808           ppl_const_Constraint_System_t cs));
11809
11810/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11811int
11812ppl_Pointset_Powerset_C_Polyhedron_add_congruences
11813PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11814           ppl_const_Congruence_System_t cs));
11815
11816
11817
11818
11819
11820/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11821int
11822ppl_Pointset_Powerset_C_Polyhedron_refine_with_constraint
11823PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11824           ppl_const_Constraint_t c));
11825
11826/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11827int
11828ppl_Pointset_Powerset_C_Polyhedron_refine_with_congruence
11829PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11830           ppl_const_Congruence_t c));
11831
11832
11833
11834
11835
11836/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11837int
11838ppl_Pointset_Powerset_C_Polyhedron_refine_with_constraints
11839PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11840           ppl_const_Constraint_System_t cs));
11841
11842/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11843int
11844ppl_Pointset_Powerset_C_Polyhedron_refine_with_congruences
11845PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11846           ppl_const_Congruence_System_t cs));
11847
11848
11849
11850
11851
11852/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11853int
11854ppl_Pointset_Powerset_C_Polyhedron_intersection_assign
11855PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11856           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11857
11858/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11859int
11860ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign
11861PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11862           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11863
11864/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11865int
11866ppl_Pointset_Powerset_C_Polyhedron_difference_assign
11867PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11868           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11869
11870/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11871int
11872ppl_Pointset_Powerset_C_Polyhedron_concatenate_assign
11873PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11874           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11875
11876/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11877int
11878ppl_Pointset_Powerset_C_Polyhedron_time_elapse_assign
11879PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11880           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11881
11882
11883
11884
11885
11886/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11887int
11888ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign_if_exact
11889PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11890           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11891
11892
11893
11894
11895
11896/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11897int
11898ppl_Pointset_Powerset_C_Polyhedron_simplify_using_context_assign
11899PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
11900           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
11901
11902
11903
11904
11905/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11906int
11907ppl_Pointset_Powerset_C_Polyhedron_constrains
11908PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11909           ppl_dimension_type var));
11910
11911
11912
11913
11914/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11915int
11916ppl_Pointset_Powerset_C_Polyhedron_unconstrain_space_dimension
11917PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11918           ppl_dimension_type var));
11919
11920
11921
11922
11923/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11924int
11925ppl_Pointset_Powerset_C_Polyhedron_unconstrain_space_dimensions
11926PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11927           ppl_dimension_type ds[],
11928           size_t n));
11929
11930
11931
11932
11933/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11934int
11935ppl_Pointset_Powerset_C_Polyhedron_affine_image
11936PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11937           ppl_dimension_type var,
11938           ppl_const_Linear_Expression_t le,
11939           ppl_const_Coefficient_t d));
11940
11941/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11942int
11943ppl_Pointset_Powerset_C_Polyhedron_affine_preimage
11944PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11945           ppl_dimension_type var,
11946           ppl_const_Linear_Expression_t le,
11947           ppl_const_Coefficient_t d));
11948
11949
11950
11951
11952
11953/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11954int
11955ppl_Pointset_Powerset_C_Polyhedron_bounded_affine_image
11956PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11957           ppl_dimension_type var,
11958           ppl_const_Linear_Expression_t lb,
11959           ppl_const_Linear_Expression_t ub,
11960           ppl_const_Coefficient_t d));
11961
11962/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11963int
11964ppl_Pointset_Powerset_C_Polyhedron_bounded_affine_preimage
11965PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11966           ppl_dimension_type var,
11967           ppl_const_Linear_Expression_t lb,
11968           ppl_const_Linear_Expression_t ub,
11969           ppl_const_Coefficient_t d));
11970
11971
11972
11973
11974
11975/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11976int
11977ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_image
11978PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11979           ppl_dimension_type var,
11980           enum ppl_enum_Constraint_Type relsym,
11981           ppl_const_Linear_Expression_t le,
11982           ppl_const_Coefficient_t d));
11983
11984/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11985int
11986ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_preimage
11987PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
11988           ppl_dimension_type var,
11989           enum ppl_enum_Constraint_Type relsym,
11990           ppl_const_Linear_Expression_t le,
11991           ppl_const_Coefficient_t d));
11992
11993
11994
11995
11996
11997/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
11998int
11999ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_image_lhs_rhs
12000PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12001           ppl_const_Linear_Expression_t lhs,
12002           enum ppl_enum_Constraint_Type relsym,
12003           ppl_const_Linear_Expression_t rhs));
12004
12005/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12006int
12007ppl_Pointset_Powerset_C_Polyhedron_generalized_affine_preimage_lhs_rhs
12008PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12009           ppl_const_Linear_Expression_t lhs,
12010           enum ppl_enum_Constraint_Type relsym,
12011           ppl_const_Linear_Expression_t rhs));
12012
12013
12014
12015
12016
12017/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12018int
12019ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed
12020PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12021           ppl_dimension_type d));
12022
12023/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12024int
12025ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_project
12026PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12027           ppl_dimension_type d));
12028
12029
12030
12031
12032
12033/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12034int
12035ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions
12036PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12037           ppl_dimension_type ds[],
12038           size_t n));
12039
12040
12041
12042
12043/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12044int
12045ppl_Pointset_Powerset_C_Polyhedron_remove_higher_space_dimensions
12046PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12047           ppl_dimension_type d));
12048
12049
12050
12051
12052/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12053int
12054ppl_Pointset_Powerset_C_Polyhedron_expand_space_dimension
12055PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12056           ppl_dimension_type d,
12057           ppl_dimension_type m));
12058
12059
12060
12061
12062/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12063int
12064ppl_Pointset_Powerset_C_Polyhedron_fold_space_dimensions
12065PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12066           ppl_dimension_type ds[],
12067           size_t n,
12068           ppl_dimension_type d));
12069
12070
12071
12072
12073/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12074int
12075ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions
12076PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12077           ppl_dimension_type maps[],
12078           size_t n));
12079
12080
12081
12082
12083/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12084int
12085ppl_Pointset_Powerset_C_Polyhedron_drop_some_non_integer_points
12086PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12087           int complexity));
12088
12089
12090
12091
12092/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12093int
12094ppl_Pointset_Powerset_C_Polyhedron_drop_some_non_integer_points_2
12095PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ph,
12096           ppl_dimension_type ds[],
12097           size_t n,
12098           int complexity));
12099
12100
12101
12102
12103
12104
12105/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12106int
12107ppl_Pointset_Powerset_C_Polyhedron_external_memory_in_bytes
12108PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ps,
12109           size_t* sz));
12110
12111/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12112int
12113ppl_Pointset_Powerset_C_Polyhedron_total_memory_in_bytes
12114PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ps,
12115           size_t* sz));
12116
12117/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12118int
12119ppl_Pointset_Powerset_C_Polyhedron_size
12120PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ps,
12121           size_t* sz));
12122
12123
12124
12125
12126
12127/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12128int
12129ppl_new_Pointset_Powerset_C_Polyhedron_iterator_from_iterator
12130PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_iterator_t* px,
12131           ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t y));
12132
12133/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12134int
12135ppl_new_Pointset_Powerset_C_Polyhedron_const_iterator_from_const_iterator
12136PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t* px,
12137           ppl_const_Pointset_Powerset_C_Polyhedron_const_iterator_t y));
12138
12139
12140
12141
12142/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12143int
12144ppl_Pointset_Powerset_C_Polyhedron_iterator_begin
12145PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ps,
12146           ppl_Pointset_Powerset_C_Polyhedron_iterator_t psit));
12147
12148/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12149int
12150ppl_Pointset_Powerset_C_Polyhedron_const_iterator_begin
12151PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ps,
12152           ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t psit));
12153
12154/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12155int
12156ppl_Pointset_Powerset_C_Polyhedron_iterator_end
12157PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ps,
12158           ppl_Pointset_Powerset_C_Polyhedron_iterator_t psit));
12159
12160/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12161int
12162ppl_Pointset_Powerset_C_Polyhedron_const_iterator_end
12163PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_t ps,
12164           ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t psit));
12165
12166
12167
12168
12169
12170/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12171int
12172ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test
12173PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t x,
12174           ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t y));
12175
12176/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12177int
12178ppl_Pointset_Powerset_C_Polyhedron_const_iterator_equal_test
12179PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_const_iterator_t x,
12180           ppl_const_Pointset_Powerset_C_Polyhedron_const_iterator_t y));
12181
12182
12183
12184
12185/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12186int
12187ppl_Pointset_Powerset_C_Polyhedron_iterator_increment
12188PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_iterator_t psit));
12189
12190/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12191int
12192ppl_Pointset_Powerset_C_Polyhedron_const_iterator_increment
12193PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t psit));
12194
12195/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12196int
12197ppl_Pointset_Powerset_C_Polyhedron_iterator_decrement
12198PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_iterator_t psit));
12199
12200/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12201int
12202ppl_Pointset_Powerset_C_Polyhedron_const_iterator_decrement
12203PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_const_iterator_t psit));
12204
12205
12206
12207
12208
12209/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12210int
12211ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference
12212PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t ps,
12213           ppl_const_Polyhedron_t* d));
12214
12215/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12216int
12217ppl_Pointset_Powerset_C_Polyhedron_const_iterator_dereference
12218PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_const_iterator_t ps,
12219           ppl_const_Polyhedron_t* d));
12220
12221
12222
12223
12224
12225/*! \relates ppl_Pointset_Powerset_C_Polyhedron_iterator_tag */
12226int
12227ppl_delete_Pointset_Powerset_C_Polyhedron_iterator
12228PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t psit));
12229
12230/*! \relates ppl_Pointset_Powerset_C_Polyhedron_const_iterator_tag */
12231int
12232ppl_delete_Pointset_Powerset_C_Polyhedron_const_iterator
12233PPL_PROTO((ppl_const_Pointset_Powerset_C_Polyhedron_const_iterator_t psit));
12234
12235
12236
12237
12238/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12239int
12240ppl_Pointset_Powerset_C_Polyhedron_add_disjunct
12241PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ps,
12242           ppl_const_Polyhedron_t d));
12243
12244
12245
12246
12247
12248/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12249int
12250ppl_Pointset_Powerset_C_Polyhedron_drop_disjunct
12251PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ps,
12252 ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t cit,
12253 ppl_Pointset_Powerset_C_Polyhedron_iterator_t it));
12254
12255
12256
12257
12258/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12259int
12260ppl_Pointset_Powerset_C_Polyhedron_drop_disjuncts
12261PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t ps,
12262 ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t first,
12263 ppl_const_Pointset_Powerset_C_Polyhedron_iterator_t last));
12264
12265
12266
12267
12268/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12269int
12270ppl_Pointset_Powerset_C_Polyhedron_BHZ03_BHRZ03_BHRZ03_widening_assign
12271PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
12272           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
12273
12274/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12275int
12276ppl_Pointset_Powerset_C_Polyhedron_BHZ03_H79_H79_widening_assign
12277PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
12278           ppl_const_Pointset_Powerset_C_Polyhedron_t y));
12279
12280
12281
12282
12283
12284/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12285int
12286ppl_Pointset_Powerset_C_Polyhedron_BGP99_BHRZ03_extrapolation_assign
12287PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
12288           ppl_const_Pointset_Powerset_C_Polyhedron_t y,
12289           int disjuncts));
12290
12291/*! \relates ppl_Pointset_Powerset_C_Polyhedron_tag */
12292int
12293ppl_Pointset_Powerset_C_Polyhedron_BGP99_H79_extrapolation_assign
12294PPL_PROTO((ppl_Pointset_Powerset_C_Polyhedron_t x,
12295           ppl_const_Pointset_Powerset_C_Polyhedron_t y,
12296           int disjuncts));
12297
12298
12299
12300
12301
12302
12303PPL_DECLARE_IO_FUNCTIONS(Pointset_Powerset_C_Polyhedron)
12304
12305/* End of Functions Related to ppl_Pointset_Powerset_C_Polyhedron_tag */
12306
12307/*! \interface ppl_Pointset_Powerset_NNC_Polyhedron_tag
12308  \brief Types and functions for ppl_Pointset_Powerset_NNC_Polyhedron_tag
12309*/
12310
12311/*! \interface ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag
12312  \brief Types and functions for iterating on the disjuncts of a
12313  ppl_Pointset_Powerset_NNC_Polyhedron_tag.
12314*/
12315/*! \interface ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag
12316  \brief Types and functions for iterating on the disjuncts of a
12317  const ppl_Pointset_Powerset_NNC_Polyhedron_tag.
12318*/
12319
12320PPL_TYPE_DECLARATION(Pointset_Powerset_NNC_Polyhedron_iterator)
12321PPL_TYPE_DECLARATION(Pointset_Powerset_NNC_Polyhedron_const_iterator)
12322
12323/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
12324int
12325ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator
12326PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t* pit));
12327
12328/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
12329int
12330ppl_new_Pointset_Powerset_NNC_Polyhedron_const_iterator
12331PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t* pit));
12332
12333
12334
12335
12336/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12337int
12338ppl_delete_Pointset_Powerset_NNC_Polyhedron
12339PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12340
12341
12342
12343
12344/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12345int
12346ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension
12347PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_dimension_type d, int empty));
12348
12349
12350
12351
12352
12353/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12354int
12355ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron
12356PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12357
12358/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12359int
12360ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron
12361PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Polyhedron_t ph));
12362
12363
12364
12365
12366
12367
12368/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12369int
12370ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron_with_complexity
12371PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph, int complexity));
12372
12373/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12374int
12375ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron_with_complexity
12376PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Polyhedron_t ph, int complexity));
12377
12378
12379
12380
12381
12382
12383/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12384int
12385ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Constraint_System
12386PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Constraint_System_t cs));
12387
12388/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12389int
12390ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Congruence_System
12391PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t* pph, ppl_const_Congruence_System_t cs));
12392
12393
12394
12395
12396
12397
12398
12399
12400/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12401int
12402ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension
12403PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph, ppl_dimension_type* m));
12404
12405/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12406int
12407ppl_Pointset_Powerset_NNC_Polyhedron_affine_dimension
12408PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph, ppl_dimension_type* m));
12409
12410
12411
12412
12413
12414/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12415int
12416ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_Constraint
12417PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12418           ppl_const_Constraint_t c));
12419
12420/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12421int
12422ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_Generator
12423PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12424           ppl_const_Generator_t c));
12425
12426/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12427int
12428ppl_Pointset_Powerset_NNC_Polyhedron_relation_with_Congruence
12429PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12430           ppl_const_Congruence_t c));
12431
12432
12433
12434
12435
12436/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12437int
12438ppl_Pointset_Powerset_NNC_Polyhedron_is_empty
12439PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12440
12441/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12442int
12443ppl_Pointset_Powerset_NNC_Polyhedron_is_universe
12444PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12445
12446/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12447int
12448ppl_Pointset_Powerset_NNC_Polyhedron_is_bounded
12449PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12450
12451/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12452int
12453ppl_Pointset_Powerset_NNC_Polyhedron_contains_integer_point
12454PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12455
12456/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12457int
12458ppl_Pointset_Powerset_NNC_Polyhedron_is_topologically_closed
12459PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12460
12461/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12462int
12463ppl_Pointset_Powerset_NNC_Polyhedron_is_discrete
12464PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12465
12466
12467
12468
12469
12470/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12471int
12472ppl_Pointset_Powerset_NNC_Polyhedron_topological_closure_assign
12473PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph));
12474
12475/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12476int
12477ppl_Pointset_Powerset_NNC_Polyhedron_pairwise_reduce
12478PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph));
12479
12480/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12481int
12482ppl_Pointset_Powerset_NNC_Polyhedron_omega_reduce
12483PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph));
12484
12485
12486
12487
12488
12489/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12490int
12491ppl_Pointset_Powerset_NNC_Polyhedron_bounds_from_above
12492PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12493           ppl_const_Linear_Expression_t le));
12494
12495/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12496int
12497ppl_Pointset_Powerset_NNC_Polyhedron_bounds_from_below
12498PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12499           ppl_const_Linear_Expression_t le));
12500
12501
12502
12503
12504
12505/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12506int
12507ppl_Pointset_Powerset_NNC_Polyhedron_maximize
12508PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12509           ppl_const_Linear_Expression_t le,
12510           ppl_Coefficient_t ext_n,
12511           ppl_Coefficient_t ext_d,
12512           int* poptimum));
12513
12514/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12515int
12516ppl_Pointset_Powerset_NNC_Polyhedron_minimize
12517PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12518           ppl_const_Linear_Expression_t le,
12519           ppl_Coefficient_t ext_n,
12520           ppl_Coefficient_t ext_d,
12521           int* poptimum));
12522
12523
12524
12525
12526
12527/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12528int
12529ppl_Pointset_Powerset_NNC_Polyhedron_maximize_with_point
12530PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12531           ppl_const_Linear_Expression_t le,
12532           ppl_Coefficient_t ext_n,
12533           ppl_Coefficient_t ext_d,
12534           int* poptimum,
12535           ppl_Generator_t point));
12536
12537/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12538int
12539ppl_Pointset_Powerset_NNC_Polyhedron_minimize_with_point
12540PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph,
12541           ppl_const_Linear_Expression_t le,
12542           ppl_Coefficient_t ext_n,
12543           ppl_Coefficient_t ext_d,
12544           int* poptimum,
12545           ppl_Generator_t point));
12546
12547
12548
12549
12550
12551/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12552int
12553ppl_Pointset_Powerset_NNC_Polyhedron_contains_Pointset_Powerset_NNC_Polyhedron
12554PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12555           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12556
12557/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12558int
12559ppl_Pointset_Powerset_NNC_Polyhedron_strictly_contains_Pointset_Powerset_NNC_Polyhedron
12560PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12561           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12562
12563/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12564int
12565ppl_Pointset_Powerset_NNC_Polyhedron_is_disjoint_from_Pointset_Powerset_NNC_Polyhedron
12566PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12567           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12568
12569/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12570int
12571ppl_Pointset_Powerset_NNC_Polyhedron_geometrically_covers_Pointset_Powerset_NNC_Polyhedron
12572PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12573           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12574
12575/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12576int
12577ppl_Pointset_Powerset_NNC_Polyhedron_geometrically_equals_Pointset_Powerset_NNC_Polyhedron
12578PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12579           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12580
12581
12582
12583
12584
12585/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12586int
12587ppl_Pointset_Powerset_NNC_Polyhedron_equals_Pointset_Powerset_NNC_Polyhedron
12588PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t x,
12589           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12590
12591
12592
12593
12594/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12595int
12596ppl_Pointset_Powerset_NNC_Polyhedron_OK
12597PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ph));
12598
12599
12600
12601
12602/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12603int
12604ppl_Pointset_Powerset_NNC_Polyhedron_add_constraint
12605PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12606           ppl_const_Constraint_t c));
12607
12608/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12609int
12610ppl_Pointset_Powerset_NNC_Polyhedron_add_congruence
12611PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12612           ppl_const_Congruence_t c));
12613
12614
12615
12616
12617
12618/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12619int
12620ppl_Pointset_Powerset_NNC_Polyhedron_add_constraints
12621PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12622           ppl_const_Constraint_System_t cs));
12623
12624/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12625int
12626ppl_Pointset_Powerset_NNC_Polyhedron_add_congruences
12627PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12628           ppl_const_Congruence_System_t cs));
12629
12630
12631
12632
12633
12634/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12635int
12636ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_constraint
12637PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12638           ppl_const_Constraint_t c));
12639
12640/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12641int
12642ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_congruence
12643PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12644           ppl_const_Congruence_t c));
12645
12646
12647
12648
12649
12650/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12651int
12652ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_constraints
12653PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12654           ppl_const_Constraint_System_t cs));
12655
12656/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12657int
12658ppl_Pointset_Powerset_NNC_Polyhedron_refine_with_congruences
12659PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12660           ppl_const_Congruence_System_t cs));
12661
12662
12663
12664
12665
12666/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12667int
12668ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign
12669PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12670           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12671
12672/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12673int
12674ppl_Pointset_Powerset_NNC_Polyhedron_upper_bound_assign
12675PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12676           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12677
12678/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12679int
12680ppl_Pointset_Powerset_NNC_Polyhedron_difference_assign
12681PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12682           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12683
12684/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12685int
12686ppl_Pointset_Powerset_NNC_Polyhedron_concatenate_assign
12687PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12688           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12689
12690/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12691int
12692ppl_Pointset_Powerset_NNC_Polyhedron_time_elapse_assign
12693PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12694           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12695
12696
12697
12698
12699
12700/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12701int
12702ppl_Pointset_Powerset_NNC_Polyhedron_upper_bound_assign_if_exact
12703PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12704           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12705
12706
12707
12708
12709
12710/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12711int
12712ppl_Pointset_Powerset_NNC_Polyhedron_simplify_using_context_assign
12713PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
12714           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
12715
12716
12717
12718
12719/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12720int
12721ppl_Pointset_Powerset_NNC_Polyhedron_constrains
12722PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12723           ppl_dimension_type var));
12724
12725
12726
12727
12728/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12729int
12730ppl_Pointset_Powerset_NNC_Polyhedron_unconstrain_space_dimension
12731PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12732           ppl_dimension_type var));
12733
12734
12735
12736
12737/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12738int
12739ppl_Pointset_Powerset_NNC_Polyhedron_unconstrain_space_dimensions
12740PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12741           ppl_dimension_type ds[],
12742           size_t n));
12743
12744
12745
12746
12747/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12748int
12749ppl_Pointset_Powerset_NNC_Polyhedron_affine_image
12750PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12751           ppl_dimension_type var,
12752           ppl_const_Linear_Expression_t le,
12753           ppl_const_Coefficient_t d));
12754
12755/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12756int
12757ppl_Pointset_Powerset_NNC_Polyhedron_affine_preimage
12758PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12759           ppl_dimension_type var,
12760           ppl_const_Linear_Expression_t le,
12761           ppl_const_Coefficient_t d));
12762
12763
12764
12765
12766
12767/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12768int
12769ppl_Pointset_Powerset_NNC_Polyhedron_bounded_affine_image
12770PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12771           ppl_dimension_type var,
12772           ppl_const_Linear_Expression_t lb,
12773           ppl_const_Linear_Expression_t ub,
12774           ppl_const_Coefficient_t d));
12775
12776/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12777int
12778ppl_Pointset_Powerset_NNC_Polyhedron_bounded_affine_preimage
12779PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12780           ppl_dimension_type var,
12781           ppl_const_Linear_Expression_t lb,
12782           ppl_const_Linear_Expression_t ub,
12783           ppl_const_Coefficient_t d));
12784
12785
12786
12787
12788
12789/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12790int
12791ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_image
12792PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12793           ppl_dimension_type var,
12794           enum ppl_enum_Constraint_Type relsym,
12795           ppl_const_Linear_Expression_t le,
12796           ppl_const_Coefficient_t d));
12797
12798/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12799int
12800ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_preimage
12801PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12802           ppl_dimension_type var,
12803           enum ppl_enum_Constraint_Type relsym,
12804           ppl_const_Linear_Expression_t le,
12805           ppl_const_Coefficient_t d));
12806
12807
12808
12809
12810
12811/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12812int
12813ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_image_lhs_rhs
12814PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12815           ppl_const_Linear_Expression_t lhs,
12816           enum ppl_enum_Constraint_Type relsym,
12817           ppl_const_Linear_Expression_t rhs));
12818
12819/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12820int
12821ppl_Pointset_Powerset_NNC_Polyhedron_generalized_affine_preimage_lhs_rhs
12822PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12823           ppl_const_Linear_Expression_t lhs,
12824           enum ppl_enum_Constraint_Type relsym,
12825           ppl_const_Linear_Expression_t rhs));
12826
12827
12828
12829
12830
12831/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12832int
12833ppl_Pointset_Powerset_NNC_Polyhedron_add_space_dimensions_and_embed
12834PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12835           ppl_dimension_type d));
12836
12837/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12838int
12839ppl_Pointset_Powerset_NNC_Polyhedron_add_space_dimensions_and_project
12840PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12841           ppl_dimension_type d));
12842
12843
12844
12845
12846
12847/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12848int
12849ppl_Pointset_Powerset_NNC_Polyhedron_remove_space_dimensions
12850PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12851           ppl_dimension_type ds[],
12852           size_t n));
12853
12854
12855
12856
12857/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12858int
12859ppl_Pointset_Powerset_NNC_Polyhedron_remove_higher_space_dimensions
12860PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12861           ppl_dimension_type d));
12862
12863
12864
12865
12866/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12867int
12868ppl_Pointset_Powerset_NNC_Polyhedron_expand_space_dimension
12869PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12870           ppl_dimension_type d,
12871           ppl_dimension_type m));
12872
12873
12874
12875
12876/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12877int
12878ppl_Pointset_Powerset_NNC_Polyhedron_fold_space_dimensions
12879PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12880           ppl_dimension_type ds[],
12881           size_t n,
12882           ppl_dimension_type d));
12883
12884
12885
12886
12887/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12888int
12889ppl_Pointset_Powerset_NNC_Polyhedron_map_space_dimensions
12890PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12891           ppl_dimension_type maps[],
12892           size_t n));
12893
12894
12895
12896
12897/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12898int
12899ppl_Pointset_Powerset_NNC_Polyhedron_drop_some_non_integer_points
12900PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12901           int complexity));
12902
12903
12904
12905
12906/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12907int
12908ppl_Pointset_Powerset_NNC_Polyhedron_drop_some_non_integer_points_2
12909PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ph,
12910           ppl_dimension_type ds[],
12911           size_t n,
12912           int complexity));
12913
12914
12915
12916
12917
12918
12919/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12920int
12921ppl_Pointset_Powerset_NNC_Polyhedron_external_memory_in_bytes
12922PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ps,
12923           size_t* sz));
12924
12925/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12926int
12927ppl_Pointset_Powerset_NNC_Polyhedron_total_memory_in_bytes
12928PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ps,
12929           size_t* sz));
12930
12931/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
12932int
12933ppl_Pointset_Powerset_NNC_Polyhedron_size
12934PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ps,
12935           size_t* sz));
12936
12937
12938
12939
12940
12941/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
12942int
12943ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator_from_iterator
12944PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t* px,
12945           ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t y));
12946
12947/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
12948int
12949ppl_new_Pointset_Powerset_NNC_Polyhedron_const_iterator_from_const_iterator
12950PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t* px,
12951           ppl_const_Pointset_Powerset_NNC_Polyhedron_const_iterator_t y));
12952
12953
12954
12955
12956/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
12957int
12958ppl_Pointset_Powerset_NNC_Polyhedron_iterator_begin
12959PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ps,
12960           ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t psit));
12961
12962/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
12963int
12964ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_begin
12965PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ps,
12966           ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t psit));
12967
12968/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
12969int
12970ppl_Pointset_Powerset_NNC_Polyhedron_iterator_end
12971PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ps,
12972           ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t psit));
12973
12974/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
12975int
12976ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_end
12977PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_t ps,
12978           ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t psit));
12979
12980
12981
12982
12983
12984/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
12985int
12986ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equal_test
12987PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t x,
12988           ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t y));
12989
12990/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
12991int
12992ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_equal_test
12993PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_const_iterator_t x,
12994           ppl_const_Pointset_Powerset_NNC_Polyhedron_const_iterator_t y));
12995
12996
12997
12998
12999/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
13000int
13001ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment
13002PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t psit));
13003
13004/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
13005int
13006ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_increment
13007PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t psit));
13008
13009/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
13010int
13011ppl_Pointset_Powerset_NNC_Polyhedron_iterator_decrement
13012PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t psit));
13013
13014/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
13015int
13016ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_decrement
13017PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_t psit));
13018
13019
13020
13021
13022
13023/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
13024int
13025ppl_Pointset_Powerset_NNC_Polyhedron_iterator_dereference
13026PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t ps,
13027           ppl_const_Polyhedron_t* d));
13028
13029/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
13030int
13031ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_dereference
13032PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_const_iterator_t ps,
13033           ppl_const_Polyhedron_t* d));
13034
13035
13036
13037
13038
13039/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_iterator_tag */
13040int
13041ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator
13042PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t psit));
13043
13044/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_const_iterator_tag */
13045int
13046ppl_delete_Pointset_Powerset_NNC_Polyhedron_const_iterator
13047PPL_PROTO((ppl_const_Pointset_Powerset_NNC_Polyhedron_const_iterator_t psit));
13048
13049
13050
13051
13052/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13053int
13054ppl_Pointset_Powerset_NNC_Polyhedron_add_disjunct
13055PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ps,
13056           ppl_const_Polyhedron_t d));
13057
13058
13059
13060
13061
13062/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13063int
13064ppl_Pointset_Powerset_NNC_Polyhedron_drop_disjunct
13065PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ps,
13066 ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t cit,
13067 ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t it));
13068
13069
13070
13071
13072/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13073int
13074ppl_Pointset_Powerset_NNC_Polyhedron_drop_disjuncts
13075PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t ps,
13076 ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t first,
13077 ppl_const_Pointset_Powerset_NNC_Polyhedron_iterator_t last));
13078
13079
13080
13081
13082/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13083int
13084ppl_Pointset_Powerset_NNC_Polyhedron_BHZ03_BHRZ03_BHRZ03_widening_assign
13085PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
13086           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
13087
13088/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13089int
13090ppl_Pointset_Powerset_NNC_Polyhedron_BHZ03_H79_H79_widening_assign
13091PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
13092           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y));
13093
13094
13095
13096
13097
13098/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13099int
13100ppl_Pointset_Powerset_NNC_Polyhedron_BGP99_BHRZ03_extrapolation_assign
13101PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
13102           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y,
13103           int disjuncts));
13104
13105/*! \relates ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13106int
13107ppl_Pointset_Powerset_NNC_Polyhedron_BGP99_H79_extrapolation_assign
13108PPL_PROTO((ppl_Pointset_Powerset_NNC_Polyhedron_t x,
13109           ppl_const_Pointset_Powerset_NNC_Polyhedron_t y,
13110           int disjuncts));
13111
13112
13113
13114
13115
13116
13117PPL_DECLARE_IO_FUNCTIONS(Pointset_Powerset_NNC_Polyhedron)
13118
13119/* End of Functions Related to ppl_Pointset_Powerset_NNC_Polyhedron_tag */
13120
13121/*! \interface ppl_Double_Box_tag
13122  \brief Types and functions for ppl_Double_Box_tag
13123*/
13124
13125/*! \relates ppl_Double_Box_tag */
13126int
13127ppl_delete_Double_Box
13128PPL_PROTO((ppl_const_Double_Box_t ph));
13129
13130
13131
13132
13133/*! \relates ppl_Double_Box_tag */
13134int
13135ppl_new_Double_Box_from_space_dimension
13136PPL_PROTO((ppl_Double_Box_t* pph, ppl_dimension_type d, int empty));
13137
13138
13139
13140
13141
13142/*! \relates ppl_Double_Box_tag */
13143int
13144ppl_new_Double_Box_from_C_Polyhedron
13145PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Polyhedron_t ph));
13146
13147/*! \relates ppl_Double_Box_tag */
13148int
13149ppl_new_Double_Box_from_NNC_Polyhedron
13150PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Polyhedron_t ph));
13151
13152/*! \relates ppl_Double_Box_tag */
13153int
13154ppl_new_Double_Box_from_Grid
13155PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Grid_t ph));
13156
13157/*! \relates ppl_Double_Box_tag */
13158int
13159ppl_new_Double_Box_from_Rational_Box
13160PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Rational_Box_t ph));
13161
13162/*! \relates ppl_Double_Box_tag */
13163int
13164ppl_new_Double_Box_from_BD_Shape_mpz_class
13165PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
13166
13167/*! \relates ppl_Double_Box_tag */
13168int
13169ppl_new_Double_Box_from_BD_Shape_mpq_class
13170PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
13171
13172/*! \relates ppl_Double_Box_tag */
13173int
13174ppl_new_Double_Box_from_Octagonal_Shape_mpz_class
13175PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
13176
13177/*! \relates ppl_Double_Box_tag */
13178int
13179ppl_new_Double_Box_from_Octagonal_Shape_mpq_class
13180PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
13181
13182/*! \relates ppl_Double_Box_tag */
13183int
13184ppl_new_Double_Box_from_Double_Box
13185PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Double_Box_t ph));
13186
13187/*! \relates ppl_Double_Box_tag */
13188int
13189ppl_new_Double_Box_from_BD_Shape_double
13190PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_double_t ph));
13191
13192/*! \relates ppl_Double_Box_tag */
13193int
13194ppl_new_Double_Box_from_Octagonal_Shape_double
13195PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_double_t ph));
13196
13197
13198
13199
13200
13201
13202/*! \relates ppl_Double_Box_tag */
13203int
13204ppl_new_Double_Box_from_C_Polyhedron_with_complexity
13205PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Polyhedron_t ph, int complexity));
13206
13207/*! \relates ppl_Double_Box_tag */
13208int
13209ppl_new_Double_Box_from_NNC_Polyhedron_with_complexity
13210PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Polyhedron_t ph, int complexity));
13211
13212/*! \relates ppl_Double_Box_tag */
13213int
13214ppl_new_Double_Box_from_Grid_with_complexity
13215PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Grid_t ph, int complexity));
13216
13217/*! \relates ppl_Double_Box_tag */
13218int
13219ppl_new_Double_Box_from_Rational_Box_with_complexity
13220PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Rational_Box_t ph, int complexity));
13221
13222/*! \relates ppl_Double_Box_tag */
13223int
13224ppl_new_Double_Box_from_BD_Shape_mpz_class_with_complexity
13225PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
13226
13227/*! \relates ppl_Double_Box_tag */
13228int
13229ppl_new_Double_Box_from_BD_Shape_mpq_class_with_complexity
13230PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
13231
13232/*! \relates ppl_Double_Box_tag */
13233int
13234ppl_new_Double_Box_from_Octagonal_Shape_mpz_class_with_complexity
13235PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
13236
13237/*! \relates ppl_Double_Box_tag */
13238int
13239ppl_new_Double_Box_from_Octagonal_Shape_mpq_class_with_complexity
13240PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
13241
13242/*! \relates ppl_Double_Box_tag */
13243int
13244ppl_new_Double_Box_from_Double_Box_with_complexity
13245PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Double_Box_t ph, int complexity));
13246
13247/*! \relates ppl_Double_Box_tag */
13248int
13249ppl_new_Double_Box_from_BD_Shape_double_with_complexity
13250PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
13251
13252/*! \relates ppl_Double_Box_tag */
13253int
13254ppl_new_Double_Box_from_Octagonal_Shape_double_with_complexity
13255PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
13256
13257
13258
13259
13260
13261
13262/*! \relates ppl_Double_Box_tag */
13263int
13264ppl_new_Double_Box_from_Constraint_System
13265PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Constraint_System_t cs));
13266
13267/*! \relates ppl_Double_Box_tag */
13268int
13269ppl_new_Double_Box_from_Congruence_System
13270PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Congruence_System_t cs));
13271
13272/*! \relates ppl_Double_Box_tag */
13273int
13274ppl_new_Double_Box_from_Generator_System
13275PPL_PROTO((ppl_Double_Box_t* pph, ppl_const_Generator_System_t cs));
13276
13277
13278
13279
13280
13281
13282
13283
13284/*! \relates ppl_Double_Box_tag */
13285int
13286ppl_Double_Box_space_dimension
13287PPL_PROTO((ppl_const_Double_Box_t ph, ppl_dimension_type* m));
13288
13289/*! \relates ppl_Double_Box_tag */
13290int
13291ppl_Double_Box_affine_dimension
13292PPL_PROTO((ppl_const_Double_Box_t ph, ppl_dimension_type* m));
13293
13294
13295
13296
13297
13298/*! \relates ppl_Double_Box_tag */
13299int
13300ppl_Double_Box_relation_with_Constraint
13301PPL_PROTO((ppl_const_Double_Box_t ph,
13302           ppl_const_Constraint_t c));
13303
13304/*! \relates ppl_Double_Box_tag */
13305int
13306ppl_Double_Box_relation_with_Generator
13307PPL_PROTO((ppl_const_Double_Box_t ph,
13308           ppl_const_Generator_t c));
13309
13310/*! \relates ppl_Double_Box_tag */
13311int
13312ppl_Double_Box_relation_with_Congruence
13313PPL_PROTO((ppl_const_Double_Box_t ph,
13314           ppl_const_Congruence_t c));
13315
13316
13317
13318
13319
13320/*! \relates ppl_Double_Box_tag */
13321int
13322ppl_Double_Box_get_constraints
13323PPL_PROTO((ppl_const_Double_Box_t ph,
13324           ppl_const_Constraint_System_t* pcs));
13325
13326/*! \relates ppl_Double_Box_tag */
13327int
13328ppl_Double_Box_get_congruences
13329PPL_PROTO((ppl_const_Double_Box_t ph,
13330           ppl_const_Congruence_System_t* pcs));
13331
13332
13333
13334
13335
13336/*! \relates ppl_Double_Box_tag */
13337int
13338ppl_Double_Box_get_minimized_constraints
13339PPL_PROTO((ppl_const_Double_Box_t ph,
13340           ppl_const_Constraint_System_t* pcs));
13341
13342/*! \relates ppl_Double_Box_tag */
13343int
13344ppl_Double_Box_get_minimized_congruences
13345PPL_PROTO((ppl_const_Double_Box_t ph,
13346           ppl_const_Congruence_System_t* pcs));
13347
13348
13349
13350
13351
13352/*! \relates ppl_Double_Box_tag */
13353int
13354ppl_Double_Box_is_empty
13355PPL_PROTO((ppl_const_Double_Box_t ph));
13356
13357/*! \relates ppl_Double_Box_tag */
13358int
13359ppl_Double_Box_is_universe
13360PPL_PROTO((ppl_const_Double_Box_t ph));
13361
13362/*! \relates ppl_Double_Box_tag */
13363int
13364ppl_Double_Box_is_bounded
13365PPL_PROTO((ppl_const_Double_Box_t ph));
13366
13367/*! \relates ppl_Double_Box_tag */
13368int
13369ppl_Double_Box_contains_integer_point
13370PPL_PROTO((ppl_const_Double_Box_t ph));
13371
13372/*! \relates ppl_Double_Box_tag */
13373int
13374ppl_Double_Box_is_topologically_closed
13375PPL_PROTO((ppl_const_Double_Box_t ph));
13376
13377/*! \relates ppl_Double_Box_tag */
13378int
13379ppl_Double_Box_is_discrete
13380PPL_PROTO((ppl_const_Double_Box_t ph));
13381
13382
13383
13384
13385
13386/*! \relates ppl_Double_Box_tag */
13387int
13388ppl_Double_Box_topological_closure_assign
13389PPL_PROTO((ppl_Double_Box_t ph));
13390
13391
13392
13393
13394
13395/*! \relates ppl_Double_Box_tag */
13396int
13397ppl_Double_Box_bounds_from_above
13398PPL_PROTO((ppl_const_Double_Box_t ph,
13399           ppl_const_Linear_Expression_t le));
13400
13401/*! \relates ppl_Double_Box_tag */
13402int
13403ppl_Double_Box_bounds_from_below
13404PPL_PROTO((ppl_const_Double_Box_t ph,
13405           ppl_const_Linear_Expression_t le));
13406
13407
13408
13409
13410
13411/*! \relates ppl_Double_Box_tag */
13412int
13413ppl_Double_Box_get_upper_bound
13414PPL_PROTO((ppl_Double_Box_t ps,
13415           ppl_dimension_type var,
13416           ppl_Coefficient_t ext_n,
13417           ppl_Coefficient_t ext_d,
13418           int* pclosed));
13419
13420/*! \relates ppl_Double_Box_tag */
13421int
13422ppl_Double_Box_get_lower_bound
13423PPL_PROTO((ppl_Double_Box_t ps,
13424           ppl_dimension_type var,
13425           ppl_Coefficient_t ext_n,
13426           ppl_Coefficient_t ext_d,
13427           int* pclosed));
13428
13429
13430
13431
13432
13433/*! \relates ppl_Double_Box_tag */
13434int
13435ppl_Double_Box_maximize
13436PPL_PROTO((ppl_const_Double_Box_t ph,
13437           ppl_const_Linear_Expression_t le,
13438           ppl_Coefficient_t ext_n,
13439           ppl_Coefficient_t ext_d,
13440           int* poptimum));
13441
13442/*! \relates ppl_Double_Box_tag */
13443int
13444ppl_Double_Box_minimize
13445PPL_PROTO((ppl_const_Double_Box_t ph,
13446           ppl_const_Linear_Expression_t le,
13447           ppl_Coefficient_t ext_n,
13448           ppl_Coefficient_t ext_d,
13449           int* poptimum));
13450
13451
13452
13453
13454
13455/*! \relates ppl_Double_Box_tag */
13456int
13457ppl_Double_Box_maximize_with_point
13458PPL_PROTO((ppl_const_Double_Box_t ph,
13459           ppl_const_Linear_Expression_t le,
13460           ppl_Coefficient_t ext_n,
13461           ppl_Coefficient_t ext_d,
13462           int* poptimum,
13463           ppl_Generator_t point));
13464
13465/*! \relates ppl_Double_Box_tag */
13466int
13467ppl_Double_Box_minimize_with_point
13468PPL_PROTO((ppl_const_Double_Box_t ph,
13469           ppl_const_Linear_Expression_t le,
13470           ppl_Coefficient_t ext_n,
13471           ppl_Coefficient_t ext_d,
13472           int* poptimum,
13473           ppl_Generator_t point));
13474
13475
13476
13477
13478
13479/*! \relates ppl_Double_Box_tag */
13480int
13481ppl_Double_Box_frequency
13482PPL_PROTO((ppl_const_Double_Box_t ph,
13483           ppl_const_Linear_Expression_t le,
13484           ppl_Coefficient_t ext_fn,
13485           ppl_Coefficient_t ext_fd,
13486           ppl_Coefficient_t ext_vn,
13487           ppl_Coefficient_t ext_vd));
13488
13489
13490
13491
13492/*! \relates ppl_Double_Box_tag */
13493int
13494ppl_Double_Box_contains_Double_Box
13495PPL_PROTO((ppl_const_Double_Box_t x,
13496           ppl_const_Double_Box_t y));
13497
13498/*! \relates ppl_Double_Box_tag */
13499int
13500ppl_Double_Box_strictly_contains_Double_Box
13501PPL_PROTO((ppl_const_Double_Box_t x,
13502           ppl_const_Double_Box_t y));
13503
13504/*! \relates ppl_Double_Box_tag */
13505int
13506ppl_Double_Box_is_disjoint_from_Double_Box
13507PPL_PROTO((ppl_const_Double_Box_t x,
13508           ppl_const_Double_Box_t y));
13509
13510
13511
13512
13513
13514/*! \relates ppl_Double_Box_tag */
13515int
13516ppl_Double_Box_equals_Double_Box
13517PPL_PROTO((ppl_const_Double_Box_t x,
13518           ppl_const_Double_Box_t y));
13519
13520
13521
13522
13523/*! \relates ppl_Double_Box_tag */
13524int
13525ppl_Double_Box_OK
13526PPL_PROTO((ppl_const_Double_Box_t ph));
13527
13528
13529
13530
13531/*! \relates ppl_Double_Box_tag */
13532int
13533ppl_Double_Box_add_constraint
13534PPL_PROTO((ppl_Double_Box_t ph,
13535           ppl_const_Constraint_t c));
13536
13537/*! \relates ppl_Double_Box_tag */
13538int
13539ppl_Double_Box_add_congruence
13540PPL_PROTO((ppl_Double_Box_t ph,
13541           ppl_const_Congruence_t c));
13542
13543
13544
13545
13546
13547/*! \relates ppl_Double_Box_tag */
13548int
13549ppl_Double_Box_add_constraints
13550PPL_PROTO((ppl_Double_Box_t ph,
13551           ppl_const_Constraint_System_t cs));
13552
13553/*! \relates ppl_Double_Box_tag */
13554int
13555ppl_Double_Box_add_congruences
13556PPL_PROTO((ppl_Double_Box_t ph,
13557           ppl_const_Congruence_System_t cs));
13558
13559
13560
13561
13562
13563/*! \relates ppl_Double_Box_tag */
13564int
13565ppl_Double_Box_refine_with_constraint
13566PPL_PROTO((ppl_Double_Box_t ph,
13567           ppl_const_Constraint_t c));
13568
13569/*! \relates ppl_Double_Box_tag */
13570int
13571ppl_Double_Box_refine_with_congruence
13572PPL_PROTO((ppl_Double_Box_t ph,
13573           ppl_const_Congruence_t c));
13574
13575
13576
13577
13578
13579/*! \relates ppl_Double_Box_tag */
13580int
13581ppl_Double_Box_refine_with_constraints
13582PPL_PROTO((ppl_Double_Box_t ph,
13583           ppl_const_Constraint_System_t cs));
13584
13585/*! \relates ppl_Double_Box_tag */
13586int
13587ppl_Double_Box_refine_with_congruences
13588PPL_PROTO((ppl_Double_Box_t ph,
13589           ppl_const_Congruence_System_t cs));
13590
13591
13592
13593
13594
13595/*! \relates ppl_Double_Box_tag */
13596int
13597ppl_Double_Box_intersection_assign
13598PPL_PROTO((ppl_Double_Box_t x,
13599           ppl_const_Double_Box_t y));
13600
13601/*! \relates ppl_Double_Box_tag */
13602int
13603ppl_Double_Box_upper_bound_assign
13604PPL_PROTO((ppl_Double_Box_t x,
13605           ppl_const_Double_Box_t y));
13606
13607/*! \relates ppl_Double_Box_tag */
13608int
13609ppl_Double_Box_difference_assign
13610PPL_PROTO((ppl_Double_Box_t x,
13611           ppl_const_Double_Box_t y));
13612
13613/*! \relates ppl_Double_Box_tag */
13614int
13615ppl_Double_Box_concatenate_assign
13616PPL_PROTO((ppl_Double_Box_t x,
13617           ppl_const_Double_Box_t y));
13618
13619/*! \relates ppl_Double_Box_tag */
13620int
13621ppl_Double_Box_time_elapse_assign
13622PPL_PROTO((ppl_Double_Box_t x,
13623           ppl_const_Double_Box_t y));
13624
13625
13626
13627
13628
13629/*! \relates ppl_Double_Box_tag */
13630int
13631ppl_Double_Box_upper_bound_assign_if_exact
13632PPL_PROTO((ppl_Double_Box_t x,
13633           ppl_const_Double_Box_t y));
13634
13635
13636
13637
13638
13639/*! \relates ppl_Double_Box_tag */
13640int
13641ppl_Double_Box_simplify_using_context_assign
13642PPL_PROTO((ppl_Double_Box_t x,
13643           ppl_const_Double_Box_t y));
13644
13645
13646
13647
13648/*! \relates ppl_Double_Box_tag */
13649int
13650ppl_Double_Box_constrains
13651PPL_PROTO((ppl_Double_Box_t ph,
13652           ppl_dimension_type var));
13653
13654
13655
13656
13657/*! \relates ppl_Double_Box_tag */
13658int
13659ppl_Double_Box_unconstrain_space_dimension
13660PPL_PROTO((ppl_Double_Box_t ph,
13661           ppl_dimension_type var));
13662
13663
13664
13665
13666/*! \relates ppl_Double_Box_tag */
13667int
13668ppl_Double_Box_unconstrain_space_dimensions
13669PPL_PROTO((ppl_Double_Box_t ph,
13670           ppl_dimension_type ds[],
13671           size_t n));
13672
13673
13674
13675
13676/*! \relates ppl_Double_Box_tag */
13677int
13678ppl_Double_Box_affine_image
13679PPL_PROTO((ppl_Double_Box_t ph,
13680           ppl_dimension_type var,
13681           ppl_const_Linear_Expression_t le,
13682           ppl_const_Coefficient_t d));
13683
13684/*! \relates ppl_Double_Box_tag */
13685int
13686ppl_Double_Box_affine_preimage
13687PPL_PROTO((ppl_Double_Box_t ph,
13688           ppl_dimension_type var,
13689           ppl_const_Linear_Expression_t le,
13690           ppl_const_Coefficient_t d));
13691
13692
13693
13694
13695
13696/*! \relates ppl_Double_Box_tag */
13697int
13698ppl_Double_Box_bounded_affine_image
13699PPL_PROTO((ppl_Double_Box_t ph,
13700           ppl_dimension_type var,
13701           ppl_const_Linear_Expression_t lb,
13702           ppl_const_Linear_Expression_t ub,
13703           ppl_const_Coefficient_t d));
13704
13705/*! \relates ppl_Double_Box_tag */
13706int
13707ppl_Double_Box_bounded_affine_preimage
13708PPL_PROTO((ppl_Double_Box_t ph,
13709           ppl_dimension_type var,
13710           ppl_const_Linear_Expression_t lb,
13711           ppl_const_Linear_Expression_t ub,
13712           ppl_const_Coefficient_t d));
13713
13714
13715
13716
13717
13718/*! \relates ppl_Double_Box_tag */
13719int
13720ppl_Double_Box_generalized_affine_image
13721PPL_PROTO((ppl_Double_Box_t ph,
13722           ppl_dimension_type var,
13723           enum ppl_enum_Constraint_Type relsym,
13724           ppl_const_Linear_Expression_t le,
13725           ppl_const_Coefficient_t d));
13726
13727/*! \relates ppl_Double_Box_tag */
13728int
13729ppl_Double_Box_generalized_affine_preimage
13730PPL_PROTO((ppl_Double_Box_t ph,
13731           ppl_dimension_type var,
13732           enum ppl_enum_Constraint_Type relsym,
13733           ppl_const_Linear_Expression_t le,
13734           ppl_const_Coefficient_t d));
13735
13736
13737
13738
13739
13740/*! \relates ppl_Double_Box_tag */
13741int
13742ppl_Double_Box_generalized_affine_image_lhs_rhs
13743PPL_PROTO((ppl_Double_Box_t ph,
13744           ppl_const_Linear_Expression_t lhs,
13745           enum ppl_enum_Constraint_Type relsym,
13746           ppl_const_Linear_Expression_t rhs));
13747
13748/*! \relates ppl_Double_Box_tag */
13749int
13750ppl_Double_Box_generalized_affine_preimage_lhs_rhs
13751PPL_PROTO((ppl_Double_Box_t ph,
13752           ppl_const_Linear_Expression_t lhs,
13753           enum ppl_enum_Constraint_Type relsym,
13754           ppl_const_Linear_Expression_t rhs));
13755
13756
13757
13758
13759
13760/*! \relates ppl_Double_Box_tag */
13761int
13762ppl_Double_Box_add_space_dimensions_and_embed
13763PPL_PROTO((ppl_Double_Box_t ph,
13764           ppl_dimension_type d));
13765
13766/*! \relates ppl_Double_Box_tag */
13767int
13768ppl_Double_Box_add_space_dimensions_and_project
13769PPL_PROTO((ppl_Double_Box_t ph,
13770           ppl_dimension_type d));
13771
13772
13773
13774
13775
13776/*! \relates ppl_Double_Box_tag */
13777int
13778ppl_Double_Box_remove_space_dimensions
13779PPL_PROTO((ppl_Double_Box_t ph,
13780           ppl_dimension_type ds[],
13781           size_t n));
13782
13783
13784
13785
13786/*! \relates ppl_Double_Box_tag */
13787int
13788ppl_Double_Box_remove_higher_space_dimensions
13789PPL_PROTO((ppl_Double_Box_t ph,
13790           ppl_dimension_type d));
13791
13792
13793
13794
13795/*! \relates ppl_Double_Box_tag */
13796int
13797ppl_Double_Box_expand_space_dimension
13798PPL_PROTO((ppl_Double_Box_t ph,
13799           ppl_dimension_type d,
13800           ppl_dimension_type m));
13801
13802
13803
13804
13805/*! \relates ppl_Double_Box_tag */
13806int
13807ppl_Double_Box_fold_space_dimensions
13808PPL_PROTO((ppl_Double_Box_t ph,
13809           ppl_dimension_type ds[],
13810           size_t n,
13811           ppl_dimension_type d));
13812
13813
13814
13815
13816/*! \relates ppl_Double_Box_tag */
13817int
13818ppl_Double_Box_map_space_dimensions
13819PPL_PROTO((ppl_Double_Box_t ph,
13820           ppl_dimension_type maps[],
13821           size_t n));
13822
13823
13824
13825
13826/*! \relates ppl_Double_Box_tag */
13827int
13828ppl_Double_Box_drop_some_non_integer_points
13829PPL_PROTO((ppl_Double_Box_t ph,
13830           int complexity));
13831
13832
13833
13834
13835/*! \relates ppl_Double_Box_tag */
13836int
13837ppl_Double_Box_drop_some_non_integer_points_2
13838PPL_PROTO((ppl_Double_Box_t ph,
13839           ppl_dimension_type ds[],
13840           size_t n,
13841           int complexity));
13842
13843
13844
13845
13846
13847
13848/*! \relates ppl_Double_Box_tag */
13849int
13850ppl_Double_Box_external_memory_in_bytes
13851PPL_PROTO((ppl_const_Double_Box_t ps,
13852           size_t* sz));
13853
13854/*! \relates ppl_Double_Box_tag */
13855int
13856ppl_Double_Box_total_memory_in_bytes
13857PPL_PROTO((ppl_const_Double_Box_t ps,
13858           size_t* sz));
13859
13860
13861
13862
13863
13864/*! \relates ppl_Double_Box_tag */
13865int
13866ppl_Double_Box_CC76_widening_assign_with_tokens
13867PPL_PROTO((ppl_Double_Box_t x,
13868           ppl_const_Double_Box_t y,
13869           unsigned* tp));
13870
13871
13872
13873
13874
13875/*! \relates ppl_Double_Box_tag */
13876int
13877ppl_Double_Box_CC76_widening_assign
13878PPL_PROTO((ppl_Double_Box_t x,
13879           ppl_const_Double_Box_t y));
13880
13881
13882
13883
13884
13885/*! \relates ppl_Double_Box_tag */
13886int
13887ppl_Double_Box_widening_assign_with_tokens
13888PPL_PROTO((ppl_Double_Box_t x,
13889           ppl_const_Double_Box_t y,
13890           unsigned* tp));
13891
13892
13893
13894
13895/*! \relates ppl_Double_Box_tag */
13896int
13897ppl_Double_Box_widening_assign
13898PPL_PROTO((ppl_Double_Box_t x,
13899           ppl_const_Double_Box_t y));
13900
13901
13902
13903
13904/*! \relates ppl_Double_Box_tag */
13905int
13906ppl_Double_Box_limited_CC76_extrapolation_assign_with_tokens
13907PPL_PROTO((ppl_Double_Box_t x,
13908           ppl_const_Double_Box_t y,
13909           ppl_const_Constraint_System_t cs,
13910           unsigned* tp));
13911
13912
13913
13914
13915
13916
13917
13918/*! \relates ppl_Double_Box_tag */
13919int
13920ppl_Double_Box_limited_CC76_extrapolation_assign
13921PPL_PROTO((ppl_Double_Box_t x,
13922           ppl_const_Double_Box_t y,
13923           ppl_const_Constraint_System_t cs));
13924
13925
13926
13927
13928
13929
13930
13931/*! \relates ppl_Double_Box_tag */
13932int
13933ppl_Double_Box_CC76_narrowing_assign
13934PPL_PROTO((ppl_Double_Box_t x,
13935           ppl_const_Double_Box_t y));
13936
13937
13938
13939
13940
13941/*! \relates ppl_Double_Box_tag */
13942int
13943ppl_Double_Box_linear_partition
13944PPL_PROTO((ppl_const_Double_Box_t x,
13945           ppl_const_Double_Box_t y,
13946           ppl_Double_Box_t* p_inters,
13947           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
13948
13949
13950
13951
13952
13953/*! \relates ppl_Double_Box_tag */
13954int
13955ppl_Double_Box_wrap_assign
13956PPL_PROTO((ppl_Double_Box_t ph,
13957           ppl_dimension_type ds[],
13958           size_t n,
13959           enum ppl_enum_Bounded_Integer_Type_Width w,
13960           enum ppl_enum_Bounded_Integer_Type_Representation r,
13961           enum ppl_enum_Bounded_Integer_Type_Overflow o,
13962           const ppl_const_Constraint_System_t* pcs,
13963           unsigned complexity_threshold,
13964           int wrap_individually));
13965
13966
13967
13968/*! \relates ppl_Double_Box_tag */
13969int
13970ppl_new_Double_Box_recycle_Constraint_System
13971PPL_PROTO((ppl_Double_Box_t* pph, ppl_Constraint_System_t cs));
13972
13973/*! \relates ppl_Double_Box_tag */
13974int
13975ppl_new_Double_Box_recycle_Congruence_System
13976PPL_PROTO((ppl_Double_Box_t* pph, ppl_Congruence_System_t cs));
13977
13978/*! \relates ppl_Double_Box_tag */
13979int
13980ppl_new_Double_Box_recycle_Generator_System
13981PPL_PROTO((ppl_Double_Box_t* pph, ppl_Generator_System_t cs));
13982
13983
13984
13985
13986
13987
13988/*! \relates ppl_Double_Box_tag */
13989int
13990ppl_assign_Double_Box_from_Double_Box
13991PPL_PROTO((ppl_Double_Box_t dst, ppl_const_Double_Box_t src));
13992
13993
13994
13995
13996
13997/*! \relates ppl_Double_Box_tag */
13998int
13999ppl_Double_Box_add_recycled_constraints
14000PPL_PROTO((ppl_Double_Box_t ph,
14001           ppl_Constraint_System_t cs));
14002
14003/*! \relates ppl_Double_Box_tag */
14004int
14005ppl_Double_Box_add_recycled_congruences
14006PPL_PROTO((ppl_Double_Box_t ph,
14007           ppl_Congruence_System_t cs));
14008
14009
14010
14011
14012
14013/*! \relates ppl_Double_Box_tag */
14014int
14015ppl_termination_test_MS_Double_Box
14016PPL_PROTO((ppl_const_Double_Box_t pset));
14017
14018/*! \relates ppl_Double_Box_tag */
14019int
14020ppl_termination_test_PR_Double_Box
14021PPL_PROTO((ppl_const_Double_Box_t pset));
14022
14023
14024
14025
14026
14027
14028/*! \relates ppl_Double_Box_tag */
14029int
14030ppl_one_affine_ranking_function_MS_Double_Box
14031PPL_PROTO((ppl_const_Double_Box_t pset,
14032           ppl_Generator_t point));
14033
14034/*! \relates ppl_Double_Box_tag */
14035int
14036ppl_one_affine_ranking_function_PR_Double_Box
14037PPL_PROTO((ppl_const_Double_Box_t pset,
14038           ppl_Generator_t point));
14039
14040
14041
14042
14043
14044
14045/*! \relates ppl_Double_Box_tag */
14046int
14047ppl_all_affine_ranking_functions_MS_Double_Box
14048PPL_PROTO((ppl_const_Double_Box_t pset,
14049           ppl_Polyhedron_t ph));
14050
14051/*! \relates ppl_Double_Box_tag */
14052int
14053ppl_all_affine_ranking_functions_PR_Double_Box
14054PPL_PROTO((ppl_const_Double_Box_t pset,
14055           ppl_Polyhedron_t ph));
14056
14057
14058
14059
14060
14061
14062/*! \relates ppl_Double_Box_tag */
14063int
14064ppl_termination_test_MS_Double_Box_2
14065PPL_PROTO((ppl_const_Double_Box_t pset_before, ppl_const_Double_Box_t pset_after));
14066
14067/*! \relates ppl_Double_Box_tag */
14068int
14069ppl_termination_test_PR_Double_Box_2
14070PPL_PROTO((ppl_const_Double_Box_t pset_before, ppl_const_Double_Box_t pset_after));
14071
14072
14073
14074
14075
14076
14077/*! \relates ppl_Double_Box_tag */
14078int
14079ppl_one_affine_ranking_function_MS_Double_Box_2
14080PPL_PROTO((ppl_const_Double_Box_t pset_before,
14081           ppl_const_Double_Box_t pset_after,
14082           ppl_Generator_t point));
14083
14084/*! \relates ppl_Double_Box_tag */
14085int
14086ppl_one_affine_ranking_function_PR_Double_Box_2
14087PPL_PROTO((ppl_const_Double_Box_t pset_before,
14088           ppl_const_Double_Box_t pset_after,
14089           ppl_Generator_t point));
14090
14091
14092
14093
14094
14095
14096/*! \relates ppl_Double_Box_tag */
14097int
14098ppl_all_affine_ranking_functions_MS_Double_Box_2
14099PPL_PROTO((ppl_const_Double_Box_t pset_before,
14100           ppl_const_Double_Box_t pset_after,
14101           ppl_Polyhedron_t ph));
14102
14103/*! \relates ppl_Double_Box_tag */
14104int
14105ppl_all_affine_ranking_functions_PR_Double_Box_2
14106PPL_PROTO((ppl_const_Double_Box_t pset_before,
14107           ppl_const_Double_Box_t pset_after,
14108           ppl_Polyhedron_t ph));
14109
14110
14111
14112
14113
14114
14115
14116PPL_DECLARE_IO_FUNCTIONS(Double_Box)
14117
14118/* End of Functions Related to ppl_Double_Box_tag */
14119
14120/*! \interface ppl_BD_Shape_double_tag
14121  \brief Types and functions for ppl_BD_Shape_double_tag
14122*/
14123
14124/*! \relates ppl_BD_Shape_double_tag */
14125int
14126ppl_delete_BD_Shape_double
14127PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14128
14129
14130
14131
14132/*! \relates ppl_BD_Shape_double_tag */
14133int
14134ppl_new_BD_Shape_double_from_space_dimension
14135PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_dimension_type d, int empty));
14136
14137
14138
14139
14140
14141/*! \relates ppl_BD_Shape_double_tag */
14142int
14143ppl_new_BD_Shape_double_from_C_Polyhedron
14144PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Polyhedron_t ph));
14145
14146/*! \relates ppl_BD_Shape_double_tag */
14147int
14148ppl_new_BD_Shape_double_from_NNC_Polyhedron
14149PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Polyhedron_t ph));
14150
14151/*! \relates ppl_BD_Shape_double_tag */
14152int
14153ppl_new_BD_Shape_double_from_Grid
14154PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Grid_t ph));
14155
14156/*! \relates ppl_BD_Shape_double_tag */
14157int
14158ppl_new_BD_Shape_double_from_Rational_Box
14159PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Rational_Box_t ph));
14160
14161/*! \relates ppl_BD_Shape_double_tag */
14162int
14163ppl_new_BD_Shape_double_from_BD_Shape_mpz_class
14164PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
14165
14166/*! \relates ppl_BD_Shape_double_tag */
14167int
14168ppl_new_BD_Shape_double_from_BD_Shape_mpq_class
14169PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
14170
14171/*! \relates ppl_BD_Shape_double_tag */
14172int
14173ppl_new_BD_Shape_double_from_Octagonal_Shape_mpz_class
14174PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
14175
14176/*! \relates ppl_BD_Shape_double_tag */
14177int
14178ppl_new_BD_Shape_double_from_Octagonal_Shape_mpq_class
14179PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
14180
14181/*! \relates ppl_BD_Shape_double_tag */
14182int
14183ppl_new_BD_Shape_double_from_Double_Box
14184PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Double_Box_t ph));
14185
14186/*! \relates ppl_BD_Shape_double_tag */
14187int
14188ppl_new_BD_Shape_double_from_BD_Shape_double
14189PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_double_t ph));
14190
14191/*! \relates ppl_BD_Shape_double_tag */
14192int
14193ppl_new_BD_Shape_double_from_Octagonal_Shape_double
14194PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_double_t ph));
14195
14196
14197
14198
14199
14200
14201/*! \relates ppl_BD_Shape_double_tag */
14202int
14203ppl_new_BD_Shape_double_from_C_Polyhedron_with_complexity
14204PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Polyhedron_t ph, int complexity));
14205
14206/*! \relates ppl_BD_Shape_double_tag */
14207int
14208ppl_new_BD_Shape_double_from_NNC_Polyhedron_with_complexity
14209PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Polyhedron_t ph, int complexity));
14210
14211/*! \relates ppl_BD_Shape_double_tag */
14212int
14213ppl_new_BD_Shape_double_from_Grid_with_complexity
14214PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Grid_t ph, int complexity));
14215
14216/*! \relates ppl_BD_Shape_double_tag */
14217int
14218ppl_new_BD_Shape_double_from_Rational_Box_with_complexity
14219PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Rational_Box_t ph, int complexity));
14220
14221/*! \relates ppl_BD_Shape_double_tag */
14222int
14223ppl_new_BD_Shape_double_from_BD_Shape_mpz_class_with_complexity
14224PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
14225
14226/*! \relates ppl_BD_Shape_double_tag */
14227int
14228ppl_new_BD_Shape_double_from_BD_Shape_mpq_class_with_complexity
14229PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
14230
14231/*! \relates ppl_BD_Shape_double_tag */
14232int
14233ppl_new_BD_Shape_double_from_Octagonal_Shape_mpz_class_with_complexity
14234PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
14235
14236/*! \relates ppl_BD_Shape_double_tag */
14237int
14238ppl_new_BD_Shape_double_from_Octagonal_Shape_mpq_class_with_complexity
14239PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
14240
14241/*! \relates ppl_BD_Shape_double_tag */
14242int
14243ppl_new_BD_Shape_double_from_Double_Box_with_complexity
14244PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Double_Box_t ph, int complexity));
14245
14246/*! \relates ppl_BD_Shape_double_tag */
14247int
14248ppl_new_BD_Shape_double_from_BD_Shape_double_with_complexity
14249PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
14250
14251/*! \relates ppl_BD_Shape_double_tag */
14252int
14253ppl_new_BD_Shape_double_from_Octagonal_Shape_double_with_complexity
14254PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
14255
14256
14257
14258
14259
14260
14261/*! \relates ppl_BD_Shape_double_tag */
14262int
14263ppl_new_BD_Shape_double_from_Constraint_System
14264PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Constraint_System_t cs));
14265
14266/*! \relates ppl_BD_Shape_double_tag */
14267int
14268ppl_new_BD_Shape_double_from_Congruence_System
14269PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Congruence_System_t cs));
14270
14271/*! \relates ppl_BD_Shape_double_tag */
14272int
14273ppl_new_BD_Shape_double_from_Generator_System
14274PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_const_Generator_System_t cs));
14275
14276
14277
14278
14279
14280
14281
14282
14283/*! \relates ppl_BD_Shape_double_tag */
14284int
14285ppl_BD_Shape_double_space_dimension
14286PPL_PROTO((ppl_const_BD_Shape_double_t ph, ppl_dimension_type* m));
14287
14288/*! \relates ppl_BD_Shape_double_tag */
14289int
14290ppl_BD_Shape_double_affine_dimension
14291PPL_PROTO((ppl_const_BD_Shape_double_t ph, ppl_dimension_type* m));
14292
14293
14294
14295
14296
14297/*! \relates ppl_BD_Shape_double_tag */
14298int
14299ppl_BD_Shape_double_relation_with_Constraint
14300PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14301           ppl_const_Constraint_t c));
14302
14303/*! \relates ppl_BD_Shape_double_tag */
14304int
14305ppl_BD_Shape_double_relation_with_Generator
14306PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14307           ppl_const_Generator_t c));
14308
14309/*! \relates ppl_BD_Shape_double_tag */
14310int
14311ppl_BD_Shape_double_relation_with_Congruence
14312PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14313           ppl_const_Congruence_t c));
14314
14315
14316
14317
14318
14319/*! \relates ppl_BD_Shape_double_tag */
14320int
14321ppl_BD_Shape_double_get_constraints
14322PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14323           ppl_const_Constraint_System_t* pcs));
14324
14325/*! \relates ppl_BD_Shape_double_tag */
14326int
14327ppl_BD_Shape_double_get_congruences
14328PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14329           ppl_const_Congruence_System_t* pcs));
14330
14331
14332
14333
14334
14335/*! \relates ppl_BD_Shape_double_tag */
14336int
14337ppl_BD_Shape_double_get_minimized_constraints
14338PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14339           ppl_const_Constraint_System_t* pcs));
14340
14341/*! \relates ppl_BD_Shape_double_tag */
14342int
14343ppl_BD_Shape_double_get_minimized_congruences
14344PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14345           ppl_const_Congruence_System_t* pcs));
14346
14347
14348
14349
14350
14351/*! \relates ppl_BD_Shape_double_tag */
14352int
14353ppl_BD_Shape_double_is_empty
14354PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14355
14356/*! \relates ppl_BD_Shape_double_tag */
14357int
14358ppl_BD_Shape_double_is_universe
14359PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14360
14361/*! \relates ppl_BD_Shape_double_tag */
14362int
14363ppl_BD_Shape_double_is_bounded
14364PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14365
14366/*! \relates ppl_BD_Shape_double_tag */
14367int
14368ppl_BD_Shape_double_contains_integer_point
14369PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14370
14371/*! \relates ppl_BD_Shape_double_tag */
14372int
14373ppl_BD_Shape_double_is_topologically_closed
14374PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14375
14376/*! \relates ppl_BD_Shape_double_tag */
14377int
14378ppl_BD_Shape_double_is_discrete
14379PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14380
14381
14382
14383
14384
14385/*! \relates ppl_BD_Shape_double_tag */
14386int
14387ppl_BD_Shape_double_topological_closure_assign
14388PPL_PROTO((ppl_BD_Shape_double_t ph));
14389
14390
14391
14392
14393
14394/*! \relates ppl_BD_Shape_double_tag */
14395int
14396ppl_BD_Shape_double_bounds_from_above
14397PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14398           ppl_const_Linear_Expression_t le));
14399
14400/*! \relates ppl_BD_Shape_double_tag */
14401int
14402ppl_BD_Shape_double_bounds_from_below
14403PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14404           ppl_const_Linear_Expression_t le));
14405
14406
14407
14408
14409
14410/*! \relates ppl_BD_Shape_double_tag */
14411int
14412ppl_BD_Shape_double_maximize
14413PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14414           ppl_const_Linear_Expression_t le,
14415           ppl_Coefficient_t ext_n,
14416           ppl_Coefficient_t ext_d,
14417           int* poptimum));
14418
14419/*! \relates ppl_BD_Shape_double_tag */
14420int
14421ppl_BD_Shape_double_minimize
14422PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14423           ppl_const_Linear_Expression_t le,
14424           ppl_Coefficient_t ext_n,
14425           ppl_Coefficient_t ext_d,
14426           int* poptimum));
14427
14428
14429
14430
14431
14432/*! \relates ppl_BD_Shape_double_tag */
14433int
14434ppl_BD_Shape_double_maximize_with_point
14435PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14436           ppl_const_Linear_Expression_t le,
14437           ppl_Coefficient_t ext_n,
14438           ppl_Coefficient_t ext_d,
14439           int* poptimum,
14440           ppl_Generator_t point));
14441
14442/*! \relates ppl_BD_Shape_double_tag */
14443int
14444ppl_BD_Shape_double_minimize_with_point
14445PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14446           ppl_const_Linear_Expression_t le,
14447           ppl_Coefficient_t ext_n,
14448           ppl_Coefficient_t ext_d,
14449           int* poptimum,
14450           ppl_Generator_t point));
14451
14452
14453
14454
14455
14456/*! \relates ppl_BD_Shape_double_tag */
14457int
14458ppl_BD_Shape_double_frequency
14459PPL_PROTO((ppl_const_BD_Shape_double_t ph,
14460           ppl_const_Linear_Expression_t le,
14461           ppl_Coefficient_t ext_fn,
14462           ppl_Coefficient_t ext_fd,
14463           ppl_Coefficient_t ext_vn,
14464           ppl_Coefficient_t ext_vd));
14465
14466
14467
14468
14469/*! \relates ppl_BD_Shape_double_tag */
14470int
14471ppl_BD_Shape_double_contains_BD_Shape_double
14472PPL_PROTO((ppl_const_BD_Shape_double_t x,
14473           ppl_const_BD_Shape_double_t y));
14474
14475/*! \relates ppl_BD_Shape_double_tag */
14476int
14477ppl_BD_Shape_double_strictly_contains_BD_Shape_double
14478PPL_PROTO((ppl_const_BD_Shape_double_t x,
14479           ppl_const_BD_Shape_double_t y));
14480
14481/*! \relates ppl_BD_Shape_double_tag */
14482int
14483ppl_BD_Shape_double_is_disjoint_from_BD_Shape_double
14484PPL_PROTO((ppl_const_BD_Shape_double_t x,
14485           ppl_const_BD_Shape_double_t y));
14486
14487
14488
14489
14490
14491/*! \relates ppl_BD_Shape_double_tag */
14492int
14493ppl_BD_Shape_double_equals_BD_Shape_double
14494PPL_PROTO((ppl_const_BD_Shape_double_t x,
14495           ppl_const_BD_Shape_double_t y));
14496
14497
14498
14499
14500/*! \relates ppl_BD_Shape_double_tag */
14501int
14502ppl_BD_Shape_double_OK
14503PPL_PROTO((ppl_const_BD_Shape_double_t ph));
14504
14505
14506
14507
14508/*! \relates ppl_BD_Shape_double_tag */
14509int
14510ppl_BD_Shape_double_add_constraint
14511PPL_PROTO((ppl_BD_Shape_double_t ph,
14512           ppl_const_Constraint_t c));
14513
14514/*! \relates ppl_BD_Shape_double_tag */
14515int
14516ppl_BD_Shape_double_add_congruence
14517PPL_PROTO((ppl_BD_Shape_double_t ph,
14518           ppl_const_Congruence_t c));
14519
14520
14521
14522
14523
14524/*! \relates ppl_BD_Shape_double_tag */
14525int
14526ppl_BD_Shape_double_add_constraints
14527PPL_PROTO((ppl_BD_Shape_double_t ph,
14528           ppl_const_Constraint_System_t cs));
14529
14530/*! \relates ppl_BD_Shape_double_tag */
14531int
14532ppl_BD_Shape_double_add_congruences
14533PPL_PROTO((ppl_BD_Shape_double_t ph,
14534           ppl_const_Congruence_System_t cs));
14535
14536
14537
14538
14539
14540/*! \relates ppl_BD_Shape_double_tag */
14541int
14542ppl_BD_Shape_double_refine_with_constraint
14543PPL_PROTO((ppl_BD_Shape_double_t ph,
14544           ppl_const_Constraint_t c));
14545
14546/*! \relates ppl_BD_Shape_double_tag */
14547int
14548ppl_BD_Shape_double_refine_with_congruence
14549PPL_PROTO((ppl_BD_Shape_double_t ph,
14550           ppl_const_Congruence_t c));
14551
14552
14553
14554
14555
14556/*! \relates ppl_BD_Shape_double_tag */
14557int
14558ppl_BD_Shape_double_refine_with_constraints
14559PPL_PROTO((ppl_BD_Shape_double_t ph,
14560           ppl_const_Constraint_System_t cs));
14561
14562/*! \relates ppl_BD_Shape_double_tag */
14563int
14564ppl_BD_Shape_double_refine_with_congruences
14565PPL_PROTO((ppl_BD_Shape_double_t ph,
14566           ppl_const_Congruence_System_t cs));
14567
14568
14569
14570
14571
14572/*! \relates ppl_BD_Shape_double_tag */
14573int
14574ppl_BD_Shape_double_intersection_assign
14575PPL_PROTO((ppl_BD_Shape_double_t x,
14576           ppl_const_BD_Shape_double_t y));
14577
14578/*! \relates ppl_BD_Shape_double_tag */
14579int
14580ppl_BD_Shape_double_upper_bound_assign
14581PPL_PROTO((ppl_BD_Shape_double_t x,
14582           ppl_const_BD_Shape_double_t y));
14583
14584/*! \relates ppl_BD_Shape_double_tag */
14585int
14586ppl_BD_Shape_double_difference_assign
14587PPL_PROTO((ppl_BD_Shape_double_t x,
14588           ppl_const_BD_Shape_double_t y));
14589
14590/*! \relates ppl_BD_Shape_double_tag */
14591int
14592ppl_BD_Shape_double_concatenate_assign
14593PPL_PROTO((ppl_BD_Shape_double_t x,
14594           ppl_const_BD_Shape_double_t y));
14595
14596/*! \relates ppl_BD_Shape_double_tag */
14597int
14598ppl_BD_Shape_double_time_elapse_assign
14599PPL_PROTO((ppl_BD_Shape_double_t x,
14600           ppl_const_BD_Shape_double_t y));
14601
14602
14603
14604
14605
14606/*! \relates ppl_BD_Shape_double_tag */
14607int
14608ppl_BD_Shape_double_upper_bound_assign_if_exact
14609PPL_PROTO((ppl_BD_Shape_double_t x,
14610           ppl_const_BD_Shape_double_t y));
14611
14612
14613
14614
14615
14616/*! \relates ppl_BD_Shape_double_tag */
14617int
14618ppl_BD_Shape_double_simplify_using_context_assign
14619PPL_PROTO((ppl_BD_Shape_double_t x,
14620           ppl_const_BD_Shape_double_t y));
14621
14622
14623
14624
14625/*! \relates ppl_BD_Shape_double_tag */
14626int
14627ppl_BD_Shape_double_constrains
14628PPL_PROTO((ppl_BD_Shape_double_t ph,
14629           ppl_dimension_type var));
14630
14631
14632
14633
14634/*! \relates ppl_BD_Shape_double_tag */
14635int
14636ppl_BD_Shape_double_unconstrain_space_dimension
14637PPL_PROTO((ppl_BD_Shape_double_t ph,
14638           ppl_dimension_type var));
14639
14640
14641
14642
14643/*! \relates ppl_BD_Shape_double_tag */
14644int
14645ppl_BD_Shape_double_unconstrain_space_dimensions
14646PPL_PROTO((ppl_BD_Shape_double_t ph,
14647           ppl_dimension_type ds[],
14648           size_t n));
14649
14650
14651
14652
14653/*! \relates ppl_BD_Shape_double_tag */
14654int
14655ppl_BD_Shape_double_affine_image
14656PPL_PROTO((ppl_BD_Shape_double_t ph,
14657           ppl_dimension_type var,
14658           ppl_const_Linear_Expression_t le,
14659           ppl_const_Coefficient_t d));
14660
14661/*! \relates ppl_BD_Shape_double_tag */
14662int
14663ppl_BD_Shape_double_affine_preimage
14664PPL_PROTO((ppl_BD_Shape_double_t ph,
14665           ppl_dimension_type var,
14666           ppl_const_Linear_Expression_t le,
14667           ppl_const_Coefficient_t d));
14668
14669
14670
14671
14672
14673/*! \relates ppl_BD_Shape_double_tag */
14674int
14675ppl_BD_Shape_double_bounded_affine_image
14676PPL_PROTO((ppl_BD_Shape_double_t ph,
14677           ppl_dimension_type var,
14678           ppl_const_Linear_Expression_t lb,
14679           ppl_const_Linear_Expression_t ub,
14680           ppl_const_Coefficient_t d));
14681
14682/*! \relates ppl_BD_Shape_double_tag */
14683int
14684ppl_BD_Shape_double_bounded_affine_preimage
14685PPL_PROTO((ppl_BD_Shape_double_t ph,
14686           ppl_dimension_type var,
14687           ppl_const_Linear_Expression_t lb,
14688           ppl_const_Linear_Expression_t ub,
14689           ppl_const_Coefficient_t d));
14690
14691
14692
14693
14694
14695/*! \relates ppl_BD_Shape_double_tag */
14696int
14697ppl_BD_Shape_double_generalized_affine_image
14698PPL_PROTO((ppl_BD_Shape_double_t ph,
14699           ppl_dimension_type var,
14700           enum ppl_enum_Constraint_Type relsym,
14701           ppl_const_Linear_Expression_t le,
14702           ppl_const_Coefficient_t d));
14703
14704/*! \relates ppl_BD_Shape_double_tag */
14705int
14706ppl_BD_Shape_double_generalized_affine_preimage
14707PPL_PROTO((ppl_BD_Shape_double_t ph,
14708           ppl_dimension_type var,
14709           enum ppl_enum_Constraint_Type relsym,
14710           ppl_const_Linear_Expression_t le,
14711           ppl_const_Coefficient_t d));
14712
14713
14714
14715
14716
14717/*! \relates ppl_BD_Shape_double_tag */
14718int
14719ppl_BD_Shape_double_generalized_affine_image_lhs_rhs
14720PPL_PROTO((ppl_BD_Shape_double_t ph,
14721           ppl_const_Linear_Expression_t lhs,
14722           enum ppl_enum_Constraint_Type relsym,
14723           ppl_const_Linear_Expression_t rhs));
14724
14725/*! \relates ppl_BD_Shape_double_tag */
14726int
14727ppl_BD_Shape_double_generalized_affine_preimage_lhs_rhs
14728PPL_PROTO((ppl_BD_Shape_double_t ph,
14729           ppl_const_Linear_Expression_t lhs,
14730           enum ppl_enum_Constraint_Type relsym,
14731           ppl_const_Linear_Expression_t rhs));
14732
14733
14734
14735
14736
14737/*! \relates ppl_BD_Shape_double_tag */
14738int
14739ppl_BD_Shape_double_add_space_dimensions_and_embed
14740PPL_PROTO((ppl_BD_Shape_double_t ph,
14741           ppl_dimension_type d));
14742
14743/*! \relates ppl_BD_Shape_double_tag */
14744int
14745ppl_BD_Shape_double_add_space_dimensions_and_project
14746PPL_PROTO((ppl_BD_Shape_double_t ph,
14747           ppl_dimension_type d));
14748
14749
14750
14751
14752
14753/*! \relates ppl_BD_Shape_double_tag */
14754int
14755ppl_BD_Shape_double_remove_space_dimensions
14756PPL_PROTO((ppl_BD_Shape_double_t ph,
14757           ppl_dimension_type ds[],
14758           size_t n));
14759
14760
14761
14762
14763/*! \relates ppl_BD_Shape_double_tag */
14764int
14765ppl_BD_Shape_double_remove_higher_space_dimensions
14766PPL_PROTO((ppl_BD_Shape_double_t ph,
14767           ppl_dimension_type d));
14768
14769
14770
14771
14772/*! \relates ppl_BD_Shape_double_tag */
14773int
14774ppl_BD_Shape_double_expand_space_dimension
14775PPL_PROTO((ppl_BD_Shape_double_t ph,
14776           ppl_dimension_type d,
14777           ppl_dimension_type m));
14778
14779
14780
14781
14782/*! \relates ppl_BD_Shape_double_tag */
14783int
14784ppl_BD_Shape_double_fold_space_dimensions
14785PPL_PROTO((ppl_BD_Shape_double_t ph,
14786           ppl_dimension_type ds[],
14787           size_t n,
14788           ppl_dimension_type d));
14789
14790
14791
14792
14793/*! \relates ppl_BD_Shape_double_tag */
14794int
14795ppl_BD_Shape_double_map_space_dimensions
14796PPL_PROTO((ppl_BD_Shape_double_t ph,
14797           ppl_dimension_type maps[],
14798           size_t n));
14799
14800
14801
14802
14803/*! \relates ppl_BD_Shape_double_tag */
14804int
14805ppl_BD_Shape_double_drop_some_non_integer_points
14806PPL_PROTO((ppl_BD_Shape_double_t ph,
14807           int complexity));
14808
14809
14810
14811
14812/*! \relates ppl_BD_Shape_double_tag */
14813int
14814ppl_BD_Shape_double_drop_some_non_integer_points_2
14815PPL_PROTO((ppl_BD_Shape_double_t ph,
14816           ppl_dimension_type ds[],
14817           size_t n,
14818           int complexity));
14819
14820
14821
14822
14823
14824
14825/*! \relates ppl_BD_Shape_double_tag */
14826int
14827ppl_BD_Shape_double_external_memory_in_bytes
14828PPL_PROTO((ppl_const_BD_Shape_double_t ps,
14829           size_t* sz));
14830
14831/*! \relates ppl_BD_Shape_double_tag */
14832int
14833ppl_BD_Shape_double_total_memory_in_bytes
14834PPL_PROTO((ppl_const_BD_Shape_double_t ps,
14835           size_t* sz));
14836
14837
14838
14839
14840
14841/*! \relates ppl_BD_Shape_double_tag */
14842int
14843ppl_BD_Shape_double_BHMZ05_widening_assign_with_tokens
14844PPL_PROTO((ppl_BD_Shape_double_t x,
14845           ppl_const_BD_Shape_double_t y,
14846           unsigned* tp));
14847
14848/*! \relates ppl_BD_Shape_double_tag */
14849int
14850ppl_BD_Shape_double_H79_widening_assign_with_tokens
14851PPL_PROTO((ppl_BD_Shape_double_t x,
14852           ppl_const_BD_Shape_double_t y,
14853           unsigned* tp));
14854
14855
14856
14857
14858
14859/*! \relates ppl_BD_Shape_double_tag */
14860int
14861ppl_BD_Shape_double_BHMZ05_widening_assign
14862PPL_PROTO((ppl_BD_Shape_double_t x,
14863           ppl_const_BD_Shape_double_t y));
14864
14865/*! \relates ppl_BD_Shape_double_tag */
14866int
14867ppl_BD_Shape_double_H79_widening_assign
14868PPL_PROTO((ppl_BD_Shape_double_t x,
14869           ppl_const_BD_Shape_double_t y));
14870
14871
14872
14873
14874
14875/*! \relates ppl_BD_Shape_double_tag */
14876int
14877ppl_BD_Shape_double_widening_assign_with_tokens
14878PPL_PROTO((ppl_BD_Shape_double_t x,
14879           ppl_const_BD_Shape_double_t y,
14880           unsigned* tp));
14881
14882
14883
14884
14885/*! \relates ppl_BD_Shape_double_tag */
14886int
14887ppl_BD_Shape_double_widening_assign
14888PPL_PROTO((ppl_BD_Shape_double_t x,
14889           ppl_const_BD_Shape_double_t y));
14890
14891
14892
14893
14894/*! \relates ppl_BD_Shape_double_tag */
14895int
14896ppl_BD_Shape_double_limited_BHMZ05_extrapolation_assign_with_tokens
14897PPL_PROTO((ppl_BD_Shape_double_t x,
14898           ppl_const_BD_Shape_double_t y,
14899           ppl_const_Constraint_System_t cs,
14900           unsigned* tp));
14901
14902/*! \relates ppl_BD_Shape_double_tag */
14903int
14904ppl_BD_Shape_double_limited_H79_extrapolation_assign_with_tokens
14905PPL_PROTO((ppl_BD_Shape_double_t x,
14906           ppl_const_BD_Shape_double_t y,
14907           ppl_const_Constraint_System_t cs,
14908           unsigned* tp));
14909
14910/*! \relates ppl_BD_Shape_double_tag */
14911int
14912ppl_BD_Shape_double_limited_CC76_extrapolation_assign_with_tokens
14913PPL_PROTO((ppl_BD_Shape_double_t x,
14914           ppl_const_BD_Shape_double_t y,
14915           ppl_const_Constraint_System_t cs,
14916           unsigned* tp));
14917
14918
14919
14920
14921
14922
14923
14924/*! \relates ppl_BD_Shape_double_tag */
14925int
14926ppl_BD_Shape_double_limited_BHMZ05_extrapolation_assign
14927PPL_PROTO((ppl_BD_Shape_double_t x,
14928           ppl_const_BD_Shape_double_t y,
14929           ppl_const_Constraint_System_t cs));
14930
14931/*! \relates ppl_BD_Shape_double_tag */
14932int
14933ppl_BD_Shape_double_limited_H79_extrapolation_assign
14934PPL_PROTO((ppl_BD_Shape_double_t x,
14935           ppl_const_BD_Shape_double_t y,
14936           ppl_const_Constraint_System_t cs));
14937
14938/*! \relates ppl_BD_Shape_double_tag */
14939int
14940ppl_BD_Shape_double_limited_CC76_extrapolation_assign
14941PPL_PROTO((ppl_BD_Shape_double_t x,
14942           ppl_const_BD_Shape_double_t y,
14943           ppl_const_Constraint_System_t cs));
14944
14945
14946
14947
14948
14949
14950
14951/*! \relates ppl_BD_Shape_double_tag */
14952int
14953ppl_BD_Shape_double_CC76_extrapolation_assign_with_tokens
14954PPL_PROTO((ppl_BD_Shape_double_t x,
14955           ppl_const_BD_Shape_double_t y,
14956           unsigned* tp));
14957
14958
14959
14960
14961
14962/*! \relates ppl_BD_Shape_double_tag */
14963int
14964ppl_BD_Shape_double_CC76_extrapolation_assign
14965PPL_PROTO((ppl_BD_Shape_double_t x,
14966           ppl_const_BD_Shape_double_t y));
14967
14968
14969
14970
14971
14972/*! \relates ppl_BD_Shape_double_tag */
14973int
14974ppl_BD_Shape_double_CC76_narrowing_assign
14975PPL_PROTO((ppl_BD_Shape_double_t x,
14976           ppl_const_BD_Shape_double_t y));
14977
14978
14979
14980
14981
14982/*! \relates ppl_BD_Shape_double_tag */
14983int
14984ppl_BD_Shape_double_linear_partition
14985PPL_PROTO((ppl_const_BD_Shape_double_t x,
14986           ppl_const_BD_Shape_double_t y,
14987           ppl_BD_Shape_double_t* p_inters,
14988           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
14989
14990
14991
14992
14993
14994/*! \relates ppl_BD_Shape_double_tag */
14995int
14996ppl_BD_Shape_double_wrap_assign
14997PPL_PROTO((ppl_BD_Shape_double_t ph,
14998           ppl_dimension_type ds[],
14999           size_t n,
15000           enum ppl_enum_Bounded_Integer_Type_Width w,
15001           enum ppl_enum_Bounded_Integer_Type_Representation r,
15002           enum ppl_enum_Bounded_Integer_Type_Overflow o,
15003           const ppl_const_Constraint_System_t* pcs,
15004           unsigned complexity_threshold,
15005           int wrap_individually));
15006
15007
15008
15009/*! \relates ppl_BD_Shape_double_tag */
15010int
15011ppl_new_BD_Shape_double_recycle_Constraint_System
15012PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_Constraint_System_t cs));
15013
15014/*! \relates ppl_BD_Shape_double_tag */
15015int
15016ppl_new_BD_Shape_double_recycle_Congruence_System
15017PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_Congruence_System_t cs));
15018
15019/*! \relates ppl_BD_Shape_double_tag */
15020int
15021ppl_new_BD_Shape_double_recycle_Generator_System
15022PPL_PROTO((ppl_BD_Shape_double_t* pph, ppl_Generator_System_t cs));
15023
15024
15025
15026
15027
15028
15029/*! \relates ppl_BD_Shape_double_tag */
15030int
15031ppl_assign_BD_Shape_double_from_BD_Shape_double
15032PPL_PROTO((ppl_BD_Shape_double_t dst, ppl_const_BD_Shape_double_t src));
15033
15034
15035
15036
15037
15038/*! \relates ppl_BD_Shape_double_tag */
15039int
15040ppl_BD_Shape_double_add_recycled_constraints
15041PPL_PROTO((ppl_BD_Shape_double_t ph,
15042           ppl_Constraint_System_t cs));
15043
15044/*! \relates ppl_BD_Shape_double_tag */
15045int
15046ppl_BD_Shape_double_add_recycled_congruences
15047PPL_PROTO((ppl_BD_Shape_double_t ph,
15048           ppl_Congruence_System_t cs));
15049
15050
15051
15052
15053
15054/*! \relates ppl_BD_Shape_double_tag */
15055int
15056ppl_termination_test_MS_BD_Shape_double
15057PPL_PROTO((ppl_const_BD_Shape_double_t pset));
15058
15059/*! \relates ppl_BD_Shape_double_tag */
15060int
15061ppl_termination_test_PR_BD_Shape_double
15062PPL_PROTO((ppl_const_BD_Shape_double_t pset));
15063
15064
15065
15066
15067
15068
15069/*! \relates ppl_BD_Shape_double_tag */
15070int
15071ppl_one_affine_ranking_function_MS_BD_Shape_double
15072PPL_PROTO((ppl_const_BD_Shape_double_t pset,
15073           ppl_Generator_t point));
15074
15075/*! \relates ppl_BD_Shape_double_tag */
15076int
15077ppl_one_affine_ranking_function_PR_BD_Shape_double
15078PPL_PROTO((ppl_const_BD_Shape_double_t pset,
15079           ppl_Generator_t point));
15080
15081
15082
15083
15084
15085
15086/*! \relates ppl_BD_Shape_double_tag */
15087int
15088ppl_all_affine_ranking_functions_MS_BD_Shape_double
15089PPL_PROTO((ppl_const_BD_Shape_double_t pset,
15090           ppl_Polyhedron_t ph));
15091
15092/*! \relates ppl_BD_Shape_double_tag */
15093int
15094ppl_all_affine_ranking_functions_PR_BD_Shape_double
15095PPL_PROTO((ppl_const_BD_Shape_double_t pset,
15096           ppl_Polyhedron_t ph));
15097
15098
15099
15100
15101
15102
15103/*! \relates ppl_BD_Shape_double_tag */
15104int
15105ppl_termination_test_MS_BD_Shape_double_2
15106PPL_PROTO((ppl_const_BD_Shape_double_t pset_before, ppl_const_BD_Shape_double_t pset_after));
15107
15108/*! \relates ppl_BD_Shape_double_tag */
15109int
15110ppl_termination_test_PR_BD_Shape_double_2
15111PPL_PROTO((ppl_const_BD_Shape_double_t pset_before, ppl_const_BD_Shape_double_t pset_after));
15112
15113
15114
15115
15116
15117
15118/*! \relates ppl_BD_Shape_double_tag */
15119int
15120ppl_one_affine_ranking_function_MS_BD_Shape_double_2
15121PPL_PROTO((ppl_const_BD_Shape_double_t pset_before,
15122           ppl_const_BD_Shape_double_t pset_after,
15123           ppl_Generator_t point));
15124
15125/*! \relates ppl_BD_Shape_double_tag */
15126int
15127ppl_one_affine_ranking_function_PR_BD_Shape_double_2
15128PPL_PROTO((ppl_const_BD_Shape_double_t pset_before,
15129           ppl_const_BD_Shape_double_t pset_after,
15130           ppl_Generator_t point));
15131
15132
15133
15134
15135
15136
15137/*! \relates ppl_BD_Shape_double_tag */
15138int
15139ppl_all_affine_ranking_functions_MS_BD_Shape_double_2
15140PPL_PROTO((ppl_const_BD_Shape_double_t pset_before,
15141           ppl_const_BD_Shape_double_t pset_after,
15142           ppl_Polyhedron_t ph));
15143
15144/*! \relates ppl_BD_Shape_double_tag */
15145int
15146ppl_all_affine_ranking_functions_PR_BD_Shape_double_2
15147PPL_PROTO((ppl_const_BD_Shape_double_t pset_before,
15148           ppl_const_BD_Shape_double_t pset_after,
15149           ppl_Polyhedron_t ph));
15150
15151
15152
15153
15154
15155
15156
15157PPL_DECLARE_IO_FUNCTIONS(BD_Shape_double)
15158
15159/* End of Functions Related to ppl_BD_Shape_double_tag */
15160
15161/*! \interface ppl_Octagonal_Shape_double_tag
15162  \brief Types and functions for ppl_Octagonal_Shape_double_tag
15163*/
15164
15165/*! \relates ppl_Octagonal_Shape_double_tag */
15166int
15167ppl_delete_Octagonal_Shape_double
15168PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15169
15170
15171
15172
15173/*! \relates ppl_Octagonal_Shape_double_tag */
15174int
15175ppl_new_Octagonal_Shape_double_from_space_dimension
15176PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_dimension_type d, int empty));
15177
15178
15179
15180
15181
15182/*! \relates ppl_Octagonal_Shape_double_tag */
15183int
15184ppl_new_Octagonal_Shape_double_from_C_Polyhedron
15185PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Polyhedron_t ph));
15186
15187/*! \relates ppl_Octagonal_Shape_double_tag */
15188int
15189ppl_new_Octagonal_Shape_double_from_NNC_Polyhedron
15190PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Polyhedron_t ph));
15191
15192/*! \relates ppl_Octagonal_Shape_double_tag */
15193int
15194ppl_new_Octagonal_Shape_double_from_Grid
15195PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Grid_t ph));
15196
15197/*! \relates ppl_Octagonal_Shape_double_tag */
15198int
15199ppl_new_Octagonal_Shape_double_from_Rational_Box
15200PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Rational_Box_t ph));
15201
15202/*! \relates ppl_Octagonal_Shape_double_tag */
15203int
15204ppl_new_Octagonal_Shape_double_from_BD_Shape_mpz_class
15205PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_mpz_class_t ph));
15206
15207/*! \relates ppl_Octagonal_Shape_double_tag */
15208int
15209ppl_new_Octagonal_Shape_double_from_BD_Shape_mpq_class
15210PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_mpq_class_t ph));
15211
15212/*! \relates ppl_Octagonal_Shape_double_tag */
15213int
15214ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpz_class
15215PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph));
15216
15217/*! \relates ppl_Octagonal_Shape_double_tag */
15218int
15219ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpq_class
15220PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph));
15221
15222/*! \relates ppl_Octagonal_Shape_double_tag */
15223int
15224ppl_new_Octagonal_Shape_double_from_Double_Box
15225PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Double_Box_t ph));
15226
15227/*! \relates ppl_Octagonal_Shape_double_tag */
15228int
15229ppl_new_Octagonal_Shape_double_from_BD_Shape_double
15230PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_double_t ph));
15231
15232/*! \relates ppl_Octagonal_Shape_double_tag */
15233int
15234ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_double
15235PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_double_t ph));
15236
15237
15238
15239
15240
15241
15242/*! \relates ppl_Octagonal_Shape_double_tag */
15243int
15244ppl_new_Octagonal_Shape_double_from_C_Polyhedron_with_complexity
15245PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Polyhedron_t ph, int complexity));
15246
15247/*! \relates ppl_Octagonal_Shape_double_tag */
15248int
15249ppl_new_Octagonal_Shape_double_from_NNC_Polyhedron_with_complexity
15250PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Polyhedron_t ph, int complexity));
15251
15252/*! \relates ppl_Octagonal_Shape_double_tag */
15253int
15254ppl_new_Octagonal_Shape_double_from_Grid_with_complexity
15255PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Grid_t ph, int complexity));
15256
15257/*! \relates ppl_Octagonal_Shape_double_tag */
15258int
15259ppl_new_Octagonal_Shape_double_from_Rational_Box_with_complexity
15260PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Rational_Box_t ph, int complexity));
15261
15262/*! \relates ppl_Octagonal_Shape_double_tag */
15263int
15264ppl_new_Octagonal_Shape_double_from_BD_Shape_mpz_class_with_complexity
15265PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_mpz_class_t ph, int complexity));
15266
15267/*! \relates ppl_Octagonal_Shape_double_tag */
15268int
15269ppl_new_Octagonal_Shape_double_from_BD_Shape_mpq_class_with_complexity
15270PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_mpq_class_t ph, int complexity));
15271
15272/*! \relates ppl_Octagonal_Shape_double_tag */
15273int
15274ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpz_class_with_complexity
15275PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpz_class_t ph, int complexity));
15276
15277/*! \relates ppl_Octagonal_Shape_double_tag */
15278int
15279ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_mpq_class_with_complexity
15280PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_mpq_class_t ph, int complexity));
15281
15282/*! \relates ppl_Octagonal_Shape_double_tag */
15283int
15284ppl_new_Octagonal_Shape_double_from_Double_Box_with_complexity
15285PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Double_Box_t ph, int complexity));
15286
15287/*! \relates ppl_Octagonal_Shape_double_tag */
15288int
15289ppl_new_Octagonal_Shape_double_from_BD_Shape_double_with_complexity
15290PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_BD_Shape_double_t ph, int complexity));
15291
15292/*! \relates ppl_Octagonal_Shape_double_tag */
15293int
15294ppl_new_Octagonal_Shape_double_from_Octagonal_Shape_double_with_complexity
15295PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Octagonal_Shape_double_t ph, int complexity));
15296
15297
15298
15299
15300
15301
15302/*! \relates ppl_Octagonal_Shape_double_tag */
15303int
15304ppl_new_Octagonal_Shape_double_from_Constraint_System
15305PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Constraint_System_t cs));
15306
15307/*! \relates ppl_Octagonal_Shape_double_tag */
15308int
15309ppl_new_Octagonal_Shape_double_from_Congruence_System
15310PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Congruence_System_t cs));
15311
15312/*! \relates ppl_Octagonal_Shape_double_tag */
15313int
15314ppl_new_Octagonal_Shape_double_from_Generator_System
15315PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_const_Generator_System_t cs));
15316
15317
15318
15319
15320
15321
15322
15323
15324/*! \relates ppl_Octagonal_Shape_double_tag */
15325int
15326ppl_Octagonal_Shape_double_space_dimension
15327PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph, ppl_dimension_type* m));
15328
15329/*! \relates ppl_Octagonal_Shape_double_tag */
15330int
15331ppl_Octagonal_Shape_double_affine_dimension
15332PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph, ppl_dimension_type* m));
15333
15334
15335
15336
15337
15338/*! \relates ppl_Octagonal_Shape_double_tag */
15339int
15340ppl_Octagonal_Shape_double_relation_with_Constraint
15341PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15342           ppl_const_Constraint_t c));
15343
15344/*! \relates ppl_Octagonal_Shape_double_tag */
15345int
15346ppl_Octagonal_Shape_double_relation_with_Generator
15347PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15348           ppl_const_Generator_t c));
15349
15350/*! \relates ppl_Octagonal_Shape_double_tag */
15351int
15352ppl_Octagonal_Shape_double_relation_with_Congruence
15353PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15354           ppl_const_Congruence_t c));
15355
15356
15357
15358
15359
15360/*! \relates ppl_Octagonal_Shape_double_tag */
15361int
15362ppl_Octagonal_Shape_double_get_constraints
15363PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15364           ppl_const_Constraint_System_t* pcs));
15365
15366/*! \relates ppl_Octagonal_Shape_double_tag */
15367int
15368ppl_Octagonal_Shape_double_get_congruences
15369PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15370           ppl_const_Congruence_System_t* pcs));
15371
15372
15373
15374
15375
15376/*! \relates ppl_Octagonal_Shape_double_tag */
15377int
15378ppl_Octagonal_Shape_double_get_minimized_constraints
15379PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15380           ppl_const_Constraint_System_t* pcs));
15381
15382/*! \relates ppl_Octagonal_Shape_double_tag */
15383int
15384ppl_Octagonal_Shape_double_get_minimized_congruences
15385PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15386           ppl_const_Congruence_System_t* pcs));
15387
15388
15389
15390
15391
15392/*! \relates ppl_Octagonal_Shape_double_tag */
15393int
15394ppl_Octagonal_Shape_double_is_empty
15395PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15396
15397/*! \relates ppl_Octagonal_Shape_double_tag */
15398int
15399ppl_Octagonal_Shape_double_is_universe
15400PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15401
15402/*! \relates ppl_Octagonal_Shape_double_tag */
15403int
15404ppl_Octagonal_Shape_double_is_bounded
15405PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15406
15407/*! \relates ppl_Octagonal_Shape_double_tag */
15408int
15409ppl_Octagonal_Shape_double_contains_integer_point
15410PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15411
15412/*! \relates ppl_Octagonal_Shape_double_tag */
15413int
15414ppl_Octagonal_Shape_double_is_topologically_closed
15415PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15416
15417/*! \relates ppl_Octagonal_Shape_double_tag */
15418int
15419ppl_Octagonal_Shape_double_is_discrete
15420PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15421
15422
15423
15424
15425
15426/*! \relates ppl_Octagonal_Shape_double_tag */
15427int
15428ppl_Octagonal_Shape_double_topological_closure_assign
15429PPL_PROTO((ppl_Octagonal_Shape_double_t ph));
15430
15431
15432
15433
15434
15435/*! \relates ppl_Octagonal_Shape_double_tag */
15436int
15437ppl_Octagonal_Shape_double_bounds_from_above
15438PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15439           ppl_const_Linear_Expression_t le));
15440
15441/*! \relates ppl_Octagonal_Shape_double_tag */
15442int
15443ppl_Octagonal_Shape_double_bounds_from_below
15444PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15445           ppl_const_Linear_Expression_t le));
15446
15447
15448
15449
15450
15451/*! \relates ppl_Octagonal_Shape_double_tag */
15452int
15453ppl_Octagonal_Shape_double_maximize
15454PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15455           ppl_const_Linear_Expression_t le,
15456           ppl_Coefficient_t ext_n,
15457           ppl_Coefficient_t ext_d,
15458           int* poptimum));
15459
15460/*! \relates ppl_Octagonal_Shape_double_tag */
15461int
15462ppl_Octagonal_Shape_double_minimize
15463PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15464           ppl_const_Linear_Expression_t le,
15465           ppl_Coefficient_t ext_n,
15466           ppl_Coefficient_t ext_d,
15467           int* poptimum));
15468
15469
15470
15471
15472
15473/*! \relates ppl_Octagonal_Shape_double_tag */
15474int
15475ppl_Octagonal_Shape_double_maximize_with_point
15476PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15477           ppl_const_Linear_Expression_t le,
15478           ppl_Coefficient_t ext_n,
15479           ppl_Coefficient_t ext_d,
15480           int* poptimum,
15481           ppl_Generator_t point));
15482
15483/*! \relates ppl_Octagonal_Shape_double_tag */
15484int
15485ppl_Octagonal_Shape_double_minimize_with_point
15486PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15487           ppl_const_Linear_Expression_t le,
15488           ppl_Coefficient_t ext_n,
15489           ppl_Coefficient_t ext_d,
15490           int* poptimum,
15491           ppl_Generator_t point));
15492
15493
15494
15495
15496
15497/*! \relates ppl_Octagonal_Shape_double_tag */
15498int
15499ppl_Octagonal_Shape_double_frequency
15500PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph,
15501           ppl_const_Linear_Expression_t le,
15502           ppl_Coefficient_t ext_fn,
15503           ppl_Coefficient_t ext_fd,
15504           ppl_Coefficient_t ext_vn,
15505           ppl_Coefficient_t ext_vd));
15506
15507
15508
15509
15510/*! \relates ppl_Octagonal_Shape_double_tag */
15511int
15512ppl_Octagonal_Shape_double_contains_Octagonal_Shape_double
15513PPL_PROTO((ppl_const_Octagonal_Shape_double_t x,
15514           ppl_const_Octagonal_Shape_double_t y));
15515
15516/*! \relates ppl_Octagonal_Shape_double_tag */
15517int
15518ppl_Octagonal_Shape_double_strictly_contains_Octagonal_Shape_double
15519PPL_PROTO((ppl_const_Octagonal_Shape_double_t x,
15520           ppl_const_Octagonal_Shape_double_t y));
15521
15522/*! \relates ppl_Octagonal_Shape_double_tag */
15523int
15524ppl_Octagonal_Shape_double_is_disjoint_from_Octagonal_Shape_double
15525PPL_PROTO((ppl_const_Octagonal_Shape_double_t x,
15526           ppl_const_Octagonal_Shape_double_t y));
15527
15528
15529
15530
15531
15532/*! \relates ppl_Octagonal_Shape_double_tag */
15533int
15534ppl_Octagonal_Shape_double_equals_Octagonal_Shape_double
15535PPL_PROTO((ppl_const_Octagonal_Shape_double_t x,
15536           ppl_const_Octagonal_Shape_double_t y));
15537
15538
15539
15540
15541/*! \relates ppl_Octagonal_Shape_double_tag */
15542int
15543ppl_Octagonal_Shape_double_OK
15544PPL_PROTO((ppl_const_Octagonal_Shape_double_t ph));
15545
15546
15547
15548
15549/*! \relates ppl_Octagonal_Shape_double_tag */
15550int
15551ppl_Octagonal_Shape_double_add_constraint
15552PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15553           ppl_const_Constraint_t c));
15554
15555/*! \relates ppl_Octagonal_Shape_double_tag */
15556int
15557ppl_Octagonal_Shape_double_add_congruence
15558PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15559           ppl_const_Congruence_t c));
15560
15561
15562
15563
15564
15565/*! \relates ppl_Octagonal_Shape_double_tag */
15566int
15567ppl_Octagonal_Shape_double_add_constraints
15568PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15569           ppl_const_Constraint_System_t cs));
15570
15571/*! \relates ppl_Octagonal_Shape_double_tag */
15572int
15573ppl_Octagonal_Shape_double_add_congruences
15574PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15575           ppl_const_Congruence_System_t cs));
15576
15577
15578
15579
15580
15581/*! \relates ppl_Octagonal_Shape_double_tag */
15582int
15583ppl_Octagonal_Shape_double_refine_with_constraint
15584PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15585           ppl_const_Constraint_t c));
15586
15587/*! \relates ppl_Octagonal_Shape_double_tag */
15588int
15589ppl_Octagonal_Shape_double_refine_with_congruence
15590PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15591           ppl_const_Congruence_t c));
15592
15593
15594
15595
15596
15597/*! \relates ppl_Octagonal_Shape_double_tag */
15598int
15599ppl_Octagonal_Shape_double_refine_with_constraints
15600PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15601           ppl_const_Constraint_System_t cs));
15602
15603/*! \relates ppl_Octagonal_Shape_double_tag */
15604int
15605ppl_Octagonal_Shape_double_refine_with_congruences
15606PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15607           ppl_const_Congruence_System_t cs));
15608
15609
15610
15611
15612
15613/*! \relates ppl_Octagonal_Shape_double_tag */
15614int
15615ppl_Octagonal_Shape_double_intersection_assign
15616PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15617           ppl_const_Octagonal_Shape_double_t y));
15618
15619/*! \relates ppl_Octagonal_Shape_double_tag */
15620int
15621ppl_Octagonal_Shape_double_upper_bound_assign
15622PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15623           ppl_const_Octagonal_Shape_double_t y));
15624
15625/*! \relates ppl_Octagonal_Shape_double_tag */
15626int
15627ppl_Octagonal_Shape_double_difference_assign
15628PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15629           ppl_const_Octagonal_Shape_double_t y));
15630
15631/*! \relates ppl_Octagonal_Shape_double_tag */
15632int
15633ppl_Octagonal_Shape_double_concatenate_assign
15634PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15635           ppl_const_Octagonal_Shape_double_t y));
15636
15637/*! \relates ppl_Octagonal_Shape_double_tag */
15638int
15639ppl_Octagonal_Shape_double_time_elapse_assign
15640PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15641           ppl_const_Octagonal_Shape_double_t y));
15642
15643
15644
15645
15646
15647/*! \relates ppl_Octagonal_Shape_double_tag */
15648int
15649ppl_Octagonal_Shape_double_upper_bound_assign_if_exact
15650PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15651           ppl_const_Octagonal_Shape_double_t y));
15652
15653
15654
15655
15656
15657/*! \relates ppl_Octagonal_Shape_double_tag */
15658int
15659ppl_Octagonal_Shape_double_simplify_using_context_assign
15660PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15661           ppl_const_Octagonal_Shape_double_t y));
15662
15663
15664
15665
15666/*! \relates ppl_Octagonal_Shape_double_tag */
15667int
15668ppl_Octagonal_Shape_double_constrains
15669PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15670           ppl_dimension_type var));
15671
15672
15673
15674
15675/*! \relates ppl_Octagonal_Shape_double_tag */
15676int
15677ppl_Octagonal_Shape_double_unconstrain_space_dimension
15678PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15679           ppl_dimension_type var));
15680
15681
15682
15683
15684/*! \relates ppl_Octagonal_Shape_double_tag */
15685int
15686ppl_Octagonal_Shape_double_unconstrain_space_dimensions
15687PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15688           ppl_dimension_type ds[],
15689           size_t n));
15690
15691
15692
15693
15694/*! \relates ppl_Octagonal_Shape_double_tag */
15695int
15696ppl_Octagonal_Shape_double_affine_image
15697PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15698           ppl_dimension_type var,
15699           ppl_const_Linear_Expression_t le,
15700           ppl_const_Coefficient_t d));
15701
15702/*! \relates ppl_Octagonal_Shape_double_tag */
15703int
15704ppl_Octagonal_Shape_double_affine_preimage
15705PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15706           ppl_dimension_type var,
15707           ppl_const_Linear_Expression_t le,
15708           ppl_const_Coefficient_t d));
15709
15710
15711
15712
15713
15714/*! \relates ppl_Octagonal_Shape_double_tag */
15715int
15716ppl_Octagonal_Shape_double_bounded_affine_image
15717PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15718           ppl_dimension_type var,
15719           ppl_const_Linear_Expression_t lb,
15720           ppl_const_Linear_Expression_t ub,
15721           ppl_const_Coefficient_t d));
15722
15723/*! \relates ppl_Octagonal_Shape_double_tag */
15724int
15725ppl_Octagonal_Shape_double_bounded_affine_preimage
15726PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15727           ppl_dimension_type var,
15728           ppl_const_Linear_Expression_t lb,
15729           ppl_const_Linear_Expression_t ub,
15730           ppl_const_Coefficient_t d));
15731
15732
15733
15734
15735
15736/*! \relates ppl_Octagonal_Shape_double_tag */
15737int
15738ppl_Octagonal_Shape_double_generalized_affine_image
15739PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15740           ppl_dimension_type var,
15741           enum ppl_enum_Constraint_Type relsym,
15742           ppl_const_Linear_Expression_t le,
15743           ppl_const_Coefficient_t d));
15744
15745/*! \relates ppl_Octagonal_Shape_double_tag */
15746int
15747ppl_Octagonal_Shape_double_generalized_affine_preimage
15748PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15749           ppl_dimension_type var,
15750           enum ppl_enum_Constraint_Type relsym,
15751           ppl_const_Linear_Expression_t le,
15752           ppl_const_Coefficient_t d));
15753
15754
15755
15756
15757
15758/*! \relates ppl_Octagonal_Shape_double_tag */
15759int
15760ppl_Octagonal_Shape_double_generalized_affine_image_lhs_rhs
15761PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15762           ppl_const_Linear_Expression_t lhs,
15763           enum ppl_enum_Constraint_Type relsym,
15764           ppl_const_Linear_Expression_t rhs));
15765
15766/*! \relates ppl_Octagonal_Shape_double_tag */
15767int
15768ppl_Octagonal_Shape_double_generalized_affine_preimage_lhs_rhs
15769PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15770           ppl_const_Linear_Expression_t lhs,
15771           enum ppl_enum_Constraint_Type relsym,
15772           ppl_const_Linear_Expression_t rhs));
15773
15774
15775
15776
15777
15778/*! \relates ppl_Octagonal_Shape_double_tag */
15779int
15780ppl_Octagonal_Shape_double_add_space_dimensions_and_embed
15781PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15782           ppl_dimension_type d));
15783
15784/*! \relates ppl_Octagonal_Shape_double_tag */
15785int
15786ppl_Octagonal_Shape_double_add_space_dimensions_and_project
15787PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15788           ppl_dimension_type d));
15789
15790
15791
15792
15793
15794/*! \relates ppl_Octagonal_Shape_double_tag */
15795int
15796ppl_Octagonal_Shape_double_remove_space_dimensions
15797PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15798           ppl_dimension_type ds[],
15799           size_t n));
15800
15801
15802
15803
15804/*! \relates ppl_Octagonal_Shape_double_tag */
15805int
15806ppl_Octagonal_Shape_double_remove_higher_space_dimensions
15807PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15808           ppl_dimension_type d));
15809
15810
15811
15812
15813/*! \relates ppl_Octagonal_Shape_double_tag */
15814int
15815ppl_Octagonal_Shape_double_expand_space_dimension
15816PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15817           ppl_dimension_type d,
15818           ppl_dimension_type m));
15819
15820
15821
15822
15823/*! \relates ppl_Octagonal_Shape_double_tag */
15824int
15825ppl_Octagonal_Shape_double_fold_space_dimensions
15826PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15827           ppl_dimension_type ds[],
15828           size_t n,
15829           ppl_dimension_type d));
15830
15831
15832
15833
15834/*! \relates ppl_Octagonal_Shape_double_tag */
15835int
15836ppl_Octagonal_Shape_double_map_space_dimensions
15837PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15838           ppl_dimension_type maps[],
15839           size_t n));
15840
15841
15842
15843
15844/*! \relates ppl_Octagonal_Shape_double_tag */
15845int
15846ppl_Octagonal_Shape_double_drop_some_non_integer_points
15847PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15848           int complexity));
15849
15850
15851
15852
15853/*! \relates ppl_Octagonal_Shape_double_tag */
15854int
15855ppl_Octagonal_Shape_double_drop_some_non_integer_points_2
15856PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
15857           ppl_dimension_type ds[],
15858           size_t n,
15859           int complexity));
15860
15861
15862
15863
15864
15865
15866/*! \relates ppl_Octagonal_Shape_double_tag */
15867int
15868ppl_Octagonal_Shape_double_external_memory_in_bytes
15869PPL_PROTO((ppl_const_Octagonal_Shape_double_t ps,
15870           size_t* sz));
15871
15872/*! \relates ppl_Octagonal_Shape_double_tag */
15873int
15874ppl_Octagonal_Shape_double_total_memory_in_bytes
15875PPL_PROTO((ppl_const_Octagonal_Shape_double_t ps,
15876           size_t* sz));
15877
15878
15879
15880
15881
15882/*! \relates ppl_Octagonal_Shape_double_tag */
15883int
15884ppl_Octagonal_Shape_double_BHMZ05_widening_assign_with_tokens
15885PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15886           ppl_const_Octagonal_Shape_double_t y,
15887           unsigned* tp));
15888
15889
15890
15891
15892
15893/*! \relates ppl_Octagonal_Shape_double_tag */
15894int
15895ppl_Octagonal_Shape_double_BHMZ05_widening_assign
15896PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15897           ppl_const_Octagonal_Shape_double_t y));
15898
15899
15900
15901
15902
15903/*! \relates ppl_Octagonal_Shape_double_tag */
15904int
15905ppl_Octagonal_Shape_double_widening_assign_with_tokens
15906PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15907           ppl_const_Octagonal_Shape_double_t y,
15908           unsigned* tp));
15909
15910
15911
15912
15913/*! \relates ppl_Octagonal_Shape_double_tag */
15914int
15915ppl_Octagonal_Shape_double_widening_assign
15916PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15917           ppl_const_Octagonal_Shape_double_t y));
15918
15919
15920
15921
15922/*! \relates ppl_Octagonal_Shape_double_tag */
15923int
15924ppl_Octagonal_Shape_double_limited_BHMZ05_extrapolation_assign_with_tokens
15925PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15926           ppl_const_Octagonal_Shape_double_t y,
15927           ppl_const_Constraint_System_t cs,
15928           unsigned* tp));
15929
15930/*! \relates ppl_Octagonal_Shape_double_tag */
15931int
15932ppl_Octagonal_Shape_double_limited_CC76_extrapolation_assign_with_tokens
15933PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15934           ppl_const_Octagonal_Shape_double_t y,
15935           ppl_const_Constraint_System_t cs,
15936           unsigned* tp));
15937
15938
15939
15940
15941
15942
15943
15944/*! \relates ppl_Octagonal_Shape_double_tag */
15945int
15946ppl_Octagonal_Shape_double_limited_BHMZ05_extrapolation_assign
15947PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15948           ppl_const_Octagonal_Shape_double_t y,
15949           ppl_const_Constraint_System_t cs));
15950
15951/*! \relates ppl_Octagonal_Shape_double_tag */
15952int
15953ppl_Octagonal_Shape_double_limited_CC76_extrapolation_assign
15954PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15955           ppl_const_Octagonal_Shape_double_t y,
15956           ppl_const_Constraint_System_t cs));
15957
15958
15959
15960
15961
15962
15963
15964/*! \relates ppl_Octagonal_Shape_double_tag */
15965int
15966ppl_Octagonal_Shape_double_CC76_extrapolation_assign_with_tokens
15967PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15968           ppl_const_Octagonal_Shape_double_t y,
15969           unsigned* tp));
15970
15971
15972
15973
15974
15975/*! \relates ppl_Octagonal_Shape_double_tag */
15976int
15977ppl_Octagonal_Shape_double_CC76_extrapolation_assign
15978PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15979           ppl_const_Octagonal_Shape_double_t y));
15980
15981
15982
15983
15984
15985/*! \relates ppl_Octagonal_Shape_double_tag */
15986int
15987ppl_Octagonal_Shape_double_CC76_narrowing_assign
15988PPL_PROTO((ppl_Octagonal_Shape_double_t x,
15989           ppl_const_Octagonal_Shape_double_t y));
15990
15991
15992
15993
15994
15995/*! \relates ppl_Octagonal_Shape_double_tag */
15996int
15997ppl_Octagonal_Shape_double_linear_partition
15998PPL_PROTO((ppl_const_Octagonal_Shape_double_t x,
15999           ppl_const_Octagonal_Shape_double_t y,
16000           ppl_Octagonal_Shape_double_t* p_inters,
16001           ppl_Pointset_Powerset_NNC_Polyhedron_t* p_rest));
16002
16003
16004
16005
16006
16007/*! \relates ppl_Octagonal_Shape_double_tag */
16008int
16009ppl_Octagonal_Shape_double_wrap_assign
16010PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
16011           ppl_dimension_type ds[],
16012           size_t n,
16013           enum ppl_enum_Bounded_Integer_Type_Width w,
16014           enum ppl_enum_Bounded_Integer_Type_Representation r,
16015           enum ppl_enum_Bounded_Integer_Type_Overflow o,
16016           const ppl_const_Constraint_System_t* pcs,
16017           unsigned complexity_threshold,
16018           int wrap_individually));
16019
16020
16021
16022/*! \relates ppl_Octagonal_Shape_double_tag */
16023int
16024ppl_new_Octagonal_Shape_double_recycle_Constraint_System
16025PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_Constraint_System_t cs));
16026
16027/*! \relates ppl_Octagonal_Shape_double_tag */
16028int
16029ppl_new_Octagonal_Shape_double_recycle_Congruence_System
16030PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_Congruence_System_t cs));
16031
16032/*! \relates ppl_Octagonal_Shape_double_tag */
16033int
16034ppl_new_Octagonal_Shape_double_recycle_Generator_System
16035PPL_PROTO((ppl_Octagonal_Shape_double_t* pph, ppl_Generator_System_t cs));
16036
16037
16038
16039
16040
16041
16042/*! \relates ppl_Octagonal_Shape_double_tag */
16043int
16044ppl_assign_Octagonal_Shape_double_from_Octagonal_Shape_double
16045PPL_PROTO((ppl_Octagonal_Shape_double_t dst, ppl_const_Octagonal_Shape_double_t src));
16046
16047
16048
16049
16050
16051/*! \relates ppl_Octagonal_Shape_double_tag */
16052int
16053ppl_Octagonal_Shape_double_add_recycled_constraints
16054PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
16055           ppl_Constraint_System_t cs));
16056
16057/*! \relates ppl_Octagonal_Shape_double_tag */
16058int
16059ppl_Octagonal_Shape_double_add_recycled_congruences
16060PPL_PROTO((ppl_Octagonal_Shape_double_t ph,
16061           ppl_Congruence_System_t cs));
16062
16063
16064
16065
16066
16067/*! \relates ppl_Octagonal_Shape_double_tag */
16068int
16069ppl_termination_test_MS_Octagonal_Shape_double
16070PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset));
16071
16072/*! \relates ppl_Octagonal_Shape_double_tag */
16073int
16074ppl_termination_test_PR_Octagonal_Shape_double
16075PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset));
16076
16077
16078
16079
16080
16081
16082/*! \relates ppl_Octagonal_Shape_double_tag */
16083int
16084ppl_one_affine_ranking_function_MS_Octagonal_Shape_double
16085PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset,
16086           ppl_Generator_t point));
16087
16088/*! \relates ppl_Octagonal_Shape_double_tag */
16089int
16090ppl_one_affine_ranking_function_PR_Octagonal_Shape_double
16091PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset,
16092           ppl_Generator_t point));
16093
16094
16095
16096
16097
16098
16099/*! \relates ppl_Octagonal_Shape_double_tag */
16100int
16101ppl_all_affine_ranking_functions_MS_Octagonal_Shape_double
16102PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset,
16103           ppl_Polyhedron_t ph));
16104
16105/*! \relates ppl_Octagonal_Shape_double_tag */
16106int
16107ppl_all_affine_ranking_functions_PR_Octagonal_Shape_double
16108PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset,
16109           ppl_Polyhedron_t ph));
16110
16111
16112
16113
16114
16115
16116/*! \relates ppl_Octagonal_Shape_double_tag */
16117int
16118ppl_termination_test_MS_Octagonal_Shape_double_2
16119PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before, ppl_const_Octagonal_Shape_double_t pset_after));
16120
16121/*! \relates ppl_Octagonal_Shape_double_tag */
16122int
16123ppl_termination_test_PR_Octagonal_Shape_double_2
16124PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before, ppl_const_Octagonal_Shape_double_t pset_after));
16125
16126
16127
16128
16129
16130
16131/*! \relates ppl_Octagonal_Shape_double_tag */
16132int
16133ppl_one_affine_ranking_function_MS_Octagonal_Shape_double_2
16134PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before,
16135           ppl_const_Octagonal_Shape_double_t pset_after,
16136           ppl_Generator_t point));
16137
16138/*! \relates ppl_Octagonal_Shape_double_tag */
16139int
16140ppl_one_affine_ranking_function_PR_Octagonal_Shape_double_2
16141PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before,
16142           ppl_const_Octagonal_Shape_double_t pset_after,
16143           ppl_Generator_t point));
16144
16145
16146
16147
16148
16149
16150/*! \relates ppl_Octagonal_Shape_double_tag */
16151int
16152ppl_all_affine_ranking_functions_MS_Octagonal_Shape_double_2
16153PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before,
16154           ppl_const_Octagonal_Shape_double_t pset_after,
16155           ppl_Polyhedron_t ph));
16156
16157/*! \relates ppl_Octagonal_Shape_double_tag */
16158int
16159ppl_all_affine_ranking_functions_PR_Octagonal_Shape_double_2
16160PPL_PROTO((ppl_const_Octagonal_Shape_double_t pset_before,
16161           ppl_const_Octagonal_Shape_double_t pset_after,
16162           ppl_Polyhedron_t ph));
16163
16164
16165
16166
16167
16168
16169
16170PPL_DECLARE_IO_FUNCTIONS(Octagonal_Shape_double)
16171
16172/* End of Functions Related to ppl_Octagonal_Shape_double_tag */
16173
16174#ifdef __cplusplus
16175} /* extern "C" */
16176#endif
16177
16178#undef PPL_TYPE_DECLARATION
16179#undef PPL_PROTO
16180#undef PPL_DECLARE_PRINT_FUNCTIONS
16181#undef PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS
16182#undef PPL_DECLARE_IO_FUNCTIONS
16183#undef PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS
16184#undef PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS
16185#undef PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS
16186
16187#endif /* !defined(PPL_ppl_c_h) */
16188