44 #include "pips_config.h"
122 pips_assert(
"The new list is about the sum of the input lists.\n",
123 ntll>=tl1l+tl2l-1 && ntll<=tl1l+tl2l);
142 bool identity_p =
false;
245 if(i1!=i2 && exclude_p) {
293 bool identity_p =
false;
299 identity_p = identity_p || tf_identity_p;
532 pips_assert(
"itcl_plus and p_4_2_l have the same numer of elements",
650 pips_assert(
"itcl_plus and p_4_2_l have the same numer of elements",
712 if(strcmp(h,
"depth_two")) {
715 else if(strcmp(h,
"max_depth")) {
720 "\"SEMANTICS_LIST_FIX_POINT_OPERATOR\"", h);
791 bool found_p =
false;
924 pips_debug(8,
"with difference equations=\n");
930 sc = sc_projection_ofl_along_variables(sc, b);
933 pips_debug(8,
"Non-homogeneous constraints on derivatives=\n");
965 pips_debug(8,
"Begin for transformer list %p:\n", tfl);
1030 if(SC_UNDEFINED_P(sc))
1051 sc = sc_projection_ofl(sc, (
Variable) ik);
1052 if(SC_EMPTY_P(sc)) {
1064 pips_debug(8,
"All invariants on derivatives=\n");
1099 "All invariants on derivatives with difference variables=\n");
1105 sc = sc_projection_ofl_along_variables(sc, diffb);
1108 pips_debug(8,
"All invariants on differences=\n");
1119 pips_debug(8,
"All invariants with proper basis =\n");
1131 pips_debug(8,
"Transitive closure tc_tf=\n");
1186 bool found_p =
false;
1187 for(ti=0; ti<n;ti++) {
1191 int npast = past ^ k;
1206 pips_assert(
"At least one transformation has been found", found_p);
1231 pips_assert(
"n is smaller than the number of transformers",
1232 n <= tn && n>=1 && n<=31);
void free_transformer(transformer p)
bool transformer_consistent_p(transformer p)
transformer copy_transformer(transformer p)
TRANSFORMER.
struct _newgen_struct_entity_ * entity
bool entity_is_argument_p(entity e, cons *args)
cons * arguments_add_entity(cons *a, entity e)
bool arguments_subset_p(list a1, list a2)
Check if a1 is a subset of a2.
cons * arguments_difference(cons *a1, cons *a2)
set difference: a1 - a2 ; similar to set intersection
Pbase base_add_variable(Pbase b, Variable var)
Pbase base_add_variable(Pbase b, Variable v): add variable v as a new dimension to basis b at the end...
Pbase base_remove_variable(Pbase b, Variable v)
Pbase base_remove_variable(b, v): remove basis vector relative to v from b; abort if v is not in b;.
Pbase base_union(Pbase b1, Pbase b2)
Pbase base_union(Pbase b1, Pbase b2): compute a new basis containing all elements of b1 and all eleme...
bool transformer_identity_p(transformer t)
Check that t is an identity function.
transformer transformer_identity()
Allocate an identity transformer.
bool transformer_consistency_p(transformer t)
FI: I do not know if this procedure should always return or fail when an inconsistency is found.
transformer transformer_empty()
Allocate an empty transformer.
#define CONTRAINTE_UNDEFINED
Pcontrainte contrainte_make(Pvecteur pv)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
char * get_string_property(const char *)
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
list transformers_derivative_fix_point(list tl)
Psysteme sc_multiply_constant_terms(Psysteme sc, Variable ik, bool star_p)
Specific for the derivative fix point: each constant term in the constraints is multiplied by ik whic...
void gen_full_free_list(list l)
#define ENDP(l)
Test if a list is empty.
list gen_nreverse(list cp)
reverse a list in place
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
list gen_copy_seq(list l)
Copy a list structure.
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
#define CDR(pcons)
Get the list less its first element.
list gen_full_copy_list(list l)
Copy a list structure with element copy.
int vect_size(Pvecteur v)
package vecteur - reductions
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define print_transformer(t)
Psysteme cute_convex_union(Psysteme s1, Psysteme s2)
debug messages before calling the version in polyedre.
#define transformer_undefined
#define transformer_undefined_p(x)
#define TRANSFORMER(x)
TRANSFORMER.
#define transformer_relation(x)
#define transformer_arguments(x)
#define predicate_system(x)
Psysteme sc_empty(Pbase b)
Psysteme sc_empty(Pbase b): build a Psysteme with one unfeasible constraint to define the empty subsp...
Pbase sc_to_minimal_basis(Psysteme ps)
creation d'une base contenant toutes les variables apparaissant avec des coefficients non-nuls dans l...
Psysteme sc_copy(Psysteme ps)
Psysteme sc_copy(Psysteme ps): duplication d'un systeme (allocation et copie complete des champs sans...
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
Psysteme sc_equation_add(Psysteme sc, Pcontrainte c)
The basis of the constraint system is updated.
void sc_fprint(FILE *fp, Psysteme ps, get_variable_name_t nom_var)
void sc_fprint(FILE * f, Psysteme ps, char * (*nom_var)()): cette fonction imprime dans le fichier po...
Psysteme sc_free(Psysteme in_ps)
Psysteme sc_free( in_ps ) AL 30/05/94 Free of in_ps.
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
char *(* get_variable_name_t)(Variable)
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define BASE_NULLE
MACROS SUR LES BASES.
Pvecteur vect_make(Pvecteur v, Variable var, Value val,...)
Pvecteur vect_make(v, [var, val,]* 0, val) Pvecteur v; // may be NULL, use assigne anyway Variable va...