Use R ::= Q[x,y,z];
S ::= Z/(3)[a,b];
Ring(S);
Z/(3)[a,b]
-------------------------------
Ring(R);
Q[x,y,z]
-------------------------------
R; -- same as above, as long as there is no variable with identifier
-- R in the working memory
Q[x,y,z]
-------------------------------
CurrentRing();
Q[x,y,z]
-------------------------------
R := 5; -- a variable with identifier R; now there are two objects
-- with the identifier R: a variable and a ring
R;
5
-------------------------------
Memory(); -- the variables of the working memory
["It", "R"]
-------------------------------
RingEnvs(); -- the list of rings
["Q", "Qt", "R", "S", "Z"]
-------------------------------
Ring(R); -- the ring with identifier R
Q[x,y,z]
-------------------------------
|