fmod ARRAY is sorts Array Index Data . op _[_] : Array Index -> Data . op _[_/_] : Array Data Index -> Array . var A : Array . vars I J : Index . var D : Data . *** For reductions only vars I1 I2 I3 : Index . vars D1 D2 : Data . eq A[D / I][I] = D . eq A[D / I][J] = A[J] [owise] . endfm *** Change element I1 to value D1, and *** change element I2 to value D2, then *** look up I1 - it should be D1 red A[D1 / I1][D2 / I2][I1] . *** Make the same changes and then look *** up I2 - it should be D2 red A[D1 / I1][D2 / I2][I2] . *** Same changes, but look up I3 (not *** changed) - it should be A[I3] red A[D1 / I1][D2 / I2][I3] .