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

Quelle  chap7.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/rcwa/doc/chap7.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 (RCWA) - Chapter 7: Examples</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="chap7"  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="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="chap6.html">[Previous Chapter]</a>    <a href="chap8.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap7_mj.html">[MathJax on]</a></p>
<p><a id="X7A489A5D79DA9E5C" name="X7A489A5D79DA9E5C"></a></p>
<div class="ChapSects"><a href="chap7.html#X7A489A5D79DA9E5C">7 <span class="Heading">Examples</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X84A058CF7C65A908">7.1 <span class="Heading">
  Thompson's group V
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X86C2BAE3876985A6">7.2 <span class="Heading">
  Factoring Collatz' permutation of the integers
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X811919107D5DAAC1">7.3 <span class="Heading">
  The <span class="SimpleMath">3n+1</span> group
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7DCFDC797FF213C5">7.4 <span class="Heading">
  A group with huge finite orbits
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7968C1DF7EF0BD8E">7.5 <span class="Heading">
  A group which acts 4-transitively on the positive integers
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X85C529088050BEA3">7.6 <span class="Heading">
  A group which acts 3-transitively, but not 4-transitively on ℤ
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X878499AF7889FD9E">7.7 <span class="Heading">
  An rcwa mapping which seems to be contracting, but very slow
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X84A915BA833E0BDE">7.8 <span class="Heading">Checking a result by P. Andaloro</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7E8CD9B67ED78735">7.9 <span class="Heading">Two examples by Matthews and Leigh</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X854E9F65817E4F63">7.10 <span class="Heading">Orders of commutators</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7F085B867D799293">7.11 <span class="Heading">
  An infinite subgroup of CT(GF(2)[x]) with many torsion elements
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7A8605E680F664BF">7.12 <span class="Heading">An abelian rcwa group over a polynomial ring</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X78DFE4B4821E07A6">7.13 <span class="Heading">Checking for solvability</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X783D54DC7A646273">7.14 <span class="Heading">Some examples over (semi)localizations of the integers</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X846D7D087861E0AC">7.15 <span class="Heading">
  Twisting 257-cycles into an rcwa mapping with modulus 32
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X78D5DC93845CA6A0">7.16 <span class="Heading"> The behaviour of the moduli of powers </span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X855A3CD88459958B">7.17 <span class="Heading"> Images and preimages under the Collatz mapping </span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X84B6A498838A5509">7.18 <span class="Heading">
  An extension of the Collatz mapping T to a permutation of <span class="SimpleMath">ℤ^2</span>
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X81EB8D397898C6B2">7.19 <span class="Heading">
  Finite quotients of Grigorchuk groups
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X7DD9502F80364631">7.20 <span class="Heading">
  Forward orbits of a monoid with 2 generators
</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap7.html#X815800ED820C6ECF">7.21 <span class="Heading">
  The free group of rank 2 and the modular group PSL(2,ℤ)
</span></a>
</span>
</div>
</div>

<h3>7 <span class="Heading">Examples</span></h3>

<p>This chapter discusses a number of examples of rcwa mappings and -groups in detail. All of them show different aspects of the package, and the order in which they appear is entirely arbitrary. In particular they are not ordered by degree of difficulty or interest.</p>

<p>The rcwa mappings, rcwa groups and other objects defined in this chapter can be found in the file <code class="file">pkg/rcwa/examples/examples.g</code>. This file can be read into the current <strong class="pkg">GAP</strong> session by the function <code class="func">LoadRCWAExamples</code> (<a href="chap6.html#X8714254784AFD64B"><span class="RefLink">6.1-1</span></a>) which takes no arguments and returns the name of a variable which the record containing the examples got assigned to. The global variable assignments made in a section of this chapter can be made by applying the function <code class="code">AssignGlobals</code> to the respective component of the examples record. The component names are given at the end of the corresponding sections.</p>

<p>The discussions of the examples are typically far from being exhaustive. It is quite likely that in many instances by just a few little modifications or additional easy commands you can find out interesting things yourself -- have fun!</p>

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

<h4>7.1 <span class="Heading">
  Thompson's group V
</span></h4>

<p>Thompson's group V, also known as Higman-Thompson group, is a finitely presented infinite simple group. This group has been found by Graham Higman, cf. [Hig74]. We show that the group




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">G := Group(List([[0,2,1,4],[0,4,1,4],[1,4,2,4],[2,4,3,4]],</span>
<span class="GAPprompt">></span> <span class="GAPinput">                   ClassTransposition));</span>
<(0(2),1(4)),(0(4),1(4)),(1(4),2(4)),(2(4),3(4))>

</pre></div>

<p>is isomorphic to Thompson's group V. This isomorphism has been pointed out by John P. McDermott. We take a slightly different set of generators:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">k := ClassTransposition(0,2,1,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := ClassTransposition(1,2,2,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := ClassTransposition(0,2,1,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">n := ClassTransposition(1,4,2,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := Group(k,l,m,n);</span>
<(0(2),1(2)),(1(2),2(4)),(0(2),1(4)),(1(4),2(4))>
<span class="GAPprompt">gap></span> <span class="GAPinput">G = H; # k, l, m and n generate G as well</span>
true

</pre></div>

<p>Now we verify that our four generators satisfy the relations given on page 50 in <a href="chapBib.html#biBHigman74">[Hig74]</a>, when we read <code class="code">k</code> as <span class="SimpleMath">κ</span>, <code class="code">l</code> as <span class="SimpleMath">λ</span>, <code class="code">m</code> as <span class="SimpleMath">μ</span> and <code class="code">n</code> as <span class="SimpleMath">ν</span>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">HigmanThompsonRels :=</span>
<span class="GAPprompt">></span> <span class="GAPinput">[ k^2, l^2, m^2, n^2,                           # (1) in Higman's book

<span class="GAPprompt">></span> <span class="GAPinput">  l*k*m*k*l*n*k*n*m*k*l*k*m,                    # (2)        "
<span class="GAPprompt">></span> <span class="GAPinput">  k*n*l*k*m*n*k*l*n*m*n*l*n*m,                  # (3)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*k*m*k*l*n)^3, (m*k*l*k*m*n)^3,             # (4)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*n*m)^2*k*(m*n*l)^2*k,                      # (5)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*n*m*n)^5,                                  # (6)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*k*n*k*l*n)^3*k*n*k*(m*k*n*k*m*n)^3*k*n*k*n,# (7)        "
<span class="GAPprompt">></span> <span class="GAPinput">  ((l*k*m*n)^2*(m*k*l*n)^2)^3,                  # (8)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*n*l*k*m*k*m*n*l*n*m*k*m*k)^4,              # (9)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (m*n*m*k*l*k*l*n*m*n*l*k*l*k)^4,              #(10)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (l*m*k*l*k*m*l*k*n*k)^2,                      #(11)        "
<span class="GAPprompt">></span> <span class="GAPinput">  (m*l*k*m*k*l*m*k*n*k)^2 ];                    #(12)        "
[ IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ), 
  IdentityMapping( Integers ), IdentityMapping( Integers ) ]

</pre></div>

<p>We conclude that our group is an homomorphic image of Thompson's group V. But since Thompson's group V is simple and our group is not trivial, this means indeed that the two groups are isomorphic.</p>

