This file is indexed.

/usr/share/gap/pkg/AtlasRep/doc/chap5.html is in gap-atlasrep 1.5.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (AtlasRep) - Chapter 5: Private Extensions of the AtlasRep Package
</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap5"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap4.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap6.html">[Next Chapter]</a>&nbsp;  </div>

<p><a id="X7B33345C7B304697" name="X7B33345C7B304697"></a></p>
<div class="ChapSects"><a href="chap5.html#X7B33345C7B304697">5 <span class="Heading">Private Extensions of the <strong class="pkg">AtlasRep</strong> Package
</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap5.html#X8072E5C9825D6CCE">5.1 <span class="Heading">Adding a Private Data Directory</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap5.html#X825AF58885A48520">5.1-1 AtlasOfGroupRepresentationsNotifyPrivateDirectory</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap5.html#X8748A8BB7C7089EE">5.1-2 AtlasOfGroupRepresentationsForgetPrivateDirectory</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap5.html#X7E186BFA7E59BD47">5.2 <span class="Heading">The Effect of Private Extensions on the User Interface</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap5.html#X7AB60BFC87EAB4C5">5.3 <span class="Heading">An Example of Extending the <strong class="pkg">AtlasRep</strong> Package
</span></a>
</span>
</div>
</div>

<h3>5 <span class="Heading">Private Extensions of the <strong class="pkg">AtlasRep</strong> Package
</span></h3>

<p>It may be interesting to use the functions of the <strong class="pkg">GAP</strong> interface also for representations or programs that are <em>not</em> part of the <strong class="pkg">ATLAS</strong> of Group Representations. This chapter describes how to achieve this.</p>

<p>The main idea is that users can notify directories containing the "private" data files, which may consist of</p>

<ol>
<li><p>new faithful representations and programs for groups that are declared already in the "official" <strong class="pkg">ATLAS</strong> of Group Representations,</p>

</li>
<li><p>the declaration of groups that are not declared in the "official" <strong class="pkg">ATLAS</strong> of Group Representations, and representations and programs for them, and</p>

</li>
<li><p>the definition of new kinds of representations and programs.</p>

</li>
</ol>
<p>The first two issues are dealt with in Section <a href="chap5.html#X8072E5C9825D6CCE"><span class="RefLink">5.1</span></a> and Section <a href="chap5.html#X7E186BFA7E59BD47"><span class="RefLink">5.2</span></a>. The last is described in Section <a href="chap7.html#X7C164C4D7ECE62D0"><span class="RefLink">7.5</span></a>.</p>

<p>Finally, an example of using private extensions is given in Section <a href="chap5.html#X7AB60BFC87EAB4C5"><span class="RefLink">5.3</span></a>.</p>

<p>Several of the sanity checks for the official part of the <strong class="pkg">AtlasRep</strong> package make sense also for private extensions, see Section <a href="chap7.html#X7D42612882656B32"><span class="RefLink">7.8</span></a> for more information.</p>

<p><a id="X8072E5C9825D6CCE" name="X8072E5C9825D6CCE"></a></p>

<h4>5.1 <span class="Heading">Adding a Private Data Directory</span></h4>

<p>After the <strong class="pkg">AtlasRep</strong> package has been loaded into the <strong class="pkg">GAP</strong> session, one can add private data. However, one should <em>not</em> add private files to the local data directories of the package, or modify files in these directories. Instead, additional data should be put into separate directories. It should be noted that a data file is fetched from a server only if the local data directories do not contain a file with this name, independent of the contents of the files. (As a consequence, corrupted files in the local data directories are <em>not</em> automatically replaced by a correct server file.)</p>

<p><a id="X825AF58885A48520" name="X825AF58885A48520"></a></p>

