Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/fga/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 4.3.2023 mit Größe 27 kB image not shown  

Quelle  chap2.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/fga/doc/chap2.html


<?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 (FGA) - Chapter 2: Functionality of the FGA 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="chap2"  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="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap1.html">[Previous Chapter]</a>    <a href="chap3.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap2_mj.html">[MathJax on]</a></p>
<p><a id="X7B92AEAE7ACBE77D" name="X7B92AEAE7ACBE77D"></a></p>
<div class="ChapSects"><a href="chap2.html#X7B92AEAE7ACBE77D">2 <span class="Heading">Functionality of the FGA package</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X86E0C3F57990A253">2.1 <span class="Heading">New operations for free groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X829FB22C7DFBEADC">2.1-1 FreeGeneratorsOfGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7D7AE4F284F17C20">2.1-2 RankOfFreeGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7DD1809D868165AD">2.1-3 CyclicallyReducedWord</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7AB44D3D80E0F85A">2.2 <span class="Heading">Method installations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X87B5370C7DFD401D">2.2-1 Normalizer</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X857DC7B085EB0539">2.2-2 RepresentativeAction</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7A2BF4527E08803C">2.2-3 Centralizer</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X83A0356F839C696F">2.2-4 Index</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X851069107CACF98E">2.2-5 Intersection</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X87BDB89B7AAFE8AD"><code>2.2-6 \in</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7839D8927E778334">2.2-7 IsSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X806A4814806A4814"><code>2.2-8 \=</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X81D15723804771E2">2.2-9 MinimalGeneratingSet</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X82B7B32E783A39B0">2.3 <span class="Heading">Constructive membership test</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X78917F717E5DB86A">2.3-1 AsWordLetterRepInGenerators</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7AEFC7BA80FA4CFC">2.4 <span class="Heading">Automorphism groups of free groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X87677B0787B4461A">2.4-1 AutomorphismGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7F28268F850F454E">2.4-2 IsomorphismFpGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X85AD957084C1E38D">2.4-3 FreeGroupEndomorphismByImages</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8173ECA579D6172B">2.4-4 FreeGroupAutomorphismsGeneratorO</a></span>
</div></div>
</div>

<h3>2 <span class="Heading">Functionality of the FGA package</span></h3>

<p>This chapter describes methods available from the <strong class="pkg">FGA</strong> package.</p>

<p>In the following, let <var class="Arg">f</var> be a free group created by <code class="code">FreeGroup(<var class="Arg">n</var>)</code>, and let <var class="Arg">u</var>, <var class="Arg">u1</var> and <var class="Arg">u2</var> be finitely generated subgroups of <var class="Arg">f</var> created by <code class="code">Group</code> or <code class="code">Subgroup</code>, or computed from some other subgroup of <var class="Arg">f</var>. Let <var class="Arg">elm</var> be an element of <var class="Arg">f</var>.</p>

