These functions take a dimension specification for a B<set>
and return an identity relation between two such sets.
+=item * Lexicographic order
+
+ __isl_give isl_map *isl_map_lex_lt(
+ __isl_take isl_dim *set_dim);
+ __isl_give isl_map *isl_map_lex_gt(
+ __isl_take isl_dim *set_dim);
+
+These functions take a dimension specification for a B<set>
+and return maps that map elements of a set of the given dimension
+to elements that are lexicograhically less
+(C<isl_map_lex_lt>) or lexicograhically greater (C<isl_map_lex_gt>).
+
=back
A basic set or relation can be converted to a set or relation
__isl_give isl_map *isl_map_identity(__isl_take isl_dim *set_dim);
struct isl_map *isl_map_identity_like(struct isl_map *model);
struct isl_map *isl_map_identity_like_basic_map(struct isl_basic_map *model);
+__isl_give isl_map *isl_map_lex_lt(__isl_take isl_dim *set_dim);
+__isl_give isl_map *isl_map_lex_gt(__isl_take isl_dim *set_dim);
struct isl_map *isl_map_finalize(struct isl_map *map);
void isl_map_free(__isl_take isl_map *map);
__isl_give isl_map *isl_map_copy(__isl_keep isl_map *map);
return isl_basic_map_finalize(bmap);
}
+static __isl_give isl_map *map_lex_lt(__isl_take isl_dim *dims)
+{
+ struct isl_map *map;
+ unsigned dim;
+ int i;
+
+ if (!dims)
+ return NULL;
+ dim = dims->n_out;
+ map = isl_map_alloc_dim(isl_dim_copy(dims), dim, ISL_MAP_DISJOINT);
+
+ for (i = 0; i < dim; ++i)
+ map = isl_map_add(map,
+ isl_basic_map_less_at(isl_dim_copy(dims), i));
+
+ isl_dim_free(dims);
+ return map;
+}
+
+__isl_give isl_map *isl_map_lex_lt(__isl_take isl_dim *set_dim)
+{
+ return map_lex_lt(isl_dim_map(set_dim));
+}
+
+static __isl_give isl_map *map_lex_gt(__isl_take isl_dim *dims)
+{
+ struct isl_map *map;
+ unsigned dim;
+ int i;
+
+ if (!dims)
+ return NULL;
+ dim = dims->n_out;
+ map = isl_map_alloc_dim(isl_dim_copy(dims), dim, ISL_MAP_DISJOINT);
+
+ for (i = 0; i < dim; ++i)
+ map = isl_map_add(map,
+ isl_basic_map_more_at(isl_dim_copy(dims), i));
+
+ isl_dim_free(dims);
+ return map;
+}
+
+__isl_give isl_map *isl_map_lex_gt(__isl_take isl_dim *set_dim)
+{
+ return map_lex_gt(isl_dim_map(set_dim));
+}
+
struct isl_basic_map *isl_basic_map_from_basic_set(
struct isl_basic_set *bset, struct isl_dim *dim)
{