;; simple expressions TEST: X[i] = 3 where 0 <= i < N RESULT: success TEST: X[i] = i where 0 <= i < N RESULT: success TEST: X[i] = i*i where 0 <= i < N RESULT: success TEST: X[i] = i*j where 0 <= i < N and 0 <= j < N RESULT: success TEST: X[i] = i*j where 0 <= i < N and 0 <= j < M RESULT: success TEST: X[i] = X[i] where 0 <= i < N RESULT: success TEST: X[i] = j where 0 <= i < N RESULT: undefined TEST: X[i] = i*j where 0 <= i < N RESULT: undefined TEST: X[j] = X[i] where 0 <= i < N RESULT: undefined TEST: X[i] = X[j] where 0 <= i < N RESULT: undefined TEST: X[i] = i where 0 <= i < X RESULT: wrong TEST: X[i] = i where X <= i < N RESULT: wrong ;; undefined matrices are not errors; they are assumed to be ;; parameters TEST: X[i] = Y[i] where 0 <= i < N RESULT: success TEST: X[i] = X[i,i] where 0 <= i < N RESULT: wrong TEST: X[i] = Y[i]+Y[i,j] where 0 <= i < N and 0 <= j < N RESULT: wrong ;; undefined functions are not errors; they are assumed to be ;; globally defined TEST: X[i] = f(i) where 0 <= i < N RESULT: success TEST: X[i] = f(i) + f(i,i) where 0 <= i < N RESULT: wrong TEST: X[i] = f(i) + f[i] where 0 <= i < N RESULT: wrong ;; when expressions TEST: X[i] = select {3 when i < 2} where 0 <= i < N RESULT: success TEST: X[i] = select {3 when j < 2} where 0 <= i < N RESULT: undefined TEST: X[i] = select {X[i,i] when i < 2} where 0 <= i < N RESULT: wrong TEST: X[i] = select {3 when i < 2 and i > 2} where 0 <= i < N RESULT: success TEST: X[i] = select {3 when j < 2 and i > 2} where 0 <= i < N RESULT: undefined TEST: X[i] = select {X[i,i] when i < 2 and i > 2} where 0 <= i < N RESULT: wrong TEST: X[i] = select {3 when i < 2 or i > 2} where 0 <= i < N RESULT: success TEST: X[i] = select {3 when j < 2 or i > 2} where 0 <= i < N RESULT: undefined TEST: X[i] = select {X[i,i] when i < 2 or i > 2} where 0 <= i < N RESULT: wrong TEST: X[i] = select {3 when ! i < 2} where 0 <= i < N RESULT: success TEST: X[i] = select {3 when ! j < 2} where 0 <= i < N RESULT: undefined TEST: X[i] = select {X[i,i] when ! i < 2} where 0 <= i < N RESULT: wrong TEST: X[i] = sum {3 when i < 2} where 0 <= i < N RESULT: success TEST: X[i] = sum {3 when j < 2} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {X[i,i] when i < 2} where 0 <= i < N RESULT: wrong TEST: X[i] = sum {3 when i < 2 and i > 2} where 0 <= i < N RESULT: success TEST: X[i] = sum {3 when j < 2 and i > 2} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {X[i,i] when i < 2 and i > 2} where 0 <= i < N RESULT: wrong TEST: X[i] = sum {3 when i < 2 or i > 2} where 0 <= i < N RESULT: success TEST: X[i] = sum {3 when j < 2 or i > 2} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {X[i,i] when i < 2 or i > 2} where 0 <= i < N RESULT: wrong TEST: X[i] = sum {3 when ! i < 2} where 0 <= i < N RESULT: success TEST: X[i] = sum {3 when ! j < 2} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {X[i,i] when ! i < 2} where 0 <= i < N RESULT: wrong TEST: X[i] = not_a_buildin {X[i,i] when ! i < 2} where 0 <= i < N RESULT: builtin ;; where expressions TEST: X[i] = sum {k where 0 <= k < i} where 0 <= i < N RESULT: success TEST: X[i] = sum {i where 0 <= k < i} where 0 <= i < N RESULT: success TEST: X[i] = sum {k where 0 <= k < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {i where 0 <= k < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {N where 0 <= k < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {i where 0 <= i < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {i where 0 <= i < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {N where 0 <= i < N} where 0 <= i < N RESULT: success TEST: X[i] = sum {l where 0 <= k < i} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {i where 0 <= k < l} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {k where 0 <= l < N} where 0 <= i < N RESULT: undefined TEST: X[i] = sum {l where 0 <= k < X} where 0 <= i < N RESULT: wrong TEST: X[i] = sum {X where 0 <= k < N} where 0 <= i < N RESULT: wrong ;; FIXME: this probably *shouldn't* be a success (should it?) TEST: X[i] = sum {X where 0 <= X < N} where 0 <= i < N RESULT: success ;; but this should TEST: X[i] = max { sum {k(i,j) where 0 <= j < N }, prod {j(i,k) where 0 <= k < N } } where 0 <= i < N RESULT: success TEST: X[i] = not_a_buildin {X[i,k] where 0 <= k < i } where 0 <= i < N RESULT: builtin