up
previous
next
Working Memory
The *working memory* consists of all variables except those defined
with the prefix MEMORY
, e.g. MEMORY.X
. All variables in the
working memory are accessible from all rings, but they are not
accessible from within a user-define function (see examples in the
next section). The function Memory
displays the contents of the
working memory. More information is provided by Describe Memory()
.
Ring-dependent variables such as those containing polynomials, ideals,
or modules, are labeled by their corresponding rings. If the ring of
a ring-dependent variable in the working memory is destroyed, the
variable will continue to exist, but labeled by a ring automatically
generated by CoCoA. Once all variables dependent on this new ring
cease to exist, so does the ring.
example
Use R ::= Q[x,y,z];
Memory(); -- the working memory is empty
[ ]
-------------------------------
I:= Ideal(xy-z^3,x^2-yz);
X := 3;
M := Mat([[1,2],[3,4]]);
Memory();
["I", "It", "M", "X"]
-------------------------------
Describe Memory();
------------[Memory]-----------
I = Ideal(-z^3 + xy, x^2 - yz)
It = ["I", "It", "M", "X"]
M = Mat[
[1, 2],
[3, 4]
]
X = 3
-------------------------------
Use S ::= Z/(3)[t]; -- switch to a different ring
X := t^2+t+1; -- the identifier X is used again
Y := 7;
Describe Memory(); -- note that I is labeled by its ring
------------[Memory]-----------
I = R :: Ideal(-z^3 + xy, x^2 - yz)
It = ["I", "It", "M", "X"]
M = Mat[
[1, 2],
[3, 4]
]
X = t^2 + t + 1
Y = 7
-------------------------------
GBasis(I); -- The Groebner basis for the ideal in R can be calculated
-- even though the current ring is S.
[R :: x^2 - yz, R :: -z^3 + xy]
-------------------------------
M^2;
Mat[
[7, 10],
[15, 22]
]
-------------------------------
Use R ::= Q[s,t]; -- redefine the ring R
I; -- Note that I is labeled by a new ring, automatically produced by
-- CoCoA. This ring will automatically cease to exist when there
-- are no longer variables dependent upon it, as shown below.
R#17 :: Ideal(-z^3 + xy, x^2 - yz)
-------------------------------
RingEnvs();
["Q", "Qt", "R", "R#17", "S", "Z"]
-------------------------------
I:=3; -- I is overwritten with an integer, and since it is the only
-- variable dependent on R#17, the ring R#17 ceases to exist.
RingEnvs(); -- Since the only variable that was dependent upon the
-- temporary ring "R#17" was overwritten, that ring is
-- destroyed.
["Q", "Qt", "R", "S", "Z"]
-------------------------------