Polly 20.0.0git
Classes | Macros | Functions
isl_transitive_closure.c File Reference
#include <isl_ctx_private.h>
#include <isl_map_private.h>
#include <isl/map.h>
#include <isl_seq.h>
#include <isl_space_private.h>
#include <isl_lp_private.h>
#include <isl/union_map.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include <isl_options_private.h>
#include <isl_tarjan.h>
#include "isl_power_templ.c"

Go to the source code of this file.

Classes

struct  isl_tc_follows_data
 
struct  isl_union_power
 

Macros

#define IMPURE   0
 
#define PURE_PARAM   1
 
#define PURE_VAR   2
 
#define MIXED   3
 
#define LEFT   2
 
#define RIGHT   1
 
#define TYPE   isl_map
 
#define TYPE   isl_union_map
 

Functions

isl_bool isl_map_is_transitively_closed (__isl_keep isl_map *map)
 
isl_bool isl_union_map_is_transitively_closed (__isl_keep isl_union_map *umap)
 
static __isl_give isl_mapset_path_length (__isl_take isl_map *map, int exactly, int length)
 
static isl_bool check_power_exactness (__isl_take isl_map *map, __isl_take isl_map *app)
 
static isl_bool check_exactness (__isl_take isl_map *map, __isl_take isl_map *app, int project)
 
static __isl_give isl_mappath_along_steps (__isl_take isl_space *space, __isl_keep isl_mat *steps)
 
static isl_bool parametric_constant_never_positive (__isl_keep isl_basic_set *bset, isl_int *c, int *div_purity)
 
static int purity (__isl_keep isl_basic_set *bset, isl_int *c, int *div_purity, int eq)
 
static __isl_give int * get_div_purity (__isl_keep isl_basic_set *bset)
 
static isl_bool empty_path_is_identity (__isl_keep isl_basic_map *path, unsigned pos)
 
static __isl_give isl_basic_mapadd_delta_constraints (__isl_take isl_basic_map *path, __isl_keep isl_basic_set *delta, unsigned off, unsigned nparam, unsigned d, int *div_purity, int eq, int *impurity)
 
static __isl_give isl_mappath_along_delta (__isl_take isl_space *space, __isl_take isl_basic_set *delta)
 
static __isl_give isl_mapequate_parameter_to_length (__isl_take isl_space *space, unsigned param)
 
static isl_bool is_acyclic (__isl_take isl_map *path)
 
static __isl_give isl_mapconstruct_extended_path (__isl_take isl_space *space, __isl_keep isl_map *map, int *project)
 
static isl_bool isl_set_overlaps (__isl_keep isl_set *set1, __isl_keep isl_set *set2)
 
