8 #define SL_NULL (Psyslist) NULL
12 #define DJ_UNDEFINED (Pdisjunct) NULL
16 #define CO_UNDEFINED (Pcomplement) NULL
23 #define PA_UNDEFINED (Ppath) NULL
30 #define UN_UNDEFINED (Punion) NULL
31 #define UN_FULL_SPACE (Punion) NULL
32 #define UN_EMPTY_SPACE (Punion) NULL
69 #define my_sc_full() sc_full()
70 #define my_sc_empty() sc_empty((Pbase) NULL)
71 #define is_sc_my_empty_p(ps) sc_empty_p((ps))
72 #define is_dj_full_p(dj) dj_full_p((dj))
73 #define is_dj_empty_p(dj) dj_empty_p((dj))
74 #define is_pa_full_p(pa) pa_full_p((pa))
75 #define is_pa_empty_p(pa) pa_empty_p((pa))
79 #define sc_difference(ps1, ps2) pa_system_difference_ofl_ctrl((ps1),(ps2),FWD_OFL_CTRL)
80 #define sc_inclusion_p(ps1, ps2) pa_inclusion_p_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL)
81 #define sc_inclusion_p_ofl(ps1, ps2) pa_inclusion_p_ofl_ctrl((ps1), (ps2), FWD_OFL_CTRL)
82 #define sc_inclusion_p_ofl_ctrl(ps1, ps2, ofl) pa_inclusion_p_ofl_ctrl((ps1), (ps2), (ofl))
83 #define sc_equal_p(ps1,ps2) pa_system_equal_p_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL)
84 #define sc_equal_p_ofl(ps1,ps2) pa_system_equal_p_ofl_ctrl((ps1), (ps2), FWD_OFL_CTRL)
85 #define sc_equal_p_ofl_ctrl(ps1, ps2, ofl) pa_system_equal_p_ofl_ctrl((ps1), (ps2), (ofl))
86 #define sc_convex_hull_equals_union_p(conv_hull, ps1, ps2) \
87 pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2),NO_OFL_CTRL, false)
88 #define sc_convex_hull_equals_union_p_ofl(conv_hull, ps1, ps2) \
89 pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), OFL_CTRL, false)
90 #define sc_convex_hull_equals_union_p_ofl_ctrl(conv_hull, ps1, ps2, ofl, bo) \
91 pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), (ofl), (bo))
94 #define sc_elim_redund_with_first(ps1, ps2) sc_elim_redund_with_first_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL)
96 #define dj_fprint(fi,dj,fu) dj_fprint_tab((fi), (dj), (fu), 0)
97 #define DJ_UNDEFINED_P(dj) ((dj) == DJ_UNDEFINED)
98 #define dj_faisabilite(dj) dj_feasibility_ofl_ctrl((dj), NO_OFL_CTRL)
99 #define dj_feasibility(dj) dj_feasibility_ofl_ctrl((dj), NO_OFL_CTRL)
100 #define dj_faisabilite_ofl(dj) dj_feasibility_ofl_ctrl((dj), FWD_OFL_CTRL)
101 #define dj_intersection(dj1, dj2) dj_intersection_ofl_ctrl((dj1), (dj2), NO_OFL_CTRL)
102 #define dj_intersect_system(dj,ps) dj_intersect_system_ofl_ctrl((dj), (ps), NO_OFL_CTRL )
103 #define dj_intersect_djcomp(dj1,dj2) dj_intersect_djcomp_ofl_ctrl( (dj1), (dj2), NO_OFL_CTRL )
104 #define dj_projection_along_variables(dj,pv) \
105 dj_projection_along_variables_ofl_ctrl((dj),(pv),NO_OFL_CTRL)
106 #define dj_variable_substitution_with_eqs(dj,co,pv) \
107 dj_variable_substitution_with_eqs_ofl_ctrl( (dj), (co), (pv), NO_OFL_CTRL )
109 #define pa_fprint(fi,pa,fu) pa_fprint_tab((fi), (pa), (fu), 0)
110 #define PA_UNDEFINED_P(pa) ((pa) == PA_UNDEFINED)
111 #define pa_new() pa_make(NULL, NULL)
112 #define pa_faisabilite(pa) pa_feasibility_ofl_ctrl((pa), NO_OFL_CTRL)
113 #define pa_feasibility(pa) pa_feasibility_ofl_ctrl((pa), NO_OFL_CTRL)
114 #define pa_faisabilite_ofl(pa) pa_feasibility_ofl_ctrl((pa), FWD_OFL_CTRL)
115 #define pa_path_to_disjunct(pa) pa_path_to_disjunct_ofl_ctrl((pa), NO_OFL_CTRL )
116 #define pa_path_dup_to_disjunct(pa) pa_path_to_disjunct_ofl_ctrl((pa), NO_OFL_CTRL )
117 #define pa_system_difference(ps1,ps2) pa_system_difference_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL)
118 #define pa_system_equal_p(ps1,ps2) pa_system_equal_p_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL)
119 #define pa_inclusion_p(ps1,ps2) pa_inclusion_p_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL)
120 #define pa_path_to_disjunct_ofl(pa) pa_path_to_disjunct_ofl_ctrl((pa), FWD_OFL_CTRL )
121 #define pa_path_to_disjunct_rule4(pa) pa_path_to_disjunct_rule4_ofl_ctrl((pa), FWD_OFL_CTRL )
122 #define pa_path_to_few_disjunct(pa) pa_path_to_few_disjunct_ofl_ctrl((pa), NO_OFL_CTRL)
123 #define pa_system_difference(ps1,ps2) pa_system_difference_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL)
124 #define pa_convex_hull_equals_union_p(conv_hull, ps1, ps2) \
125 pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), NO_OFL_CTRL, false)
127 #define un_fprint(fi,un,fu,ty) un_fprint_tab((fi), (un), (fu), (ty), 0)
131 #define PATH_MAX_CONSTRAINTS 12
138 extern char* (*union_variable_name)(
Variable);
140 #if(defined(DEBUG_UNION_C3) || defined(DEBUG_UNION_PIPS))
141 #define C3_DEBUG( fun, code ) \
142 {if(getenv("DEBUG_UNION")){fprintf(stderr,"[%s]\n", fun); {code}}}
143 #define C3_RETURN( type, val ) \
144 {if(getenv("DEBUG_UNION")){ \
145 char* val1 = (char*) val; \
146 fprintf(stderr,"Returning:\n"); \
147 un_fprint_tab(stderr,(char*)val1,union_variable_name,type,1); return val1;} \
150 #define C3_DEBUG( fun, code )
151 #define C3_RETURN( type, val ) {return val;}
Warning! Do not modify this file that is automatically generated!
struct Ssyslist * Psyslist
hspara_elem
Implementation of the finite parallel half space lattice hspara.
@ keep
bj > b1 -> h1/hj = h1
@ ssplus
b1 == bj -> h1/hj = full
@ opzero
bj < b1 -> h1/hj = h1
@ opplus
b1 == bj -> h1/hj = h1
@ ssminus
bj > b1 -> h1/hj = full
@ unpara
compare {h1: a1 X + b1 <= 0} with {hj: aj X + bj <= 0}
@ sszero
unparallel -> h1/hj = h1
@ empty
b1 < bj -> h1/hj = empty
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....