# Omega Calculator v1.2 (based on Omega Library 1.2, August, 2000): # symbolic n; # # # I1 := {[i,j] : 1 <= i < j <= n}; # # I2 := {[i,j,k] : 1 <= i < j,k <= n}; # # I3 := {[i] : 1 <= i <= n}; # # I4 := {[i,j] : 1 <= j < i <= n}; # # I5 := {[i] : 1 <= i <= n}; # # # T1 := {[i,j] -> [i-1,0,n-i,n-j]}; # # T2 := {[i,j,k] -> [i-1,1,n-i,n-j]}; # # T3 := {[i] -> [0,0,0,i]}; # # T4 := {[i,j] -> [j+n-1,0,i,j]}; # # T5 := {[i] -> [i+n-2,1,0,0]}; # # # first := {[i,*,*,*] -> [i]}; # # # first(T1(I1)); {[i]: 0 <= i <= n-2} # # first(T2(I2)); {[i]: 0 <= i <= n-2} # # first(T3(I3)); {[0]: 1 <= n} # # first(T4(I4)); {[i]: n <= i <= 2n-2} # # first(T5(I5)); {[i]: n-1 <= i <= 2n-2} # # T1(I1); {[In_1,0,n-In_1-1,In_4]: 0 <= In_1 && 2+In_1+In_4 <= n && 0 <= In_4} # # T2(I2); {[In_1,1,n-In_1-1,In_4]: 0 <= In_1 && 2+In_1+In_4 <= n && 0 <= In_4} # # T3(I3); {[0,0,0,i]: 1 <= i <= n} # # T4(I4); {[In_1,0,i,In_1-n+1]: i <= n <= In_1 && 2+In_1 <= n+i} # # T5(I5); {[In_1,1,0,0]: n-1 <= In_1 <= 2n-2} # # codegen T1:I1,T2:I2; for(t1 = 0; t1 <= n-2; t1++) { for(t4 = 0; t4 <= -t1+n-2; t4++) { s1(t1+1,n-t4); } for(t4 = 0; t4 <= -t1+n-2; t4++) { s2(t1+1,n-t4); } } # # codegen T1:I1,T2:I2,T3:I3,T4:I4,T5:I5; for(t1 = 0; t1 <= 2*n-2; t1++) { if (t1 <= 0) { for(t4 = 1; t4 <= n; t4++) { s3(t4); } } for(t4 = 0; t4 <= -t1+n-2; t4++) { s1(t1+1,n-t4); } if (t1 >= n) { for(t3 = t1-n+2; t3 <= n; t3++) { s4(t3,t1-n+1); } } for(t4 = 0; t4 <= -t1+n-2; t4++) { s2(t1+1,n-t4); } if (t1 >= n-1) { s5(t1-n+2); } } # #