static __isl_give isl_mapconstruct_component (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
 
static __isl_give isl_mapconstruct_projected_component (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
 
static __isl_give isl_mapq_closure (__isl_take isl_space *space, __isl_take isl_set *dom, __isl_keep isl_basic_map *bmap, isl_bool *exact)
 
static isl_bool has_spurious_elements (__isl_keep isl_map *qc, __isl_keep isl_set *dom, __isl_keep isl_set *ran)
 
static int composability (__isl_keep isl_set *C, int i, isl_set **dom, isl_set **ran, int *left, int *right, __isl_keep isl_map *map)
 
static __isl_give isl_mapanonymize (__isl_take isl_map *map)
 
static __isl_give isl_mapcompose (__isl_keep isl_map *map, int i, __isl_take isl_map *qc, int *left, int *right)
 
static __isl_give isl_mapcompute_incremental (__isl_take isl_space *space, __isl_keep isl_map *map, int i, __isl_take isl_map *qc, int *left, int *right, isl_bool *exact)
 
static isl_bool incremental_on_entire_domain (__isl_keep isl_space *space, __isl_keep isl_map *map, isl_set **dom, isl_set **ran, int *left, int *right, __isl_give isl_map **res)
 
static __isl_give isl_mapincremental_closure (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
 
static int merge (isl_set **set, int *group, __isl_take isl_set *dom, int pos)
 
static __isl_give isl_mapincrement (__isl_take isl_space *space)
 
static isl_stat add_length (__isl_keep isl_map *map, isl_map ***grid, int n)
 
static void floyd_warshall_iterate (isl_map ***grid, int n, isl_bool *exact)
 
static __isl_give isl_mapfloyd_warshall_with_groups (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project, int *group, int n)
 
static int * setup_groups (isl_ctx *ctx, __isl_keep isl_basic_map **list, int n, isl_set ***set, int *n_group)
 
static __isl_give isl_mapfloyd_warshall (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
 
static isl_bool basic_map_follows (int i, int j, void *user)
 
static __isl_give isl_mapconstruct_power_components (__isl_take isl_space *space, __isl_keep isl_map *map, isl_bool *exact, int project)
 
static __isl_give isl_mapconstruct_power (__isl_keep isl_map *map, isl_bool *exact, int project)
 
static __isl_give isl_mapmap_power (__isl_take isl_map *map, isl_bool *exact, int project)
 
__isl_give isl_mapisl_map_power (__isl_take isl_map *map, isl_bool *exact)
 
__isl_give isl_mapisl_map_reaching_path_lengths (__isl_take isl_map *map, isl_bool *exact)
 
static __isl_give isl_mapbox_closure_on_domain (__isl_take isl_map *map, __isl_take isl_set *dom, __isl_take isl_set *ran, int with_id)
 
static __isl_give isl_mapbox_closure (__isl_take isl_map *map)
 
static __isl_give isl_mapbox_closure_with_identity (__isl_take isl_map *map, __isl_take isl_set *dom)
 
static isl_bool check_exactness_omega (__isl_keep isl_map *map, __isl_keep isl_map *app)
 
static int can_be_split_off (__isl_keep isl_map *map, int i, __isl_give isl_map **tc, __isl_give isl_map **qc)
 
static __isl_give isl_mapbox_closure_with_check (__isl_take isl_map *map, isl_bool *exact)
 
static __isl_give isl_maptransitive_closure_omega (__isl_take isl_map *map, isl_bool *exact)
 
__isl_give isl_mapisl_map_transitive_closure (__isl_take isl_map *map, isl_bool *exact)
 
static isl_stat inc_count (__isl_take isl_map *map, void *user)
 
static isl_stat collect_basic_map (__isl_take isl_map *map, void *user)
 
static __isl_give isl_union_mapunion_floyd_warshall_on_list (isl_ctx *ctx, __isl_keep isl_basic_map **list, int n, isl_bool *exact)
 
static __isl_give isl_union_mapunion_floyd_warshall (__isl_take isl_union_map *umap, isl_bool *exact)
 
static __isl_give isl_union_mapunion_components (__isl_take isl_union_map *umap, isl_bool *exact)
 
__isl_give isl_union_mapisl_union_map_transitive_closure (__isl_take isl_union_map *umap, isl_bool *exact)
 
static isl_stat power (__isl_take isl_map *map, void *user)
 
static __isl_give isl_union_mapdeltas_map (__isl_take isl_space *space)
 
__isl_give isl_union_mapisl_union_map_power (__isl_take isl_union_map *umap, isl_bool *exact)
 

Macro Definition Documentation

◆ IMPURE

#define IMPURE   0

Definition at line 289 of file isl_transitive_closure.c.

◆ LEFT

#define LEFT   2

Definition at line 1009 of file isl_transitive_closure.c.

◆ MIXED

#define MIXED   3

Definition at line 292 of file isl_transitive_closure.c.

◆ PURE_PARAM

#define PURE_PARAM   1

Definition at line 290 of file isl_transitive_closure.c.

◆ PURE_VAR

#define PURE_VAR   2

Definition at line 291 of file isl_transitive_closure.c.

◆ RIGHT

#define RIGHT   1

Definition at line 1010 of file isl_transitive_closure.c.

◆ TYPE [1/2]

#define TYPE   isl_map

Definition at line 2946 of file isl_transitive_closure.c.

◆ TYPE [2/2]

#define TYPE   isl_union_map

Definition at line 2946 of file isl_transitive_closure.c.

Function Documentation

◆ add_delta_constraints()

static __isl_give isl_basic_map * add_delta_constraints ( __isl_take isl_basic_map path,
__isl_keep isl_basic_set delta,
unsigned  off,
unsigned  nparam,
unsigned  d,
int *  div_purity,
int  eq,
int *  impurity 
)
static

◆ add_length()

static isl_stat add_length ( __isl_keep isl_map map,
isl_map ***  grid,
int  n 
)
static

◆ anonymize()

static __isl_give isl_map * anonymize ( __isl_take isl_map map)
static

Definition at line 1104 of file isl_transitive_closure.c.

References isl_dim_in, isl_dim_out, isl_map_reset(), and map.

Referenced by compose(), and construct_power_components().

◆ basic_map_follows()

static isl_bool basic_map_follows ( int  i,
int  j,
void *  user 
)
static

◆ box_closure()

static __isl_give isl_map * box_closure ( __isl_take isl_map map)
static

◆ box_closure_on_domain()

static __isl_give isl_map * box_closure_on_domain ( __isl_take isl_map map,
__isl_take isl_set dom,
__isl_take isl_set ran,
int  with_id 
)
static

◆ box_closure_with_check()

static __isl_give isl_map * box_closure_with_check ( __isl_take isl_map map,
isl_bool exact 
)
static

◆ box_closure_with_identity()

static __isl_give isl_map * box_closure_with_identity ( __isl_take isl_map map,
__isl_take isl_set dom 
)
static

Definition at line 2328 of file isl_transitive_closure.c.

References box_closure_on_domain(), isl_set_copy(), and map.

Referenced by can_be_split_off().

◆ can_be_split_off()

static int can_be_split_off ( __isl_keep isl_map map,
int  i,
__isl_give isl_map **  tc,
__isl_give isl_map **  qc 
)
static

◆ check_exactness()

static isl_bool check_exactness ( __isl_take isl_map map,
__isl_take isl_map app,
int  project 
)
static

◆ check_exactness_omega()

static isl_bool check_exactness_omega ( __isl_keep isl_map map,
__isl_keep isl_map app 
)
static

◆ check_power_exactness()

static isl_bool check_power_exactness ( __isl_take isl_map map,
__isl_take isl_map app 
)
static

◆ collect_basic_map()

static isl_stat collect_basic_map ( __isl_take isl_map map,
void *  user 
)
static

◆ composability()

static int composability ( __isl_keep isl_set C,
int  i,
isl_set **  dom,
isl_set **  ran,
int *  left,
int *  right,
__isl_keep isl_map map 
)
static

◆ compose()

static __isl_give isl_map * compose ( __isl_keep isl_map map,
int  i,
__isl_take isl_map qc,
int *  left,
int *  right 
)
static

◆ compute_incremental()

static __isl_give isl_map * compute_incremental ( __isl_take isl_space space,
__isl_keep isl_map map,
int  i,
__isl_take isl_map qc,
int *  left,
int *  right,
isl_bool exact 
)
static

◆ construct_component()

static __isl_give isl_map * construct_component ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ construct_extended_path()

static __isl_give isl_map * construct_extended_path ( __isl_take isl_space space,
__isl_keep isl_map map,
int *  project 
)
static

◆ construct_power()

static __isl_give isl_map * construct_power ( __isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ construct_power_components()

static __isl_give isl_map * construct_power_components ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ construct_projected_component()

static __isl_give isl_map * construct_projected_component ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ deltas_map()

static __isl_give isl_union_map * deltas_map ( __isl_take isl_space space)
static

◆ empty_path_is_identity()

static isl_bool empty_path_is_identity ( __isl_keep isl_basic_map path,
unsigned  pos 
)
static

◆ equate_parameter_to_length()

static __isl_give isl_map * equate_parameter_to_length ( __isl_take isl_space space,
unsigned  param 
)
static

◆ floyd_warshall()

static __isl_give isl_map * floyd_warshall ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ floyd_warshall_iterate()

static void floyd_warshall_iterate ( isl_map ***  grid,
int  n,
isl_bool exact 
)
static

◆ floyd_warshall_with_groups()

static __isl_give isl_map * floyd_warshall_with_groups ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project,
int *  group,
int  n 
)
static

◆ get_div_purity()

static __isl_give int * get_div_purity ( __isl_keep isl_basic_set bset)
static

◆ has_spurious_elements()

static isl_bool has_spurious_elements ( __isl_keep isl_map qc,
__isl_keep isl_set dom,
__isl_keep isl_set ran 
)
static

◆ inc_count()

static isl_stat inc_count ( __isl_take isl_map map,
void *  user 
)
static

◆ increment()

static __isl_give isl_map * increment ( __isl_take isl_space space)
static

◆ incremental_closure()

static __isl_give isl_map * incremental_closure ( __isl_take isl_space space,
__isl_keep isl_map map,
isl_bool exact,
int  project 
)
static

◆ incremental_on_entire_domain()

static isl_bool incremental_on_entire_domain ( __isl_keep isl_space space,
__isl_keep isl_map map,
isl_set **  dom,
isl_set **  ran,
int *  left,
int *  right,
__isl_give isl_map **  res 
)
static

◆ is_acyclic()

static isl_bool is_acyclic ( __isl_take isl_map path)
static

◆ isl_map_is_transitively_closed()

isl_bool isl_map_is_transitively_closed ( __isl_keep isl_map map)

◆ isl_map_power()

__isl_give isl_map * isl_map_power ( __isl_take isl_map map,
isl_bool exact 
)

◆ isl_map_reaching_path_lengths()

__isl_give isl_map * isl_map_reaching_path_lengths ( __isl_take isl_map map,
isl_bool exact 
)

◆ isl_map_transitive_closure()

__isl_give isl_map * isl_map_transitive_closure ( __isl_take isl_map map,
isl_bool exact 
)

◆ isl_set_overlaps()

static isl_bool isl_set_overlaps ( __isl_keep isl_set set1,
__isl_keep isl_set set2 
)
static

Definition at line 843 of file isl_transitive_closure.c.

References isl_bool_not(), isl_set_is_disjoint(), set1, and set2.

Referenced by composability(), construct_component(), and merge().

◆ isl_union_map_is_transitively_closed()

isl_bool isl_union_map_is_transitively_closed ( __isl_keep isl_union_map umap)

◆ isl_union_map_power()

__isl_give isl_union_map * isl_union_map_power ( __isl_take isl_union_map umap,
isl_bool exact 
)

◆ isl_union_map_transitive_closure()

__isl_give isl_union_map * isl_union_map_transitive_closure ( __isl_take isl_union_map umap,
isl_bool exact 
)

◆ map_power()

static __isl_give isl_map * map_power ( __isl_take isl_map map,
isl_bool exact,
int  project 
)
static

◆ merge()

static int merge ( isl_set **  set,
int *  group,
__isl_take isl_set dom,
int  pos 
)
static

Definition at line 1451 of file isl_transitive_closure.c.

References isl_set_copy(), isl_set_free(), isl_set_overlaps(), isl_set_union(), pos(), and set.

Referenced by setup_groups().

◆ parametric_constant_never_positive()

static isl_bool parametric_constant_never_positive ( __isl_keep isl_basic_set bset,
isl_int c,
int *  div_purity 
)
static

◆ path_along_delta()

static __isl_give isl_map * path_along_delta ( __isl_take isl_space space,
__isl_take isl_basic_set delta 
)
static

◆ path_along_steps()

static __isl_give isl_map * path_along_steps ( __isl_take isl_space space,
__isl_keep isl_mat steps 
)
static

◆ power()

static isl_stat power ( __isl_take isl_map map,
void *  user 
)
static

◆ purity()

static int purity ( __isl_keep isl_basic_set bset,
isl_int c,
int *  div_purity,
int  eq 
)
static

◆ q_closure()

static __isl_give isl_map * q_closure ( __isl_take isl_space space,
__isl_take isl_set dom,
__isl_keep isl_basic_map bmap,
isl_bool exact 
)
static

◆ set_path_length()

static __isl_give isl_map * set_path_length ( __isl_take isl_map map,
int  exactly,
int  length 
)
static

◆ setup_groups()

static int * setup_groups ( isl_ctx ctx,
__isl_keep isl_basic_map **  list,
int  n,
isl_set ***  set,
int *  n_group 
)
static

◆ transitive_closure_omega()

static __isl_give isl_map * transitive_closure_omega ( __isl_take isl_map map,
isl_bool exact 
)
static

◆ union_components()

static __isl_give isl_union_map * union_components ( __isl_take isl_union_map umap,
isl_bool exact 
)
static

◆ union_floyd_warshall()

static __isl_give isl_union_map * union_floyd_warshall ( __isl_take isl_union_map umap,
isl_bool exact 
)
static

◆ union_floyd_warshall_on_list()

static __isl_give isl_union_map * union_floyd_warshall_on_list ( isl_ctx ctx,
__isl_keep isl_basic_map **  list,
int  n,
isl_bool exact 
)
static