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.