Abelianization of free group elements
abelianize.Rd
Function abelianize()
returns a word that is
equivalent to its argument under assumption of Abelianness. The symbols
are placed in alphabetical order.
Details
Abelianizing a free group element means that the symbols can commute past one another. Abelianization is vectorized.
Function is.abelian()
is trivial: it just checks to see whether
argument x
has its symbols in alphabetical order. It might have
been better to call this abelianized()
.
Package frab presents extensive R-centric functionality for dealing with the free Abelian group. It is much more efficient than this package for Abelian operations, and contains bespoke methods for working with a range of applications such as tables of counts.
Examples
x <- as.free("aabAA")
x
#> [1] a^2.b.a^-2
abelianize(x)
#> [1] b
x <- rfree(10,10,2)
x
#> [1] b^-1.a^-5.b^-9
#> [2] b^5.a^4.b^-6.a^-8.b^-10.a^9
#> [3] b^-5.a^-1.b^-4.a^-5.b^-23.a^-5.b^-7.a^-1
#> [4] b^3.a^15.b^-1.a^13.b^-1
#> [5] a^-5.b^7.a^5.b^-6.a^-6
#> [6] b^-2.a^-3.b^9.a^-11.b^5
#> [7] b^16.a^-17
#> [8] a^4.b^-10.a^-17.b^13
#> [9] b.a^-5.b^7.a^-2.b^-9.a^-3.b^9
#> [10] b^11.a^9.b^3.a^-7.b^-3.a^4.b^-5
abelianize(x)
#> [1] a^-5.b^-10 a^5.b^-11 a^-12.b^-39 a^28.b a^-6.b a^-14.b^12
#> [7] a^-17.b^16 a^-13.b^3 a^-10.b^8 a^6.b^6
abelianize(.[rfree(),rfree()])
#> [1] 0 0 0 0 0 0 0
p <- free(rbind(rep(1:5,4),rep(1:4,5)))
p
#> [1] a.b^2.c^3.d^4.e.a^2.b^3.c^4.d.e^2.a^3.b^4.c.d^2.e^3.a^4.b.c^2.d^3.e^4
abelianize(p)
#> [1] a^10.b^10.c^10.d^10.e^10