If ElemSpec is an atom, it must specify a global variable visible from the caller module.
If ElemSpec is a compound term, it must specify a visible array element. all its arguments must be non negative integers smaller than the bounds specified with make_array/1/2 or make_local_array/1/2.
Success: [eclipse]: make_array(a(4), prolog), setval(a(1), -2), incval(a(1)), getval(a(1), X). X = -1 yes. [eclipse]: make_array(g(4), integer), incval(g(1)), getval(g(1), X). X = 1 yes. [eclipse]: setval(count, 0), repeat, writeln(hello), incval(count), getval(count, X), X >= 3, !. hello hello hello X = 3 yes. Error: incval(X). (Error 4). incval(a(2.0)). (Error 5). setval(a, 2.0), incval(a). (Error 5). make_array(a(2), real), incval(a(1)). (Error 5). make_array(a(10), integer), incval(a(-2)). (Error 6). incval(no_array(0)). (Error 41). incval(no_var). (Error 41).