Subject: Seeking ISL API to remove redundant parameters/symbols

4 views
Skip to first unread message

sen yang

unread,
Aug 25, 2026, 9:12:58 AM (7 days ago) Aug 25
to isl-dev...@googlegroups.com

Hi,

Is there an established ISL API or recommended sequence to eliminate redundant symbol parameters (e.g., n0) from isl_set/ isl_map?

We encounter cases where symbolic domain bounds create unnecessary constraints downstream (e.g., during Farkas coefficient computation):

  1. [n0] -> { S[d0, d1 = -d0] : 0 < d0 <= -2 + n0; S[d0 = 0, d1 = 0] : n0 >= 2 }

  2. [n0] -> { S[d0, d1 = -d0] : 0 < d0 <= -2 + n0 }

  3. [n0] -> { S[d0 = 0, d1 = 1] : n0 >= 3 }

In Example 3, the presence of n0 leads to a complex coefficient space: { rat: coefficients[[c_cst, c_n0] -> S[c_d0, c_d1]] : c_n0 >= 0 and c_d1 >= -c_cst - 3c_n0 }

Ideally, this should normalize to { S[0, 1] }, producing a simpler coefficient domain.

Is there a standard built-in ISL method to detect and eliminate such redundant parameters?

Thanks,

lonelyeagle02

Sven Verdoolaege

unread,
Aug 25, 2026, 3:34:20 PM (7 days ago) Aug 25
to sen yang, isl-dev...@googlegroups.com
On Tue, Aug 25, 2026 at 09:12:43PM +0800, sen yang wrote:
> Hi,
>
> Is there an established ISL API or recommended sequence to eliminate
> redundant symbol parameters (e.g., n0) from isl_set/ isl_map?

Removing truly redundant parameters can be done with "drop_unused_params".
However, that does not appear to be what you want.

> We encounter cases where symbolic domain bounds create unnecessary
> constraints downstream (e.g., during Farkas coefficient computation):
>
> 1.
>
> [n0] -> { S[d0, d1 = -d0] : 0 < d0 <= -2 + n0; S[d0 = 0, d1 = 0] : n0 >=
> 2 }
> 2.
>
> [n0] -> { S[d0, d1 = -d0] : 0 < d0 <= -2 + n0 }
> 3.
>
> [n0] -> { S[d0 = 0, d1 = 1] : n0 >= 3 }
>
> In Example 3, the presence of n0 leads to a complex coefficient space: {
> rat: coefficients[[c_cst, c_n0] -> S[c_d0, c_d1]] : c_n0 >= 0 and c_d1 >=
> -c_cst - 3c_n0 }

If you want to project out _all_ parameters, then you can call
"project_out_all_params".
The result is equivalent to just setting c_n0 to zero.

If it is something else that you want, then you have to explain
what you consider to be a "redundant" parameter.

You can also have a look at isl_scheduler.c to see how the isl scheduler
handles these kinds of things.

skimo
Reply all
Reply to author
Forward
0 new messages