1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This is an automatically generated file. -->
4<Chapter Label="Chapter_Pregroups">
5<Heading>Pregroups</Heading>
6
7<P/>
8 Pregroups are the fundamental building block of pregroup presentations used
9 in the hyperbolicity tester.
10<Section Label="Chapter_Pregroups_Section_Creating_Pregroups">
11<Heading>Creating Pregroups</Heading>
12
13<P/>
14 This section describes functions to create pregroups from multiplication
15 tables, free groups, and free products of finite groups.
16<ManSection Label="PregroupByTableGrp">
17  <Func Arg="enams, table" Name="PregroupByTable" />
18  <Func Arg="arg" Name="PregroupByTableNC" />
19 <Returns>A pregroup
20</Returns>
21 <Description>
22 If <A>enams</A> is a list of element names, which can be arbitrary GAP objects,
23 with the convention that <C>enams[1]</C> is the name of the identity element, and
24 <A>table</A> is a square table of non-negative integers that is the multiplication
25 table of a pregroup, then <Ref Func="PregroupByTable"/> and
26 <Ref Func="PregroupByTableNC"/> return a pregroup in multiplication
27 table representation.
28 <P/>
29 By convention the elements of the pregroup are numbered <C>[1..n]</C> with
30 <C>0</C> denoting an undefined product in the table.
31 <P/>
32 The axioms for a pregroup are checked by <Ref Func="PregroupByTable"/> and
33 not checked by <Ref Func="PregroupByTableNC"/>.
34<Example><![CDATA[
35gap> pregroup := PregroupByTable( "1xyY",
36>                [ [1,2,3,4]
37>                , [2,1,0,0]
38>                , [3,4,0,1]
39>                , [4,0,1,3] ] );
40<pregroup with 4 elements in table rep>
41]]></Example>
42
43
44<P/>
45 </Description>
46</ManSection>
47
48
49<ManSection>
50  <Oper Arg="F, rrel, inv" Name="PregroupByRedRelators" Label="for IsFreeGroup, IsList, IsList"/>
51 <Returns>A pregroup in table representation
52</Returns>
53 <Description>
54 Construct a pregroup from the list <A>rrel</A> of red relators and the list
55 <A>inv</A> of involutions over the free group <A>F</A>.
56 The argument <A>rred</A> has to be a list of elements of length 3 in the
57 free group <A>F</A>, and <A>inv</A> has to be a list of generators of <A>F</A>.
58 </Description>
59</ManSection>
60
61
62<ManSection>
63  <Oper Arg="G, H" Name="PregroupOfFreeProduct" Label="for IsGroup, IsGroup"/>
64 <Description>
65 Construct the pregroup of the free product of <A>G</A> and <A>H</A>.
66 If <A>G</A> and <A>H</A> are finite groups, then
67 <Ref Oper="PregroupOfFreeProduct" Label="for IsGroup, IsGroup"/> returns the pregroup consisting of the
68 non-identity elements of <A>G</A> and <A>H</A> and an identity element.
69 A product between two non-trivial elements is defined if and only if they are
70 in the same group.
71<P/>
72<Example><![CDATA[
73gap> pregroup := PregroupOfFreeProduct(SmallGroup(12,2), SmallGroup(24,4));
74<pregroup with 35 elements in table rep>
75]]></Example>
76
77
78 </Description>
79</ManSection>
80
81
82<ManSection>
83  <Func Arg="F" Name="PregroupOfFreeGroup" />
84 <Description>
85 Return the pregroup of the free group <A>F</A>
86 </Description>
87</ManSection>
88
89
90<P/>
91</Section>
92
93
94<Section Label="Chapter_Pregroups_Section_Filters_and_Representations">
95<Heading>Filters and Representations</Heading>
96
97<P/>
98 This section gives an overview over the filters, categories
99 and representations defined by &walrus;
100<P/>
101<ManSection>
102  <Filt Arg="arg" Name="IsPregroup" Label="for IsObject and IsCollection"/>
103 <Returns><C>true</C> or <C>false</C>
104</Returns>
105 <Description>
106<P/>
107 </Description>
108</ManSection>
109
110
111<ManSection>
112  <Filt Arg="arg" Name="IsPregroupTableRep" Label="for IsPregroup andIsComponentObjectRep andIsAttributeStoringRep"/>
113 <Returns><C>true</C> or <C>false</C>
114</Returns>
115 <Description>
116 A pregroup represented by its multiplication table, which is a
117 square table of integers between 0 and the size of the pregroup,
118 where 0 represents an undefined multiplication.
119 </Description>
120</ManSection>
121
122
123<ManSection>
124  <Filt Arg="arg" Name="IsPregroupOfFreeGroupRep" Label="for IsPregroup andIsComponentObjectRep andIsAttributeStoringRep"/>
125 <Returns><C>true</C> or <C>false</C>
126</Returns>
127 <Description>
128 Pregroup of a free group of rank <M>k</M>. The
129 only defined products are <M>1\cdot x = x \cdot 1 = x</M>
130 and <M>xx^{-1} = x^{-1}x = 1</M>, for all generators <M>x</M>.
131 </Description>
132</ManSection>
133
134
135<ManSection>
136  <Filt Arg="arg" Name="IsPregroupOfFreeProductRep" Label="for IsPregroup andIsComponentObjectRep andIsAttributeStoringRep"/>
137 <Returns><C>true</C> or <C>false</C>
138</Returns>
139 <Description>
140 Pregroup of the free product of a list of groups where
141 products between non-trivial elements <M>g</M>, <M>h</M>
142 are defined if <M>g,h</M> are contained in the same
143 group.
144 </Description>
145</ManSection>
146
147
148</Section>
149
150
151<Section Label="Chapter_Pregroups_Section_Attributes_Properties_and_Operations">
152<Heading>Attributes, Properties, and Operations</Heading>
153
154<P/>
155 This section gives an overview over the attributes, properties,
156 and operatins defined for pregroups.
157<P/>
158<ManSection>
159  <Oper Arg="pregroup,i" Name="[]" Label="for IsPregroup, IsInt"/>
160 <Description>
161 Get the <A>i</A>th element of <A>pregroup</A>. By convention
162 the <M>1</M>st element is the identity element.
163 </Description>
164</ManSection>
165
166
167<ManSection>
168  <Attr Arg="pregroup" Name="IntermultPairs" Label="for IsPregroup"/>
169 <Description>
170Returns the set of intermult pairs of the pregroup
171 </Description>
172</ManSection>
173
174
175<ManSection>
176  <Attr Arg="pregroup" Name="One" Label="for IsPregroup"/>
177 <Description>
178The identity element of <A>pregroup</A>.
179 </Description>
180</ManSection>
181
182
183<ManSection>
184  <Attr Arg="pregroup" Name="MultiplicationTable" Label="for IsPregroup"/>
185 <Description>
186 The multiplication table of <A>pregroup</A>
187 </Description>
188</ManSection>
189
190
191<ManSection>
192  <Oper Arg="pregroup, names" Name="SetPregroupElementNames" Label="for IsPregroup, IsList"/>
193 <Description>
194 Can be used to set more user-friendly display names for
195 the elements of <A>pregroup</A>. The list <A>names</A>
196 has to be of length <C>Size(<A>pregroup</A>)</C>.
197 </Description>
198</ManSection>
199
200
201<ManSection>
202  <Oper Arg="pregroup" Name="PregroupElementNames" Label="for IsPregroup"/>
203 <Description>
204 Return the list of names of elements of <A>pregroup</A>
205 </Description>
206</ManSection>
207
208
209</Section>
210
211
212<Section Label="Chapter_Pregroups_Section_Elements_of_Pregroups">
213<Heading>Elements of Pregroups</Heading>
214
215<P/>
216<ManSection>
217  <Filt Arg="arg" Name="IsElementOfPregroup" Label="for IsMultiplicativeElementWithInverse"/>
218 <Returns><C>true</C> or <C>false</C>
219</Returns>
220 <Description>
221<P/>
222 </Description>
223</ManSection>
224
225
226<ManSection>
227  <Filt Arg="arg" Name="IsElementOfPregroupRep" Label="for IsElementOfPregroup and IsComponentObjectRep"/>
228 <Returns><C>true</C> or <C>false</C>
229</Returns>
230 <Description>
231<P/>
232 </Description>
233</ManSection>
234
235
236<ManSection>
237  <Filt Arg="arg" Name="IsElementOfPregroupOfFreeGroupRep" Label="for IsElementOfPregroup and IsComponentObjectRep"/>
238 <Returns><C>true</C> or <C>false</C>
239</Returns>
240 <Description>
241<P/>
242 </Description>
243</ManSection>
244
245
246<ManSection>
247  <Attr Arg="p" Name="PregroupOf" Label="for IsElementOfPregroup"/>
248 <Description>
249 The pregroup that the element <A>p</A> is contained in.
250 </Description>
251</ManSection>
252
253
254<ManSection>
255  <Oper Arg="p, q" Name="IsDefinedMultiplication" Label="for IsElementOfPregroup, IsElementOfPregroup"/>
256 <Description>
257 Tests whether the multiplication of <A>p</A> and <A>q</A> is
258 defined in the pregroup containing <A>p</A> and <A>q</A>.
259 </Description>
260</ManSection>
261
262
263<ManSection>
264  <Oper Arg="p, q" Name="IsIntermultPair" Label="for IsElementOfPregroup, IsElementOfPregroup"/>
265 <Description>
266 Tests whether <M>(<A>p</A>, <A>q</A>)</M> is an intermult pair.
267 defined.
268 </Description>
269</ManSection>
270
271
272<ManSection>
273  <Attr Arg="p" Name="PregroupInverse" Label="for IsElementOfPregroup"/>
274 <Description>
275 Return the inverse of <A>p</A>.
276 </Description>
277</ManSection>
278
279
280</Section>
281
282
283<Section Label="Chapter_Pregroups_Section_Small_Pregroups">
284<Heading>Small Pregroups</Heading>
285
286 This package contains a small database of pregroups of sizes <M>1</M> to
287 <M>7</M>. The database was computed by Chris Jefferson using the Minion constraint solver.
288 <P/>
289 These small pregroups currently used for testing. Accessing the small
290 pregroups database works as follows.
291<ManSection>
292  <Func Arg="n" Name="NrSmallPregroups" />
293 <Returns>an integer.
294</Returns>
295 <Description>
296 Returns the number of pregroups of size <A>n</A> available in the database.
297 </Description>
298</ManSection>
299
300
301<ManSection>
302  <Func Arg="n, i" Name="SmallPregroup" />
303 <Returns>a pregroup.
304</Returns>
305 <Description>
306 Returns the <A>i</A>th pregroup of size <A>n</A> from the database of small pregroups.
307 </Description>
308</ManSection>
309
310
311</Section>
312
313
314</Chapter>
315
316