[eclipse 1]: Prime = a(2,3,5,7,11), X is Prime[2] + Prime[4].
X = 10
Prime = a(2, 3, 5, 7, 11)
yes.
Within expressions, array elements can be written as variable-indexlist
or structure-indexlist sequences, e.g.
[eclipse]: dim(M,[3,4]), dim(M,D).
M = []([](_131, _132, _133, _134),
[](_126, _127, _128, _129),
[](_121, _122, _123, _124))
D = [3, 4]
yes.
Although
matmult(M1, M2, M3) :-
dim(M1, [MaxIJ,MaxK]),
dim(M2, [MaxK,MaxIJ]),
dim(M3, [MaxIJ,MaxIJ]),
(
for(I,1,MaxIJ),
param(M1,M2,M3,MaxIJ,MaxK)
do
(
for(J,1,MaxIJ),
param(M1,M2,M3,I,MaxK)
do
(
for(K,1,MaxK),
fromto(0,Sum0,Sum1,Sum),
param(M1,M2,I,J)
do
Sum1 is Sum0 + M1[I,K] * M2[K,J]
),
subscript(M3, [I,J], Sum)
)
).
X[3] ---> subscript(X, [3])
M[3,4] ---> subscript(M, [3,4])
s(4,5,6)[3] ---> subscript(s(4,5,6), [3])
If such a term is then used within an arithmetic expression,
a result argument is added and the built-in predicate