GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
<!-- #################################################################### -->1<!-- ## ## -->2<!-- ## algs.xml RCWA documentation Stefan Kohl ## -->3<!-- ## ## -->4<!-- #################################################################### -->56<Chapter Label="ch:algorithms">7<Heading>The Algorithms Implemented in RCWA</Heading>89This chapter lists brief descriptions of the algorithms and methods10implemented in this package. These descriptions are kept very informal and11terse, and some of them provide only rudimentary information. They are listed12in alphabetical order. The word <Q>trivial</Q> as a description means that13essentially nothing is done except of performing I/O operations, storing or14recalling one or several values or doing very basic computations, and15<Q>straightforward</Q> means that no sophisticated algorithm is used.16Note that <Q>trivial</Q> and <Q>straightforward</Q> are to be read17as <E>mathematically</E> trivial respectively straightforward, and that the18code of a function or method attributed in this way can still be reasonably19long and complicated. Longer and better descriptions of <E>some</E> of the20algorithms and methods can be found in <Cite Key="Kohl08b"/>.2122<List>2324<Mark>25<C>ActionOnRespectedPartition(<A>G</A>)</C>26</Mark>27<Item>28<Q>Straightforward</Q> after having computed a respected partition29by <C>RespectedPartition</C>.30</Item>3132<Mark>33<C>AllElementsOfCTZWithGivenModulus(<A>m</A>)</C>34</Mark>35<Item>36This function first determines a list of all unordered partitions37<M>\mathcal{P}</M> of &ZZ; into <A>m</A> residue classes.38Then for any such partition <M>\mathcal{P}</M> it runs a loop39over the elements of the symmetric group of degree <A>m</A>.40For any <M>\sigma \in {\rm S}_m</M> and any partition <M>\mathcal{P}</M>41it constructs the element of <M>{\rm CT}(\mathbb{Z})</M> with modulus42dividing <M>m</M> which maps the ordered partition <M>\{0(m), 1(m),43\dots, m-1(m)\}</M> to the ordered partition obtained from44<M>\mathcal{P}</M> by permuting the residue classes with <M>\sigma</M>.45Finally it discards the elements whose modulus is a proper divisor46of <A>m</A>, and returns the <Q>rest</Q>.47</Item>4849<Mark>50<C>Ball(<A>G</A>,<A>g</A>,<A>r</A>)</C>51</Mark>52<Item>53<Q>Straightforward</Q>.54</Item>5556<Mark>57<C>Ball(<A>G</A>,<A>p</A>,<A>r</A>,<A>act</A>)</C>58</Mark>59<Item>60<Q>Straightforward</Q>.61</Item>6263<Mark>64<C>ClassPairs(<A>m</A>)</C>65</Mark>66<Item>67Runs a loop over all 4-tuples of nonnegative integers less than <A>m</A>,68and filters by congruence criteria and ordering of the entries.69</Item>7071<Mark>72<C>ClassReflection(<A>r</A>,<A>m</A>)</C>73</Mark>74<Item>75<Q>Trivial</Q>.76</Item>7778<Mark>79<C>ClassRotation(<A>r</A>,<A>m</A>,<A>u</A>)</C>80</Mark>81<Item>82<Q>Trivial</Q>.83</Item>8485<Mark>86<C>ClassShift(<A>r</A>,<A>m</A>)</C>87</Mark>88<Item>89<Q>Trivial</Q>.90</Item>9192<Mark>93<C>ClassTransposition(<A>r1</A>,<A>m1</A>,<A>r2</A>,<A>m2</A>)</C>94</Mark>95<Item>96<Q>Trivial</Q>.97</Item>9899<Mark>100<C>ClassWiseOrderPreservingOn(<A>f</A>)</C>, etc.101</Mark>102<Item>103Forms the union of the residue classes modulo the modulus104of <A>f</A> in whose corresponding coefficient triple105the first entry is positive, zero or negative, respectively.106</Item>107108<Mark>109<C>Coefficients(<A>f</A>)</C>110</Mark>111<Item>112<Q>Trivial</Q>.113</Item>114115<Mark>116<C>CommonRightInverse(<A>l</A>,<A>r</A>)</C>117</Mark>118<Item>119See <C>RightInverse</C>.120</Item>121122<Mark>123<C>CT(<A>R</A>)</C>124</Mark>125<Item>126Attributes and properties are set according127to <Cite Key="Kohl09"/>.128</Item>129130<Mark>131<C>CycleRepresentativesAndLengths(<A>g</A>,<A>S</A>)</C>132</Mark>133<Item>134<Q>Straightforward</Q>.135</Item>136137<Mark>138<C>CyclesOnFiniteOrbit(<A>G</A>,<A>g</A>,<A>n</A>)</C>139</Mark>140<Item>141<Q>Straightforward</Q>.142</Item>143144<Mark>145<C>DecreasingOn(<A>f</A>)</C>146</Mark>147<Item>148Forms the union of the residue classes which are determined by the149coefficients as indicated.150</Item>151152<Mark>153<C>DerivedSubgroup(<A>G</A>)</C>154</Mark>155<Item>156No genuine method -- &GAP; Library methods already work for tame groups.157</Item>158159<Mark>160<C>Determinant(<A>g</A>)</C>161</Mark>162<Item>163Evaluation of the given expression.164For the mathematical meaning (epimorphism!), see Theorem 2.11.9165in <Cite Key="Kohl05"/>.166</Item>167168<Mark>169<C>DifferencesList(<A>l</A>)</C>170</Mark>171<Item>172<Q>Trivial</Q>.173</Item>174175<Mark>176<C>DirectProduct(<A>G1</A>,<A>G2</A>, ... )</C>177</Mark>178<Item>179Restricts the groups <A>G1</A>, <A>G2</A>, ...180to disjoint residue classes. See <C>Restriction</C>181and Corollary 2.3.3 in <Cite Key="Kohl05"/>.182</Item>183184<Mark>185<C>Display(<A>f</A>)</C>186</Mark>187<Item>188<Q>Trivial</Q>.189</Item>190191<Mark>192<C>DistanceToNextSmallerPointInOrbit(<A>G</A>,<A>n</A>)</C>193</Mark>194<Item>195<Q>Straightforward</Q> -- computes balls of radius <M>r</M>196about <A>n</A> for <M>r = 1, 2, \dots</M> until a point smaller197than <M>n</M> is found.198</Item>199200<Mark>201<C>Divisor(<A>f</A>)</C>202</Mark>203<Item>204Lcm of coefficients, as indicated.205</Item>206207<Mark>208<C>DrawGrid(<A>U</A>,<A>range_y</A>,<A>range_x</A>,<A>filename</A>)</C>209</Mark>210<Item>211<Q>Straightforward</Q>.212</Item>213214<Mark>215<C>DrawOrbitPicture</C>216</Mark>217<Item>218Compute spheres of radius <M>1, \dots, r</M> around the given point(s).219Choose the origin either in the lower left corner of the picture220(if all points lie in the first quadrant) or in the middle of the picture221(if they don't). Mark points of the ball with black pixels in case of222a monochrome picture. Choose colors from the given palette depending on223the distance from the starting points in case of a colored picture.224</Item>225226<Mark>227<C>EpimorphismFromFpGroup(<A>G</A>,<A>r</A>)</C>228</Mark>229<Item>230Computes orders of elements in the ball of231radius <A>r</A> about 1 in <A>G</A>,232and uses the corresponding relations if they affect233the abelian invariants of <A>G</A>, <A>G'</A>, <A>G''</A>, etc..234</Item>235236<Mark>237<C>Exponent(<A>G</A>)</C>238</Mark>239<Item>240Check whether <A>G</A> is finite. If it is, then use the &GAP; Library241method, applied to <C>Image(IsomorphismPermGroup(<A>G</A>))</C>.242Check whether <A>G</A> is tame. If yes, return <C>infinity</C>.243If not, run a loop over <A>G</A> until finding an element of infinite244order. Once one is found, return <C>infinity</C>. <P/>245246The final loop to find a non-torsion element can be left away under247the assumption that any finitely generated wild rcwa group has a wild248element. It looks likely that this holds, but currently the author does249not know a proof.250</Item>251252<Mark>253<C>ExtRepOfObj(<A>f</A>)</C>254</Mark>255<Item>256<Q>Trivial</Q>.257</Item>258259<Mark>260<C>FactorizationIntoCSCRCT(<A>g</A>)</C>, 261<C>Factorization(<A>g</A>)</C>262</Mark>263<Item>264The method used here is rather sophisticated, and will likely265some time be published elsewhere. At the moment termination is not266guaranteed, but in case of termination the result is certain.267The strategy is roughly first to make the mapping class-wise268order-preserving and balanced, and then to remove all prime factors269from multiplier and divisor one after the other in decreasing order270by dividing by appropriate class transpositions.271The remaining integral mapping can be factored in a similar way272as a permutation of a finite set can be factored into transpositions.273</Item>274275<Mark>276<C>FactorizationOnConnectedComponents(<A>f</A>,<A>m</A>)</C>277</Mark>278<Item>279Calls <Package>GRAPE</Package> to get the connected components of the280transition graph, and then computes a partition of the suitably281<Q>blown up</Q> coefficient list corresponding to the connected282components.283</Item>284285<Mark>286<C>FixedPointsOfAffinePartialMappings(<A>f</A>)</C>287</Mark>288<Item>289<Q>Straightforward</Q>.290</Item>291292<Mark>293<C>FixedResidueClasses(<A>g</A>,<A>maxmod</A>)</C>, 294<C>FixedResidueClasses(<A>G</A>,<A>maxmod</A>)</C>295</Mark>296<Item>297Runs a loop over all moduli <M>m \leq</M> <A>maxmod</A>298and all residues <M>r</M> modulo these moduli,299and selects those residue classes <M>r(m)</M> which are300mapped to itself by <A>g</A>, respectively, by all generators301of <A>G</A>.302</Item>303304<Mark>305<C>FloatQuotientsList(<A>l</A>)</C>306</Mark>307<Item>308<Q>Trivial</Q>.309</Item>310311<Mark>312<C>GluckTaylorInvariant(<A>a</A>)</C>313</Mark>314<Item>315Evaluation of the given expression.316</Item>317318<Mark>319<C>GroupByResidueClasses(<A>classes</A>)</C>320</Mark>321<Item>322Finds all pairs of residue classes in the list <A>classes</A>323which are disjoint, forms the corresponding class transpositions324and returns the group generated by them.325</Item>326327<Mark>328<C>GuessedDivergence(<A>f</A>)</C>329</Mark>330<Item>331Numerical computation of the limit of some series, which seems to332converge <Q>often</Q>. Caution!!!333</Item>334335<Mark>336<C>Image(<A>f</A>)</C>, <C>Image(<A>f</A>,<A>S</A>)</C>337</Mark>338<Item>339<Q>Straightforward</Q> if one can compute images of residue classes340under affine mappings and unite and intersect residue classes341(Chinese Remainder Theorem).342See Lemma 1.2.1 in <Cite Key="Kohl05"/>.343</Item>344345<Mark>346<C>ImageDensity(<A>f</A>)</C>347</Mark>348<Item>349Evaluation of the given expression.350</Item>351352<Mark>353<C><A>g</A> in <A>G</A></C> (membership test for rcwa groups)354</Mark>355<Item>356Test whether the mapping <A>g</A> or its inverse is in the list of357generators of <A>G</A>. If it is, return <C>true</C>.358Test whether its prime set is a subset of the prime set of <A>G</A>.359If not, return <C>false</C>. Test whether the multiplier or the divisor360of <A>g</A> has a prime factor which does not divide the multiplier361of <A>G</A>. If yes, return <C>false</C>. Test if <A>G</A> is362class-wise order-preserving, and <A>g</A> is not. If so, return363<C>false</C>. Test if the sign of <A>g</A> is -1 and all generators364of <A>G</A> have sign 1. If yes, return <C>false</C>.365Test if <A>G</A> is class-wise order-preserving, all generators366of <A>G</A> have determinant 0 and <A>g</A> has367determinant <M>\neq 0</M>. If yes, return <C>false</C>.368Test whether the support of <A>g</A> is a subset of the support369of <A>G</A>. If not, return <C>false</C>.370Test whether <A>G</A> fixes the nonnegative integers setwise,371but <A>g</A> does not. If yes, return <C>false</C>. <P/>372373If <A>G</A> is tame, proceed as follows:374Test whether the modulus of <A>g</A> divides the modulus of <A>G</A>.375If not, return <C>false</C>. Test whether <A>G</A> is finite and <A>g</A>376has infinite order. If so, return <C>false</C>. Test whether <A>g</A>377is tame. If not, return <C>false</C>.378Compute a respected partition <C>P</C> of <A>G</A> and the379finite permutation group <C>H</C> induced by <A>G</A> on it380(see <C>RespectedPartition</C>).381Check whether <A>g</A> permutes <C>P</C>. If not, return <C>false</C>.382Let <C>h</C> be the permutation induced by <A>g</A> on <C>P</C>.383Check whether <C>h</C> lies in <C>H</C>. If not, return <C>false</C>.384Compute an element <C>g1</C> of <A>G</A> which acts on <C>P</C>385like <A>g</A>. For this purpose, factor <A>h</A> into generators386of <C>H</C> using <C>PreImagesRepresentative</C>, and compute the387corresponding product of generators of <A>G</A>.388Let <C>k := g/g1</C>. The mapping <C>k</C> is always integral.389Compute the kernel <C>K</C> of the action of <A>G</A>390on <C>P</C> using <C>KernelOfActionOnRespectedPartition</C>. Check391whether <C>k</C> lies in <C>K</C>. This is done using the package392<Package>Polycyclic</Package> <Cite Key="Polycyclic"/>, and uses an393isomorphism from a supergroup of <C>K</C> which is isomorphic394to the <C>|P|</C>-fold direct product of the infinite dihedral group395and which always contains <C>k</C> to a polycyclically presented396group. If <C>k</C> lies in <C>K</C>, return <C>true</C>,397otherwise return <C>false</C>. <P/>398399If <A>G</A> is not tame, proceed as follows:400Look for finite orbits of <A>G</A>. If some are found, test whether401<A>g</A> acts on them, and whether the induced permutations lie in402the permutation groups induced by <A>G</A>. If for one of the403examined orbits one of the latter two questions has a negative answer,404then return <C>false</C>.405Look for a positive integer <M>m</M> such that <A>g</A> does406not leave a partition of &ZZ; into unions of residue407classes (mod <M>m</M>) invariant which is fixed by <A>G</A>.408If successful, return <C>false</C>. If not, try to factor <A>g</A> into409generators of <A>G</A> using <C>PreImagesRepresentative</C>.410If successful, return <C>true</C>. If <A>g</A> is in <A>G</A>, this411terminates after a finite number of steps. Both run time and memory412requirements are exponential in the word length. If <A>g</A> is not413in <A>G</A> at this stage, the method runs into an infinite loop.414</Item>415416<Mark>417<C><A>f</A> in <A>M</A></C> (membership test for rcwa monoids)418</Mark>419<Item>420Test whether the mapping <A>f</A> is in the list of generators421of <A>G</A>. If it is, return <C>true</C>.422Test whether the multiplier of <A>f</A> is zero, but all generators423of <A>M</A> have nonzero multiplier. If yes, return <C>false</C>.424Test if neither <A>f</A> nor any generator of <A>M</A>425has multiplier zero. If so, check whether the prime set of <A>f</A>426is a subset of the prime set of <A>M</A>, and whether the set of427prime factors of the multiplier of <A>f</A> is a subset of the union428of the sets of prime factors of the multipliers of the generators429of <A>M</A>. If one of these is not the case, return <C>false</C>.430Check whether the set of prime factors of the divisor431of <A>f</A> is a subset of the union of the sets of prime factors432of the divisors of the generators of <A>M</A>.433If not, return <C>false</C>.434If the underlying ring is &ZZ; or a semilocalization thereof,435then check whether <A>f</A> is not class-wise order-preserving,436but <A>M</A> is. If so, return <C>false</C>. <P/>437438If <A>f</A> is not injective, but all generators of <A>M</A> are,439then return <C>false</C>.440If <A>f</A> is not surjective, but all generators of <A>M</A> are,441then return <C>false</C>.442If the support of <A>f</A> is not a subset of the support443of <A>M</A>, then return <C>false</C>.444If <A>f</A> is not sign-preserving, but <A>M</A> is,445then return <C>false</C>.446Check whether <A>M</A> is tame. If so, then return <C>false</C> provided447that one of the following three conditions hold: 1. The modulus448of <A>f</A> does not divide the modulus of <A>M</A>.4492. <A>f</A> is not tame. 3. <A>M</A> is finite, and <A>f</A>450is bijective and has infinite order.451If membership has still not been decided, use <C>ShortOrbits</C> to look452for finite orbits of <A>M</A>, and check whether <A>f</A> fixes all453of them setwise. If a finite orbit is found which <A>f</A> does not map454to itself, then return <C>false</C>. <P/>455456Finally compute balls of increasing radius around 1 until <A>f</A>457is found to lie in one of them. If that happens, return <C>true</C>.458If <A>f</A> is an element of <A>M</A>, this will eventually459terminate, but if at this stage <A>f</A> is not an element460of <A>M</A>, this will run into an infinite loop.461</Item>462463<Mark>464<C><A>point</A> in <A>orbit</A></C> (membership test for orbits)465</Mark>466<Item>467Uses the equality test for orbits:468The orbit equality test computes balls of increasing radius around the469orbit representatives until they intersect non-trivially. Once they do so,470it returns <C>true</C>. If it finds that one or both of the orbits are471finite, it makes use of that information, and returns <C>false</C> if472appropriate. In between, i.e. after having computed balls to a certain473extent depending on the properties of the group, it chooses a suitable474modulus <M>m</M> and computes orbits (modulo <M>m</M>).475If the representatives of the orbits to be compared belong to different476orbits (mod <M>m</M>), it returns <C>false</C>. If this is not the477case although the orbits are different, the equality test runs into an478infinite loop.479</Item>480481<Mark>482<C>IncreasingOn(<A>f</A>)</C>483</Mark>484<Item>485Forms the union of the residue classes which are determined by the486coefficients as indicated.487</Item>488489<Mark>490<C>Index(<A>G</A>,<A>H</A>)</C>491</Mark>492<Item>493In general, i.e. if the underlying ring is not &ZZ;, proceed494as follows: If both groups <A>G</A> and <A>H</A> are finite,495return the quotient of their orders. If <A>G</A> is infinite,496but <A>H</A> is finite, return <C>infinity</C>. Otherwise return the497number of right cosets of <A>H</A> in <A>G</A>, computed by the498&GAP; Library function <C>RightCosets</C>. <P/>499500If the underlying ring is &ZZ;, do additionally the501following before attempting to compute the list of right cosets:502If the group <A>G</A> is class-wise order-preserving, check whether one503of its generators has nonzero determinant, and whether all generators504of <A>H</A> have determinant zero.505If so, then return <C>infinity</C>.506Check whether <A>H</A> is tame, but <A>G</A> is not.507If so, then return <C>infinity</C>.508If <A>G</A> is tame, then check whether the rank of the largest free509abelian subgroup of the kernel of the action of <A>G</A> on a respected510partition is higher than the corresponding rank for <A>H</A>.511For this check, use <C>RankOfKernelOfActionOnRespectedPartition</C>.512If it is, then return <C>infinity</C>.513</Item>514515<Mark>516<C>Induction(<A>g</A>,<A>f</A>)</C>517</Mark>518<Item>519Computes <C>f * g * RightInverse(<A>f</A>)</C>.520</Item>521522<Mark>523<C>Induction(<A>G</A>,<A>f</A>)</C>524</Mark>525<Item>526Gets a set of generators by applying <C>Induction(<A>g</A>,<A>f</A>)</C>527to the generators <A>g</A> of <A>G</A>.528</Item>529530<Mark>531<C>InjectiveAsMappingFrom(<A>f</A>)</C>532</Mark>533<Item>534The function starts with the entire source of <A>f</A> as <Q>preimage</Q>535<C>pre</C> and the empty set as <Q>image</Q> <C>im</C>.536It loops over the residue classes (mod <C>Mod(<A>f</A>)</C>).537For any such residue class <C>cl</C> the following is done: Firstly,538the image of <C>cl</C> under <A>f</A> is added to <C>im</C>.539Secondly, the intersection of the preimage of the intersection of the540image of <C>cl</C> under <A>f</A> and <C>im</C> under <A>f</A> and541<C>cl</C> is subtracted from <C>pre</C>.542</Item>543544<Mark>545<C>IntegralConjugate(<A>f</A>)</C>, 546<C>IntegralConjugate(<A>G</A>)</C>547</Mark>548<Item>549Uses the algorithm described in the proof of Theorem 2.5.14550in <Cite Key="Kohl05"/>.551</Item>552553<Mark>554<C>IntegralizingConjugator(<A>f</A>)</C>, 555<C>IntegralizingConjugator(<A>G</A>)</C>556</Mark>557<Item>558Uses the algorithm described in the proof of Theorem 2.5.14559in <Cite Key="Kohl05"/>.560</Item>561562<Mark>563<C>Inverse(<A>f</A>)</C>564</Mark>565<Item>566Essentially inversion of affine mappings.567See Lemma 1.3.1, Part (b) in <Cite Key="Kohl05"/>.568</Item>569570<Mark>571<C>IsBalanced(<A>f</A>)</C>572</Mark>573<Item>574Checks whether the sets of prime factors of the multiplier and575the divisor of <A>f</A> are the same.576</Item>577578<Mark>579<C>IsBijective(<A>f</A>)</C>580</Mark>581<Item>582<Q>Trivial</Q>, respectively, see <C>IsInjective</C> and583<C>IsSurjective</C>.584</Item>585586<Mark>587<C>IsClassReflection(<A>g</A>)</C>588</Mark>589<Item>590Computes the support of <A>g</A>, and compares <A>g</A> with591the corresponding class reflection.592</Item>593594<Mark>595<C>IsClassRotation(<A>g</A>)</C>596</Mark>597<Item>598Computes the support of <A>g</A>, extracts the possible rotation599factor from the coefficients and compares <A>g</A> with the600corresponding class rotation.601</Item>602603<Mark>604<C>IsClassShift(<A>g</A>)</C>605</Mark>606<Item>607Computes the support of <A>g</A>, and compares <A>g</A> with608the corresponding class shift.609</Item>610611<Mark>612<C>IsClassTransposition(<A>g</A>), 613IsGeneralizedClassTransposition(<A>g</A>)</C>614</Mark>615<Item>616Computes the support of <A>g</A>, writes it as a disjoint union of617two residue classes and compares <A>g</A> with the class transposition618which interchanges them.619</Item>620621<Mark>622<C>IsClassWiseOrderPreserving(<A>f</A>)</C>, 623<C>IsClassWiseTranslating(<A>f</A>)</C>624</Mark>625<Item>626<Q>Trivial</Q>.627</Item>628629<Mark>630<C>IsConjugate(RCWA(Integers),<A>f</A>,<A>g</A>)</C>631</Mark>632<Item>633Test whether <A>f</A> and <A>g</A> have the same order, and whether634either both or none of them is tame. If not, return <C>false</C>. <P/>635636If the mappings are wild, use <C>ShortCycles</C> to search for finite637cycles not belonging to an infinite series, until their numbers for a638particular length differ. This may run into an infinite loop.639If it terminates, return <C>false</C>. <P/>640641If the mappings are tame, use the method described in the proof of642Theorem 2.5.14 in <Cite Key="Kohl05"/> to construct643integral conjugates of <A>f</A> and <A>g</A>. Then essentially use644the algorithm described in the proof of Theorem 2.6.7645in <Cite Key="Kohl05"/> to compute <Q>standard representatives</Q>646of the conjugacy classes which the integral conjugates of <A>f</A>647and <A>g</A> belong to. Finally compare these standard representatives,648and return <C>true</C> if they are equal and <C>false</C> if not.649</Item>650651<Mark>652<C>IsInjective(<A>f</A>)</C>653</Mark>654<Item>655See <C>Image</C>.656</Item>657658<Mark>659<C>IsIntegral(<A>f</A>)</C>660</Mark>661<Item>662<Q>Trivial</Q>.663</Item>664665<Mark>666<C>IsNaturalCT(<A>G</A>)</C>, 667<C>IsNaturalRCWA(<A>G</A>)</C>668</Mark>669<Item>670Only checks a set flag.671</Item>672673<Mark>674<C>IsomorphismMatrixGroup(<A>G</A>)</C>675</Mark>676<Item>677Uses the algorithm described in the proof of Theorem 2.6.3678in <Cite Key="Kohl05"/>.679</Item>680681<Mark>682<C>IsomorphismPermGroup(<A>G</A>)</C>683</Mark>684<Item>685If the group <A>G</A> is finite and class-wise order-preserving,686use <C>ActionOnRespectedPartition</C>.687If <A>G</A> is finite, but not class-wise order-preserving, compute688the action on the respected partition which is obtained by splitting689any residue class <M>r(m)</M> in <C>RespectedPartition(<A>G</A>)</C>690into three residue classes <M>r(3m), r+m(3m), r+2m(3m)</M>.691If <A>G</A> is infinite, there is no isomorphism to a finite692permutation group, thus return <C>fail</C>.693</Item>694695<Mark>696<C>IsomorphismRcwaGroup(<A>G</A>)</C>697</Mark>698<Item>699The method for finite groups uses <C>RcwaMapping</C>, Part (d). <P/>700701The method for free products of finite groups uses the Table-Tennis702Lemma (which is also known as <E>Ping-Pong Lemma</E>,703cf. e.g. Section II.B. in <Cite Key="LaHarpe00"/>).704It uses regular permutation representations of the factors705<M>G_r</M> (<M>r = 0, \dots ,m-1</M>) of the free product on residue706classes modulo <M>n_r := |G_r|</M>.707The basic idea is that since point stabilizers in regular permutation708groups are trivial, all non-identity elements map any of the permuted709residue classes into their complements.710To get into a situation where the Table-Tennis Lemma is applicable,711the method computes conjugates of the images of the mentioned permutation712representations under rcwa permutations <M>\sigma_r</M> which713satisfy <M>0(n_r)^{\sigma_r} = &ZZ; \setminus r(m)</M>. <P/>714715The method for free groups uses an adaptation of the construction given716on page 27 in <Cite Key="LaHarpe00"/> from PSL(2,&CC;) to717RCWA(&ZZ;). As an equivalent for the closed discs used there, the method718takes the residue classes modulo two times the rank of the free group.719</Item>720721<Mark>722<C>IsOne(<A>f</A>)</C>723</Mark>724<Item>725<Q>Trivial</Q>.726</Item>727728<Mark>729<C>IsPerfect(<A>G</A>)</C>730</Mark>731<Item>732If the group <A>G</A> is trivial, then return <C>true</C>.733Otherwise if it is abelian, then return <C>false</C>. <P/>734735If the underlying ring is &ZZ;, then do the following:736If one of the generators of <A>G</A> has sign -1, then737return <C>false</C>. If <A>G</A> is class-wise order-preserving738and one of the generators has nonzero determinant, then return739<C>false</C>. <P/>740741If <A>G</A> is wild, and perfectness has not been decided so far,742then give up. If <A>G</A> is finite, then check the image of743<C>IsomorphismPermGroup(<A>G</A>)</C> for perfectness, and return744<C>true</C> or <C>false</C> accordingly. <P/>745746If the group <A>G</A> is tame and if it acts transitively747on its stored respected partition, then return <C>true</C> or748<C>false</C> depending on whether the finite permutation group749<C>ActionOnRespectedPartition(<A>G</A>)</C> is perfect or not.750If <A>G</A> does not act transitively on its stored respected751partition, then give up.752</Item>753754<Mark>755<C>IsPrimeSwitch(<A>g</A>)</C>756</Mark>757<Item>758Checks whether the multiplier of <A>g</A> is an odd prime,759and compares <A>g</A> with the corresponding prime switch.760</Item>761762<Mark>763<C>IsSignPreserving(<A>f</A>)</C>764</Mark>765<Item>766If <A>f</A> is not class-wise order-preserving, then return <C>false</C>.767Otherwise let <M>c \geq 1</M> be greater than or equal to the maximum of768the absolute values of the coefficients <M>b_{r(m)}</M> of the affine769partial mappings of <A>f</A>, and check whether770the minimum of the image of <M>\{0, \dots, c\}</M> under <A>f</A>771is nonnegative and whether the maximum of the image of772<M>\{-c, \dots, -1\}</M> under <A>f</A> is negative.773If both is the case, then return <C>true</C>, otherwise774return <C>false</C>.775</Item>776777<Mark>778<C>IsSolvable(<A>G</A>)</C>779</Mark>780<Item>781If <A>G</A> is abelian, then return <C>true</C>.782If <A>G</A> is tame, then return <C>true</C> or <C>false</C> depending on783whether <C>ActionOnRespectedPartition(<A>G</A>)</C> is solvable or not.784If <A>G</A> is wild, then give up.785</Item>786787<Mark>788<C>IsSubset(<A>G</A>,<A>H</A>)</C> (checking for a subgroup relation)789</Mark>790<Item>791Check whether the set of stored generators of <A>H</A> is a subset792of the set of stored generators of <A>G</A>. If so, return793<C>true</C>. Check whether the prime set of <A>H</A> is a subset794of the prime set of <A>G</A>. If not, return <C>false</C>.795Check whether the support of <A>H</A> is a subset796of the support of <A>G</A>. If not, return <C>false</C>.797Check whether <A>G</A> is tame, but <A>H</A> is wild.798If so, return <C>false</C>. <P/>799800If <A>G</A> and <A>H</A> are both tame, then proceed as follows:801If the multiplier of <A>H</A> does not divide the multiplier802of <A>G</A>, then return <C>false</C>.803If <A>H</A> does not respect the stored respected partition804of <A>G</A>, then return <C>false</C>.805Check whether the finite permutation group induced by <A>H</A> on806<C>RespectedPartition(<A>G</A>)</C> is a subgroup of807<C>ActionOnRespectedPartition(<A>G</A>)</C>. If yes, return <C>true</C>.808Check whether the order of <A>H</A> is greater than the order809of <A>G</A>. If so, return <C>false</C>. <P/>810811Finally use the membership test to check whether all generators812of <A>H</A> lie in <A>G</A>, and return <C>true</C> or813<C>false</C> accordingly.814</Item>815816<Mark>817<C>IsSurjective(<A>f</A>)</C>818</Mark>819<Item>820See <C>Image</C>.821</Item>822823<Mark>824<C>IsTame(<A>G</A>)</C>825</Mark>826<Item>827Checks whether the modulus of the group is nonzero.828</Item>829830<Mark>831<C>IsTame(<A>f</A>)</C>832</Mark>833<Item>834Application of the criteria given in Corollary 2.5.10835and 2.5.12 and Theorem A.8 and A.11836in <Cite Key="Kohl05"/>, as well as of the criteria given837in <Cite Key="Kohl07b"/>.838839The criterion <Q>surjective, but not injective means wild</Q>840(Theorem A.8 in <Cite Key="Kohl05"/>) is the subject841of <Cite Key="Kohl07a"/>.842843The package <Package>GRAPE</Package> is needed for the application844of the criterion which says that an rcwa permutation is wild if845a transition graph has a weakly-connected component which is not846strongly-connected (cf. Theorem A.11 in <Cite Key="Kohl05"/>).847</Item>848849<Mark>850<C>IsTransitive(<A>G</A>,Integers)</C>851</Mark>852<Item>853Look for finite orbits, using <C>ShortOrbits</C> on a couple of854intervals. If a finite orbit is found, return <C>false</C>.855Test if <A>G</A> is finite. If yes, return <C>false</C>. <P/>856857Search for an element <C>g</C> and a residue class <M>r(m)</M>858such that the restriction of <C>g</C> to <M>r(m)</M> is given859by <M>n \mapsto n + m</M>. Then the cyclic group generated by <C>g</C>860acts transitively on <M>r(m)</M>. The element <C>g</C> is searched861among the generators of <A>G</A>, its powers, its commutators,862powers of its commutators and products of few different generators.863The search for such an element may run into an infinite loop,864as there is no guarantee that the group has a suitable element. <P/>865866If suitable <C>g</C> and <M>r(m)</M> are found, proceed as follows: <P/>867868Put <M>S := r(m)</M>. Put <M>S := S \cup S^g</M> for all generators869<M>g</M> of <A>G</A>, and repeat this until <M>S</M> remains constant.870This may run into an infinite loop. <P/>871872If it terminates: If <M>S = &ZZ;</M>, return <C>true</C>,873otherwise return <C>false</C>.874</Item>875876<Mark>877<C>IsTransitiveOnNonnegativeIntegersInSupport(<A>G</A>)</C>878</Mark>879<Item>880Computes balls about 1 with successively increasing radii,881and checks whether the union of the sets where the elements882of these balls are decreasing or shifting down equals the883support of <A>G</A>. If a positive answer is found,884transitivity on <Q>small</Q> points (nonnegative integers885less than an explicit bound) is verified.886</Item>887888<Mark>889<C>IsZero(<A>f</A>)</C>890</Mark>891<Item>892<Q>Trivial</Q>.893</Item>894895<Mark>896<C>KernelOfActionOnRespectedPartition(<A>G</A>)</C>897</Mark>898<Item>899First determine the abelian invariants of the kernel <C>K</C>.900For this, compute sufficiently many quotients of orders of901permutation groups induced by <A>G</A> on refinements of902the stored respected partition <C>P</C> by the order of the903permutation group induced by <A>G</A> on <C>P</C> itself.904Then use a random walk through the group <A>G</A>.905Compute powers of elements encountered along the way which906fix <C>P</C>.907Translate these kernel elements into elements of a polycyclically908presented group isomorphic to the <C>|P|</C>-fold direct product of909the infinite dihedral group (<C>K</C> certainly embeds into this group).910Use <Package>Polycyclic</Package> <Cite Key="Polycyclic"/>911to collect independent <Q>nice</Q> generators of <C>K</C>.912Proceed until the permutation groups induced by <C>K</C> on the913refined respected partitions all equal the initially stored quotients.914</Item>915916<Mark>917<C>LargestSourcesOfAffineMappings(<A>f</A>)</C>918</Mark>919<Item>920Forms unions of residue classes modulo the modulus of the mapping,921whose corresponding coefficient triples are equal.922</Item>923924<Mark>925<C>LaTeXStringRcwaMapping(<A>f</A>)</C>, 926<C>LaTeXAndXDVI(<A>f</A>)</C>927</Mark>928<Item>929Collects residue classes those corresponding coefficient triples930are equal.931</Item>932933<Mark>934<C>LikelyContractionCentre(<A>f</A>,<A>maxn</A>,<A>bound</A>)</C>935</Mark>936<Item>937Computes trajectories with starting values from a given interval, until938a cycle is reached. Aborts if the trajectory exceeds the prescribed939bound. Form the union of the detected cycles.940</Item>941942<Mark>943<C>LoadDatabaseOf...()</C>, <C>LoadRCWAExamples()</C>944</Mark>945<Item>946<Q>Trivial</Q>. --947These functions do nothing more than reading in certain files.948</Item>949950<Mark>951<C>LocalizedRcwaMapping(<A>f</A>,<A>p</A>)</C>952</Mark>953<Item>954<Q>Trivial</Q>.955</Item>956957<Mark>958<C>Log2HTML(<A>logfilename</A>)</C>959</Mark>960<Item>961Straightforward string operations.962</Item>963964<Mark>965<C>Loops(<A>f</A>)</C>966</Mark>967<Item>968Runs over the residue classes modulo the modulus of <A>f</A>,969and selects those of them which <A>f</A> does not map to themselves,970but which intersect non-trivially with their images under <A>f</A>.971</Item>972973<Mark>974<C>MaximalShift(<A>f</A>)</C>975</Mark>976<Item>977<Q>Trivial</Q>.978</Item>979980<Mark>981<C>MergerExtension(<A>G</A>,<A>points</A>,<A>point</A>)</C>982</Mark>983<Item>984As described in <Ref Oper="MergerExtension"985Label="for finite permutation groups"/>.986</Item>987988<Mark>989<C>Mirrored(<A>g</A>)</C>, <C>Mirrored(<A>G</A>)</C>990</Mark>991<Item>992Conjugates with <M>n \mapsto -n - 1</M>, as indicated in the definition.993</Item>994995<Mark>996<C>mKnot(<A>m</A>)</C>997</Mark>998<Item>999<Q>Straightforward</Q>, following the definition given in1000<Cite Key="Keller99"/>.1001</Item>10021003<Mark>1004<C>Modulus(<A>G</A>)</C>1005</Mark>1006<Item>1007Searches for a wild element in the group.1008If unsuccessful, tries to construct a respected partition1009(see <C>RespectedPartition</C>).1010</Item>10111012<Mark>1013<C>Modulus(<A>f</A>)</C>1014</Mark>1015<Item>1016<Q>Trivial</Q>.1017</Item>10181019<Mark>1020<C>MovedPoints(<A>G</A>)</C>1021</Mark>1022<Item>1023Needs only forming unions of residue classes and determining1024fixed points of affine mappings.1025</Item>10261027<Mark>1028<C>Multiplier(<A>f</A>)</C>1029</Mark>1030<Item>1031Lcm of coefficients, as indicated.1032</Item>10331034<Mark>1035<C>Multpk(<A>f</A>,<A>p</A>,<A>k</A>)</C>1036</Mark>1037<Item>1038Forms the union of the residue classes modulo the modulus of the1039mapping, which are determined by the given divisibility criteria1040for the coefficients of the corresponding affine mapping.1041</Item>10421043<Mark>1044<C>NrClassPairs(<A>m</A>)</C>1045</Mark>1046<Item>1047Relatively straightforward. --1048Practical for values of <A>m</A> ranging up into the hundreds1049and corresponding counts of $10^9$ and more.1050</Item>10511052<Mark>1053<C>NrConjugacyClassesOfCTZOfOrder(<A>ord</A>)</C>,1054</Mark>1055<Item>1056Evaluation of the expression1057<C>Length(Filtered(Combinations(DivisorsInt(ord)),1058l -> l <> [] and Lcm(l) = ord))</C>.1059</Item>10601061<Mark>1062<C>NrConjugacyClassesOfRCWAZOfOrder(<A>ord</A>)</C>1063</Mark>1064<Item>1065The class numbers are taken from Corollary 2.7.11066in <Cite Key="Kohl05"/>.1067</Item>10681069<Mark>1070<C>ObjByExtRep(<A>fam</A>,<A>l</A>)</C>1071</Mark>1072<Item>1073<Q>Trivial</Q>.1074</Item>10751076<Mark>1077<C>One(<A>f</A>)</C>, <C>One(<A>G</A>)</C>,1078</Mark>1079<Item>1080<Q>Trivial</Q>.1081</Item>10821083<Mark>1084<C>Orbit(<A>G</A>,<A>pnt</A>,<A>gens</A>,<A>acts</A>,<A>act</A>)</C>1085</Mark>1086<Item>1087Check if the orbit has length less than a certain bound.1088If so, then return it as a list.1089Otherwise test whether the group <A>G</A> is tame or wild. <P/>10901091If <A>G</A> is tame, then test whether <A>G</A> is finite.1092If yes, then compute the orbit by the &GAP; Library method.1093Otherwise proceed as follows:1094Compute a respected partition <M>\mathcal{P}</M> of <A>G</A>.1095Use <M>\mathcal{P}</M> to find a residue class <M>r(m)</M>1096which is a subset of the orbit to be computed. In general, <M>r(m)</M>1097will not be one of the residue classes in <M>\mathcal{P}</M>, but1098a subset of one of them.1099Put <M>\Omega := r(m)</M>. Unite the set <M>\Omega</M> with its1100images under all the generators of <A>G</A> and their inverses.1101Repeat that until <M>\Omega</M> does not change any more.1102Return <M>\Omega</M>. <P/>11031104If <A>G</A> is wild, then return an orbit object which stores the1105group <A>G</A>, the representative <A>rep</A> and the1106action <A>act</A>.1107</Item>11081109<Mark>1110<C>OrbitsModulo(<A>f</A>,<A>m</A>)</C>1111</Mark>1112<Item>1113Uses <Package>GRAPE</Package> to compute the connected1114components of the transition graph.1115</Item>11161117<Mark>1118<C>OrbitsModulo(<A>G</A>,<A>m</A>)</C>1119</Mark>1120<Item>1121<Q>Straightforward</Q>.1122</Item>11231124<Mark>1125<C>Order(<A>f</A>)</C>1126</Mark>1127<Item>1128Test for <C>IsTame</C>.1129If the mapping is not tame, then return <C>infinity</C>.1130Otherwise use Corollary 2.5.10 in <Cite Key="Kohl05"/>.1131</Item>11321133<Mark>1134<C>PermutationOpNC(<A>sigma</A>,<A>P</A>,<A>act</A>)</C>1135</Mark>1136<Item>1137Several different methods for different types of arguments,1138which either provide straightforward optimizations via computing1139with coefficients directly, or just delegate to <C>PermutationOp</C>.1140</Item>11411142<Mark>1143<C>PreImage(<A>f</A>,<A>S</A>)</C>1144</Mark>1145<Item>1146See <C>Image</C>.1147</Item>11481149<Mark>1150<C>PreImagesRepresentative(<A>phi</A>,<A>g</A>)</C>, 1151<C>PreImagesRepresentatives(<A>phi</A>,<A>g</A>)</C>1152</Mark>1153<Item>1154As described in the documentation of these methods.1155The underlying idea to successively compute two balls around 11156and <A>g</A> until they intersect non-trivially is standard1157in computational group theory. For rcwa groups it would mean wasting1158both memory and run time to actually compute group elements.1159Thus only images of tuples of points are computed and stored.1160</Item>11611162<Mark>1163<C>PrimeSet(<A>f</A>)</C>, 1164<C>PrimeSet(<A>G</A>)</C>1165</Mark>1166<Item>1167<Q>Straightforward</Q>.1168</Item>11691170<Mark>1171<C>PrimeSwitch(<A>p</A>)</C>1172</Mark>1173<Item>1174Multiplication of rcwa mappings as indicated.1175</Item>11761177<Mark>1178<C>Print(<A>f</A>)</C>1179</Mark>1180<Item>1181<Q>Trivial</Q>.1182</Item>11831184<Mark>1185<C><A>f</A>*<A>g</A></C>1186</Mark>1187<Item>1188Essentially composition of affine mappings.1189See Lemma 1.3.1, Part (a) in <Cite Key="Kohl05"/>.1190</Item>11911192<Mark>1193<C>ProjectionsToCoordinates(<A>f</A>)</C>1194</Mark>1195<Item>1196Straightforward coefficient operations.1197</Item>11981199<Mark>1200<C>ProjectionsToInvariantUnionsOfResidueClasses(<A>G</A>,<A>m</A>)</C>1201</Mark>1202<Item>1203Use <C>OrbitsModulo</C> to determine the supports of the images of the1204epimorphisms to be determined, and use <C>RestrictedPerm</C> to compute1205the images of the generators of <A>G</A> under these epimorphisms.1206</Item>12071208<Mark>1209<C>QuotientsList(<A>l</A>)</C>1210</Mark>1211<Item>1212<Q>Trivial</Q>.1213</Item>12141215<Mark>1216<C>Random(RCWA(Integers))</C>1217</Mark>1218<Item>1219Computes a product of <Q>randomly</Q> chosen class shifts,1220class reflections and class transpositions. This seems to1221be suitable for generating reasonably good examples.1222</Item>12231224<Mark>1225<C>RankOfKernelOfActionOnRespectedPartition(<A>G</A>)</C>1226</Mark>1227<Item>1228Performs the first part of the computations done by1229<C>KernelOfActionOnRespectedPartition</C>.1230</Item>12311232<Mark>1233<C>Rcwa(<A>R</A>)</C>1234</Mark>1235<Item>1236<Q>Trivial</Q>. --1237Attributes and properties set can be derived easily or hold1238by definition.1239</Item>12401241<Mark>1242<C>RCWA(<A>R</A>)</C>1243</Mark>1244<Item>1245Attributes and properties are set according to Theorem 2.1.1,1246Theorem 2.1.2, Corollary 2.1.6 and Theorem 2.12.81247in <Cite Key="Kohl05"/>.1248</Item>12491250<Mark>1251<C>RCWABuildManual()</C>1252</Mark>1253<Item>1254Consists of a call to a function from the &GAPDoc; package.1255</Item>12561257<Mark>1258<C>RcwaGroupByPermGroup(<A>G</A>)</C>1259</Mark>1260<Item>1261Uses <C>RcwaMapping</C>, Part (d).1262</Item>12631264<Mark>1265<C>RCWAInfo(<A>n</A>)</C>1266</Mark>1267<Item>1268<Q>Trivial</Q>.1269</Item>12701271<Mark>1272<C>RcwaMapping</C>1273</Mark>1274<Item>1275(a)-(c): <Q>trivial</Q>,1276(d): <C>n&circum;perm - n</C> for determining the coefficients,1277(e): <Q>affine mappings by values at two given points</Q>,1278(f) and (g): <Q>trivial</Q>,1279(h) and (i): correspond to Lemma 2.1.4 in <Cite Key="Kohl05"/>,1280(j): uses a simple parser for the permitted expressions.1281</Item>12821283<Mark>1284<C>RCWATestAll()</C>, <C>RCWATestInstall()</C>1285</Mark>1286<Item>1287Just read in files running / containing the tests.1288</Item>12891290<Mark>1291<C>RCWATestExamples()</C>1292</Mark>1293<Item>1294Runs the example tester from the &GAPDoc; package.1295</Item>12961297<Mark>1298<C>RepresentativeAction(<A>G</A>,<A>src</A>,<A>dest</A>,<A>act</A>)</C>,1299 <C>RepresentativeActionPreImage</C>1300</Mark>1301<Item>1302As described in the documentation of these methods.1303The underlying idea to successively compute two balls around1304<A>src</A> and <A>dest</A> until they intersect non-trivially1305is standard in computational group theory. Words standing for1306products of generators of <A>G</A> are stored for every image1307of <A>src</A> or <A>dest</A>.1308</Item>13091310<Mark>1311<C>RepresentativeAction(RCWA(Integers),<A>P1</A>,<A>P2</A>)</C>1312</Mark>1313<Item>1314Arbitrary mapping: see Lemma 2.1.4 in <Cite Key="Kohl05"/>.1315Tame mapping: see proof of Theorem 2.8.91316in <Cite Key="Kohl05"/>. The former is almost trivial, while the1317latter is a bit complicated and takes usually also much more time.1318</Item>13191320<Mark>1321<C>RepresentativeAction(RCWA(Integers),<A>f</A>,<A>g</A>)</C>1322</Mark>1323<Item>1324The algorithm used by <C>IsConjugate</C> constructs actually also1325an element <C>x</C> such that <C><A>f</A>&circum;x = <A>g</A></C>.1326</Item>13271328<Mark>1329<C>RespectedPartition(<A>f</A>)</C>, 1330<C>RespectedPartition(<A>G</A>)</C>1331</Mark>1332<Item>1333There are presently two sophisticated algorithms implemented1334for finding respected partitions. One of them has evolved1335from the algorithm described in the proof of Theorem 2.5.81336in <Cite Key="Kohl05"/>. The other one starts with the1337coarsest partition of the base ring such that every generator1338of <A>G</A> is affine on every part. This partition is then1339refined successively until a respected partition is obtained.1340The refinement step is basically as follows: Take the images1341of the partition under all generators of <A>G</A>. This way one1342obtains as many further partitions of the base ring as there1343are generators of <A>G</A>. Then the <Q>new</Q> partition1344is the coarsest common refinement of all these partitions.1345</Item>13461347<Mark>1348<C>RespectsPartition(<A>G</A>,<A>P</A>)</C>1349</Mark>1350<Item>1351<Q>Straightforward</Q>.1352</Item>13531354<Mark>1355<C>RestrictedBall(<A>G</A>,<A>g</A>,<A>r</A>,<A>modulusbound</A>)</C>1356</Mark>1357<Item>1358<Q>Straightforward</Q>.1359</Item>13601361<Mark>1362<C>RestrictedPerm(<A>g</A>,<A>S</A>)</C>1363</Mark>1364<Item>1365<Q>Straightforward</Q>.1366</Item>13671368<Mark>1369<C>Restriction(<A>g</A>,<A>f</A>)</C>1370</Mark>1371<Item>1372Computes the action of <C>RightInverse(<A>f</A>) * g * f</C> on the1373image of <A>f</A>.1374</Item>13751376<Mark>1377<C>Restriction(<A>G</A>,<A>f</A>)</C>1378</Mark>1379<Item>1380Gets a set of generators by applying1381<C>Restriction(<A>g</A>,<A>f</A>)</C>1382to the generators <A>g</A> of <A>G</A>.1383</Item>13841385<Mark>1386<C>RightInverse(<A>f</A>)</C>1387</Mark>1388<Item>1389<Q>Straightforward</Q> if one knows how to compute images of residue1390classes under affine mappings, and how to compute inverses of1391affine mappings.1392</Item>13931394<Mark>1395<C>Root(<A>f</A>,<A>k</A>)</C>1396</Mark>1397<Item>1398If <A>f</A> is bijective, class-wise order-preserving and has1399finite order: <P/>14001401Find a conjugate of <A>f</A> which is a product of class transpositions.1402Slice cycles <M>\prod_{i=2}^l \tau_{r_1(m_1),r_i(m_i)}</M>1403of <A>f</A> a respected partition <M>\mathcal{P}</M> into cycles1404<M>\prod_{i=1}^l \prod_{j=0}^{k-1} \tau_{r_1(km_1),r_i+jm_i(km_i)}</M>1405of the <A>k</A>-fold1406length on the refined partition which one gets from <M>\mathcal{P}</M>1407by decomposing any <M>r_i(m_i) \in \mathcal{P}</M> into residue classes1408(mod <M>km_i</M>). Finally conjugate the resulting permutation1409back. <P/>14101411Other cases seem to be more difficult and are currently not covered.1412</Item>14131414<Mark>1415<C>RotationFactor(<A>g</A>)</C>1416</Mark>1417<Item>1418<Q>Trivial</Q>.1419</Item>14201421<Mark>1422<C>RunDemonstration(<A>filename</A>)</C>1423</Mark>1424<Item>1425<Q>Trivial</Q> -- only I/O operations.1426</Item>14271428<Mark>1429<C>SemilocalizedRcwaMapping(<A>f</A>,<A>pi</A>)</C>1430</Mark>1431<Item>1432<Q>Trivial</Q>.1433</Item>14341435<Mark>1436<C>ShiftsDownOn(<A>f</A>)</C>, <C>ShiftsUpOn(<A>f</A>)</C>1437</Mark>1438<Item>1439Straightforward coefficient- and residue class operations.1440</Item>14411442<Mark>1443<C>ShortCycles(<A>g</A>,<A>maxlng</A>)</C>1444</Mark>1445<Item>1446Looks for fixed points of affine partial mappings of powers1447of <A>g</A>.1448</Item>14491450<Mark>1451<C>ShortCycles(<A>g</A>,<A>S</A>,<A>maxlng</A>)</C>, 1452<C>ShortCycles(<A>g</A>,<A>S</A>,<A>maxlng</A>,<A>maxn</A>)</C>1453</Mark>1454<Item>1455<Q>Straightforward</Q>.1456</Item>14571458<Mark>1459<C>ShortOrbits(<A>G</A>,<A>S</A>,<A>maxlng</A>)</C>, 1460<C>ShortOrbits(<A>G</A>,<A>S</A>,<A>maxlng</A>,<A>maxn</A>)</C>1461</Mark>1462<Item>1463<Q>Straightforward</Q>.1464</Item>14651466<Mark>1467<C>ShortResidueClassCycles(<A>g</A>,<A>modulusbound</A>,<A>maxlng</A>)</C>1468</Mark>1469<Item>1470Different methods -- see source code in <F>pkg/rcwa/lib/rcwamap.gi</F>.1471</Item>14721473<Mark>1474<C>ShortResidueClassOrbits(<A>g</A>,<A>modulusbound</A>,<A>maxlng</A>)</C>1475</Mark>1476<Item>1477Different methods -- see source code in <F>pkg/rcwa/lib/rcwagrp.gi</F>.1478</Item>14791480<Mark>1481<C>Sign(<A>g</A>)</C>1482</Mark>1483<Item>1484Evaluation of the given expression.1485For the mathematical meaning (epimorphism!), see Theorem 2.12.81486in <Cite Key="Kohl05"/>.1487</Item>14881489<Mark>1490<C>Sinks(<A>f</A>)</C>1491</Mark>1492<Item>1493Computes the strongly connected components of the transition graph1494by the function1495<C>STRONGLY&uscore;CONNECTED&uscore;COMPONENTS&uscore;DIGRAPH</C>,1496and selects those which are proper subsets of their preimages and1497proper supersets of their images under <A>f</A>.1498</Item>14991500<Mark>1501<C>Size(<A>G</A>)</C> (order of an rcwa group)1502</Mark>1503<Item>1504Test whether one of the generators of the group <A>G</A> has1505infinite order. If so, return <C>infinity</C>.1506Test whether the group <A>G</A> is tame. If not, return <C>infinity</C>.1507Test whether <C>RankOfKernelOfActionOnRespectedPartition(<A>G</A>)</C>1508is nonzero. If so, return <C>infinity</C>.1509Otherwise if <A>G</A> is class-wise order-preserving, return the size1510of the permutation group induced on the stored respected partition.1511If <A>G</A> is not class-wise order-preserving, return the size1512of the permutation group induced on the refinement of the stored1513respected partition which is obtained by splitting each residue class1514into three residue classes with equal moduli.1515</Item>15161517<Mark>1518<C>Size(<A>M</A>)</C> (order of an rcwa monoid)1519</Mark>1520<Item>1521Check whether <A>M</A> is in fact an rcwa group. If so, use the method1522for rcwa groups instead. Check whether one of the generators1523of <A>M</A> is surjective, but not injective. If so, return1524<C>infinity</C>. Check whether for all generators <M>f</M>1525of <A>M</A>, the image of the union of the loops of <M>f</M>1526under <M>f</M> is finite. If not, return <C>infinity</C>.1527Check whether one of the generators of <A>M</A> is bijective and1528has infinite order. If so, return <C>infinity</C>.1529Check whether one of the generators of <A>M</A> is wild.1530If so, return <C>infinity</C>.1531Apply the above criteria to the elements of the ball of radius 21532around 1, and return <C>infinity</C> if appropriate.1533Finally attempt to compute the list of elements of <A>M</A>.1534If this is successful, return the length of the resulting list.1535</Item>15361537<Mark>1538<C>SmallGeneratingSet(<A>G</A>)</C>1539</Mark>1540<Item>1541Eliminates generators <M>g</M> which can be found to be redundant1542<E>easily</E>, i.e. by checking whether the balls about 1 and <M>g</M>1543of some small radius <M>r</M> in the group generated by all generators1544of <A>G</A> except for <M>g</M> intersect nontrivially.1545</Item>15461547<Mark>1548<C>Sources(<A>f</A>)</C>1549</Mark>1550<Item>1551Computes the strongly connected components of the transition graph1552by the function1553<C>STRONGLY&uscore;CONNECTED&uscore;COMPONENTS&uscore;DIGRAPH</C>,1554and selects those which are proper supersets of their preimages and1555proper subsets of their images under <A>f</A>.1556</Item>15571558<Mark>1559<C>SparseRep(<A>f</A>)</C>, <C>StandardRep(<A>f</A>)</C>1560</Mark>1561<Item>1562Straightforward coefficient operations.1563</Item>15641565<Mark>1566<C>SplittedClassTransposition(<A>ct</A>,<A>k</A>)</C>1567</Mark>1568<Item>1569<Q>Straightforward</Q>.1570</Item>15711572<Mark>1573<C>StructureDescription(<A>G</A>)</C>1574</Mark>1575<Item>1576This method uses a combination of techniques to obtain some basic1577information on the structure of an rcwa group.1578The returned description reflects the way the group has been built1579(<C>DirectProduct</C>, <C>WreathProduct</C>, etc.).1580</Item>15811582<Mark>1583<C><A>f</A>+<A>g</A></C>1584</Mark>1585<Item>1586Pointwise addition of affine mappings.1587</Item>15881589<Mark>1590<C>String(<A>obj</A>)</C>1591</Mark>1592<Item>1593<Q>Trivial</Q>.1594</Item>15951596<Mark>1597<C>Support(<A>G</A>)</C>1598</Mark>1599<Item>1600<Q>Straightforward</Q>.1601</Item>16021603<Mark>1604<C>Trajectory(<A>f</A>,<A>n</A>,...)</C>1605</Mark>1606<Item>1607Iterated application of an rcwa mapping.1608In the methods computing <Q>accumulated coefficients</Q>,1609additionally composition of affine mappings.1610</Item>16111612<Mark>1613<C>TransitionGraph(<A>f</A>,<A>m</A>)</C>1614</Mark>1615<Item>1616<Q>Straightforward</Q> -- just check a sufficiently long interval.1617</Item>16181619<Mark>1620<C>TransitionMatrix(<A>f</A>,<A>m</A>)</C>1621</Mark>1622<Item>1623Evaluation of the given expression.1624</Item>16251626<Mark>1627<C>TransposedClasses(<A>g</A>)</C>1628</Mark>1629<Item>1630<Q>Trivial</Q>.1631</Item>16321633<Mark>1634<C>View(<A>f</A>)</C>1635</Mark>1636<Item>1637<Q>Trivial</Q>.1638</Item>16391640<Mark>1641<C>WreathProduct(<A>G</A>,<A>P</A>)</C>1642</Mark>1643<Item>1644Uses <C>DirectProduct</C> to embed the <C>NrMovedPoints(<A>P</A>)</C>th1645direct power of <A>G</A>, and <C>RcwaMapping</C>, Part (d)1646to embed the finite permutation group <A>P</A>.1647</Item>16481649<Mark>1650<C>WreathProduct(<A>G</A>,<A>Z</A>)</C>1651</Mark>1652<Item>1653Restricts <A>G</A> to the residue class 3(4), and encodes the1654generator of <A>Z</A> as <M>\tau_{0(2),1(2)} \cdot1655\tau_{0(2),1(4)}</M>. It is used that the images of 3(4) under1656powers of this mapping are pairwise disjoint residue classes.1657</Item>16581659<Mark>1660<C>Zero(<A>f</A>)</C>1661</Mark>1662<Item>1663<Q>Trivial</Q>.1664</Item>16651666</List>16671668</Chapter>16691670<!-- #################################################################### -->167116721673