<h5>5.1-1 AtlasOfGroupRepresentationsNotifyPrivateDirectory</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; AtlasOfGroupRepresentationsNotifyPrivateDirectory</code>( <var class="Arg">dir</var>[, <var class="Arg">dirid</var>][, <var class="Arg">test</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: <code class="keyw">true</code> if none of the filenames with admissible format in the directory <var class="Arg">dir</var> is contained in other data directories and if the data belongs to groups whose names have been declared, otherwise <code class="keyw">false</code>.</p>

<p>Let <var class="Arg">dir</var> be a directory (see <a href="../../../doc/ref/chap9.html#X85030B35865A1080"><span class="RefLink">Reference: Directories</span></a>) or a string denoting the name of a directory (such that the <strong class="pkg">GAP</strong> object describing this directory can be obtained by calling <code class="func">Directory</code> (<a href="../../../doc/ref/chap9.html#X86A71E927EEC7EAD"><span class="RefLink">Reference: Directory</span></a>) with the argument <var class="Arg">dir</var>). In the following, let <var class="Arg">dirname</var> be the name of the directory. So <var class="Arg">dirname</var> can be an absolute path or a path relative to the home directory of the user (starting with a tilde character <code class="code">~</code>) or a path relative to the directory where <strong class="pkg">GAP</strong> was started.</p>

<p>If the optional argument <var class="Arg">dirid</var> is given, it must be a string. This value will be used in the <code class="code">identifier</code> components of the records that are returned by interface functions (see Section <a href="chap3.html#X86B07B4387A02B06"><span class="RefLink">3.5</span></a>) for data contained in the directory <var class="Arg">dir</var>. Note that the directory name may be different in different <strong class="pkg">GAP</strong> sessions or for different users who want to access the same data, whereas the <code class="code">identifier</code> components shall be independent of such differences. The default for <var class="Arg">dirid</var> is <var class="Arg">dirname</var>.</p>

<p>If the optional argument <var class="Arg">test</var> is given, it must be <code class="keyw">true</code> or <code class="keyw">false</code>. In the <code class="keyw">true</code> case, consistency checks are switched on while the file <code class="file">toc.g</code> is read. This costs some extra time, but it is recommended after each extension of the file <code class="file">toc.g</code>. The default for <var class="Arg">test</var> is <code class="keyw">false</code>.</p>

<p><code class="func">AtlasOfGroupRepresentationsNotifyPrivateDirectory</code> notifies the data in the directory <var class="Arg">dir</var> to the <strong class="pkg">AtlasRep</strong> package. First the pair <code class="code">[ <var class="Arg">dirname</var>, <var class="Arg">dirid</var> ]</code> is added to the <code class="code">private</code> component of <code class="func">AtlasOfGroupRepresentationsInfo</code> (<a href="chap7.html#X7BEC94A6781E126E"><span class="RefLink">7.1-6</span></a>). If the directory contains a file with the name <code class="file">toc.g</code> then this file is read; this file is useful for adding new group names using <code class="code">AGR.GNAN</code> and for adding describing data about the representations, see Section <a href="chap7.html#X7AD2556F87F1D40D"><span class="RefLink">7.7</span></a>. Next the table of contents of the private directory is built from the list of files contained in the private directory or in its subdirectories (one layer deep).</p>

<p>Only those files are considered whose names match an admissible format (see Section <a href="chap7.html#X7C2562A978319179"><span class="RefLink">7.6</span></a>). Filenames that are already contained in another data directory of the <strong class="pkg">AtlasRep</strong> package are ignored, and messages about these filenames are printed if the info level of <code class="func">InfoAtlasRep</code> (<a href="chap7.html#X8006BE167EB81E16"><span class="RefLink">7.1-1</span></a>) is at least <span class="SimpleMath">1</span>.</p>

<p>Note that this implies that the files of the "official" (i.e. non-private) data directories have priority over files in private directories.</p>

<p>If the directory contains files for groups whose names have not been declared before and if the info level of <code class="func">InfoAtlasRep</code> (<a href="chap7.html#X8006BE167EB81E16"><span class="RefLink">7.1-1</span></a>) is at least <span class="SimpleMath">1</span> then a message about these names is printed.</p>

<p>For convenience, the user may collect the notifications of private data directories in the file <code class="file">gaprc</code> (see Section <a href="../../../doc/ref/chap3.html#X7FD66F977A3B02DF"><span class="RefLink">Reference: The gap.ini and gaprc files</span></a>).</p>

<p><a id="X8748A8BB7C7089EE" name="X8748A8BB7C7089EE"></a></p>

<h5>5.1-2 AtlasOfGroupRepresentationsForgetPrivateDirectory</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; AtlasOfGroupRepresentationsForgetPrivateDirectory</code>( <var class="Arg">dirid</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">dirid</var> is the identifier of a private data directory that has been notified with <code class="func">AtlasOfGroupRepresentationsNotifyPrivateDirectory</code> (<a href="chap5.html#X825AF58885A48520"><span class="RefLink">5.1-1</span></a>) then <code class="func">AtlasOfGroupRepresentationsForgetPrivateDirectory</code> removes the directory from the list of notified private directories; this means that from then on, the data in this directory cannot be accessed anymore in the current session.</p>

<p><a id="X7E186BFA7E59BD47" name="X7E186BFA7E59BD47"></a></p>

<h4>5.2 <span class="Heading">The Effect of Private Extensions on the User Interface</span></h4>

<p>First suppose that only new groups or new data for known groups are added.</p>

<p>In this case, <code class="func">DisplayAtlasInfo</code> (<a href="chap3.html#X79DACFFA7E2D1A99"><span class="RefLink">3.5-1</span></a>) lists the private representations and programs in the same way as the "official" data, except that private parts are marked with the string stored in the component <code class="code">markprivate</code> of <code class="func">AtlasOfGroupRepresentationsInfo</code> (<a href="chap7.html#X7BEC94A6781E126E"><span class="RefLink">7.1-6</span></a>); by default, this is a star <code class="code">*</code>. The ordering of representations listed by <code class="func">DisplayAtlasInfo</code> (<a href="chap3.html#X79DACFFA7E2D1A99"><span class="RefLink">3.5-1</span></a>) (and referred to by <code class="func">AtlasGenerators</code> (<a href="chap3.html#X7D1CCCF8852DFF39"><span class="RefLink">3.5-2</span></a>)) will in general change when private directories are notified. If several private directories are used then the ordering of data may depend on the ordering of notifications. For the other interface functions described in Chapter <a href="chap3.html#X79CC2FC07C77EB2C"><span class="RefLink">3</span></a>, the only difference is that also the private data can be accessed. In particular the "free format" <code class="code"><var class="Arg">groupname</var>G<var class="Arg">i</var>-X<var class="Arg">descr</var>W<var class="Arg">n</var></code> for straight line programs (see Section <a href="chap7.html#X7C2562A978319179"><span class="RefLink">7.6</span></a>) may be used in private directories; the data can be accessed with <code class="func">AtlasProgram</code> (<a href="chap3.html#X801F2E657C8A79ED"><span class="RefLink">3.5-3</span></a>), where the last two arguments are the strings <code class="code">"other"</code> and <var class="Arg">descr</var>.</p>

<p>If also private data types are introduced (see Section <a href="chap7.html#X7C164C4D7ECE62D0"><span class="RefLink">7.5</span></a>) then additional columns or rows can appear in the output of <code class="func">DisplayAtlasInfo</code> (<a href="chap3.html#X79DACFFA7E2D1A99"><span class="RefLink">3.5-1</span></a>), and new inputs can become meaningful for all interface functions. Examples for these changes can be found in Section <a href="chap5.html#X7AB60BFC87EAB4C5"><span class="RefLink">5.3</span></a>.</p>

<p><a id="X7AB60BFC87EAB4C5" name="X7AB60BFC87EAB4C5"></a></p>

<h4>5.3 <span class="Heading">An Example of Extending the <strong class="pkg">AtlasRep</strong> Package
</span></h4>

<p>In the beginning we set the info level of <code class="func">InfoAtlasRep</code> (<a href="chap7.html#X8006BE167EB81E16"><span class="RefLink">7.1-1</span></a>) to <span class="SimpleMath">1</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">level:= InfoLevel( InfoAtlasRep );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetInfoLevel( InfoAtlasRep, 1 );</span>
</pre></div>

<p>Let us assume that the directory <code class="file">privdir</code> contains data for the cyclic group <span class="SimpleMath">C_4</span> of order <span class="SimpleMath">4</span> and for the alternating group <span class="SimpleMath">A_5</span> on <span class="SimpleMath">5</span> points, respectively. Note that it is obvious what the term "standard generators" means for the group <span class="SimpleMath">C_4</span>.</p>

<p>Further let us assume that <code class="file">privdir</code> contains the following files.</p>


<dl>
<dt><strong class="Mark"><code class="file">C4G1-p4B0.m1</code></strong></dt>
<dd><p>a faithful permutation representation of <span class="SimpleMath">C_4</span> on <span class="SimpleMath">4</span> points,</p>

</dd>
<dt><strong class="Mark"><code class="file">C4G1-max1W1</code></strong></dt>
<dd><p>the straight line program that returns the square of its unique input,</p>

</dd>
<dt><strong class="Mark"><code class="file">C4G1-a2W1</code></strong></dt>
<dd><p>the straight line program that raises its unique input to the third power,</p>

</dd>
<dt><strong class="Mark"><code class="file">C4G1-XtestW1</code></strong></dt>
<dd><p>the straight line program that returns the square of its unique input,</p>

</dd>
<dt><strong class="Mark"><code class="file">A5G1-p60B0.m1</code> and <code class="file">A5G1-p60B0.m2</code></strong></dt>
<dd><p>the regular permutation representation of <span class="SimpleMath">A_5</span>.</p>

</dd>
</dl>
<p>The directory and the files can be created as follows.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">prv:= DirectoryTemporary( "privdir" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "C4G1-p4B0.m1" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">               MeatAxeString( [ (1,2,3,4) ], 4 ) );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "C4G1-max1W1" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">               "inp 1\npwr 2 1 2\noup 1 2\n" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "C4G1-XtestW1" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">               "inp 1\npwr 2 1 2\noup 1 2\n" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "C4G1-a2W1" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">               "inp 1\npwr 3 1 2\noup 1 2\n" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "C4G1-Ar1aB0.g" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">               "return rec( generators:= [ [[E(4)]] ] );\n" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">points:= Elements( AlternatingGroup( 5 ) );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "A5G1-p60B0.m1" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">     MeatAxeString( [ Permutation( (1,2)(3,4), points, OnRight ) ], 60 ) );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "A5G1-p60B0.m2" ),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">     MeatAxeString( [ Permutation( (1,3,5), points, OnRight ) ], 60 ) );;</span>
</pre></div>

