164 # define __GENEPI_H__ 
  166 # include <genepi/genepi-common.h> 
  207 # define GENEPI_FLAG_SHOW_TIMERS     (0x01<<0) 
  218 # define GENEPI_FLAG_SHOW_CACHE_INFO (0x01<<1) 
  264   GENEPI_INFO_COPYRIGHT = 0,
 
  267   GENEPI_INFO_BRIEF_DESCRIPTION,
 
  268   GENEPI_INFO_FULL_DESCRIPTION
 
  328                       int number_of_cache_entries);
 
  367 extern const genepi_plugconf *
 
  578                             int alpha_size, 
int cst);
 
  691                     const int *selection, 
int size);
 
  912                           int ***psolutions, 
int *psize, 
int max);
 
  936                                   FILE *output, 
const char * 
const*varnames);
 
 1013                         int x_size, 
int xden);
 
 1118                       int nb_indices, 
int *cst, 
int nb_cst);
 
genepi_io_error
Error codes returned by the functions genepi_set_write and genepi_set_read. 
 
Configuration tables for plugin. 
 
void genepi_solver_delete(genepi_solver *solver)
Releases resources allocated by this solver. 
 
FILE * genepi_solver_get_trace_file(genepi_solver *solver)
Gets the current stream used for generate traces. 
 
genepi_set * genepi_set_linear_equality(genepi_solver *solver, const int *alpha, int alpha_size, int cst)
Computes the set of solutions of a linear equality. 
 
int genepi_set_read(genepi_solver *solver, FILE *input, genepi_set **pset)
Load on the input stream a serialized set. 
 
genepi_set * genepi_set_top(genepi_solver *solver, int n)
Computes the complete relation of arity n. 
 
int genepi_set_is_full(genepi_solver *solver, genepi_set *X)
Checks if X is the complete relation. 
 
genepi_set * genepi_set_transform(genepi_solver *solver, genepi_set *X, int *indices, int nb_indices, int *cst, int nb_cst)
Transformation of the relation X. 
 
int genepi_set_get_one_solution(genepi_solver *solver, genepi_set *X, int *x, int x_size)
Gets one element in X. 
 
An has occurred on the stream at the system level. 
 
genepi_set * genepi_set_applyinv(genepi_solver *solver, genepi_set *R, genepi_set *A)
Computes pre (R, A) 
 
genepi_set * genepi_set_add_reference(genepi_solver *solver, genepi_set *X)
This function increments the number of references to the X set. 
 
genepi_set * genepi_set_top_N(genepi_solver *solver, int n)
Computes the restriction of the complete relation of arity n to positive or null integers. If the underlying plugin does not implement the top_N function then, depending on its solver type the function may raise an exception or not. 
 
genepi_info
Information string identifiers. 
 
int genepi_set_write(genepi_solver *solver, FILE *output, genepi_set *set)
Dump the set X onto the output stream. 
 
void genepi_set_get_solutions(genepi_solver *solver, genepi_set *X, int ***psolutions, int *psize, int max)
Computes an explicit representation of X. 
 
const char * genepi_solver_get_name(genepi_solver *solver)
Gets the name of the underlying plugin. 
 
genepi_solver_type
Indicate the domain of variable used by a solver. 
 
genepi_set * genepi_set_intersection(genepi_solver *solver, genepi_set *X1, genepi_set *X2)
Computes the intersection of two relations. 
 
The client code tries to load a set saved with a plugin different of the one currently used...
 
struct genepi_set_st genepi_set
Abstraction of Presburger definable set. 
 
genepi_set * genepi_set_bot(genepi_solver *solver, int n)
Computes the empty relation of arity n. 
 
genepi_set * genepi_set_project(genepi_solver *solver, genepi_set *X, const int *selection, int size)
Projects a relation on a subset of its columns. 
 
int genepi_set_get_width(genepi_solver *solver, genepi_set *X)
Arity of the relation represented by X. 
 
genepi_set * genepi_set_top_Z(genepi_solver *solver, int n)
Computes the restriction of the complete relation of arity n to integers. If the underlying plugin do...
 
genepi_comparator
Comparison specifier. 
 
int genepi_set_is_solution(genepi_solver *solver, genepi_set *X, const int *x, int x_size, int xden)
Checks if x/xden belongs to X. 
 
Malformed stream: data don't respect the serialization format expected by GENEPI or by the underlying...
 
int genepi_solver_run_autotest(genepi_solver *solver)
Checks some tautologies with solver. 
 
struct genepi_plugin_st genepi_plugin
The abstract type for a GENEPI plugin that implements sufficient functions to resolve Presburger form...
 
genepi_set * genepi_set_top_P(genepi_solver *solver, int n)
Computes the restriction of the complete relation of arity n to positive real values. If the underlying plugin does not implement the top_P function then a generic function is used. 
 
genepi_solver_type genepi_solver_get_solver_type(genepi_solver *solver)
Gets the domain of variables used by the underlying plugin. 
 
int genepi_set_get_data_structure_size(genepi_solver *solver, genepi_set *X)
Size of the data structure encoding X. 
 
genepi_set * genepi_set_apply(genepi_solver *solver, genepi_set *R, genepi_set *A)
Computes post (R, A) 
 
genepi_set * genepi_set_linear_operation(genepi_solver *solver, const int *alpha, int alpha_size, genepi_comparator op, int c)
Computes the set of solutions of a linear operation. 
 
int genepi_set_preorder(genepi_solver *solver, genepi_set *X1, genepi_set *X2)
Evaluate the pre-order over sets. 
 
void genepi_set_del_reference(genepi_solver *solver, genepi_set *X)
Removes a reference to X. 
 
void genepi_solver_set_trace_file(genepi_solver *solver, FILE *output)
Enables/Disables GENEPI trace generator. 
 
void genepi_set_display_all_solutions(genepi_solver *solver, genepi_set *X, FILE *output, const char *const *varnames)
Displays all solutions of the set X. 
 
genepi_set * genepi_set_invproject(genepi_solver *solver, genepi_set *X, const int *sel, int size)
Adds columns to the relation X. 
 
genepi_set * genepi_set_top_R(genepi_solver *solver, int n)
Computes the restriction of the complete relation of arity n to real values. 
 
int genepi_set_equal(genepi_solver *solver, genepi_set *X1, genepi_set *X2)
Checks the equality (mutual inclusion) of X1 and X2. 
 
void genepi_set_display_data_structure(genepi_solver *solver, genepi_set *X, FILE *output)
Displays internal representation of X. 
 
The client code tries to load a set saved with another version of the plugin currently used...
 
int genepi_set_is_finite(genepi_solver *solver, genepi_set *X)
Checks if the set is finite. 
 
int genepi_set_compare(genepi_solver *solver, genepi_set *X1, genepi_comparator op, genepi_set *X2)
Compares X1 and X2 according to op. 
 
struct genepi_solver_st genepi_solver
Type of GENEPI solver. 
 
genepi_set * genepi_set_union(genepi_solver *solver, genepi_set *X1, genepi_set *X2)
Computes the union of two relations. 
 
int genepi_set_depend_on(genepi_solver *solver, genepi_set *X, const int *sel, int selsize)
Checks if the relation X depends on a subset of its column. 
 
genepi_solver * genepi_solver_create(genepi_plugin *plugin, int flags, int cachesize, int number_of_cache_entries)
Creates a GENEPI solver. 
 
genepi_set * genepi_set_complement(genepi_solver *solver, genepi_set *X)
Computes the complement of the set X. 
 
int genepi_set_is_empty(genepi_solver *solver, genepi_set *X)
Checks if X is empty.