Right-Angled Artin Groups¶
A right-angled Artin group (often abbreviated as RAAG) is a group which has a presentation whose only relations are commutators between generators. These are also known as graph groups, since they are (uniquely) encoded by (simple) graphs, or partially commutative groups.
AUTHORS:
Travis Scrimshaw (2013-09-01): Initial version
Travis Scrimshaw (2018-02-05): Made compatible with
ArtinGroup
- class sage.groups.raag.CohomologyRAAG(R, A)[source]¶
Bases:
CombinatorialFreeModule
The cohomology ring of a right-angled Artin group.
The cohomology ring of a right-angled Artin group \(A\), defined by the graph \(G\), with coefficients in a field \(F\) is isomorphic to the exterior algebra of \(F^N\), where \(N\) is the number of vertices in \(G\), modulo the quadratic relations \(e_i \wedge e_j = 0\) if and only if \((i, j)\) is an edge in \(G\). This algebra is sometimes also known as the Cartier-Foata algebra.
REFERENCES:
- class Element[source]¶
Bases:
CohomologyRAAGElement
An element in the cohomology ring of a right-angled Artin group.
- algebra_generators()[source]¶
Return the algebra generators of
self
.EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: H.algebra_generators() Finite family {0: e0, 1: e1, 2: e2, 3: e3}
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> H.algebra_generators() Finite family {0: e0, 1: e1, 2: e2, 3: e3}
- degree_on_basis(I)[source]¶
Return the degree on the basis element
clique
.EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: sorted([H.degree_on_basis(I) for I in H.basis().keys()]) [0, 1, 1, 1, 1, 2, 2]
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> sorted([H.degree_on_basis(I) for I in H.basis().keys()]) [0, 1, 1, 1, 1, 2, 2]
- gen(i)[source]¶
Return the
i
-th standard generator of the algebraself
.This corresponds to the
i
-th vertex in the graph (under a fixed ordering of the vertices).EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: H.gen(0) e0 sage: H.gen(1) e1
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> H.gen(Integer(0)) e0 >>> H.gen(Integer(1)) e1
- gens()[source]¶
Return the generators of
self
(as an algebra).EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: H.gens() (e0, e1, e2, e3)
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> H.gens() (e0, e1, e2, e3)
- ngens()[source]¶
Return the number of algebra generators of
self
.EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: H.ngens() 4
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> H.ngens() 4
- one_basis()[source]¶
Return the basis element indexing \(1\) of
self
.EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: H = A.cohomology() sage: H.one_basis() ()
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> H = A.cohomology() >>> H.one_basis() ()
- class sage.groups.raag.RightAngledArtinGroup(G, names)[source]¶
Bases:
ArtinGroup
The right-angled Artin group defined by a graph \(G\).
Let \(\Gamma = \{V(\Gamma), E(\Gamma)\}\) be a simple graph. A right-angled Artin group (commonly abbreviated as RAAG) is the group
\[A_{\Gamma} = \langle g_v : v \in V(\Gamma) \mid [g_u, g_v] \text{ if } \{u, v\} \notin E(\Gamma) \rangle.\]These are sometimes known as graph groups or partially commutative groups. This RAAG’s contains both free groups, given by the complete graphs, and free abelian groups, given by disjoint vertices.
Warning
This is the opposite convention of some papers.
Right-angled Artin groups contain many remarkable properties and have a very rich structure despite their simple presentation. Here are some known facts:
The word problem is solvable.
They are known to be rigid; that is for any finite simple graphs \(\Delta\) and \(\Gamma\), we have \(A_{\Delta} \cong A_{\Gamma}\) if and only if \(\Delta \cong \Gamma\) [Dro1987].
They embed as a finite index subgroup of a right-angled Coxeter group (which is the same definition as above except with the additional relations \(g_v^2 = 1\) for all \(v \in V(\Gamma)\)).
In [BB1997], it was shown they contain subgroups that satisfy the property \(FP_2\) but are not finitely presented by considering the kernel of \(\phi : A_{\Gamma} \to \ZZ\) by \(g_v \mapsto 1\) (i.e. words of exponent sum 0).
\(A_{\Gamma}\) has a finite \(K(\pi, 1)\) space.
\(A_{\Gamma}\) acts freely and cocompactly on a finite dimensional \(CAT(0)\) space, and so it is biautomatic.
Given an Artin group \(B\) with generators \(s_i\), then any subgroup generated by a collection of \(v_i = s_i^{k_i}\) where \(k_i \geq 2\) is a RAAG where \([v_i, v_j] = 1\) if and only if \([s_i, s_j] = 1\) [CP2001].
The normal forms for RAAG’s in Sage are those described in [VW1994] and gathers commuting groups together.
INPUT:
G
– a graphnames
– string or list of generator names
EXAMPLES:
sage: Gamma = Graph(4) sage: G = RightAngledArtinGroup(Gamma) sage: a,b,c,d = G.gens() sage: a*c*d^4*a^-3*b v0^-2*v1*v2*v3^4 sage: Gamma = graphs.CompleteGraph(4) sage: G = RightAngledArtinGroup(Gamma) sage: a,b,c,d = G.gens() sage: a*c*d^4*a^-3*b v0*v2*v3^4*v0^-3*v1 sage: Gamma = graphs.CycleGraph(5) sage: G = RightAngledArtinGroup(Gamma) sage: G Right-angled Artin group of Cycle graph sage: a,b,c,d,e = G.gens() sage: d*b*a*d v1*v3^2*v0 sage: e^-1*c*b*e*b^-1*c^-4 v2^-3
>>> from sage.all import * >>> Gamma = Graph(Integer(4)) >>> G = RightAngledArtinGroup(Gamma) >>> a,b,c,d = G.gens() >>> a*c*d**Integer(4)*a**-Integer(3)*b v0^-2*v1*v2*v3^4 >>> Gamma = graphs.CompleteGraph(Integer(4)) >>> G = RightAngledArtinGroup(Gamma) >>> a,b,c,d = G.gens() >>> a*c*d**Integer(4)*a**-Integer(3)*b v0*v2*v3^4*v0^-3*v1 >>> Gamma = graphs.CycleGraph(Integer(5)) >>> G = RightAngledArtinGroup(Gamma) >>> G Right-angled Artin group of Cycle graph >>> a,b,c,d,e = G.gens() >>> d*b*a*d v1*v3^2*v0 >>> e**-Integer(1)*c*b*e*b**-Integer(1)*c**-Integer(4) v2^-3
We create the previous example but with different variable names:
sage: G.<a,b,c,d,e> = RightAngledArtinGroup(Gamma) sage: G Right-angled Artin group of Cycle graph sage: d*b*a*d b*d^2*a sage: e^-1*c*b*e*b^-1*c^-4 c^-3
>>> from sage.all import * >>> G = RightAngledArtinGroup(Gamma, names=('a', 'b', 'c', 'd', 'e',)); (a, b, c, d, e,) = G._first_ngens(5) >>> G Right-angled Artin group of Cycle graph >>> d*b*a*d b*d^2*a >>> e**-Integer(1)*c*b*e*b**-Integer(1)*c**-Integer(4) c^-3
REFERENCES:
- class Element(parent, lst)[source]¶
Bases:
ArtinGroupElement
An element of a right-angled Artin group (RAAG).
Elements of RAAGs are modeled as lists of pairs
[i, p]
wherei
is the index of a vertex in the defining graph (with some fixed order of the vertices) andp
is the power.
- cohomology(F=None)[source]¶
Return the cohomology ring of
self
over the fieldF
.EXAMPLES:
sage: C4 = graphs.CycleGraph(4) sage: A = groups.misc.RightAngledArtin(C4) sage: A.cohomology() Cohomology ring of Right-angled Artin group of Cycle graph with coefficients in Rational Field
>>> from sage.all import * >>> C4 = graphs.CycleGraph(Integer(4)) >>> A = groups.misc.RightAngledArtin(C4) >>> A.cohomology() Cohomology ring of Right-angled Artin group of Cycle graph with coefficients in Rational Field
- gen(i)[source]¶
Return the
i
-th generator ofself
.EXAMPLES:
sage: Gamma = graphs.CycleGraph(5) sage: G = RightAngledArtinGroup(Gamma) sage: G.gen(2) v2
>>> from sage.all import * >>> Gamma = graphs.CycleGraph(Integer(5)) >>> G = RightAngledArtinGroup(Gamma) >>> G.gen(Integer(2)) v2
- gens()[source]¶
Return the generators of
self
.EXAMPLES:
sage: Gamma = graphs.CycleGraph(5) sage: G = RightAngledArtinGroup(Gamma) sage: G.gens() (v0, v1, v2, v3, v4) sage: Gamma = Graph([('x', 'y'), ('y', 'zeta')]) sage: G = RightAngledArtinGroup(Gamma) sage: G.gens() (vx, vy, vzeta)
>>> from sage.all import * >>> Gamma = graphs.CycleGraph(Integer(5)) >>> G = RightAngledArtinGroup(Gamma) >>> G.gens() (v0, v1, v2, v3, v4) >>> Gamma = Graph([('x', 'y'), ('y', 'zeta')]) >>> G = RightAngledArtinGroup(Gamma) >>> G.gens() (vx, vy, vzeta)
- graph()[source]¶
Return the defining graph of
self
.EXAMPLES:
sage: Gamma = graphs.CycleGraph(5) sage: G = RightAngledArtinGroup(Gamma) sage: G.graph() Cycle graph: Graph on 5 vertices
>>> from sage.all import * >>> Gamma = graphs.CycleGraph(Integer(5)) >>> G = RightAngledArtinGroup(Gamma) >>> G.graph() Cycle graph: Graph on 5 vertices
- ngens()[source]¶
Return the number of generators of
self
.EXAMPLES:
sage: Gamma = graphs.CycleGraph(5) sage: G = RightAngledArtinGroup(Gamma) sage: G.ngens() 5
>>> from sage.all import * >>> Gamma = graphs.CycleGraph(Integer(5)) >>> G = RightAngledArtinGroup(Gamma) >>> G.ngens() 5