<p>(We could also introduce intermediate directories <code class="file">C4</code> and <code class="file">A5</code>, say, each with the data for one group only. Here we do not show this because creating directories programmatically seems to be possible only with the <strong class="pkg">GAP</strong> package <strong class="pkg">IO</strong>.)</p>

<p>The official part of the <strong class="pkg">AtlasRep</strong> package does not contain information about <span class="SimpleMath">C_4</span>, so we first notify this group, in the file <code class="file">privdir/toc.g</code>. Besides the name of the group, we store the following information: the group order, the number of (classes of) maximal subgroups, their orders, their structures, and describing data about the two permutation representations. (The group <span class="SimpleMath">A_5</span> is known with name <code class="code">A5</code> in the official part of the <strong class="pkg">AtlasRep</strong> package, so it cannot be notified again.)</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">FileString( Filename( prv, "toc.g" ), Concatenation( [</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.GNAN(\"C4\",\"C4\");\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.GRS(\"C4\",4);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.MXN(\"C4\",1);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.MXO(\"C4\",[2]);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.MXS(\"C4\",[\"C2\"]);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.API(\"C4G1-p4B0\",[1,4,\"imprim\",\"1 &lt; C2\"]);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       "AGR.API(\"A5G1-p60B0\",[1,60,\"imprim\",\"1 &lt; A4\"]);\n",</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">       ] ) );;</span>
</pre></div>

<p>Then we notify the private directory.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasOfGroupRepresentationsNotifyPrivateDirectory( prv, "priv", true );</span>
true
</pre></div>

<p>Now we can use the interface functions for accessing the data in the private directory.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( [ "C4" ] );</span>
group | # | maxes | cl | cyc | out | fnd | chk | prs
------+---+-------+----+-----+-----+-----+-----+----
C4*   | 2 |     1 |    |     |   2 |     |     |    
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "C4" );</span>
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
1: G &lt;= Sym(4)*   rank 4, on cosets of 1 &lt; C2
2: G &lt;= GL(1a,C)* 