<p>In fact it is straightforward to show that <code class="code">G</code> is the group <code class="code">CT([2],Integers)</code> which is generated by the set of all class transpositions which interchange residue classes modulo powers of 2. First we check that <code class="code">G</code> contains all 11 class transpositions which interchange residue classes modulo 2 or 4:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">S := Filtered(List(ClassPairs(4),ClassTransposition),</span>
<span class="GAPprompt">></span> <span class="GAPinput">                 ct->Mod(ct) in [2,4]);</span>
[ ( 0(2), 1(2) ), ( 0(2), 1(4) ), ( 0(2), 3(4) ), ( 0(4), 1(4) ), 
  ( 0(4), 2(4) ), ( 0(4), 3(4) ), ( 1(2), 0(4) ), ( 1(2), 2(4) ), 
  ( 1(4), 2(4) ), ( 1(4), 3(4) ), ( 2(4), 3(4) ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubset(G,S);</span>
true

</pre></div>

<p>Then we give a function which takes a class transposition <span class="SimpleMath">τ ∈ CT_∅(ℤ)</span>, and which returns a factorization of an element <span class="SimpleMath">γ</span> satisfying <span class="SimpleMath">τ^γ ∈ S</span> into <span class="SimpleMath">g_1 := τ_0(2),1(4) ∈ S</span>, <span class="SimpleMath">g_2 := τ_0(2),3(4) ∈ S</span>, <span class="SimpleMath">g_3 := τ_1(2),0(4) ∈ S</span>, <span class="SimpleMath">g_4 := τ_1(2),2(4) ∈ S</span>, <span class="SimpleMath">h_1 := τ_0(4),1(4) ∈ S</span> and <span class="SimpleMath">h_2 := τ_1(4),2(4) ∈ S</span>:</p>


<div class="example"><pre>

ReducingConjugator := function ( tau )

  local  w, F, g1, g2, g3, g4, h1, h2, h, cls, cl, r;

  g1 := ClassTransposition(0,2,1,4); h1 := ClassTransposition(0,4,1,4);
  g2 := ClassTransposition(0,2,3,4); h2 := ClassTransposition(1,4,2,4);
  g3 := ClassTransposition(1,2,0,4);
  g4 := ClassTransposition(1,2,2,4);

  F := FreeGroup("g1","g2","g3","g4","h1","h2");

  w := One(F); if Mod(tau) <= 4 then return w; fi;

  # Before we can reduce the moduli of the interchanged residue classes,
  # we must make sure that both of them have at least modulus 4.
  cls := TransposedClasses(tau);
  if Mod(cls[1]) = 2 then
    if Residue(cls[1]) = 0 then
      if Residue(cls[2]) mod 4 = 1 then tau := tau^g2; w := w * F.2;
                                   else tau := tau^g1; w := w * F.1; fi;
    else
      if Residue(cls[2]) mod 4 = 0 then tau := tau^g4; w := w * F.4;
                                   else tau := tau^g3; w := w * F.3; fi;
    fi;
  fi;

  while Mod(tau) > 4 do # Now we can successively reduce the moduli.
    if not ForAny(AllResidueClassesModulo(2),
                  cl -> IsEmpty(Intersection(cl,Support(tau))))
    then
      cls := TransposedClasses(tau);
      h := Filtered([h1,h2],
             hi->Length(Filtered(cls,cl->IsSubset(Support(hi),cl)))=1);
      h := h[1]; tau := tau^h;
      if h = h1 then w := w * F.5; else w := w * F.6; fi;
    fi;
    cl := TransposedClasses(tau)[2]; # class with larger modulus
    r  := Residue(cl);
    if   r mod 4 = 1 then tau := tau^g1; w := w * F.1;
    elif r mod 4 = 3 then tau := tau^g2; w := w * F.2;
    elif r mod 4 = 0 then tau := tau^g3; w := w * F.3;
    elif r mod 4 = 2 then tau := tau^g4; w := w * F.4; fi;
  od;

  return w;
end;

</pre></div>

<p>After assigning <code class="code">g1</code>, <code class="code">g2</code>, <code class="code">g3</code>, <code class="code">g4</code>, <code class="code">h1</code> and <code class="code">h2</code> appropriately, we obtain for example:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">ReducingConjugator(ClassTransposition(3,16,34,256));</span>
h2*g1*h1*g1*h1*g1*h1*g1*h2*g2*h2*g4*h2*g4*h2*g3
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma := h2*g1*h1*g1*h1*g1*h1*g1*h2*g2*h2*g4*h2*g4*h2*g3;</span>
<rcwa permutation of Z with modulus 256>
<span class="GAPprompt">gap></span> <span class="GAPinput">ct := ClassTransposition(3,16,34,256)^gamma;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsClassTransposition(ct);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ct;</span>
ClassTransposition(1,4,2,4)

</pre></div>

<p>Thompson's group V can also be embedded in a natural way into CT(GF(2)[x]):




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">x := Indeterminate(GF(2));; SetName(x,"x");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R := PolynomialRing(GF(2),1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">k := ClassTransposition(0,x,1,x);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := ClassTransposition(1,x,x,x^2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := ClassTransposition(0,x,1,x^2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">n := ClassTransposition(1,x^2,x,x^2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := Group(k,l,m,n);</span>
<rcwa group over GF(2)[x] with 4 generators>

</pre></div>

<p>The correctness of this representation can likewise be verified by simply checking the defining relations given above.</p>

<p>Enter <code class="code">AssignGlobals(LoadRCWAExamples().HigmanThompson);</code> in order to assign the global variables defined in this section.</p>

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

<h4>7.2 <span class="Heading">
  Factoring Collatz' permutation of the integers
</span></h4>

<p>In 1932, Lothar Collatz mentioned in his notebook the following permutation of the integers:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">Collatz := RcwaMapping([[2,0,3],[4,-1,3],[4,1,3]]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(Collatz);</span>

Rcwa mapping of Z with modulus 3

        /
        | 2n/3     if n in 0(3)
 n |-> <  (4n-1)/3 if n in 1(3)
        | (4n+1)/3 if n in 2(3)
        \

<span class="GAPprompt">gap></span> <span class="GAPinput">ShortCycles(Collatz,[-50..50],50); # There are some finite cycles:</span>
[ [ 0 ], [ -1 ], [ 1 ], [ 2, 3 ], [ -2, -3 ], [ 4, 5, 7, 9, 6 ], 
  [ -4, -5, -7, -9, -6 ], 
  [ 44, 59, 79, 105, 70, 93, 62, 83, 111, 74, 99, 66 ], 
  [ -44, -59, -79, -105, -70, -93, -62, -83, -111, -74, -99, -66 ] ]

</pre></div>

<p>The cycle structure of Collatz' permutation has not been completely determined yet. In particular it is not known whether the cycle containing 8 is finite or infinite. Nevertheless, the factorization routine included in this package can determine a factorization of this permutation into class transpositions, i.e. involutions interchanging two disjoint residue classes:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">Collatz in CT(Integers);  # `Collatz' lies in the simple group CT(Z).
true
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Factorization(Collatz));</span>
212

</pre></div>

<p>Setting the Info level of <code class="code">InfoRCWA</code> equal to 2 (simply issue <code class="code">RCWAInfo(2);</code>) causes the factorization routine to display detailed information on the progress of the factoring process. For reasons of saving space, this is not done in this manual.</p>

<p>We would like to get a factorization into fewer factors. Firstly, we try to factor the inverse -- just like the various options interpreted by the factorization routine, this has influence on decisions taken during the factoring process:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Factorization(Collatz^-1));</span>
129

</pre></div>

<p>This is already a shorter product, but can still be improved. We remember the <code class="code">mKnot</code>'s, of which the permutation mKnot(3) looks very similar to Collatz' permutation. Therefore it is straightforward to try to factor both <code class="code">mKnot(3)</code> and <code class="code">Collatz/mKnot(3)</code>, and to look whether the sum of the numbers of factors is less than 129:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">KnotFacts := Factorization(mKnot(3));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">QuotFacts := Factorization(Collatz/mKnot(3));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([KnotFacts,QuotFacts],Length);</span>
[ 59, 9 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CollatzFacts := Concatenation(QuotFacts,KnotFacts);</span>
[ ( 0(6), 4(6) ), ( 0(6), 5(6) ), ( 0(6), 3(6) ), ( 0(6), 1(6) ), 
  ( 0(6), 2(6) ), ( 2(3), 4(6) ), ( 0(3), 4(6) ), ( 2(3), 1(6) ), 
  ( 0(3), 1(6) ), ( 0(36), 35(36) ), ( 0(36), 22(36) ), 
  ( 0(36), 18(36) ), ( 0(36), 17(36) ), ( 0(36), 14(36) ), 
  ( 0(36), 20(36) ), ( 0(36), 4(36) ), ( 2(36), 8(36) ), 
  ( 2(36), 16(36) ), ( 2(36), 13(36) ), ( 2(36), 9(36) ), 
  ( 2(36), 7(36) ), ( 2(36), 6(36) ), ( 2(36), 3(36) ), 
  ( 2(36), 10(36) ), ( 2(36), 15(36) ), ( 2(36), 12(36) ), 
  ( 2(36), 5(36) ), ( 21(36), 28(36) ), ( 21(36), 33(36) ), 
  ( 21(36), 30(36) ), ( 21(36), 23(36) ), ( 21(36), 34(36) ), 
  ( 21(36), 31(36) ), ( 21(36), 27(36) ), ( 21(36), 25(36) ), 
  ( 21(36), 24(36) ), ( 26(36), 32(36) ), ( 26(36), 29(36) ), 
  ( 10(18), 35(36) ), ( 5(18), 35(36) ), ( 10(18), 17(36) ), 
  ( 5(18), 17(36) ), ( 8(12), 14(24) ), ( 6(9), 17(18) ), 
  ( 3(9), 17(18) ), ( 0(9), 17(18) ), ( 6(9), 16(18) ), ( 3(9), 16(18) ),
  ( 0(9), 16(18) ), ( 6(9), 11(18) ), ( 3(9), 11(18) ), ( 0(9), 11(18) ),
  ( 6(9), 4(18) ), ( 3(9), 4(18) ), ( 0(9), 4(18) ), ( 0(6), 14(24) ), 
  ( 0(6), 2(24) ), ( 8(12), 17(18) ), ( 7(12), 17(18) ), 
  ( 8(12), 11(18) ), ( 7(12), 11(18) ), PrimeSwitch(3)^-1, 
  ( 7(12), 17(18) ), ( 2(6), 17(18) ), ( 0(3), 17(18) ), 
  PrimeSwitch(3)^-1, PrimeSwitch(3)^-1, PrimeSwitch(3)^-1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Product(CollatzFacts) = Collatz; # Check.</span>
true

</pre></div>

<p>The factors <code class="code">PrimeSwitch(3)</code> are products of 6 class transpositions (cf. <code class="func">PrimeSwitch</code> (<a href="chap2.html#X861C74E97AE5DA3B"><span class="RefLink">2.5-3</span></a>)).</p>

<p>Enter <code class="code">AssignGlobals(LoadRCWAExamples().CollatzlikePerms);</code> in order to assign the global variables defined in this section.</p>

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

<h4>7.3 <span class="Heading">
  The <span class="SimpleMath">3n+1</span> group
</span></h4>

<p>The following group acts transitively on the set of positive integers for which the <span class="SimpleMath">3n+1</span> conjecture holds and which are not divisible by 6:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">a := ClassTransposition(1,2,4,6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b := ClassTransposition(1,3,2,6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c := ClassTransposition(2,3,4,6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := Group(a,b,c);</span>
<(1(2),4(6)),(1(3),2(6)),(2(3),4(6))>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions();</span>
"3CTsGroups6"
<span class="GAPprompt">gap></span> <span class="GAPinput">3CTsGroups6.Id3CTsGroup(G,3CTsGroups6.grps); # 'catalogue number' of G</span>
44132

</pre></div>

<p>To see this, consider the action of <span class="SimpleMath">G</span> on the <q><span class="SimpleMath">3n+1</span> tree</q>. The vertices of this tree are the positive integers for which the <span class="SimpleMath">3n+1</span> conjecture holds, and for every vertex <span class="SimpleMath">n</span> there is an edge from <span class="SimpleMath">n</span> to <span class="SimpleMath">T(n)</span>, where <span class="SimpleMath">T</span> denotes the Collatz mapping</p>

<p><center> <img src = "collatz.png" width = "342" height = "63" alt = "T: Z -> Z, n |-> (n/2 if n even, (3n+1)/2 if n odd)"/> </center></p>

<p>(cf. Chapter <a href="chap1.html#X83A8C2927FAE2C23"><span class="RefLink">1</span></a>). It is easy to check that for every vertex <span class="SimpleMath">n</span>, either <span class="SimpleMath">a</span>, <span class="SimpleMath">b</span> or <span class="SimpleMath">c</span> maps <span class="SimpleMath">n</span> to <span class="SimpleMath">T(n)</span>, and that the other two generators either fix <span class="SimpleMath">n</span> or map it to one of its preimages under <span class="SimpleMath">T</span>. So the <span class="SimpleMath">3n+1</span> conjecture is equivalent to the assertion that the group <span class="SimpleMath">G</span> acts transitively on <span class="SimpleMath">N ∖ 0(6)</span>. First let's have a look at balls of small radius about 1 under the action of G -- these consist of those numbers whose trajectory under T reaches 1 quickly:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">Ball(G,1,5,OnPoints);</span>
[ 1, 2, 4, 5, 8, 10, 16, 32, 64 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Ball(G,1,10,OnPoints);</span>
[ 1, 2, 3, 4, 5, 8, 10, 13, 16, 20, 21, 26, 32, 40, 52, 53, 64, 80, 85, 
  128, 160, 170, 256, 320, 340, 341, 512, 1024, 2048 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Ball(G,1,15,OnPoints);</span>
[ 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 16, 17, 20, 21, 22, 23, 26, 32, 34, 
  35, 40, 44, 45, 46, 52, 53, 64, 68, 69, 70, 75, 80, 85, 104, 106, 113, 
  128, 136, 140, 141, 151, 160, 170, 208, 212, 213, 226, 227, 256, 272, 
  277, 280, 301, 302, 320, 340, 341, 416, 424, 452, 453, 454, 512, 640, 
  680, 682, 832, 848, 853, 904, 908, 909, 1024, 1280, 1360, 1364, 1365, 
  1664, 1696, 1706, 1808, 1813, 1816, 2048, 2560, 2720, 2728, 4096, 
  5120, 5440, 5456, 5461, 8192, 10240, 10880, 10912, 10922, 16384, 
  32768, 65536 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Ball(G,1,15,OnPoints:Spheres);</span>
[ [ 1 ], [ 2, 4 ], [ 8 ], [ 16 ], [ 5, 32 ], [ 10, 64 ], 
  [ 3, 20, 21, 128 ], [ 40, 256 ], [ 13, 80, 85, 512 ], 
  [ 26, 160, 170, 1024 ], [ 52, 53, 320, 340, 341, 2048 ], 
  [ 17, 104, 106, 113, 640, 680, 682, 4096 ], 
  [ 34, 35, 208, 212, 213, 226, 227, 1280, 1360, 1364, 1365, 8192 ], 
  [ 11, 68, 69, 70, 75, 416, 424, 452, 453, 454, 2560, 2720, 2728, 16384 
     ], 
  [ 22, 23, 136, 140, 141, 151, 832, 848, 853, 904, 908, 909, 5120, 
      5440, 5456, 5461, 32768 ], 
  [ 7, 44, 45, 46, 272, 277, 280, 301, 302, 1664, 1696, 1706, 1808, 
      1813, 1816, 10240, 10880, 10912, 10922, 65536 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(Ball(G,1,50,OnPoints:Spheres),Length);</span>
[ 1, 2, 1, 1, 2, 2, 4, 2, 4, 4, 6, 8, 12, 14, 17, 20, 26, 32, 43, 52, 
  66, 81, 104, 133, 170, 211, 271, 335, 424, 542, 686, 873, 1096, 1376, 
  1730, 2205, 2794, 3522, 4429, 5611, 7100, 8978, 11343, 14296, 18058, 
  22828, 28924, 36532, 46146, 58399, 73713 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">FloatQuotientsList(last);</span>
[ 2., 0.5, 1., 2., 1., 2., 0.5, 2., 1., 1.5, 1.33333, 1.5, 1.16667, 
  1.21429, 1.17647, 1.3, 1.23077, 1.34375, 1.2093, 1.26923, 1.22727, 
  1.28395, 1.27885, 1.2782, 1.24118, 1.28436, 1.23616, 1.26567, 1.2783, 
  1.26568, 1.27259, 1.25544, 1.25547, 1.25727, 1.27457, 1.26712, 
  1.26056, 1.25752, 1.26688, 1.26537, 1.26451, 1.26342, 1.26034, 
  1.26315, 1.26415, 1.26704, 1.26303, 1.26317, 1.26553, 1.26223 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Difference(Filtered([1..100],n->n mod 6 <> 0),Ball(G,1,40,OnPoints));</span>
[ 27, 31, 41, 47, 55, 62, 63, 71, 73, 82, 83, 91, 94, 95, 97 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T := RcwaMapping([[1,0,2],[3,1,2]]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(last2,n->Length(Trajectory(T,n,[1])));</span>
[ 71, 68, 70, 67, 72, 69, 69, 66, 74, 71, 71, 60, 68, 68, 76 ]

</pre></div>

<p>It is convenient to define an epimorphism from the free group of rank 3 to <span class="SimpleMath">G</span>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">F := FreeGroup("a","b","c");</span>
<free group on the generators [ a, b, c ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := EpimorphismByGenerators(F,G);</span>
[ a, b, c ] -> [ ( 1(2), 4(6) ), ( 1(3), 2(6) ), ( 2(3), 4(6) ) ]

</pre></div>

<p>We can compute balls about 1 in <span class="SimpleMath">G</span>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">B := Ball(G,One(G),7:Spheres);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(B,Length);</span>
[ 1, 3, 6, 12, 24, 48, 96, 192 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(B[3],Order);</span>
[ 12, infinity, infinity, infinity, infinity, 12 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(B[3],g->PreImagesRepresentative(phi,g));</span>
[ b*a, c*b, c*a, b*c, a*c, a*b ]
<span class="GAPprompt">gap></span> <span class="GAPinput">g := a*b;; Order(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(g);</span>

Rcwa permutation of Z with modulus 18, of order 12

( 1(6), 8(36), 4(18), 2(12) ) ( 3(6), 20(36), 10(18) )
( 5(6), 32(36), 16(18) )


</pre></div>

<p>Spending some more time to compute <code class="code">B := Ball(G,One(G),12:Spheres);;</code>, one can check that <span class="SimpleMath">(ab)^12</span> is the shortest word in the generators of <span class="SimpleMath">G</span> which does not represent the identity in the free product of 3 cyclic groups of order 2, but which represents the identity in <span class="SimpleMath">G</span>. However, the group <span class="SimpleMath">G</span> has elements of other finite orders as well -- for example:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g := (b*a)^3*b*c;; Order(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(g);</span>

Rcwa permutation of Z with modulus 36, of order 105

( 8(9), 16(18), 64(72), 256(288), 85(96), 128(144), 32(36) )
( 7(12), 11(18), 22(36) ) ( 5(18), 10(36), 40(144), 13(48), 
  20(72) ) ( 1(24), 2(36), 4(72) ) ( 14(36), 28(72), 112(288), 
  37(96), 56(144) )

<span class="GAPprompt">gap></span> <span class="GAPinput">Order(a*c*b*a*b*c*a*c);</span>
60

</pre></div>

<p>With some more efforts, one finds that e.g. <span class="SimpleMath">(abc)^2c^b</span> has order 616, that <span class="SimpleMath">(abc)^2b</span> has order 2310, that <span class="SimpleMath">(ab)^2a^ca^bc</span> has order 27720, and that <span class="SimpleMath">a(c(ab)^2)^2</spanhas order 65520. Of course <span class="SimpleMath">G</span> has many elements of infinite order as well. Some of them have infinite cycles, like e.g.</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g := b*c;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(g);</span>

Rcwa permutation of Z with modulus 12

        /
        | 4n  if n in 1(3)
        | 2n  if n in 5(6)
 n |-> <  n/2 if n in 2(12)
        | n/4 if n in 8(12)
        | n   if n in 0(3)
        \

<span class="GAPprompt">gap></span> <span class="GAPinput">Sinks(g);</span>
[ 4(12) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Trajectory(g,last[1],10);</span>
[ 4(12), 16(48), 64(192), 256(768), 1024(3072), 4096(12288), 
  16384(49152), 65536(196608), 262144(786432), 1048576(3145728) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Trajectory(g,4,20);</span>
[ 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 
  16777216, 67108864, 268435456, 1073741824, 4294967296, 17179869184, 
  68719476736, 274877906944, 1099511627776 ]

</pre></div>

<p>Others seem to have only finite cycles. Some of these appear to have <q>on average</q> comparatively <q>short</q> cycles, like e.g.</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g := a*b*a*c*b*c;</span>
<rcwa permutation of Z with modulus 144>
<span class="GAPprompt">gap></span> <span class="GAPinput">cycs := ShortCycles(g,[0..10000],100,10^20);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Difference([0..10000],Union(cycs));</span>
[  ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(List(cycs,Length));</span>
[ [ 1, 2222 ], [ 3, 1945 ], [ 4, 1111 ], [ 5, 93 ], [ 6, 926 ], 
  [ 7, 31 ], [ 8, 864 ], [ 9, 10 ], [ 10, 289 ], [ 11, 4 ], [ 12, 95 ], 
  [ 13, 1 ], [ 14, 31 ], [ 16, 12 ], [ 18, 4 ], [ 20, 1 ] ]

</pre></div>

<p>If the cycle of <span class="SimpleMath">g</span> containing some <span class="SimpleMath">n ∈ ℤ</span> is finite and has a certain length <span class="SimpleMath">l</span>, then there is some <span class="SimpleMath">m ∈ ℤ</span> such that for every <span class="SimpleMath">k ∈ ℤ</span> the cycle of <span class="SimpleMath">g</span> containing <span class="SimpleMath">n + km</span> has length <span class="SimpleMath">l</span> as well. Thus, in other words, every finite cycle of <span class="SimpleMath">g</span> <q>belongs to</q> a cycle of residue classes. (This is a special property of <span class="SimpleMath">g</span> which is not shared by every rcwa permutation -- cf. e.g. Collatz' permutation from Section 7.2.) We can find some of these infinitely many residue class cycles:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">cycsrc := ShortResidueClassCycles(g,Mod(g),20);</span>
[ [ 0(6) ], [ 3(6), 160(288), 20(36) ], 
  [ 7(18), 352(864), 44(108), 28(72) ], 
  [ 11(18), 544(864), 2896(4608), 362(576), 68(108), 88(144) ], 
  [ 13(18), 640(864), 80(108), 52(72) ], [ 10(36) ], [ 34(36) ], 
  [ 1(54), 64(2592), 8(324), 4(216), 16(1152), 2(144) ], 
  [ 5(54), 256(2592), 1360(13824), 170(1728), 32(324), 40(432), 
      208(2304), 26(288) ], 
  [ 17(54), 832(2592), 4432(13824), 23632(73728), 2954(9216), 554(1728), 
      104(324), 136(432) ], 
  [ 37(54), 1792(2592), 224(324), 148(216), 784(1152), 98(144) ], 
  [ 41(54), 1984(2592), 10576(13824), 1322(1728), 248(324), 328(432), 
      1744(2304), 218(288) ], 
  [ 53(54), 2560(2592), 13648(13824), 72784(73728), 9098(9216), 
      1706(1728), 320(324), 424(432) ], [ 38(72), 58(108), 304(576) ], 
  [ 62(72), 94(108), 496(576) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(cycsrc,Length);</span>
[ 1, 3, 4, 6, 4, 1, 1, 6, 8, 8, 6, 8, 8, 3, 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(List(Flat(cycsrc),cl->1/Mod(cl)));</span>
97459/110592
<span class="GAPprompt">gap></span> <span class="GAPinput">Float(last); # about 88% 'coverage'</span>
0.881248
<span class="GAPprompt">gap></span> <span class="GAPinput">cycsrc := ShortResidueClassCycles(g,3*Mod(g),20);</span>
[ [ 0(6) ], [ 3(6), 160(288), 20(36) ], 
  [ 7(18), 352(864), 44(108), 28(72) ], 
  [ 11(18), 544(864), 2896(4608), 362(576), 68(108), 88(144) ], 
  [ 13(18), 640(864), 80(108), 52(72) ], [ 10(36) ], [ 34(36) ], 
  [ 1(54), 64(2592), 8(324), 4(216), 16(1152), 2(144) ], 
  [ 5(54), 256(2592), 1360(13824), 170(1728), 32(324), 40(432), 
      208(2304), 26(288) ], 
  [ 17(54), 832(2592), 4432(13824), 23632(73728), 2954(9216), 554(1728), 
      104(324), 136(432) ], 
  [ 37(54), 1792(2592), 224(324), 148(216), 784(1152), 98(144) ], 
  [ 41(54), 1984(2592), 10576(13824), 1322(1728), 248(324), 328(432), 
      1744(2304), 218(288) ], 
  [ 53(54), 2560(2592), 13648(13824), 72784(73728), 9098(9216), 
      1706(1728), 320(324), 424(432) ], [ 38(72), 58(108), 304(576) ], 
  [ 62(72), 94(108), 496(576) ], 
  [ 23(162), 1120(7776), 5968(41472), 746(5184), 140(972), 184(1296), 
      976(6912), 5200(36864), 650(4608), 122(864) ], 
  [ 35(162), 1696(7776), 9040(41472), 48208(221184), 257104(1179648), 
      32138(147456), 6026(27648), 1130(5184), 212(972), 280(1296) ], 
  [ 73(162), 3520(7776), 440(972), 292(648), 1552(3456), 8272(18432), 
      1034(2304), 194(432) ], 
  [ 77(162), 3712(7776), 19792(41472), 2474(5184), 464(972), 616(1296), 
      3280(6912), 17488(36864), 2186(4608), 410(864) ], 
  [ 89(162), 4288(7776), 22864(41472), 121936(221184), 650320(1179648), 
      81290(147456), 15242(27648), 2858(5184), 536(972), 712(1296) ], 
  [ 127(162), 6112(7776), 764(972), 508(648), 2704(3456), 14416(18432), 
      1802(2304), 338(432) ], 
  [ 14(216), 22(324), 112(1728), 592(9216), 74(1152) ], 
  [ 86(216), 130(324), 688(1728), 3664(9216), 458(1152) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(cycsrc,Length);</span>
[ 1, 3, 4, 6, 4, 1, 1, 6, 8, 8, 6, 8, 8, 3, 3, 10, 10, 8, 10, 10, 8, 5, 
  5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(List(Flat(cycsrc),Density));</span>
5097073/5308416
<span class="GAPprompt">gap></span> <span class="GAPinput">Float(last); # already about 96% 'coverage'</span>
0.960187

</pre></div>

<p>There are also some elements of infinite order whose cycles seem to be all finite, but <q>on average</q> pretty <q>long</q> -- e.g.</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g := (b*a*c)^2*a;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(g);</span>

Rcwa permutation of Z with modulus 288

        /
        | (16n-1)/3   if n in 1(3)
        | (9n+5)/4    if n in 3(24) U 11(24)
        | (27n+19)/4  if n in 15(24) U 23(24)
        | (3n+1)/4    if n in 5(24)
        | (n-3)/6     if n in 21(24)
        | (27n+29)/8  if n in 9(48) U 41(48)
        | (9n+7)/8    if n in 17(48) U 33(48)
        | (2n-7)/9    if n in 8(36)
 n |-> <  (4n-11)/9   if n in 32(36)
        | (27n+38)/8  if n in 14(48)
        | (3n+2)/8    if n in 26(48)
        | (9n+10)/8   if n in 38(48)
        | (3n+4)/4    if n in 20(72)
        | n/4         if n in 56(72)
        | (9n+14)/16  if n in 2(96)
        | (27n+58)/16 if n in 50(96)
        | n           if n in 0(6)
        \

<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..100],n->Length(Cycle(g,n)));</span>
[ 6, 1, 6, 6, 6, 1, 194, 6, 216, 26, 26, 1, 26, 194, 65, 26, 26, 1, 216, 
  26, 6, 216, 46, 1, 640, 26, 70, 194, 216, 1, 70, 26, 216, 216, 26, 1, 
  194, 216, 73, 26, 110, 1, 194, 216, 194, 111, 39, 1, 194, 640, 640, 
  194, 26, 1, 171, 194, 204, 640, 216, 1, 111, 70, 91, 26, 194, 1, 216, 
  216, 26, 111, 65, 1, 50, 194, 26, 216, 640, 1, 502, 26, 111, 40, 110, 
  1, 26, 194, 385, 640, 88, 1, 100, 111, 65, 110, 416, 1, 171, 194, 194, 
  640 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Cycle(g,25));</span>
640
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(Cycle(g,25));</span>
323270249684063829
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Cycle(g,25855));</span>
4751
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(Cycle(g,25855));</span>
507359605810239426786254778159924369135184044618585904603866210104085
<span class="GAPprompt">gap></span> <span class="GAPinput">cycs := ShortCycles(g,[0..50000],10000,10^100);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := [0..50000];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for cyc in cycs do S := Difference(S,cyc); od;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S; # no cycle containing some n in [0..50000] has length > 10000 </span>
[  ]

</pre></div>

<p>Taking a look at the lengths of the trajectories of the Collatz mapping <span class="SimpleMath">T</span> starting at the points in a cycle, we can see how a cycle of <span class="SimpleMath">g</span> goes <q>up and down</q> in the <span class="SimpleMath">3n+1</span> tree:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">List(Cycle(g,25),n->Length(Trajectory(T,n,[1])));</span>
[ 17, 21, 25, 29, 33, 31, 35, 34, 32, 33, 37, 41, 45, 44, 42, 39, 43, 
  41, 45, 44, 42, 43, 40, 38, 35, 39, 37, 41, 40, 44, 48, 46, 50, 49, 
  47, 48, 45, 42, 46, 44, 48, 47, 45, 46, 50, 49, 47, 43, 41, 38, 39, 
  36, 34, 30, 27, 31, 29, 33, 32, 30, 31, 35, 33, 37, 36, 40, 39, 43, 
  41, 45, 44, 42, 43, 47, 51, 55, 53, 57, 56, 54, 55, 59, 58, 62, 66, 
  64, 68, 67, 65, 66, 63, 60, 64, 62, 66, 65, 63, 64, 68, 67, 65, 61, 
  59, 56, 52, 49, 53, 51, 55, 54, 52, 53, 57, 55, 59, 58, 56, 57, 54, 
  50, 48, 45, 49, 47, 51, 50, 54, 52, 56, 55, 53, 54, 58, 62, 66, 70, 
  74, 72, 76, 75, 79, 83, 87, 91, 90, 94, 93, 97, 95, 99, 98, 96, 97, 
  94, 91, 88, 85, 89, 87, 91, 90, 88, 89, 86, 84, 81, 85, 83, 87, 86, 
  90, 94, 98, 97, 101, 105, 109, 107, 111, 110, 108, 109, 113, 117, 115, 
  119, 118, 122, 126, 125, 123, 120, 124, 122, 126, 125, 123, 124, 121, 
  119, 116, 117, 114, 111, 115, 113, 117, 116, 114, 115, 119, 123, 122, 
  120, 117, 121, 119, 123, 122, 120, 121, 118, 116, 112, 110, 106, 103, 
  107, 105, 109, 108, 106, 107, 111, 109, 113, 112, 116, 114, 118, 117, 
  115, 116, 113, 110, 111, 108, 104, 102, 99, 103, 101, 105, 104, 108, 
  106, 110, 109, 107, 108, 112, 111, 109, 105, 102, 103, 100, 98, 95, 
  92, 96, 94, 98, 97, 95, 96, 93, 91, 88, 92, 90, 94, 93, 97, 101, 105, 
  109, 108, 106, 103, 107, 105, 109, 108, 106, 107, 104, 102, 99, 103, 
  101, 105, 104, 108, 112, 110, 114, 113, 111, 112, 116, 115, 113, 109, 
  106, 110, 108, 112, 111, 109, 110, 114, 112, 116, 115, 113, 114, 111, 
  107, 105, 102, 103, 100, 98, 95, 99, 97, 101, 100, 104, 103, 107, 105, 
  109, 108, 106, 107, 104, 101, 98, 99, 96, 94, 91, 92, 89, 87, 84, 85, 
  82, 80, 77, 81, 79, 83, 82, 86, 85, 89, 88, 86, 83, 80, 81, 78, 76, 
  73, 74, 71, 68, 72, 70, 74, 73, 71, 72, 76, 80, 79, 83, 87, 91, 90, 
  88, 85, 89, 87, 91, 90, 88, 89, 86, 84, 81, 85, 83, 87, 86, 90, 94, 
  92, 96, 95, 93, 94, 98, 96, 100, 99, 97, 98, 102, 106, 110, 114, 113, 
  111, 108, 112, 110, 114, 113, 111, 112, 109, 107, 104, 108, 106, 110, 
  109, 113, 117, 115, 119, 118, 116, 117, 114, 111, 115, 113, 117, 116, 
  114, 115, 119, 118, 116, 112, 110, 107, 108, 105, 103, 100, 104, 102, 
  106, 105, 109, 108, 112, 110, 114, 113, 111, 112, 116, 115, 113, 109, 
  106, 103, 104, 101, 99, 95, 91, 88, 92, 90, 94, 93, 91, 92, 96, 94, 
  98, 97, 95, 96, 100, 98, 102, 101, 105, 104, 102, 99, 100, 97, 93, 89, 
  87, 84, 85, 82, 80, 77, 74, 78, 76, 80, 79, 77, 78, 75, 73, 69, 67, 
  64, 68, 66, 70, 69, 73, 71, 75, 74, 72, 73, 70, 67, 68, 65, 63, 60, 
  64, 62, 66, 65, 69, 68, 66, 63, 64, 61, 59, 56, 60, 58, 62, 61, 65, 
  64, 62, 59, 60, 57, 55, 51, 48, 49, 46, 44, 40, 37, 34, 35, 32, 28, 
  26, 23, 27, 25, 29, 28, 32, 30, 34, 33, 31, 32, 36, 35, 33, 29, 26, 
  27, 24, 22, 19, 23, 21, 25, 24, 28, 27, 25, 22, 23, 20, 18, 14, 18, 
  22, 20, 24, 23, 21, 22, 19, 16, 20, 18, 22, 21, 19, 20, 24, 23, 21, 
  17, 15, 17, 15, 19, 18, 16 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">lngs := List(Cycle(g,25855),n->Length(Trajectory(T,n,[1])));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Minimum(lngs);</span>
55
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(lngs);</span>
521
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(lngs,55);</span>
15
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(lngs,521);</span>
2807

</pre></div>

<p>Finally let's have a look at elements of G with small modulus:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">B := RestrictedBall(G,One(G),20,36:Spheres);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(B,Length);</span>
[ 1, 3, 6, 12, 4, 6, 6, 4, 4, 4, 6, 6, 3, 3, 2, 0, 0, 0, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(last);</span>
70
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(last2,0)-2;</span>
14

</pre></div>

<p>So we have 70 elements of modulus 36 or less in <span class="SimpleMath">G</span> which can be reached from the identity by successive multiplication with generators without passing elements with mudulus exceeding 36. Further we see that the longest word in the generators yielding an element with modulus at most 36 has length 14. Now we double our bound on the modulus:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">B := RestrictedBall(G,One(G),100,72:Spheres);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(B,Length);</span>
[ 1, 3, 6, 12, 22, 14, 18, 22, 24, 26, 26, 34, 35, 32, 37, 38, 46, 58, 
  65, 73, 82, 91, 93, 96, 110, 121, 114, 117, 146, 138, 148, 168, 174, 
  196, 215, 214, 232, 255, 280, 305, 315, 359, 377, 371, 363, 366, 397, 
  419, 401, 405, 405, 401, 407, 415, 435, 424, 401, 359, 338, 330, 332, 
  281, 278, 271, 269, 254, 255, 257, 258, 258, 233, 215, 202, 185, 154, 
  121, 88, 55, 35, 20, 10, 5, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(last);</span>
15614
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(last2,0)-2;</span>
83
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(List(Flat(B),Modulus));</span>
[ [ 1, 1 ], [ 6, 3 ], [ 12, 4 ], [ 18, 2 ], [ 24, 4 ], [ 36, 56 ], 
  [ 48, 4 ], [ 72, 15540 ] ]

</pre></div>

<p>We observe that there are 15540 elements in <span class="SimpleMath">G</span> with modulus 72 which are <q>reachable</q> from the identity by successive multiplication with generators without passing elements with mudulus exceeding 72. Further we see that the longest word in the generators yielding an element with modulus at most 72 has length 83.</p>

<p>It is obvious that many questions regarding the group <span class="SimpleMath">G</span> remain open.</p>

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

<h4>7.4 <span class="Heading">
  A group with huge finite orbits
</span></h4>

<p>In this section we investigate a group which has huge finite orbits on ℤ.</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">a := ClassTransposition(0,2,1,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b := ClassTransposition(0,5,4,5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c := ClassTransposition(1,4,0,6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := Group(a,b,c);</span>
<(0(2),1(2)),(0(5),4(5)),(1(4),0(6))>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions();</span>
"3CTsGroups6"
<span class="GAPprompt">gap></span> <span class="GAPinput">3CTsGroups6.Id3CTsGroup(G,3CTsGroups6.grps); # 'catalogue number' of G</span>
1284

</pre></div>

<p>We look for orbits of length at most 100 containing an integer in the range <code class="code">[0..1000]</code>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">orbs := ShortOrbits(G,[0..1000],100);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(orbs,Length);</span>
[ 16, 2, 24, 2, 2, 2, 8, 2, 8, 2, 2, 8, 2, 8, 2, 2, 2, 40, 2, 8, 24, 2, 
  8, 2, 2, 8, 2, 24, 8, 2, 56, 2, 2, 2, 8, 2, 8, 2, 2, 8, 2, 8, 2, 2, 2, 
  24, 2, 8, 2, 8, 2, 2, 8, 2, 8, 2, 24, 2, 2, 2, 8, 2, 8, 2, 2, 8, 2, 8, 
  2, 2, 2, 2, 8, 24, 2, 8, 2, 2, 8, 2, 24, 8, 2, 2, 2, 2, 8, 2, 8, 2, 2, 
  8, 2, 8, 2, 2, 2, 24, 2, 8, 2, 8, 2, 2, 8, 2, 8, 2, 24, 2, 2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(last);</span>
[ [ 2, 67 ], [ 8, 32 ], [ 16, 1 ], [ 24, 9 ], [ 40, 1 ], [ 56, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Difference([0..1000],Union(orbs)));</span>
491

</pre></div>

<p>So almost half of the integers in the range <code class="code">[0..1000]</code> lie in orbits of length larger than 100. In fact there are much larger orbits. For example:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">B := Ball(G,32,500,OnPoints:Spheres);; # compute ball about 32</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(B,[]); # <> fail -> we have exhausted the orbit</span>
354
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(List(B,Length)); # the orbit length</span>
6296
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(Flat(B)); # the largest integer in the orbit</span>
3301636381609509797437679
<span class="GAPprompt">gap></span> <span class="GAPinput">B := Ball(G,736,5000,OnPoints:Spheres);; # the same for 736 ...</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Position(B,[]);</span>
2997
<span class="GAPprompt">gap></span> <span class="GAPinput">Sum(List(B,Length)); # the orbit length for this time</span>
495448
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(Flat(B));</span>
2461374276522713949036151811903149785690151467356354652860276957152301465\
0546360696627187194849439881973442451686685024708652634593861146709752378\
847078493406287854573381920553713155967741550498839

</pre></div>

<p>It seems that the cycles of <span class="SimpleMath">abc</span> completely traverse all orbits of <span class="SimpleMath">G</span>, with the only exception of the orbit of 0. Let's check this in the above examples:




<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g := a*b*c;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(g);</span>

Rcwa permutation of Z with modulus 60

        /
        | n-1       if n in 3(30) U 9(30) U 17(30) U 23(30) U 27(30) U 
        |                   29(30)
        | 3n/2      if n in 0(20) U 12(20) U 16(20)
        | n+1       if n in 2(20) U 6(20) U 10(20)
        | (2n+1)/3  if n in 7(30) U 13(30) U 19(30)
        | n+3       if n in 1(30) U 11(30)
 n |-> <  n-5       if n in 15(30) U 25(30)
        | (3n+12)/2 if n in 4(20)
        | (3n-12)/2 if n in 8(20)
        | n+5       if n in 14(20)
        | n-3       if n in 18(20)
        | (2n-7)/3  if n in 5(30)
        | (2n+9)/3  if n in 21(30)
        \

<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Cycle(g,32));</span>
6296
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(Cycle(g,736));</span>
495448

</pre></div>

<p>Representatives and lengths of the cycles of <span class="SimpleMath">g</span> which intersect nontrivially with the range <code class="code">[0..1000]</code> are as follows:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">CycleRepresentativesAndLengths(g,[0..1000]:notify:=50000);</span>
n = 736: after 50000 steps, the iterate has 157 binary digits.
n = 736: after 100000 steps, the iterate has 135 binary digits.
n = 736: after 150000 steps, the iterate has 131 binary digits.
n = 736: after 200000 steps, the iterate has 507 binary digits.
n = 736: after 250000 steps, the iterate has 414 binary digits.
n = 736: after 300000 steps, the iterate has 457 binary digits.
n = 736: after 350000 steps, the iterate has 465 binary digits.
n = 736: after 400000 steps, the iterate has 325 binary digits.
n = 736: after 450000 steps, the iterate has 534 binary digits.
n = 896: after 50000 steps, the iterate has 359 binary digits.
n = 896: after 100000 steps, the iterate has 206 binary digits.
[ [ 1, 15 ], [ 2, 2 ], [ 16, 24 ], [ 22, 2 ], [ 26, 2 ], [ 32, 6296 ], 
  [ 46, 2 ], [ 52, 8 ], [ 56, 296 ], [ 62, 2 ], [ 76, 8 ], [ 82, 2 ], 
  [ 86, 2 ], [ 92, 8 ], [ 106, 2 ], [ 112, 104 ], [ 116, 8 ], 
  [ 122, 2 ], [ 136, 440 ], [ 142, 2 ], [ 146, 2 ], [ 152, 40 ], 
  [ 166, 2 ], [ 172, 8 ], [ 176, 24 ], [ 182, 2 ], [ 196, 8 ], 
  [ 202, 2 ], [ 206, 2 ], [ 212, 8 ], [ 226, 2 ], [ 232, 24 ], 
  [ 236, 8 ], [ 242, 2 ], [ 256, 56 ], [ 262, 2 ], [ 266, 2 ], 
  [ 272, 408 ], [ 286, 2 ], [ 292, 8 ], [ 296, 104 ], [ 302, 2 ], 
  [ 316, 8 ], [ 322, 2 ], [ 326, 2 ], [ 332, 8 ], [ 346, 2 ], 
  [ 352, 264 ], [ 356, 8 ], [ 362, 2 ], [ 376, 1304 ], [ 382, 2 ], 
  [ 386, 2 ], [ 392, 24 ], [ 406, 2 ], [ 412, 8 ], [ 416, 200 ], 
  [ 422, 2 ], [ 436, 8 ], [ 442, 2 ], [ 446, 2 ], [ 452, 8 ], 
  [ 466, 2 ], [ 472, 104 ], [ 476, 8 ], [ 482, 2 ], [ 496, 24 ], 
  [ 502, 2 ], [ 506, 2 ], [ 512, 696 ], [ 526, 2 ], [ 532, 8 ], 
  [ 536, 3912 ], [ 542, 2 ], [ 556, 8 ], [ 562, 2 ], [ 566, 2 ], 
  [ 572, 8 ], [ 586, 2 ], [ 592, 888 ], [ 596, 8 ], [ 602, 2 ], 
  [ 616, 728 ], [ 622, 2 ], [ 626, 2 ], [ 632, 2776 ], [ 646, 2 ], 
  [ 652, 8 ], [ 656, 24 ], [ 662, 2 ], [ 676, 8 ], [ 682, 2 ], 
  [ 686, 2 ], [ 692, 8 ], [ 706, 2 ], [ 712, 24 ], [ 716, 8 ], 
  [ 722, 2 ], [ 736, 495448 ], [ 742, 2 ], [ 746, 2 ], [ 752, 1272 ], 
  [ 766, 2 ], [ 772, 8 ], [ 776, 376 ], [ 782, 2 ], [ 796, 8 ], 
  [ 802, 2 ], [ 806, 2 ], [ 812, 8 ], [ 826, 2 ], [ 832, 120 ], 
  [ 836, 8 ], [ 842, 2 ], [ 856, 2264 ], [ 862, 2 ], [ 866, 2 ], 
  [ 872, 24 ], [ 886, 2 ], [ 892, 8 ], [ 896, 132760 ], [ 902, 2 ], 
  [ 916, 8 ], [ 922, 2 ], [ 926, 2 ], [ 932, 8 ], [ 946, 2 ], 
  [ 952, 456 ], [ 956, 8 ], [ 962, 2 ], [ 976, 24 ], [ 982, 2 ], 
  [ 986, 2 ], [ 992, 1064 ] ]

</pre></div>

<p>So far the author has checked that all positive integers less than 173176 lie in finite cycles of <span class="SimpleMath">g</span>. Several of them are longer than 1000000, and the cycle containing 25952 has length 245719352. Whether the cycle containing 173176 is finite or infinite has not been checked so far -- in any case it is longer than 5700000000, and it exceeds <span class="SimpleMath">10^40000</span>. Presumably it is finite as well, but checking this may require a lot of computing time.</p>

<p>On the one hand the cycles of <span class="SimpleMath">g</span> seem to behave <q>randomly</q>, perhaps as if they would ascend or descend from one point to the next by a certain factor depending on which side a thrown coin falls on. -- In this <q>model</q>, cycles would be finite with probability 1 since the simple random walk on ℤ is recurrent. On the other, there seems to be quite some structure on them, however little is known so far.</p>

<p>First we observe that each orbit under the action of <span class="SimpleMath">G</span> seems to split into two cycles of <span class="SimpleMath">h := abcacb</span> of the same length (of course this has been checked for many more orbits than those shown here):</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">h := a*b*c*a*c*b;</span>
<rcwa permutation of Z with modulus 360>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(CyclesOnFiniteOrbit(G,h,32),Length);</span>
[ 3148, 3148 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(CyclesOnFiniteOrbit(G,h,736),Length);</span>
[ 247724, 247724 ]

</pre></div>

<p>One cycle seems to contain the points at the odd positions and the other seems to contain the points at the even positions in the cycle of <span class="SimpleMath">g</span>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">cycle_g := Cycle(g,32);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">positions1 := List(Cycle(h,32),n->Position(cycle_g,n));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(positions1 mod 2);</span>
[ [ 1, 3148 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">positions2 := List(Cycle(h,33),n->Position(cycle_g,n));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(positions2 mod 2);</span>
[ [ 0, 3148 ] ]

</pre></div>

<p>However the ordering in which these points are traversed looks pretty <q>scrambled</q>:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">positions1{[1..200]};</span>
[ 1, 6271, 6291, 6281, 6285, 6287, 6283, 6289, 6273, 6275, 6277, 6279, 
  6293, 5, 15, 17, 19, 6259, 6261, 6263, 6265, 21, 23, 25, 41, 6227, 
  6229, 6231, 6233, 6235, 6237, 6239, 43, 53, 55, 57, 63, 59, 61, 65, 
  45, 47, 49, 51, 67, 6223, 6221, 69, 6163, 6215, 6205, 6209, 6211, 
  6207, 6213, 6165, 6171, 6177, 6179, 6181, 6183, 6175, 6173, 6185, 
  6189, 6191, 6187, 6193, 6169, 6167, 6195, 6199, 6201, 6197, 6203, 
  6217, 73, 83, 85, 87, 103, 113, 115, 117, 4357, 4361, 4363, 4359, 
  4365, 4371, 4373, 4375, 4377, 4369, 4367, 4379, 119, 121, 123, 125, 
  129, 131, 127, 133, 139, 141, 143, 145, 137, 135, 147, 149, 151, 153, 
  155, 159, 161, 157, 163, 169, 175, 4283, 4281, 177, 4271, 4273, 4275, 
  4277, 181, 4255, 4257, 4259, 4261, 4263, 4265, 4267, 183, 2161, 2163, 
  4195, 4199, 4201, 4197, 4203, 4209, 4211, 4213, 4215, 4207, 4205, 
  4217, 2165, 2167, 2169, 2171, 2175, 2177, 2173, 2179, 2185, 2187, 
  2189, 2191, 2183, 2181, 2193, 2195, 2197, 2199, 2201, 2467, 2469, 
  4117, 4121, 4123, 4119, 4125, 4131, 4133, 4135, 4137, 4129, 4127, 
  4139, 2471, 2473, 2475, 2477, 2487, 2489, 2491, 2507, 2517, 2519, 
  2521, 2537, 3923, 3925, 3941, 3943 ]

</pre></div>

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

<h4>7.5 <span class="Heading">
  A group which acts 4-transitively on the positive integers
</span></h4>

<p>In this section, we would like to show that the group <span class="SimpleMath">G</span> generated by the two permutations</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">a := RcwaMapping([[3,0,2],[3,1,4],[3,0,2],[3,-1,4]]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">u := RcwaMapping([[3,0,5],[9,1,5],[3,-1,5],[9,-2,5],[9,4,5]]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName(a,"a"); SetName(u,"u"); G := Group(a,u);;</span>

</pre></div>

<p>which we have already investigated in earlier examples acts 4-transitively on the set of positive integers. Obviously, it acts on the set of positive integers. First we show that this action is transitive. We start by checking in which residue classes sufficiently large positive integers are mapped to smaller ones by a suitable group element:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">List([a,a^-1,u,u^-1],DecreasingOn);</span>
[ 1(2), 0(3), 0(5) U 2(5), 2(3) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Union(last);</span>
Z \ 4(30) U 16(30) U 28(30)

</pre></div>

<p>We see that we cannot always choose such a group element from the set of generators and their inverses -- otherwise the union would be <code class="code">Integers</code>.</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">List([a,a^-1,u,u^-1,a^2,a^-2,u^2,u^-2],DecreasingOn);</span>
[ 1(2), 0(3), 0(5) U 2(5), 2(3), 1(8) U 7(8), 0(3) U 2(9) U 7(9), 
  0(25) U 12(25) U 17(25) U 20(25), 2(3) U 1(9) U 3(9) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Union(last); # Still not enough ...</span>
Z \ 4(90) U 58(90) U 76(90)
<span class="GAPprompt">gap></span> <span class="GAPinput">List([a,a^-1,u,u^-1,a^2,a^-2,u^2,u^-2,a*u,u*a,(a*u)^-1,(u*a)^-1],</span>
<span class="GAPprompt">></span> <span class="GAPinput">        DecreasingOn);</span>
[ 1(2), 0(3), 0(5) U 2(5), 2(3), 1(8) U 7(8), 0(3) U 2(9) U 7(9), 
  0(25) U 12(25) U 17(25) U 20(25), 2(3) U 1(9) U 3(9), 
  3(5) U 0(10) U 7(20) U 9(20), 0(5) U 2(5), 2(3), 3(9) U 4(9) U 8(9) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Union(last); # ... but that's it!
Integers

</pre></div>

<p>Finally, we have to deal with <q>small</q> integers. We use the notation for the coefficients of rcwa mappings introduced at the beginning of this manual. Let <span class="SimpleMath">c_r(m) > a_r(m)</span>. Then we easily see that <span class="SimpleMath">(a_r(m)n+b_r(m))/c_r(m) > n</span> implies <span class="SimpleMath">n < b_r(m)/(c_r(m)-a_r(m))</span>. Thus we can restrict our considerations to integers <span class="SimpleMath">n < b_ max</span>, where <span class="SimpleMath">b_ max</span> is the largest second entry of a coefficient triple of one of the group elements in our list:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">List([a,a^-1,u,u^-1,a^2,a^-2,u^2,u^-2,a*u,u*a,(a*u)^-1,(u*a)^-1],</span>
<span class="GAPprompt">></span> <span class="GAPinput">        f->Maximum(List(Coefficients(f),c->c[2])));</span>
[ 1, 1, 4, 2, 7, 7, 56, 28, 25, 17, 17, 11 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(last);</span>
56

</pre></div>

<p>Thus this upper bound is 56. The rest is easy -- all we have to do is to check that the orbit containing 1 contains also all other positive integers less than or equal to 56:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">S := [1];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">while not IsSubset(S,[1..56]) do</span>
<span class="GAPprompt">></span> <span class="GAPinput">     S := Union(S,S^a,S^u,S^(a^-1),S^(u^-1));</span>
<span class="GAPprompt">></span> <span class="GAPinput">   od;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubset(S,[1..56]);</span>
true

</pre></div>

<p>Checking 2-transitivity is computationally harder, and in the sequel we will omit some steps which are in practice needed to find out <q>what to do</q>. The approach taken here is to show that the stabilizer of 1 in <span class="SimpleMath">G</span> acts transitively on the set of positive integers greater than 1. We do this by similar means as used above for showing the transitivity of the action of <span class="SimpleMath">G</span> on the positive integers. We start by determining all products of at most 5 generators and their inverses, which stabilize 1 (taking at most 4-generator products would not suffice!):</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">gens := [a,u,a^-1,u^-1];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">tups := Concatenation(List([1..5],k->Tuples([1..4],k)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(tups);</span>
1364
<span class="GAPprompt">gap></span> <span class="GAPinput">tups := Filtered(tups,tup->ForAll([[1,3],[3,1],[2,4],[4,2]],</span>
<span class="GAPprompt">></span> <span class="GAPinput">                                     l->PositionSublist(tup,l)=fail));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(tups);</span>
484
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := [];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for tup in tups do</span>
<span class="GAPprompt">></span> <span class="GAPinput">     n := 1;</span>
<span class="GAPprompt">></span> <span class="GAPinput">     for i in tup do n := n^gens[i]; od;</span>
<span class="GAPprompt">></span> <span class="GAPinput">     if n = 1 then Add(stab,tup); fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput">   od;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(stab);</span>
118
<span class="GAPprompt">gap></span> <span class="GAPinput">stabelm := List(stab,tup->Product(List(tup,i->gens[i])));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ForAll(stabelm,elm->1^elm=1); # Check.</span>
true

</pre></div>

<p>The resulting products have various different not quite small moduli:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">List(stabelm,Modulus);</span>
[ 4, 3, 16, 25, 9, 81, 64, 100, 108, 100, 25, 75, 27, 243, 324, 243, 
  256, 400, 144, 400, 100, 432, 324, 400, 80, 400, 625, 25, 75, 135, 
  150, 75, 225, 81, 729, 486, 729, 144, 144, 81, 729, 1296, 729, 6561, 
  1024, 1600, 192, 1600, 400, 576, 432, 1600, 320, 1600, 2500, 100, 100, 
  180, 192, 192, 108, 972, 1728, 972, 8748, 1600, 400, 320, 80, 1600, 
  2500, 300, 2500, 625, 625, 75, 675, 75, 75, 135, 405, 600, 120, 600, 
  1875, 75, 225, 405, 225, 225, 675, 243, 2187, 729, 2187, 216, 216, 
  243, 2187, 1944, 2187, 19683, 576, 144, 576, 432, 81, 81, 729, 2187, 
  5184, 324, 8748, 243, 2187, 19683, 26244, 19683 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Lcm(last);</span>
12597120000
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(Factors(last));</span>
[ [ 2, 10 ], [ 3, 9 ], [ 5, 4 ] ]

</pre></div>

<p>Similar as before, we determine for any of the above mappings the residue classes whose elements larger than the largest <span class="SimpleMath">b_r(m)</span> - coefficient of the respective mapping are mapped to smaller integers:</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">decs := List(stabelm,DecreasingOn);;</span>
--> --------------------

--> maximum size reached

--> --------------------

100%


¤ Dauer der Verarbeitung: 0.43 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.