To use the bound opt[i][j−1]≤opt[i][j]≤opt[i+1][j], you need both opt[i][j−1] and opt[i+1][j] computed before opt[i][j]. Interval [i,j−1] has length (j−1)−i+1=j−i. Interval [i+1,j] has length j−(i+1)+1=j−i. Both are one shorter than [i,j]'s length of j−i+1.
So process intervals by increasing length: first all length-1 (base cases), then length-2, up to length-n. Each cell's bounds come from the previous length level, which you've already computed.