$title 'Check correctness of set attributes for singleton sets' (SINGLE05,SEQ=687) $ontext This test checks that the set attributes for singleton sets are correct. This is done for assignments and in equations, both inside and outside of a loop. Contributor: Lutz Westermann, October 2015 $offtext set i / 1*10 / im(i) / 3 /; singleton set is(i) / 3 /; scalar m,s; * Check set attributes for singleton sets in simple assignments m = sum(im,im.rev); s = is.rev; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.pos); s = is.pos; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.off); s = is.off; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.uel); s = is.uel; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.val); s = is.val; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.len); s = is.len; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.tval); s = is.tval; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.tlen); s = is.tlen; abort$(m<>s) 'Unexpected difference', m, s; * Check set attributes for singleton sets in simple assignments within a loop loop(i, im(im)=no; im(i)=yes; is(i)=yes; m = sum(im,im.rev); s = is.rev; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.pos); s = is.pos; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.off); s = is.off; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.uel); s = is.uel; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.val); s = is.val; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.len); s = is.len; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.tval); s = is.tval; abort$(m<>s) 'Unexpected difference', m, s; m = sum(im,im.tlen); s = is.tlen; abort$(m<>s) 'Unexpected difference', m, s; ); * Check set attributes for singleton sets in equations variable revs, revm poss, posm offs, offm uels, uelm vals, valm lens, lenm tvals,tvalm tlens,tlenm z; equation erevs, erevm eposs, eposm eoffs, eoffm euels, euelm evals, evalm elens, elenm etvals,etvalm etlens,etlenm obj; obj.. z =e= 1; erevs.. revs =e= is.rev; erevm.. revm =e= sum(im,im.rev); eposs.. poss =e= is.pos; eposm.. posm =e= sum(im,im.pos); eoffs.. offs =e= is.off; eoffm.. offm =e= sum(im,im.off); euels.. uels =e= is.uel; euelm.. uelm =e= sum(im,im.uel); evals.. vals =e= is.val; evalm.. valm =e= sum(im,im.val); elens.. lens =e= is.len; elenm.. lenm =e= sum(im,im.len); etvals.. tvals =e= is.tval; etvalm.. tvalm =e= sum(im,im.tval); etlens.. tlens =e= is.tlen; etlenm.. tlenm =e= sum(im,im.tlen); model mymodel /all/; solve mymodel us lp max z; abort$(revs.l<>revm.l) 'Unexpected difference', revs.l, revm.l; abort$(poss.l<>posm.l) 'Unexpected difference', poss.l, posm.l; abort$(offs.l<>offm.l) 'Unexpected difference', offs.l, offm.l; abort$(uels.l<>uelm.l) 'Unexpected difference', uels.l, uelm.l; abort$(vals.l<>valm.l) 'Unexpected difference', vals.l, valm.l; abort$(lens.l<>lenm.l) 'Unexpected difference', lens.l, lenm.l; abort$(tvals.l<>tvalm.l) 'Unexpected difference', tvals.l, tvalm.l; abort$(tlens.l<>tlenm.l) 'Unexpected difference', tlens.l, tlenm.l; * Check set attributes for singleton sets in equations within a loop loop(i, im(im)=no; im(i)=yes; is(i)=yes; solve mymodel us lp max z; abort$(revs.l<>revm.l) 'Unexpected difference', revs.l, revm.l; abort$(poss.l<>posm.l) 'Unexpected difference', poss.l, posm.l; abort$(offs.l<>offm.l) 'Unexpected difference', offs.l, offm.l; abort$(uels.l<>uelm.l) 'Unexpected difference', uels.l, uelm.l; abort$(vals.l<>valm.l) 'Unexpected difference', vals.l, valm.l; abort$(lens.l<>lenm.l) 'Unexpected difference', lens.l, lenm.l; abort$(tvals.l<>tvalm.l) 'Unexpected difference', tvals.l, tvalm.l; abort$(tlens.l<>tlenm.l) 'Unexpected difference', tlens.l, tlenm.l; );