Indexed Free Groups#
Free groups and free abelian groups implemented using an indexed set of generators.
AUTHORS:
Travis Scrimshaw (2013-10-16): Initial version
- class sage.groups.indexed_free_group.IndexedFreeAbelianGroup(indices, prefix, category=None, **kwds)[source]#
Bases:
IndexedGroup
,AbelianGroup
An indexed free abelian group.
EXAMPLES:
sage: G = Groups().Commutative().free(index_set=ZZ) sage: G Free abelian group indexed by Integer Ring sage: G = Groups().Commutative().free(index_set='abcde') sage: G Free abelian group indexed by {'a', 'b', 'c', 'd', 'e'}
>>> from sage.all import * >>> G = Groups().Commutative().free(index_set=ZZ) >>> G Free abelian group indexed by Integer Ring >>> G = Groups().Commutative().free(index_set='abcde') >>> G Free abelian group indexed by {'a', 'b', 'c', 'd', 'e'}
- class sage.groups.indexed_free_group.IndexedFreeGroup(indices, prefix, category=None, **kwds)[source]#
Bases:
IndexedGroup
,Group
An indexed free group.
EXAMPLES:
sage: G = Groups().free(index_set=ZZ) sage: G Free group indexed by Integer Ring sage: G = Groups().free(index_set='abcde') sage: G Free group indexed by {'a', 'b', 'c', 'd', 'e'}
>>> from sage.all import * >>> G = Groups().free(index_set=ZZ) >>> G Free group indexed by Integer Ring >>> G = Groups().free(index_set='abcde') >>> G Free group indexed by {'a', 'b', 'c', 'd', 'e'}
- class Element(F, x)[source]#
Bases:
IndexedFreeMonoidElement
- length()[source]#
Return the length of
self
.EXAMPLES:
sage: G = Groups().free(index_set=ZZ) sage: a,b,c,d,e = [G.gen(i) for i in range(5)] sage: elt = a*c^-3*b^-2*a sage: elt.length() 7 sage: len(elt) 7 sage: G = Groups().free(index_set=ZZ) sage: a,b,c,d,e = [G.gen(i) for i in range(5)] sage: elt = a*c^-3*b^-2*a sage: elt.length() 7 sage: len(elt) 7
>>> from sage.all import * >>> G = Groups().free(index_set=ZZ) >>> a,b,c,d,e = [G.gen(i) for i in range(Integer(5))] >>> elt = a*c**-Integer(3)*b**-Integer(2)*a >>> elt.length() 7 >>> len(elt) 7 >>> G = Groups().free(index_set=ZZ) >>> a,b,c,d,e = [G.gen(i) for i in range(Integer(5))] >>> elt = a*c**-Integer(3)*b**-Integer(2)*a >>> elt.length() 7 >>> len(elt) 7
- to_word_list()[source]#
Return
self
as a word represented as a list whose entries are the pairs(i, s)
wherei
is the index ands
is the sign.EXAMPLES:
sage: G = Groups().free(index_set=ZZ) sage: a,b,c,d,e = [G.gen(i) for i in range(5)] sage: x = a*b^2*e*a^-1 sage: x.to_word_list() [(0, 1), (1, 1), (1, 1), (4, 1), (0, -1)]
>>> from sage.all import * >>> G = Groups().free(index_set=ZZ) >>> a,b,c,d,e = [G.gen(i) for i in range(Integer(5))] >>> x = a*b**Integer(2)*e*a**-Integer(1) >>> x.to_word_list() [(0, 1), (1, 1), (1, 1), (4, 1), (0, -1)]
- class sage.groups.indexed_free_group.IndexedGroup(indices, prefix, category=None, names=None, **kwds)[source]#
Bases:
IndexedMonoid
Base class for free (abelian) groups whose generators are indexed by a set.
- gens()[source]#
Return the group generators of
self
.EXAMPLES:
sage: G = Groups.free(index_set=ZZ) sage: G.group_generators() Lazy family (Generator map from Integer Ring to Free group indexed by Integer Ring(i))_{i in Integer Ring} sage: G = Groups().free(index_set='abcde') sage: sorted(G.group_generators()) [F['a'], F['b'], F['c'], F['d'], F['e']]
>>> from sage.all import * >>> G = Groups.free(index_set=ZZ) >>> G.group_generators() Lazy family (Generator map from Integer Ring to Free group indexed by Integer Ring(i))_{i in Integer Ring} >>> G = Groups().free(index_set='abcde') >>> sorted(G.group_generators()) [F['a'], F['b'], F['c'], F['d'], F['e']]
- group_generators()[source]#
Return the group generators of
self
.EXAMPLES:
sage: G = Groups.free(index_set=ZZ) sage: G.group_generators() Lazy family (Generator map from Integer Ring to Free group indexed by Integer Ring(i))_{i in Integer Ring} sage: G = Groups().free(index_set='abcde') sage: sorted(G.group_generators()) [F['a'], F['b'], F['c'], F['d'], F['e']]
>>> from sage.all import * >>> G = Groups.free(index_set=ZZ) >>> G.group_generators() Lazy family (Generator map from Integer Ring to Free group indexed by Integer Ring(i))_{i in Integer Ring} >>> G = Groups().free(index_set='abcde') >>> sorted(G.group_generators()) [F['a'], F['b'], F['c'], F['d'], F['e']]
- order()[source]#
Return the number of elements of
self
, which is \(\infty\) unless this is the trivial group.EXAMPLES:
sage: G = Groups().free(index_set=ZZ) sage: G.order() +Infinity sage: G = Groups().Commutative().free(index_set='abc') sage: G.order() +Infinity sage: G = Groups().Commutative().free(index_set=[]) sage: G.order() 1
>>> from sage.all import * >>> G = Groups().free(index_set=ZZ) >>> G.order() +Infinity >>> G = Groups().Commutative().free(index_set='abc') >>> G.order() +Infinity >>> G = Groups().Commutative().free(index_set=[]) >>> G.order() 1
- rank()[source]#
Return the rank of
self
.This is the number of generators of
self
.EXAMPLES:
sage: G = Groups().free(index_set=ZZ) sage: G.rank() +Infinity sage: G = Groups().free(index_set='abc') sage: G.rank() 3 sage: G = Groups().free(index_set=[]) sage: G.rank() 0
>>> from sage.all import * >>> G = Groups().free(index_set=ZZ) >>> G.rank() +Infinity >>> G = Groups().free(index_set='abc') >>> G.rank() 3 >>> G = Groups().free(index_set=[]) >>> G.rank() 0
sage: G = Groups().Commutative().free(index_set=ZZ) sage: G.rank() +Infinity sage: G = Groups().Commutative().free(index_set='abc') sage: G.rank() 3 sage: G = Groups().Commutative().free(index_set=[]) sage: G.rank() 0
>>> from sage.all import * >>> G = Groups().Commutative().free(index_set=ZZ) >>> G.rank() +Infinity >>> G = Groups().Commutative().free(index_set='abc') >>> G.rank() 3 >>> G = Groups().Commutative().free(index_set=[]) >>> G.rank() 0