APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/apronxx/apxx_tcons1_inline.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_tcons1_inline.hh
3 *
4 * APRON Library / C++ inline functions
5 *
6 * DO NOT INCLUDE THIS FILE DIRECTLY
7 *
8 * Copyright (C) Antoine Mine' 2007
9 *
10 */
11/* This file is part of the APRON Library, released under LGPL license
12 with an exception allowing the redistribution of statically linked
13 executables.
14
15 Please read the COPYING file packaged in the distribution.
16*/
17
18
19
20/* ================================= */
21/* tcons1 */
22/* ================================= */
23
24
25/* constructors */
26/* ============ */
27
28inline tcons1::tcons1(ap_tcons1_t l) : l(l)
29{}
30
31inline tcons1::tcons1(const environment& env, ap_constyp_t constyp)
32{
33 l.tcons0 = ap_tcons0_make(constyp, NULL, NULL);
34 l.env = ap_environment_copy(const_cast<ap_environment_t*>(env.get_ap_environment_t()));
35}
36
37inline tcons1::tcons1(ap_constyp_t constyp, const texpr1::builder& t)
38{
39 ap_texpr1_t* x = ap_texpr1_copy(const_cast<ap_texpr1_t*>(t.get_ap_texpr1_t()));
40 l = ap_tcons1_make(constyp, x, NULL);
41 free(x);
42}
43
44inline tcons1::tcons1(ap_constyp_t constyp, const texpr1::builder& t, const scalar& modulo)
45{
46 ap_scalar_t* mmodulo = ap_scalar_alloc_set(const_cast<ap_scalar_t*>(modulo.get_ap_scalar_t()));
47 ap_texpr1_t* x = ap_texpr1_copy(const_cast<ap_texpr1_t*>(t.get_ap_texpr1_t()));
48 l = ap_tcons1_make(constyp, x, mmodulo);
49 free(x);
50}
51
52inline tcons1::tcons1(const tcons1& x)
53 : l(ap_tcons1_copy(const_cast<ap_tcons1_t*>(&x.l)))
54{}
55
56inline tcons1::tcons1(const tcons1& x, const environment& e)
57{
58 if (!x.l.tcons0.texpr0)
59 throw std::invalid_argument("apron::tcons1::tcons1(const tcons1&, const enviroment&) empty expression");
60 bool r =
61 ap_tcons1_extend_environment(&l,
62 const_cast<ap_tcons1_t*>(&x.l),
63 const_cast<ap_environment_t*>(e.get_ap_environment_t()));
64 if (r)
65 throw std::invalid_argument("apron::tcons1::tcons1(const tcons1&, const enviroment&) not a super-environment");
66}
67
68inline tcons1::tcons1(const environment& e, unsat x)
69{
70 l.tcons0 = ap_tcons0_make_unsat();
71 l.env = ap_environment_copy(const_cast<ap_environment_t*>(e.get_ap_environment_t()));
72}
73
74inline tcons1::tcons1(const lincons1& x)
75 : l(ap_tcons1_from_lincons1(const_cast<ap_lincons1_t*>(x.get_ap_lincons1_t())))
76{}
77
78
79/* destructor */
80/* ========== */
81
83{
84 ap_tcons1_clear(&l);
85}
86
87
88/* 'Intelligent' constructors */
89/* ========================== */
90
91inline tcons1 operator>=(const texpr1::builder& a, const texpr1::builder& b)
92{
93 if (b.is_zero()) return tcons1(AP_CONS_SUPEQ,a);
94 else if (a.is_zero()) return tcons1(AP_CONS_SUPEQ,-b);
95 else return tcons1(AP_CONS_SUPEQ,a-b);
96}
97
98inline tcons1 operator<=(const texpr1::builder& a, const texpr1::builder& b)
99{
100 if (b.is_zero()) return tcons1(AP_CONS_SUPEQ,-a);
101 else if (a.is_zero()) return tcons1(AP_CONS_SUPEQ,b);
102 else return tcons1(AP_CONS_SUPEQ,b-a);
103}
104
105inline tcons1 operator> (const texpr1::builder& a, const texpr1::builder& b)
106{
107 if (b.is_zero()) return tcons1(AP_CONS_SUP,a);
108 else if (a.is_zero()) return tcons1(AP_CONS_SUP,-b);
109 else return tcons1(AP_CONS_SUP,a-b);
110}
111
112inline tcons1 operator< (const texpr1::builder& a, const texpr1::builder& b)
113{
114 if (b.is_zero()) return tcons1(AP_CONS_SUP,-a);
115 else if (a.is_zero()) return tcons1(AP_CONS_SUP,b);
116 else return tcons1(AP_CONS_SUP,b-a);
117}
118
119inline tcons1 operator==(const texpr1::builder& a, const texpr1::builder& b)
120{
121 if (b.is_zero()) return tcons1(AP_CONS_EQ,a);
122 else if (a.is_zero()) return tcons1(AP_CONS_EQ,b);
123 else return tcons1(AP_CONS_EQ,a-b);
124}
125
126inline tcons1 operator!=(const texpr1::builder& a, const texpr1::builder& b)
127{
128 if (b.is_zero()) return tcons1(AP_CONS_DISEQ,a);
129 else if (a.is_zero()) return tcons1(AP_CONS_DISEQ,b);
130 else return tcons1(AP_CONS_DISEQ,a-b);
131}
132
133
134/* assignment */
135/* ========== */
136
138{
139 if (&x!=this) {
140 ap_tcons1_clear(&l);
141 l = ap_tcons1_copy(const_cast<ap_tcons1_t*>(&x.l));
142 }
143 return *this;
144}
145
147{
148 ap_tcons0_clear(&l.tcons0);
149 l.tcons0 = ap_tcons0_make_unsat();
150 return *this;
151}
152
154{
155 ap_tcons1_clear(&l);
156 l = ap_tcons1_from_lincons1(const_cast<ap_lincons1_t*>(x.get_ap_lincons1_t()));
157 return *this;
158}
159
160inline void tcons1::set_modulo(const scalar& c)
161{
163}
164
166{
167 ap_texpr1_t* cc = ap_texpr1_copy(const_cast<ap_texpr1_t*>(c.get_ap_texpr1_t()));
168 if (l.tcons0.texpr0) ap_texpr0_free(l.tcons0.texpr0);
169 ap_environment_free(l.env);
170 l.tcons0.texpr0 = cc->texpr0;
171 l.env = cc->env;
172 free(cc);
173}
174
175
176/* dimension operations */
177/* ==================== */
178
180{
181 bool r =
182 ap_tcons1_extend_environment_with(&l,
183 const_cast<ap_environment_t*>(e.get_ap_environment_t()));
184 if (r)
185 throw std::invalid_argument("apron::tcons1::extend_environment(const environment&) not a super-environment");
186}
187
188
189/* access */
190/* ====== */
191
193{
194 return ap_environment_copy(l.env);
195}
196
197inline const tcons0& tcons1::get_tcons0() const
198{
199 return reinterpret_cast<const tcons0&>(l.tcons0);
200}
201
203{
204 return reinterpret_cast<tcons0&>(l.tcons0);
205}
206
207inline ap_constyp_t& tcons1::get_constyp()
208{
209 return get_tcons0().get_constyp();
210}
211
212inline const ap_constyp_t& tcons1::get_constyp() const
213{
214 return get_tcons0().get_constyp();
215}
216
217inline bool tcons1::has_modulo() const
218{
219 return get_tcons0().has_modulo();
220}
221
222inline bool tcons1::has_texpr() const
223{
224 return get_tcons0().has_texpr();
225}
226
228{
229 if (!get_tcons0().has_modulo()) throw std::invalid_argument("apron::tcons1::get_modulo() empty scalar");
230 return get_tcons0().get_modulo();
231}
232
233inline const scalar& tcons1::get_modulo() const
234{
235 if (!get_tcons0().has_modulo()) throw std::invalid_argument("apron::tcons1::get_modulo() empty scalar");
236 return get_tcons0().get_modulo();
237}
238
240{
241 if (!l.tcons0.texpr0) throw std::invalid_argument("apron::tcons1::get_texpr() empty expression");
242 return texpr1::iterator(l.tcons0.texpr0,l.env);
243}
244
246{
247 if (!l.tcons0.texpr0) throw std::invalid_argument("apron::tcons1::get_texpr() empty expression");
248 return texpr1::const_iterator(l.tcons0.texpr0,l.env);
249}
250
251
252
253/* print */
254/* ===== */
255
256inline std::ostream& operator<< (std::ostream& os, const tcons1& s)
257{
258 os << s.get_texpr();
259 switch (s.get_constyp()) {
260 case AP_CONS_EQ: return os << " = 0";
261 case AP_CONS_SUPEQ: return os << " >= 0";
262 case AP_CONS_SUP: return os << " > 0";
263 case AP_CONS_EQMOD: return os << " = 0 mod " << s.get_modulo();
264 case AP_CONS_DISEQ: return os << " != 0";
265 default: throw std::invalid_argument("apron::operator<<(ostream&, const tcons1&) invalid constraint type");
266 }
267}
268
269inline void tcons1::print(FILE* stream) const
270{
271 ap_tcons1_fprint(stream, const_cast<ap_tcons1_t*>(&l));
272}
273
274
275/* tests */
276/* ===== */
277
278inline bool tcons1::is_interval_cst() const
279{
280 return get_texpr().is_interval_cst();
281}
282
283inline bool tcons1::is_interval_linear() const
284{
285 return get_texpr().is_interval_linear();
286}
287
289{
291}
292
294{
296}
297
298inline bool tcons1::is_scalar() const
299{
300 return get_texpr().is_scalar();
301}
302
303
304/* C-level compatibility */
305/* ===================== */
306
307inline const ap_tcons1_t* tcons1::get_ap_tcons1_t() const
308{
309 return &l;
310}
311
312inline ap_tcons1_t* tcons1::get_ap_tcons1_t()
313{
314 return &l;
315}
316
317
318
319
320
321/* ================================= */
322/* tcons1_array */
323/* ================================= */
324
325
326
327/* constructors */
328/* ============ */
329
330inline tcons1_array::tcons1_array(ap_tcons1_array_t& a) : a(a)
331{}
332
334{
335 size_t sz = x.size();
336 a = ap_tcons1_array_make(const_cast<ap_environment_t*>(e.get_ap_environment_t()), sz);
337 for (size_t i=0; i<sz; i++)
338 a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.p[i]);
339}
340
341inline tcons1_array::tcons1_array(const environment& e, size_t size)
342{
343 a = ap_tcons1_array_make(const_cast<ap_environment_t*>(e.get_ap_environment_t()), size);
344}
345
347{
348 size_t sz = x.size();
349 a = ap_tcons1_array_make(x.get_environment().get_ap_environment_t(), sz);
350 for (size_t i=0; i<sz; i++)
351 a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.tcons0_array.p[i]);
352}
353
355{
356 bool r =
357 ap_tcons1_array_extend_environment(&a,
358 const_cast<ap_tcons1_array_t*>(&x.a),
359 const_cast<ap_environment_t*>(e.get_ap_environment_t()));
360 if (r) throw std::invalid_argument("apron::tcons1_array::tcons1_array(const tcons1_array, const environment&) not a super-environment");
361}
362
363inline tcons1_array::tcons1_array(size_t sz, const tcons1 x[])
364{
365 if (sz<1) throw std::invalid_argument("apron::tcons1_array::tcons1_array(size_t, const tcons1) null size");
366 a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), sz);
367 for (size_t i=0; i<sz; i++)
368 a.tcons0_array.p[i] = ap_tcons0_copy(const_cast<ap_tcons0_t*>
369 (x[i].get_tcons0().get_ap_tcons0_t()));
370}
371
372inline tcons1_array::tcons1_array(const std::vector<tcons1>& x)
373{
374 size_t sz = x.size();
375 if (sz<1) throw std::invalid_argument("apron::tcons1_array::tcons1_array(const vector<tcons1>&) null size");
376 a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), sz);
377 for (size_t i=0; i<sz; i++)
378 a.tcons0_array.p[i] = ap_tcons0_copy(const_cast<ap_tcons0_t*>
379 (x[i].get_tcons0().get_ap_tcons0_t()));
380}
381
382
383/* destructor */
384/* ========== */
385
387{
388 ap_tcons1_array_clear(&a);
389}
390
391
392/* assignment */
393/* ========== */
394
396{
397 if (this!=&x) {
398 size_t sz = x.size();
399 ap_tcons1_array_clear(&a);
400 a = ap_tcons1_array_make(x.get_environment().get_ap_environment_t(), sz);
401 for (size_t i=0; i<sz; i++)
402 a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.tcons0_array.p[i]);
403 }
404 return *this;
405}
406
408{
409 size_t sz = size();
410 for (size_t i=0; i<sz; i++) {
411 ap_tcons0_clear(&a.tcons0_array.p[i]);
412 a.tcons0_array.p[i] = ap_tcons0_copy(const_cast<ap_tcons0_t*>
413 (x[i].get_tcons0().get_ap_tcons0_t()));
414 }
415 return *this;
416}
417
418inline tcons1_array& tcons1_array::operator= (const std::vector<tcons1>& x)
419{
420 size_t size = x.size();
421 if (size<1) {
422 ap_tcons1_array_t aa = ap_tcons1_array_make(a.env,0);
423 ap_tcons1_array_clear(&a);
424 a = aa;
425 return *this;
426 }
427 ap_tcons1_array_clear(&a);
428 a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), size);
429 for (size_t i=0; i<size; i++)
430 a.tcons0_array.p[i] = ap_tcons0_copy(const_cast<ap_tcons0_t*>
431 (x[i].get_tcons0().get_ap_tcons0_t()));
432 return *this;
433}
434
435
436/* dimension operations */
437/* ==================== */
438
439inline void tcons1_array::resize(size_t size)
440{
441 ap_tcons0_array_resize(&a.tcons0_array, size);
442}
443
445{
446 bool r =
447 ap_tcons1_array_extend_environment_with(&a,
448 const_cast<ap_environment_t*>(e.get_ap_environment_t()));
449 if (r) throw std::invalid_argument("apron::tcons1_array::extend_environment(const environment&) not a super-environment");
450}
451
452
453/* access */
454/* ====== */
455
456inline size_t tcons1_array::size() const
457{
458 return ap_tcons1_array_size(const_cast<ap_tcons1_array_t*>(&a));
459}
460
462{
463 return (ap_environment_copy(ap_tcons1_array_envref(const_cast<ap_tcons1_array_t*>(&a))));
464}
465
467{
468 return reinterpret_cast<tcons0_array&>(const_cast<ap_tcons0_array_t&>(a.tcons0_array));
469}
470
472{
473 return reinterpret_cast<tcons0_array&>(a.tcons0_array);
474}
475
476inline tcons1 tcons1_array::get(size_t i) const
477{
478 if (i>=size()) throw std::out_of_range("apron::tcons1_array::get(size_t)");
479 ap_tcons1_t c = ap_tcons1_array_get(const_cast<ap_tcons1_array_t*>(&a),i);
480 ap_tcons1_t cc = ap_tcons1_copy(&c);
481 return tcons1(cc);
482}
483
484inline void tcons1_array::set(size_t i, const tcons1& x)
485{
486 if (i>=size()) throw std::out_of_range("apron::tcons1_array::set(size_t, const tcons1&)");
487 ap_tcons0_clear(&a.tcons0_array.p[i]);
488 a.tcons0_array.p[i] = ap_tcons0_copy(const_cast<ap_tcons0_t*>
490}
491
492
493/* conversion */
494/* ========== */
495
496inline tcons1_array::operator std::vector<tcons1>() const
497{
498 size_t sz = size();
499 tcons1 dummy(get_environment(),unsat());
500 std::vector<tcons1> v(sz,dummy);
501 for (size_t i=0;i<sz;i++) {
502 ap_tcons1_t c = ap_tcons1_array_get(const_cast<ap_tcons1_array_t*>(&a),i);
503 v[i] = ap_tcons1_copy(&c);
504 }
505 return v;
506}
507
508
509/* print */
510/* ===== */
511
512inline std::ostream& operator<< (std::ostream& os, const tcons1_array& s)
513{
514 size_t sz = s.size();
515 os << "{ ";
516 for (size_t i=0;i<sz;i++)
517 os << s.get(i) << "; ";
518 return os << "}";
519}
520
521inline void tcons1_array:: print(FILE* stream) const
522{
523 ap_tcons1_array_fprint(stream, const_cast<ap_tcons1_array_t*>(&a));
524}
525
526
527/* C-level compatibility */
528/* ===================== */
529
530inline const ap_tcons1_array_t* tcons1_array::get_ap_tcons1_array_t() const
531{
532 return &a;
533}
534
535inline ap_tcons1_array_t* tcons1_array::get_ap_tcons1_array_t()
536{
537 return &a;
538}
539
bool operator==(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:409
bool operator<=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:421
bool operator>(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:433
bool operator<(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:438
bool operator>=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:428
bool operator!=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:416
std::ostream & operator<<(std::ostream &os, const abstract0 &s)
Definition apxx_abstract0_inline.hh:292
Level 1 environment (ap_environment_t wrapper).
Definition apxx_environment.hh:51
const ap_environment_t * get_ap_environment_t() const
Returns a pointer to the internal APRON object pointed by *this.
Definition apxx_environment_inline.hh:425
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition apxx_lincons1.hh:40
const ap_lincons1_t * get_ap_lincons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_lincons1_inline.hh:278
Scalar (ap_scalar_t wrapper).
Definition apxx_scalar.hh:89
const ap_scalar_t * get_ap_scalar_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_scalar_inline.hh:449
Array of arbitrary constraints (ap_tcons0_array_t wrapper).
Definition apxx_tcons0.hh:350
ap_tcons0_array_t a
Structure managed by APRON.
Definition apxx_tcons0.hh:354
size_t size() const
Returns the size of the array.
Definition apxx_tcons0_inline.hh:450
Level 0 arbitrary constraint (ap_tcons0_t wrapper).
Definition apxx_tcons0.hh:47
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition apxx_tcons0_inline.hh:197
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition apxx_tcons0_inline.hh:187
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition apxx_tcons0_inline.hh:202
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition apxx_tcons0_inline.hh:219
const ap_tcons0_t * get_ap_tcons0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons0_inline.hh:301
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition apxx_tcons0_inline.hh:207
Array of arbitrary constraints (ap_tcons1_array_t wrapper).
Definition apxx_tcons1.hh:337
tcons1_array(ap_tcons1_array_t &a)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition apxx_tcons1_inline.hh:330
ap_tcons1_array_t a
Structure managed by APRON.
Definition apxx_tcons1.hh:341
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition apxx_tcons1_inline.hh:461
tcons1_array & operator=(const tcons1_array &x)
(Deep) copy.
Definition apxx_tcons1_inline.hh:395
size_t size() const
Returns the size of the array.
Definition apxx_tcons1_inline.hh:456
void set(size_t i, const tcons1 &x)
Changes the constraint at index i.
Definition apxx_tcons1_inline.hh:484
const tcons0_array & get_tcons0_array() const
Returns a reference to the underlying tcons0_array.
Definition apxx_tcons1_inline.hh:466
~tcons1_array()
Frees the space used by the array and all its constraints.
Definition apxx_tcons1_inline.hh:386
void resize(size_t size)
Resizes the array.
Definition apxx_tcons1_inline.hh:439
const ap_tcons1_array_t * get_ap_tcons1_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons1_inline.hh:530
tcons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition apxx_tcons1_inline.hh:476
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition apxx_tcons1_inline.hh:444
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons1_inline.hh:521
Level 1 arbitrary constraint (ap_tcons1_t wrapper).
Definition apxx_tcons1.hh:39
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition apxx_tcons1_inline.hh:217
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition apxx_tcons1_inline.hh:222
texpr1::iterator get_texpr()
Returns an iterator to the root of the underlying expression tree.
Definition apxx_tcons1_inline.hh:239
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_tcons1_inline.hh:278
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition apxx_tcons1_inline.hh:207
void set_texpr(const texpr1::builder &c)
Sets the underlying expression tree to c (copied).
Definition apxx_tcons1_inline.hh:165
~tcons1()
Frees the constraint, including the embedded expression tree and optional modulo scalar.
Definition apxx_tcons1_inline.hh:82
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_tcons1_inline.hh:288
ap_tcons1_t l
Structure managed by APRON.
Definition apxx_tcons1.hh:43
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition apxx_tcons1_inline.hh:283
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition apxx_tcons1_inline.hh:160
tcons1(ap_tcons1_t l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition apxx_tcons1_inline.hh:28
tcons1 & operator=(const tcons1 &x)
(Deep) copy.
Definition apxx_tcons1_inline.hh:137
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition apxx_tcons1_inline.hh:179
environment get_environment() const
Returns the environment of the expression (with incremented reference count).
Definition apxx_tcons1_inline.hh:192
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition apxx_tcons1_inline.hh:227
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_tcons1_inline.hh:293
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_tcons1_inline.hh:298
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons1_inline.hh:269
const ap_tcons1_t * get_ap_tcons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons1_inline.hh:307
const tcons0 & get_tcons0() const
Returns a reference to the underlying tcons0.
Definition apxx_tcons1_inline.hh:197
Temporary expression nodes used when constructing a texpr1.
Definition apxx_texpr1.hh:561
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr1_inline.hh:988
Iterators to traverse a constant expression tree.
Definition apxx_texpr1.hh:183
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_texpr1_inline.hh:473
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition apxx_texpr1_inline.hh:458
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_texpr1_inline.hh:453
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_texpr1_inline.hh:463
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_texpr1_inline.hh:468
Iterators to traverse and mutate an expression tree.
Definition apxx_texpr1.hh:386
Unsatisfiable constraint, to simplify initialisations and assignments.
Definition apxx_lincons0.hh:28