CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
<Section><Heading>Face Lattice and Resolution</Heading>
2
3
For Bieberbach groups (torsion free crystallographic groups), the following
4
functions calcualte free resolutions. This calculation is done by finding a
5
fundamental domain for the group.
6
7
For a description of the <K>HapResolution</K> datatype, see the
8
<Package>Hap</Package> data types documentation or the experimental datatypes
9
documentation <Ref Label="Resolutions in Hap" BookName="HAPprog"/>
10
11
<ManSection>
12
<Meth Name="ResolutionBieberbachGroup" Arg="G [v]"/>
13
<Returns>a <K>HAPresolution</K></Returns>
14
<Description>
15
Let <Arg>G</Arg> be a Bieberbach group given as an
16
<K>AffineCrystGroupOnRight</K> and <A>v</A> a vector. Then a Dirichlet domain
17
with respect to <A>v</A> is calculated using
18
<Ref Meth="FundamentalDomainBieberbachGroup"/>. From this domain, a
19
resolution is calculated using
20
<Ref Meth="FaceLatticeAndBoundaryBieberbachGroup"/> and
21
<Ref Meth="ResolutionFromFLandBoundary"/>. If <A>v</A> is not given, the
22
origin is used.
23
</Description>
24
</ManSection>
25
26
<Example><![CDATA[
27
gap> R:=ResolutionBieberbachGroup(SpaceGroup(3,9));
28
Resolution of length 3 in characteristic
29
0 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .
30
No contracting homotopy available.
31
32
gap> List([0..3],Dimension(R));
33
[ 1, 3, 3, 1 ]
34
gap> R:=ResolutionBieberbachGroup(SpaceGroup(3,9),[1/2,0,0]);
35
Resolution of length 3 in characteristic
36
0 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .
37
No contracting homotopy available.
38
39
gap> List([0..3],Dimension(R));
40
[ 6, 12, 7, 1 ]
41
]]>
42
</Example>
43
44
<ManSection>
45
<Meth Name="FaceLatticeAndBoundaryBieberbachGroup" Arg="poly, group"/>
46
<Returns> Record with entries <K>.hasse</K> and <K>.elts</K>
47
representing a part of the hasse diagram and a lookup table of group
48
elements</Returns>
49
<Description>
50
Let <A>group</A> be a torsion free <K>AffineCrystGroupOnRight</K> (that
51
is, a Bieberbach group).
52
Given a <K>PolymakeObject</K> <A>poly</A> representing a fundamental
53
domain for <A>group</A>, this method uses <Package>polymaking</Package>
54
to calculate the face lattice of <A>poly</A>.
55
From the set of faces, a system of representatives for <A>group</A>-
56
orbits is chosen. For each representative, the boundary is then
57
calculated. The list <K>.elts</K> contains elements of <A>group</A> (in
58
fact, it is even a set). The structure of the returned list
59
<K>.hasse</K> is as follows:
60
<List>
61
<Item>The <M>i</M>-th entry contains a system of representatives
62
for the <M>i-1</M> dimensional faces of <A>poly</A>.
63
</Item>
64
<Item>Each face is represented by a pair of lists
65
<C>[vertices,boundary]</C>. The list of integers
66
<C>vertices</C> represents the vertices of
67
<A>poly</A> which are contained in this face. The enumeration
68
is chosen such that an <C>i</C> in the list represents the
69
<M>i</M>-th entry of the list
70
<C>Polymake(poly,"VERTICES");</C>
71
</Item>
72
<Item> The list <C>boundary</C> represents the boundary of
73
the respective face. It is a list of pairs of integers
74
<C>[j,g]</C>. The first entry lies between <M>-n</M> and
75
<M>n</M>, where <M>n</M> is the number of faces of dimension
76
<M>i-1</M>. This entry represents a face of dimension
77
<M>i-1</M> (or its additive inverse as a module generator).
78
The second entry <C>g</C> is the position of the matrix in
79
<K>.elts</K>.
80
</Item>
81
</List>
82
This representation is compatible with the representation of free
83
<M>\Z G</M> modules in <Package>Hap</Package> and this method essentially
84
calculates a free resolution of <A>group</A>. If the value of
85
<Ref InfoClass="InfoHAPcryst" /> is 2 or more, additional information about
86
the number of faces in every codimension, the number of orbits of the group
87
on the free module generated by those faces, and the time it took to
88
calculate the orbit decomposition is output.
89
</Description>
90
</ManSection>
91
92
<Example><![CDATA[
93
gap> SetInfoLevel(InfoHAPcryst,2);
94
gap> G:=SpaceGroup(3,165);
95
SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )
96
gap> fd:=FundamentalDomainBieberbachGroup(G);
97
<polymake object>
98
gap> fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;
99
#I 1(4/8): 0:00:00.004
100
#I 2(5/18): 0:00:00.000
101
#I 3(2/12): 0:00:00.000
102
#I Face lattice done ( 0:00:00.004). Calculating boundary
103
#I done ( 0:00:00.004) Reformating...
104
gap> RecNames(fl);
105
[ "hasse", "elts", "groupring" ]
106
gap> fl.groupring;
107
<free left module over Integers, and ring-with-one, with 10 generators>
108
]]></Example>
109
110
111
<ManSection>
112
<Meth Name="ResolutionFromFLandBoundary" Arg="fl group"/>
113
<Returns>Free resolution</Returns>
114
<Description>
115
If <A>fl</A> is the record output by <Ref
116
Meth="FaceLatticeAndBoundaryBieberbachGroup"/> and <A>group</A> is
117
the corresponding group, this function returns a <K>HapResolution</K>.
118
119
Of course, <A>fl</A> has to be generated from a fundamental domain
120
for <A>group</A>
121
</Description>
122
</ManSection>
123
124
<Example><![CDATA[
125
gap> G:=SpaceGroup(3,165);
126
SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )
127
gap> fd:=FundamentalDomainBieberbachGroup(G);
128
<polymake object>
129
gap> fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;
130
gap> ResolutionFromFLandBoundary(fl,G);
131
Resolution of length 3 in characteristic
132
0 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .
133
No contracting homotopy available.
134
135
gap> ResolutionFromFLandBoundary(fl,G);
136
Resolution of length 3 in characteristic
137
0 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .
138
No contracting homotopy available.
139
140
gap> List([0..4],Dimension(last));
141
[ 2, 5, 4, 1, 0 ]
142
]]></Example>
143
144
</Section>
145