symbolic n;
symbolic LV,UV;
D := {[ i,i+1] -> [i+1,k] : 1 <= i && i+1 < k <= n};
local := {[i1,k1] -> [i2,k2] : LV <= k1,k2 <= UV };
sameP := {[i1,k1] -> [i2,k2] : k1=k2  ||  LV <= k1,k2 <= UV };
myIter := {[i,k]  : LV <= k <= UV};
lexPos := {[i1,k1] -> [i2,k2] : i1 = i2 && k1 < k2 || i1 < i2};

post := D restrictDomain myIter;
wait := D restrictRange myIter;
enforcedTime := sameP intersection lexPos;
enforcedTime;
enforced := enforcedTime compose D union D compose enforcedTime union enforcedTime;
enforced;
post - enforced;
wait - enforced;