__isl_give isl_set *isl_set_split_dims(__isl_take isl_set *set,
enum isl_dim_type type, unsigned first, unsigned n);
+int isl_basic_set_involves_dims(__isl_keep isl_basic_set *bset,
+ enum isl_dim_type type, unsigned first, unsigned n);
+int isl_set_involves_dims(__isl_keep isl_set *set,
+ enum isl_dim_type type, unsigned first, unsigned n);
+
void isl_set_print_internal(__isl_keep isl_set *set, FILE *out, int indent);
int isl_set_plain_is_empty(__isl_keep isl_set *set);
int isl_set_fast_is_empty(__isl_keep isl_set *set);
type, first, n);
}
+int isl_basic_set_involves_dims(__isl_keep isl_basic_set *bset,
+ enum isl_dim_type type, unsigned first, unsigned n)
+{
+ int i;
+
+ if (!bset)
+ return -1;
+
+ if (first + n > isl_basic_set_dim(bset, type))
+ isl_die(bset->ctx, isl_error_invalid,
+ "index out of bounds", return -1);
+
+ first += isl_basic_set_offset(bset, type);
+ for (i = 0; i < bset->n_eq; ++i)
+ if (isl_seq_first_non_zero(bset->eq[i] + first, n) >= 0)
+ return 1;
+ for (i = 0; i < bset->n_ineq; ++i)
+ if (isl_seq_first_non_zero(bset->ineq[i] + first, n) >= 0)
+ return 1;
+
+ return 0;
+}
+
+int isl_set_involves_dims(__isl_keep isl_set *set,
+ enum isl_dim_type type, unsigned first, unsigned n)
+{
+ int i;
+
+ if (!set)
+ return -1;
+
+ if (first + n > isl_set_dim(set, type))
+ isl_die(set->ctx, isl_error_invalid,
+ "index out of bounds", return -1);
+
+ for (i = 0; i < set->n; ++i) {
+ int involves = isl_basic_set_involves_dims(set->p[i],
+ type, first, n);
+ if (involves < 0 || !involves)
+ return involves;
+ }
+
+ return 1;
+}
+
/* Return true if the definition of the given div is unknown or depends
* on unknown divs.
*/