# Here is the result given by an old CLooG (the same was given up to 0.12.2),
# the difference with the new constant spreading technique of 0.14.0 is
# one of the most beautiful.
#
# /* Generated by CLooG v0.10.7 */
# for (i=2;i<=3;i++) {
#   for (j=-i+6;j<=6;j++) {
#     S1 ;
#   }
# }
# for (j=4-1;j<=-(4)+8;j++) {
#   S1(i = 4) ;
# }
# j = -(4)+9 ;
# S1(i = 4) ;
# S2(i = 4) ;
# for (j=-(4)+10;j<=6;j++) {
#   S1(i = 4) ;
# }
# S1(i = 5,j = 4) ;
# S2(i = 5,j = 4) ;
# for (j=5;j<=6;j++) {
#   S1(i = 5) ;
# }
# for (i=6;i<=7;i++) {
#   j = -i+9 ;
#   S2 ;
#   for (j=i-1;j<=6;j++) {
#     S1 ;
#   }
# }
# S2(i = 8,j = 1) ;

# language: C
c

# Context
#{ | 1>=0}
1   2
1   1
0

2 # Number of statements

1
# {i,j | (-j+6,2)<=i<=j+1; 3<=j<=6}
5 4
#  i  j  1
1  1  1 -6
1  1  0 -2
1  0  1 -3
1  0 -1  6
1 -1  1  1
0  0  0

1
# {i,j | i=-j+9; 1<=j<=5}
3 4
0  1  1 -9
1  0  1 -1
1  0 -1  5
0  0  0
0

0 # Scattering functions
