R:=Dom::IntegerMod(18);
S:=Dom::DistributedPolynomial([X,Y],R); // S=R[X,Y]
S(2*X+9*Y)*S(9*X+2*Y); // Sの元として (2X+9Y)(9X+2Y) を計算
-5 X Y
面白いのは、MuPAD の内部で poly(X,[X,Y],R)と Sの元としての Xとが異なることです。
R:=Dom::IntegerMod(18);
S:=Dom::DistributedPolynomial([X,Y],R); // S=R[X,Y]
p:=poly(X,[X,Y],R);
p+S(X);
FAIL // pに S(X) は足せない。
S(p)+S(X); // p にも Sをつけてやれば成功する。
2 X