This file is indexed.

/usr/share/gap/doc/ref/chap84.html is in gap-doc 4r6p5-3.

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
<?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 (ref) - Chapter 84: Interface to the GAP Help System</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="chap84"  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="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</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="chap83.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap85.html">[Next Chapter]</a>&nbsp;  </div>

<p id="mathjaxlink" class="pcenter"><a href="chap84_mj.html">[MathJax on]</a></p>
<p><a id="X79A6CE6C86A976AE" name="X79A6CE6C86A976AE"></a></p>
<div class="ChapSects"><a href="chap84.html#X79A6CE6C86A976AE">84 <span class="Heading">Interface to the GAP Help System</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap84.html#X7AFEAB6B84387635">84.1 <span class="Heading">Installing and Removing a Help Book</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap84.html#X7CD0B8507A3D231D">84.1-1 HELP_ADD_BOOK</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap84.html#X7BDEB25D7AFC4322">84.1-2 HELP_REMOVE_BOOK</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap84.html#X8713EEAE840CEDA3">84.2 <span class="Heading">The manual.six File</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap84.html#X7AD7541E7C30D5B3">84.3 <span class="Heading">The Help Book Handler</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap84.html#X861927BF822FB162">84.4 <span class="Heading">Introducing new Viewer for the Online Help</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap84.html#X84B011847A4D90F0">84.4-1 HELP_VIEWER_INFO</a></span>
</div></div>
</div>

<h3>84 <span class="Heading">Interface to the GAP Help System</span></h3>

<p>In this chapter we describe which information the help system needs about a manual book and how to tell it this information. The code which implements this interface can be found in <code class="file">lib/helpbase.gi</code>.</p>

<p>If you are intending to use a documentation format that is already used by some other help book you probably don't need to know anything from this chapter. However, if you want to create a new format and make it available to <strong class="pkg">GAP</strong> then hopefully you will find the necessary information here.</p>

<p>The basic idea of the help system is as follows: One tells <strong class="pkg">GAP</strong> a directory which contains a file <code class="file">manual.six</code>, see <a href="chap84.html#X7AFEAB6B84387635"><span class="RefLink">84.1</span></a>. When the <strong class="pkg">GAP</strong> help is asked something about this book it reads in some basic information from the file <code class="file">manual.six</code>: strings like section headers, function names, and index entries to be searched by the online help; information about the available formats of this book like text, html, dvi, and pdf; the actual files containing the documentation, corresponding section numbers, and page numbers: and so on. See <a href="chap84.html#X8713EEAE840CEDA3"><span class="RefLink">84.2</span></a> for a description of the format of the <code class="file">manual.six</code> file.</p>

<p>It turns out that there is almost no restriction on the format of the <code class="file">manual.six</code> file, except that it must provide a string, say <code class="code">"myownformat"</code> which identifies the format of the help book. Then the basic actions on a help book are delegated by the help system to handler functions stored in a record <code class="code">HELP_BOOK_HANDLER.myownformat</code>. See <a href="chap84.html#X7AD7541E7C30D5B3"><span class="RefLink">84.3</span></a> for information which functions must be provided by the handler and what they are supposed to do. The main work to teach <strong class="pkg">GAP</strong> to use a new document format is to write these handler functions and to produce an appropriate <code class="file">manual.six</code> file.</p>

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

<h4>84.1 <span class="Heading">Installing and Removing a Help Book</span></h4>

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

