dim = isl_dim_set_alloc(ctx, 1, 1);
bset = isl_basic_set_universe(dim);
- c = isl_inequality_alloc(isl_dim_copy(bset->dim));
+ c = isl_inequality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_param, 0, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_inequality_alloc(isl_dim_copy(bset->dim));
+ c = isl_inequality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -5);
dim = isl_dim_set_alloc(ctx, 0, 1);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
isl_basic_set_free(bset);
/* test 2 */
dim = isl_dim_set_alloc(ctx, 0, 1);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
isl_basic_set_free(bset);
/* test 3 */
dim = isl_dim_set_alloc(ctx, 0, 1);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -3);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 4);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
isl_basic_set_free(bset);
/* test 4 */
dim = isl_dim_set_alloc(ctx, 0, 1);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 2);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 6);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
dim = isl_dim_set_alloc(ctx, 0, 2);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- assert(bset->n_div == 0);
+ assert(bset && bset->n_div == 0);
isl_basic_set_free(bset);
/* test 6 */
dim = isl_dim_set_alloc(ctx, 0, 2);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 6);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
isl_basic_set_free(bset);
/* test 7 */
dim = isl_dim_set_alloc(ctx, 0, 3);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 2, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 6);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
/* Test disabled for now */
/*
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
*/
isl_basic_set_free(bset);
dim = isl_dim_set_alloc(ctx, 0, 4);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 3, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 6);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 1);
/* Test disabled for now */
/*
- assert(bset->n_div == 1);
+ assert(bset && bset->n_div == 1);
*/
isl_basic_set_free(bset);
dim = isl_dim_set_alloc(ctx, 0, 2);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, -2);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
dim = isl_dim_set_alloc(ctx, 0, 2);
bset = isl_basic_set_universe(dim);
- c = isl_equality_alloc(isl_dim_copy(bset->dim));
+ c = isl_equality_alloc(isl_basic_set_get_dim(bset));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
- div = isl_div_alloc(isl_dim_copy(bset->dim));
+ div = isl_div_alloc(isl_basic_set_get_dim(bset));
c = isl_constraint_add_div(c, div, &pos);
isl_int_set_si(v, -2);
isl_constraint_set_coefficient(c, isl_dim_div, pos, v);
return 2 * depth;
}
-int map_is_equal(__isl_keep isl_map *map, const char *str)
+static int map_is_equal(__isl_keep isl_map *map, const char *str)
{
isl_map *map2;
int equal;
+ if (!map)
+ return -1;
+
map2 = isl_map_read_from_str(map->ctx, str, -1);
equal = isl_map_is_equal(map, map2);
isl_map_free(map2);
isl_map_free(map);
}
+void test_bijective_case(struct isl_ctx *ctx, const char *str, int bijective)
+{
+ isl_map *map;
+
+ map = isl_map_read_from_str(ctx, str, -1);
+ if (bijective)
+ assert(isl_map_is_bijective(map));
+ else
+ assert(!isl_map_is_bijective(map));
+ isl_map_free(map);
+}
+
+void test_bijective(struct isl_ctx *ctx)
+{
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i]}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=i}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=0}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=N}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [j,i]}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i+j]}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> []}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i,j,N]}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i]}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [i,i]}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i,i]}", 0);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i,j]}", 1);
+ test_bijective_case(ctx, "[N,M]->{[i,j] -> [x,y] : 2x=i & y =j}", 1);
+}
+
int main()
{
struct isl_ctx *ctx;
ctx = isl_ctx_alloc();
test_sv(ctx);
+ test_bijective(ctx);
test_dep(ctx);
test_read(ctx);
test_bounded(ctx);