Programs for G = C4:    (all refer to std. generators 1)
--------------------
automorphisms:
  2*
maxes (all 1):
  1*:  C2
other scripts:
  "test"*
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "C4", IsPermGroup, true );</span>
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
1: G &lt;= Sym(4)* rank 4, on cosets of 1 &lt; C2
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "C4", IsMatrixGroup );</span>
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
2: G &lt;= GL(1a,C)* 
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "C4", Dimension, 2 );</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "A5", NrMovedPoints, 60 );</span>
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
4: G &lt;= Sym(60)* rank 60, on cosets of 1 &lt; A4
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">info:= OneAtlasGeneratingSetInfo( "C4" );</span>
rec( groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 &lt; C2", standardization := 1, transitivity := 1, 
  type := "perm" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasGenerators( info.identifier );</span>
rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 &lt; C2", standardization := 1, transitivity := 1, 
  type := "perm" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasProgram( "C4", 1 );</span>
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], 
  program := &lt;straight line program&gt;, size := 2, standardization := 1,
  subgroupname := "C2" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasProgram( "C4", "maxes", 1 );</span>
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], 
  program := &lt;straight line program&gt;, size := 2, standardization := 1,
  subgroupname := "C2" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasProgram( "C4", "maxes", 2 );</span>
fail
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasGenerators( "C4", 1 );</span>
rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 &lt; C2", standardization := 1, transitivity := 1, 
  type := "perm" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasGenerators( "C4", 2 );</span>