<p>For example:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">f := FreeGroup( 2 );                                             </span>
<free group on the generators [ f1, f2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">u := Group( f.1^2, f.2^2, f.1*f.2 );</span>
Group([ f1^2, f2^2, f1*f2 ])
<span class="GAPprompt">gap></span> <span class="GAPinput">u1 := Subgroup( u, [f.1^2, f.1^4*f.2^6] );</span>
Group([ f1^2, f1^4*f2^6 ])
<span class="GAPprompt">gap></span> <span class="GAPinput">elm := f.1;</span>
f1
<span class="GAPprompt">gap></span> <span class="GAPinput">u2 := Normalizer( u, elm );</span>
Group([ f1^2 ])
</pre></div>

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

<h4>2.1 <span class="Heading">New operations for free groups</span></h4>

<p>These new operations are available for finitely generated subgroups of free groups:</p>

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

<h5>2.1-1 FreeGeneratorsOfGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGeneratorsOfGroup</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns a list of free generators of the finitely generated subgroup <var class="Arg">u</var> of a free group.</p>

<p>The elements in this list form an N-reduced set. In addition to being a free (and thus minimal) generating set for <var class="Arg">u</var>, this means that whenever <var class="Arg">v1</var>, <var class="Arg">v2</var> and <var class="Arg">v3</var> are elements or inverses of elements of this list, then</p>


<ul>
<li><p><span class="SimpleMath"><var class="Arg">v1</var><var class="Arg">v2</var>≠1</span> implies <span class="SimpleMath">|<var class="Arg">v1</var><var class="Arg">v2</var>|≥max(|<var class="Arg">v1</var>|, |<var class="Arg">v2</var>|)</span>, and</p>

</li>
<li><p><span class="SimpleMath"><var class="Arg">v1</var><var class="Arg">v2</var>≠1</span> and <span class="SimpleMath"><var class="Arg">v2</var><var class="Arg">v3</var>≠1</span> implies <span class="SimpleMath">|<var class="Arg">v1</var><var class="Arg">v2</var><var class="Arg">v3</var>| > |<var class="Arg">v1</var>| - |<var class="Arg">v2</var>| + |<var class="Arg">v3</var>|</span></p>

</li>
</ul>
<p>hold, where <span class="SimpleMath">|.|</span> denotes the word length.</p>

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

<h5>2.1-2 RankOfFreeGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RankOfFreeGroup</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Rank</code>( <var class="Arg">u</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the rank of the finitely generated subgroup <var class="Arg">u</var> of a free group.</p>

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

<h5>2.1-3 CyclicallyReducedWord</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CyclicallyReducedWord</code>( <var class="Arg">elm</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the cyclically reduced form of <var class="Arg">elm</var>.</p>

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

<h4>2.2 <span class="Heading">Method installations</span></h4>

<p>This section lists operations that are already known to <strong class="pkg">GAP</strong>. <strong class="pkg">FGA</strong> installs new methods for them so that they can also be used with free groups. In cases where <strong class="pkg">FGA</strong> installs methods that are usually only used internally, user functions are shown instead.</p>

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

<h5>2.2-1 Normalizer</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Normalizer</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Normalizer</code>( <var class="Arg">u</var>, <var class="Arg">elm</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>The first variant returns the normalizer of the finitely generated subgroup <var class="Arg">u2</var> in <var class="Arg">u1</var>.</p>

<p>The second variant returns the normalizer of <span class="SimpleMath">⟨ <var class="Arg">elm</var> ⟩</span> in the finitely generated subgroup <var class="Arg">u</var> (see <code class="func">Normalizer</code> (<a href="../../../doc/ref/chap39_mj.html#X87B5370C7DFD401D"><span class="RefLink">Reference: Normalizer</span></a>) in the Reference Manual).</p>

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

<h5>2.2-2 RepresentativeAction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RepresentativeAction</code>( <var class="Arg">u</var>, <var class="Arg">d</var>, <var class="Arg">e</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsConjugate</code>( <var class="Arg">u</var>, <var class="Arg">d</var>, <var class="Arg">e</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="code">RepresentativeAction</code> returns an element <span class="SimpleMath"><var class="Arg">r</var> ∈ <var class="Arg">u</var></span>, where <var class="Arg">u</var> is a finitely generated subgroup of a free group, such that <span class="SimpleMath"><var class="Arg">d</var>^<var class="Arg">r</var>=<var class="Arg">e</var></span>, or fail, if no such <var class="Arg">r</var> exists. <var class="Arg">d</var> and <var class="Arg">e</var> may be elements or subgroups of <var class="Arg">u</var>.</p>

<p><code class="code">IsConjugate</code> returns a boolean indicating whether such an element <var class="Arg">r</var> exists.</p>

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

<h5>2.2-3 Centralizer</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Centralizer</code>( <var class="Arg">u</var>, <var class="Arg">u2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Centralizer</code>( <var class="Arg">u</var>, <var class="Arg">elm</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the centralizer of <var class="Arg">u2</var> or <var class="Arg">elm</var> in the finitely generated subgroup <var class="Arg">u</var> of a free group.</p>

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

<h5>2.2-4 Index</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Index</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndexNC</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>return the index of <var class="Arg">u2</var> in <var class="Arg">u1</var>, where <var class="Arg">u1</var> and <var class="Arg">u2</var> are finitely generated subgroups of a free group. The first variant returns fail if <var class="Arg">u2</var> is not a subgroup of <var class="Arg">u1</var>, the second may return anything in this case.</p>

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

<h5>2.2-5 Intersection</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Intersection</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var>, <var class="Arg">\dots</var)</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the intersection of <var class="Arg">u1</var> and <var class="Arg">u2</var>, where <var class="Arg">u1</var> and <var class="Arg">u2</var> are finitely generated subgroups of a free group.</p>

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

<h5><code>2.2-6 \in</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \in</code>( <var class="Arg">elm</var>, <var class="Arg">u</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>tests whether <var class="Arg">elm</var> is contained in the finitely generated subgroup <var class="Arg">u</var> of a free group.</p>

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

<h5>2.2-7 IsSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSubgroup</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>tests whether <var class="Arg">u2</var> is a subgroup of <var class="Arg">u1</var>, where <var class="Arg">u1</var> and <var class="Arg">u2</var> are finitely generated subgroups of a free group.</p>

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

<h5><code>2.2-8 \=</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \=</code>( <var class="Arg">u1</var>, <var class="Arg">u2</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>test whether the two finitely generated subgroups <var class="Arg">u1</var> and <var class="Arg">u2</var> of a free group are equal.</p>

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

<h5>2.2-9 MinimalGeneratingSet</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MinimalGeneratingSet</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SmallGeneratingSet</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfGroup</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>return generating sets for the finitely generated subgroup <var class="Arg">u</var> of a free group. <code class="code">MinimalGeneratingSet</code> and <code class="code">SmallGeneratingSet</code> return the same free generators as <code class="code">FreeGeneratorsOfGroup</code>, which are in fact a minimal generating set. <code class="code">GeneratorsOfGroup</code> also returns these generators, if no other generators were stored at creation time.</p>

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

<h4>2.3 <span class="Heading">Constructive membership test</span></h4>

<p>It is not only possible to test whether an element is in a finitely generated subgroup of free group, this can also be done constructively. The idiomatic way to do so is by using a homomorphism.</p>

<p>Here is an example that computes how to write <code class="code">f.1^2</code> in the generators <code class="code">a=f1^2*f2^2</code> and <code class="code">b=f.1^2*f.2</code>, checks the result, and then tries to write <code class="code">f.1</code> in the same generators:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">f := FreeGroup( 2 );</span>
<free group on the generators [ f1, f2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">ua := f.1^2*f.2^2;; ub := f.1^2*f.2;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">u := Group( ua, ub );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := FreeGroup( "a""b" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">hom := GroupHomomorphismByImages( g, u,</span>
<span class="GAPprompt">></span> <span class="GAPinput">            GeneratorsOfGroup(g),</span>
<span class="GAPprompt">></span> <span class="GAPinput">            GeneratorsOfGroup(u) );</span>
[ a, b ] -> [ f1^2*f2^2, f1^2*f2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput"># how can f.1^2 be expressed?</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">PreImagesRepresentative( hom, f.1^2 );</span>
b*a^-1*b
<span class="GAPprompt">gap></span> <span class="GAPinput">last ^ hom; # check this</span>
f1^2
<span class="GAPprompt">gap></span> <span class="GAPinput">ub * ua^-1 * ub; # another check</span>
f1^2
<span class="GAPprompt">gap></span> <span class="GAPinput">PreImagesRepresentative( hom, f.1 ); # try f.1</span>
fail
<span class="GAPprompt">gap></span> <span class="GAPinput">f.1 in u;</span>
false
</pre></div>

<p>There are also lower level operations to get the same results.</p>

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

<h5>2.3-1 AsWordLetterRepInGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsWordLetterRepInGenerators</code>( <var class="Arg">elm</var>, <var class="Arg">u</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsWordLetterRepInFreeGenerators</code>( <var class="Arg">elm</var>, <var class="Arg">u</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>return a letter representation (see Section <a href="../../../doc/ref/chap37_mj.html#X80A9F39582ED296E"><span class="RefLink">Reference: Representations for Associative Words</span></a> in the <strong class="pkg">GAP</strong> Reference Manual) of the given <var class="Arg">elm</var> relative to the generators the group was created with or the free generators as returned by <code class="code">FreeGeneratorsOfGroup</code>.</p>

<p>Continuing the above example:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">AsWordLetterRepInGenerators( f.1^2, u );    </span>
[ 2, -1, 2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AsWordLetterRepInFreeGenerators( f.1^2, u );</span>
[ 2 ]
</pre></div>

<p>This means: to get <code class="code">f.1^2</code>, multiply the second of the given generators with the inverse of the first and again with the second; or just take the second free generator.</p>

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

<h4>2.4 <span class="Heading">Automorphism groups of free groups</span></h4>

<p>The <strong class="pkg">FGA</strong> package knows presentations of the automorphism groups of free groups. It also allows to express an automorphism as word in the generators of these presentations. This sections repeats the <strong class="pkg">GAP</strong> standard methods to do so and shows functions to obtain the generating automorphisms.</p>

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

<h5>2.4-1 AutomorphismGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AutomorphismGroup</code>( <var class="Arg">u</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the automorphism group of the finitely generated subgroup <var class="Arg">u</var> of a free group.</p>

<p>Only a few methods will work with this group. But there is a way to obtain an isomorphic finitely presented group:</p>

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

<h5>2.4-2 IsomorphismFpGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismFpGroup</code>( <var class="Arg">group</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns an isomorphism of <var class="Arg">group</var> to a finitely presented group. For automorphism groups of free groups, the <strong class="pkg">FGA</strong> package implements the presentations of <a href="chapBib.html#biBNeumann33">[Neu33]</a>. The finitely presented group itself can then be obtained with the command <code class="code">Range</code>.</p>

<p>Here is an example:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">f := FreeGroup( 2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a := AutomorphismGroup( f );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">iso := IsomorphismFpGroup( a );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Range( iso );</span>
<fp group on the generators [ O, P, U ]>
</pre></div>

<p>To express an automorphism as word in the generators of the presentation, just apply the isomorphism obtained from <code class="code">IsomorphismFpGroup</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">aut := GroupHomomorphismByImages( f, f,</span>
<span class="GAPprompt">></span> <span class="GAPinput">             GeneratorsOfGroup( f ), [ f.1^f.2, f.1*f.2 ] );</span>
[ f1, f2 ] -> [ f2^-1*f1*f2, f1*f2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ImageElm( iso, aut );</span>
O^2*U*O*P^-1*U
</pre></div>

<p>It is also possible to use <code class="code">aut^iso</code> or <code class="code">Image( iso, aut )</code>. Using <code class="code">Image</code> will perform additional checks on the arguments.</p>

<p>The <strong class="pkg">FGA</strong> package provides a simpler way to create endomorphisms:</p>

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

<h5>2.4-3 FreeGroupEndomorphismByImages</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupEndomorphismByImages</code>( <var class="Arg">g</var>, <var class="Arg">imgs</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the endomorphism that maps the free generators of the finitely generated subgroup <var class="Arg">g</var> of a free group to the elements listed in <var class="Arg">imgs</var>. You may then apply <code class="code">IsBijective</code> to check whether it is an automorphism.</p>

<p>The following functions return automorphisms that correspond to the generators in the presentation:</p>

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

<h5>2.4-4 FreeGroupAutomorphismsGeneratorO</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorO</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorP</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorU</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorS</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorT</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorQ</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeGroupAutomorphismsGeneratorR</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>return the automorphism which maps the free generators [<span class="SimpleMath">x_1, x_2, dots, x_n</span>] of <var class="Arg">group</var> to</p>


<dl>
<dt><strong class="Mark">O:</strong></dt>
<dd><p>[<span class="SimpleMath">x_1^-1, x_2, dots, x_n</span>] (<span class="SimpleMath">n≥1</span>)</p>

</dd>
<dt><strong class="Mark">P:</strong></dt>
<dd><p>[<span class="SimpleMath">x_2, x_1, x_3, dots, x_n</span>] (<span class="SimpleMath">n≥2</span>)</p>

</dd>
<dt><strong class="Mark">U:</strong></dt>
<dd><p>[<span class="SimpleMath">x_1x_2, x_2, x_3, dots, x_n</span>] (<span class="SimpleMath">n≥2</span>)</p>

</dd>
<dt><strong class="Mark">S:</strong></dt>
<dd><p>[<span class="SimpleMath">x_2^-1, x_3^-1, dots, x_n^-1, x_1^-1</span>] (<span class="SimpleMath">n≥1</span>)</p>

</dd>
<dt><strong class="Mark">T:</strong></dt>
<dd><p>[<span class="SimpleMath">x_2, x_1^-1, x_3, dots, x_n</span>] (<span class="SimpleMath">n≥2</span>)</p>

</dd>
<dt><strong class="Mark">Q:</strong></dt>
<dd><p>[<span class="SimpleMath">x_2, x_3, dots, x_n, x_1</span>] (<span class="SimpleMath">n≥2</span>)</p>

</dd>
<dt><strong class="Mark">R:</strong></dt>
<dd><p>[<span class="SimpleMath">x_2^-1, x_1, x_3, x_4, dots, x_n-2, x_nx_n-1^-1, x_n-1^-1</span>] (<span class="SimpleMath">n≥4</span>)</p>

</dd>
</dl>

<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap1.html">[Previous Chapter]</a>    <a href="chap3.html">[Next Chapter]</a>   </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="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>

99%


¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.