<h5>84.1-1 HELP_ADD_BOOK</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HELP_ADD_BOOK</code>( <var class="Arg">short</var>, <var class="Arg">long</var>, <var class="Arg">dir</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>This command tells <strong class="pkg">GAP</strong> that in directory <var class="Arg">dir</var> (given as either a string describing the path relative to the <strong class="pkg">GAP</strong> root directory <code class="code">GAPInfo.RootPaths[1]</code> or as directory object) contains the basic information about a help book. The string <var class="Arg">short</var> is used as an identifying name for that book by the online help. The string <var class="Arg">long</var> should be a short explanation of the content of the book. Both strings together should easily fit on a line, since they are displayed with <code class="code">?books</code>.</p>

<p>It is possible to reinstall a book with different strings <var class="Arg">short</var>, <var class="Arg">long</var>; (for example, documentation of a not-loaded <strong class="pkg">GAP</strong> package indicates this in the string <var class="Arg">short</var> and if you later load the package, <strong class="pkg">GAP</strong> quietly changes the string <var class="Arg">short</var> as it reinstalls its documentation).</p>

<p>The only condition necessary to make the installation of a book <em>valid</em> is that the directory <var class="Arg">dir</var> must contain a file <code class="file">manual.six</code>. The next section explains how this file must look.</p>

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

<h5>84.1-2 HELP_REMOVE_BOOK</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HELP_REMOVE_BOOK</code>( <var class="Arg">short</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>This command tells <strong class="pkg">GAP</strong> not to use the help book with identifying name <var class="Arg">short</var> any more. The book can be re-installed using <code class="func">HELP_ADD_BOOK</code> (<a href="chap84.html#X7CD0B8507A3D231D"><span class="RefLink">84.1-1</span></a>).</p>

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

<h4>84.2 <span class="Heading">The manual.six File</span></h4>

<p>If a <code class="file">manual.six</code> file for a help book is not in the format of the <code class="file">gapmacro.tex</code> macros, explained in the document "The gapmacro.tex Manual Format" (see the file <code class="file">gap4r5/doc/gapmacrodoc.pdf</code> from the tools archive <code class="code">etc/tools.tar.gz</code> which should be unpacked using the script <code class="file">etc/install-tools.sh</code>), the first non-empty line of <code class="file">manual.six</code> must be of the form</p>

<p><code class="code">#SIXFORMAT</code> <var class="Arg">myownformat</var></p>

<p>where <var class="Arg">myownformat</var> is an identifying string for this format. The reading of the (remainder of the) file is then delegated to the function <code class="code">HELP_BOOK_HANDLER.<var class="Arg">myownformat</var>.ReadSix</code> which must exist. Thus there are no further regulations for the format of the <code class="file">manual.six</code> file, other that what you yourself impose. If such a line is missing then it is assumed that the <code class="file">manual.six</code> file complies with the <code class="file">gapmacro.tex</code> documentation format which is the <code class="code">default</code> format.</p>

<p>Section <a href="chap84.html#X7AD7541E7C30D5B3"><span class="RefLink">84.3</span></a> explains how the return value of <code class="code">HELP_BOOK_HANDLER.<var class="Arg">myownformat</var>.ReadSix</code> should look like and which further function should be contained in <code class="code">HELP_BOOK_HANDLER.<var class="Arg">myownformat</var></code>.</p>

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

<h4>84.3 <span class="Heading">The Help Book Handler</span></h4>

<p>For each document format <var class="Arg">myownformat</var> there must be a record <code class="code">HELP_BOOK_HANDLER.<var class="Arg">myownformat</var></code> of functions with the following names and functionality.</p>

<p>An implementation example of such a set of handler functions is the <code class="code">default</code> format, which is the format name used for the <code class="file">gapmacro.tex</code> documentation format, and this is contained in the file <code class="file">lib/helpdef.gi</code>.</p>

<p>The package <strong class="pkg">GAPDoc</strong> (see Chapter <a href="../../pkg/gapdoc/doc/chap1.html#X7D4EE663818DA109"><span class="RefLink">GAPDoc: Introduction and Example</span></a>) also defines a format (as it should) which is called: <code class="code">GapDocGAP</code> (the case <em>is</em> significant).</p>

<p>As you can see by the above two examples, the name for a document format can be anything, but it should be in some way meaningful.</p>


<dl>
<dt><strong class="Mark">
<code class="code">ReadSix( <var class="Arg">stream</var> )</code></strong></dt>
<dd><p>For an input text stream <var class="Arg">stream</var> to a <code class="file">manual.six</code> file, this must return a record <var class="Arg">info</var> which has at least the following two components: <code class="code">bookname</code> which is the short identifying name of the help book, and <code class="code">entries</code>. Here <var class="Arg">info</var><code class="code">.entries</code> must be a list with one entry per search string (which can be a section header, function name, index entry, or whatever seems sensible to be searched for matching a help query). A <em>match</em> for the <strong class="pkg">GAP</strong> help is a pair (<var class="Arg">info</var>, <var class="Arg">i</var>) where <var class="Arg">i</var> refers to an index for the list <var class="Arg">info</var><code class="code">.entries</code> and this corresponds to a certain position in the document. There is one further regulation for the format of the entries of <var class="Arg">info</var><code class="code">.entries</code>. They must be lists and the first element of such a list must be a string which is printed by <strong class="pkg">GAP</strong> for example when several matches are found for a query (so it should essentially be the string which is searched for the match, except that it may contain upper and lower case letters or some markup). There may be other components in <var class="Arg">info</var> which are needed by the functions below, but their names and formats are not prescribed. The <var class="Arg">stream</var> argument is typically generated using <code class="func">InputTextFile</code> (<a href="chap10.html#X8343D04981128784"><span class="RefLink">10.5-1</span></a>), e.g.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">dirs := DirectoriesLibrary( "doc/ref" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">file := Filename( dirs, "manual.six" );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">stream := InputTextFile( file );;</span>
</pre></div>

</dd>
<dt><strong class="Mark"><code class="code">ShowChapters( <var class="Arg">info</var> )</code> </strong></dt>
<dd><p>This must return a text string or list of text lines which contains the chapter headers of the book <var class="Arg">info</var><code class="code">.bookname</code>.</p>

</dd>
<dt><strong class="Mark"><code class="code">ShowSection( <var class="Arg">info</var> )</code> </strong></dt>
<dd><p>This must return a text string or list of text lines which contains the section (and chapter) headers of the book <var class="Arg">info</var><code class="code">.bookname</code>.</p>

</dd>
<dt><strong class="Mark"><code class="code">SearchMatches( <var class="Arg">info</var>, <var class="Arg">topic</var>, <var class="Arg">frombegin</var> )</code> </strong></dt>
<dd><p>This function must return a list of indices of <var class="Arg">info</var><code class="code">.entries</code> for entries which match the search string <var class="Arg">topic</var>. If <var class="Arg">frombegin</var> is <code class="keyw">true</code> then those parts of <var class="Arg">topic</var> which are separated by spaces should be considered as the beginnings of words to decide the matching. It <var class="Arg">frombegin</var> is <code class="keyw">false</code>, a substring search should be performed. The string <var class="Arg">topic</var> can be assumed to be already normalized (transformed to lower case, and whitespace normalized). The function must return a list with two entries <code class="code">[exact, match]</code> where <code class="code">exact</code> is the list of indices for exact matches and <code class="code">match</code> a list of indices of the remaining matches.</p>

</dd>
<dt><strong class="Mark"><code class="code">MatchPrevChap( <var class="Arg">info</var>, <var class="Arg">i</var> )</code> </strong></dt>
<dd><p>This should return the match [<var class="Arg">info</var>, <code class="code">j</code>] which points to the beginning of the chapter containing match [<var class="Arg">info</var>, <var class="Arg">i</var>], respectively to the beginning of the previous chapter if [<var class="Arg">info</var>, <var class="Arg">i</var>] is already the beginning of a chapter. (Corresponds to <code class="code">?&lt;&lt;</code>.)</p>

</dd>
<dt><strong class="Mark"><code class="code">MatchNextChap( <var class="Arg">info</var>, <var class="Arg">i</var> )</code> </strong></dt>
<dd><p>Like the previous function except that it should return the match for the beginning of the next chapter. (Corresponds to <code class="code">?&gt;&gt;</code>.)</p>

</dd>
<dt><strong class="Mark"><code class="code">MatchPrev( <var class="Arg">info</var>, <var class="Arg">i</var> )</code> </strong></dt>
<dd><p>This should return the previous section (or appropriate portion of the document). (Corresponds to <code class="code">?&lt;</code>.)</p>

</dd>
<dt><strong class="Mark"><code class="code">MatchNext( <var class="Arg">info</var>, <var class="Arg">i</var> )</code> </strong></dt>
<dd><p>Like the previous function except that it should return the next section (or appropriate portion of the document). (Corresponds to <code class="code">?&gt;</code>.)</p>

</dd>
<dt><strong class="Mark"><code class="code">HelpData( <var class="Arg">info</var>, <var class="Arg">i</var>, <var class="Arg">type</var> )</code> </strong></dt>
<dd><p>This returns for match [<var class="Arg">info</var>, <var class="Arg">i</var>] some data whose format depends on the string <var class="Arg">type</var>, or <code class="keyw">fail</code> if these data are not available. The values of <var class="Arg">type</var> which currently must be handled and the corresponding result format are described in the list below.</p>

</dd>
</dl>
<p>The <code class="code">HELP_BOOK_HANDLER.<var class="Arg">myownformat</var>.HelpData</code> function must recognize the following values of the <var class="Arg">type</var> argument.</p>


<dl>
<dt><strong class="Mark">
<code class="code">"text"</code> </strong></dt>
<dd><p>This must return a corresponding text string in a format which can be fed into the <code class="code">Pager</code>, see <code class="func">Pager</code> (<a href="chap2.html#X7ED03E41792C3840"><span class="RefLink">2.4-1</span></a>).</p>

</dd>
<dt><strong class="Mark"><code class="code">"url"</code> </strong></dt>
<dd><p>If the help book is available in HTML format this must return an URL as a string (Probably a <code class="code">file://</code> URL containing a label for the exact start position in that file). Otherwise it returns <code class="keyw">fail</code>.</p>

</dd>
<dt><strong class="Mark"><code class="code">"dvi"</code> </strong></dt>
<dd><p>If the help book is available in dvi-format this must return a record of form <code class="code">rec( file := <var class="Arg">filename</var>, page := <var class="Arg">pagenumber</var> )</code>. Otherwise it returns <code class="keyw">fail</code>.</p>

</dd>
<dt><strong class="Mark"><code class="code">"pdf"</code> </strong></dt>
<dd><p>Same as case <code class="code">"dvi"</code>, but for the corresponding pdf-file.</p>

</dd>
<dt><strong class="Mark"><code class="code">"secnr"</code> </strong></dt>
<dd><p>This must return a pair like <code class="code">[[3,3,1], "3.3.1"]</code> which gives the section number as chapter number, section number, subsection number triple and a corresponding string (a chapter itself is encoded like <code class="code">[[4,0,0], "4."]</code>). Useful for cross-referencing between help books.</p>

</dd>
</dl>
<p><a id="X861927BF822FB162" name="X861927BF822FB162"></a></p>

<h4>84.4 <span class="Heading">Introducing new Viewer for the Online Help</span></h4>

<p>To introduce a new viewer for the online help, one should extend the global record <code class="func">HELP_VIEWER_INFO</code> (<a href="chap84.html#X84B011847A4D90F0"><span class="RefLink">84.4-1</span></a>), the structure of which is explained below.</p>

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

<h5>84.4-1 HELP_VIEWER_INFO</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HELP_VIEWER_INFO</code></td><td class="tdright">( global variable )</td></tr></table></div>
<p>The record <code class="func">HELP_VIEWER_INFO</code> contains one component for each help viewer. Each such component is a record with two components: <code class="code">.type</code> and <code class="code">.show</code>.</p>

<p>The component <code class="code">.type</code> refers to one of the <code class="code">type</code>s recognized by the <code class="code">HelpData</code> handler function explained in the previous section (currently one of <code class="code">"text"</code>, <code class="code">"url"</code>, <code class="code">"dvi"</code>, or <code class="code">"pdf"</code>).</p>

<p>The component <code class="code">.show</code> is a function which gets as input the result of a corresponding <code class="code">HelpData</code> handler call, if it was not <code class="keyw">fail</code>. This function has to perform the actual display of the data. (E.g., by calling a function like <code class="func">Pager</code> (<a href="chap2.html#X7ED03E41792C3840"><span class="RefLink">2.4-1</span></a>) or by starting up an external viewer program.)</p>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap83.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap85.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="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</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>