Learn R Programming

The free group in R

Overview

The freegroup package provides functionality for working with the free group in R. A detailed vignette is provided in the package. Informally, the free group is the set of words that are objects like , with a group operation of string juxtaposition. Usually one works only with words that are in ``reduced form’’, which has successive powers of the same symbol combined, so would be equal to ; see how appears to the third power and the term in the middle has vanished.

The group operation of juxtaposition is formally indicated by , but this is often omitted in algebraic notation; thus, for example .

Installation

You can install the released version of freegroup from CRAN with:

# install.packages("freegroup")  # uncomment this to install the package
library("freegroup")

The freegroup package in use

Function rfree() generates a vector of random free group elements, giving quick “get you going” examples:

a <- rfree(10,5)
a
#>  [1] a.d^5.a^-4.b^5.e^-3 a.e^2.b^2           a^3.e^-7.b^-3      
#>  [4] b^7.d^4             a^2.b^-4.c^-4       a^-5.d^3.c^3       
#>  [7] d^-5.e^-1.d^-5.e^3  c.b^-7.c^4.b^-5     c^6.e^2            
#> [10] e^-3.d^5.a^-5
b <- as.free('x')

Then we can perform various operations on these vectors:

a+b
#>  [1] a.d^5.a^-4.b^5.e^-3.x a.e^2.b^2.x           a^3.e^-7.b^-3.x      
#>  [4] b^7.d^4.x             a^2.b^-4.c^-4.x       a^-5.d^3.c^3.x       
#>  [7] d^-5.e^-1.d^-5.e^3.x  c.b^-7.c^4.b^-5.x     c^6.e^2.x            
#> [10] e^-3.d^5.a^-5.x
a-b
#>  [1] a.d^5.a^-4.b^5.e^-3.x^-1 a.e^2.b^2.x^-1           a^3.e^-7.b^-3.x^-1      
#>  [4] b^7.d^4.x^-1             a^2.b^-4.c^-4.x^-1       a^-5.d^3.c^3.x^-1       
#>  [7] d^-5.e^-1.d^-5.e^3.x^-1  c.b^-7.c^4.b^-5.x^-1     c^6.e^2.x^-1            
#> [10] e^-3.d^5.a^-5.x^-1
a^b
#>  [1] x^-1.a.d^5.a^-4.b^5.e^-3.x x^-1.a.e^2.b^2.x          
#>  [3] x^-1.a^3.e^-7.b^-3.x       x^-1.b^7.d^4.x            
#>  [5] x^-1.a^2.b^-4.c^-4.x       x^-1.a^-5.d^3.c^3.x       
#>  [7] x^-1.d^-5.e^-1.d^-5.e^3.x  x^-1.c.b^-7.c^4.b^-5.x    
#>  [9] x^-1.c^6.e^2.x             x^-1.e^-3.d^5.a^-5.x

There are a number of package functions that work in a vectorized way:

sum(a)
#> [1] a.d^5.a^-4.b^5.e^-3.a.e^2.b^2.a^3.e^-7.b^4.d^4.a^2.b^-4.c^-4.a^-5.d^3.c^3.d^-5.e^-1.d^-5.e^3.c.b^-7.c^4.b^-5.c^6.e^-1.d^5.a^-5

The package also supports extraction and replacement:

a[3:9] <- as.free('xy')
a
#>  [1] a.d^5.a^-4.b^5.e^-3 a.e^2.b^2           x.y                
#>  [4] x.y                 x.y                 x.y                
#>  [7] x.y                 x.y                 x.y                
#> [10] e^-3.d^5.a^-5

Various simple elements can be created:

alpha(1:10)
#>  [1] a b c d e f g h i j
abc(1:5)
#> [1] a         a.b       a.b.c     a.b.c.d   a.b.c.d.e

References

Further information

For more detail, see the package vignette

vignette("freegroup")

Copy Link

Version

Install

install.packages('freegroup')

Monthly Downloads

413

Version

1.2-1-1

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Robin K S Hankin

Last Published

August 21st, 2026

Functions in freegroup (1.2-1-1)

cumsum

Cumulative sum
c

Concatenation of free objects
cycred

Cyclic reductions of a word
Extract

Extract or replace parts of a free group object
Ops.free

Arithmetic Ops methods for the free group
alpha

Alphabetical free group elements
char_to_free

Convert character vectors to free objects
backwards

Write free objects backwards
abelianize

Abelianization of free group elements
abs.free

Absolute value of a free object
identity

The identity element
getlet

Get letters of a freegroup object
freegroup-package

tools:::Rd_package_title("freegroup")
keep

Keep or drop symbols
free

Objects of class free
dot-class

Class “dot”
primitive

Primitive elements of the free algebra
nielsen

Outer automorphisms of the free group
print

Print free objects
donames

Names attributes of free group elements
reduce

Reduction of a word to reduced form
size

Bignesses of a free object
shift

Permute elements of a vector in a cycle
rfree

Random free objects
sum

Repeated summation by concatenation
subs

Substitute and invert symbols
tietze

Tietze form for free group objects