rec( dim := 1, generators := [ [ [ E(4) ] ] ], groupname := "C4", 
  id := "a", identifier := [ [ "priv", "C4" ], "C4G1-Ar1aB0.g", 1, 1 ]
    , repname := "C4G1-Ar1aB0", repnr := 2, size := 4, 
  standardization := 1, type := "matalg" )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasGenerators( "C4", 3 );</span>
fail
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasProgram( "C4", "other", "test" );</span>
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-XtestW1", 1 ], 
  program := &lt;straight line program&gt;, standardization := 1 )
</pre></div>

<p>We can restrict the data shown by <code class="func">DisplayAtlasInfo</code> (<a href="chap3.html#X79DACFFA7E2D1A99"><span class="RefLink">3.5-1</span></a>) to the private directory, as follows.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">DisplayAtlasInfo( "contents", "priv" );</span>
group                    | # | maxes | cl | cyc | out | fnd | chk | p*
-------------------------+---+-------+----+-----+-----+-----+-----+--*
A5*                      | 1 |       |    |     |     |     |     |  *
C4*                      | 2 |     1 |    |     |   2 |     |     |  *
</pre></div>

<p>For checking the data in the private directory, we apply the relevant sanity checks (see Section <a href="chap7.html#X7D42612882656B32"><span class="RefLink">7.8</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">if not IsBound( AGR.Test ) then</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">     ReadPackage( "atlasrep", "gap/test.g" );</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">   fi;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.Words( "priv" );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.FileHeaders( "priv" );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.Files( "priv" );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.BinaryFormat( "priv" );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.Primitivity( "priv" );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AGR.Test.Characters( "priv" );</span>
true
</pre></div>

<p>Finally, we "uninstall" the private directory, and reset the info level that had been set to <span class="SimpleMath">1</span> in the beginning. (Also the group name <code class="code">C4</code> is removed this way, which is an advantage of using a <code class="file">toc.g</code> file over calling <code class="code">AGRGNAN</code> directly.), Note that we need not remove the data in the temporary directory, <strong class="pkg">GAP</strong> will do this automatically.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">AtlasOfGroupRepresentationsForgetPrivateDirectory( "priv" );</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetInfoLevel( InfoAtlasRep, level );</span>
</pre></div>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap4.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap6.html">[Next Chapter]</a>&nbsp;  </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>