The basic structure of an element of the free group is a two-row matrix.
The top row is the symbols (1=a, 2=b, 3=c, etc) and the bottom row is
the corresponding power. Thus \(a^2ba^{-1}c^9\) would be
> rbind(c(1,2,1,3),c(2,1,-1,9))
[,1] [,2] [,3] [,4]
[1,] 1 2 1 3
[2,] 2 1 -1 9
>
Function free()
needs either a two-row matrix or a list of
two-row matrices. It is the only place in the package that sets the
class of an object to free
. Function as.free()
is a bit
more user-friendly and tries a bit harder to do the Right Thing.
The package uses setOldClass("free")
for the dot
methods.