Quelle chap69.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/doc/ref/chap69.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 (ref) - Chapter 69: The MeatAxe</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="chap69" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chap7.html">7</a> <a href="chap8.html">8</a> <a href="chap9.html">9</a> <a href="chap10.html">10</a> <a href="chap11.html">11</a> <a href="chap12.html">12</a> <a href="chap13.html">13</a> <a href="chap14.html">14</a> <a href="chap15.html">15</a> <a href="chap16.html">16</a> <a href="chap17.html">17</a> <a href="chap18.html">18</a> <a href="chap19.html">19</a> <a href="chap20.html">20</a> <a href="chap21.html">21</a> <a href="chap22.html">22</a> <a href="chap23.html">23</a> <a href="chap24.html">24</a> <a href="chap25.html">25</a> <a href="chap26.html">26</a> <a href="chap27.html">27</a> <a href="chap28.html">28</a> <a href="chap29.html">29</a> <a href="chap30.html">30</a> <a href="chap31.html">31</a> <a href="chap32.html">32</a> <a href="chap33.html">33</a> <a href="chap34.html">34</a> <a href="chap35.html">35</a> <a href="chap36.html">36</a> <a href="chap37.html">37</a> <a href="chap38.html">38</a> <a href="chap39.html">39</a> <a href="chap40.html">40</a> <a href="chap41.html">41</a> <a href="chap42.html">42</a> <a href="chap43.html">43</a> <a href="chap44.html">44</a> <a href="chap45.html">45</a> <a href="chap46.html">46</a> <a href="chap47.html">47</a> <a href="chap48.html">48</a> <a href="chap49.html">49</a> <a href="chap50.html">50</a> <a href="chap51.html">51</a> <a href="chap52.html">52</a> <a href="chap53.html">53</a> <a href="chap54.html">54</a> <a href="chap55.html">55</a> <a href="chap56.html">56</a> <a href="chap57.html">57</a> <a href="chap58.html">58</a> <a href="chap59.html">59</a> <a href="chap60.html">60</a> <a href="chap61.html">61</a> <a href="chap62.html">62</a> <a href="chap63.html">63</a> <a href="chap64.html">64</a> <a href="chap65.html">65</a> <a href="chap66.html">66</a> <a href="chap67.html">67</a> <a href="chap68.html">68</a> <a href="chap69.html">69</a> <a href="chap70.html">70</a> <a href="chap71.html">71</a> <a href="chap72.html">72</a> <a href="chap73.html">73</a> <a href="chap74.html">74</a> <a href="chap75.html">75</a> <a href="chap76.html">76</a> <a href="chap77.html">77</a> <a href="chap78.html">78</a> <a href="chap79.html">79</a> <a href="chap80.html">80</a> <a href="chap81.html">81</a> <a href="chap82.html">82</a> <a href="chap83.html">83</a> <a href="chap84.html">84</a> <a href="chap85.html">85</a> <a href="chap86.html">86</a> <a href="chap87.html">87</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap68.html">[Previous Chapter]</a> <a href="chap70.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap69_mj.html">[MathJax on]</a></p>
<p><a id="X7BF9D3CB81A8F8F9" name="X7BF9D3CB81A8F8F9"></a></p>
<div class="ChapSects"><a href="chap69.html#X7BF9D3CB81A8F8F9">69 <span class="Heading">The MeatAxe</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X85B05BBA78ED7BE2">69.1 <span class="Heading">MeatAxe Modules</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X801022027B066497">69.1-1 <span class="Heading">GModuleByMats</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X87B82250801A1BD0">69.2 <span class="Heading">Module Constructions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X860E128B7D388FBE">69.2-1 <span class="Heading">NaturalGModule</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8233134A81D58DA3">69.2-2 PermutationGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X809B2F4585E7E7A5">69.2-3 TrivialGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X80A50F717B206C98">69.2-4 TensorProductGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7ABC0E98832FEA69">69.2-5 WedgeGModule</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X7C77D22782C98D4E">69.3 <span class="Heading">Selecting a Different MeatAxe</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7C2352A17B505AF6">69.3-1 MTX</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X84AB808B7C543377">69.4 <span class="Heading">Accessing a Module</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X78E61F7287BF1D0C">69.4-1 MTX.Generators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7DF2D6C07D7B09CD">69.4-2 MTX.Dimension</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X830C00887CE9323C">69.4-3 MTX.Field</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X84D04C7E8423EB5D">69.5 <span class="Heading">Irreducibility Tests</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X83BEDF86784A6491">69.5-1 MTX.IsIrreducible</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X876810D679926679">69.5-2 MTX.IsAbsolutelyIrreducible</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E84E1927EBFD483">69.5-3 MTX.DegreeSplittingField</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X791BA495829669C4">69.6 <span class="Heading">Decomposition of modules</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7D9B5B4E7F5A5FBD">69.6-1 MTX.IsIndecomposable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X781772FD865B9F9C">69.6-2 MTX.Indecomposition</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7F00E49484FBA7B8">69.6-3 MTX.HomogeneousComponents</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X85A258567D96B9BE">69.7 <span class="Heading">Finding Submodules</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X80FFB229852B24E9">69.7-1 MTX.SubmoduleGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X81326D84845C206F">69.7-2 MTX.ProperSubmoduleBasis</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X84604D867983DD41">69.7-3 MTX.BasesSubmodules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X871D9AF87FABFB00">69.7-4 MTX.BasesMinimalSubmodules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X864527B77A359195">69.7-5 MTX.BasesMaximalSubmodules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X830500CE7ABF6039">69.7-6 MTX.BasisRadical</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X86A5197D8154A63C">69.7-7 MTX.BasisSocle</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7F7FB6687ADE3FD8">69.7-8 MTX.BasesMinimalSupermodules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X79B704998400B9FC">69.7-9 MTX.BasesCompositionSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E77F9A97EA855E2">69.7-10 MTX.CompositionFactors</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E5038F384DBCAEC">69.7-11 MTX.CollectedFactors</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X7AE730FB81ED86FE">69.8 <span class="Heading">Induced Actions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X79EA05D4822C2668">69.8-1 MTX.NormedBasisAndBaseChange</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7812D644850D7AED">69.8-2 MTX.InducedActionSubmodule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7EAC61B381385A99">69.8-3 MTX.InducedActionFactorModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8753A03A7C7CBFF1">69.8-4 MTX.InducedActionSubMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7B137BE5877A7FA1">69.8-5 MTX.InducedAction</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X8040270F791514C8">69.9 <span class="Heading">Module Homomorphisms</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8292535D8533671C">69.9-1 MTX.BasisModuleHomomorphisms</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X78EE1274825D9E03">69.9-2 MTX.BasisModuleEndomorphisms</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8519B3C486AC8C7E">69.9-3 MTX.IsomorphismModules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8442D91F7C4D724F">69.9-4 MTX.ModuleAutomorphisms</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X850324FF7912A541">69.10 <span class="Heading">Module Homomorphisms for irreducible modules</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X858D2B0D7AE032D5">69.10-1 MTX.IsEquivalent</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E86F5B67CBD7C41">69.10-2 MTX.IsomorphismIrred</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X807AE3AC7E9B7CFF">69.10-3 MTX.Homomorphism</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7BC612D2860C582B">69.10-4 MTX.Homomorphisms</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X81A6ECB078D4441C">69.10-5 MTX.Distinguish</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X7B426E4679C1AF25">69.11 <span class="Heading">MeatAxe Functionality for Invariant Forms</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X78B114E78227EA37">69.11-1 MTX.InvariantBilinearForm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E1F430278A334E1">69.11-2 MTX.InvariantSesquilinearForm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7ADE65997F16EE63">69.11-3 MTX.InvariantQuadraticForm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X78E60EFE802AEBC1">69.11-4 MTX.BasisInOrbit</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8168EB348474046B">69.11-5 MTX.OrthogonalSign</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X87B0E3237BA056FC">69.12 <span class="Heading">The Smash MeatAxe</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E78525883E715E1">69.12-1 SMTX.RandomIrreducibleSubGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7EA698517A19D35B">69.12-2 SMTX.GoodElementGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X811339547D341BBE">69.12-3 SMTX.SortHomGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X86B6092681221D7A">69.12-4 SMTX.MinimalSubGModules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X87E49FCD867983B5">69.12-5 SMTX.Setter</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E60EBC57FFDF7BD">69.12-6 SMTX.Getter</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X808345D784E0AC85">69.12-7 SMTX.IrreducibilityTest</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7E692DC97AFB661E">69.12-8 SMTX.AbsoluteIrreducibilityTest</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X80BC392285994DA8">69.12-9 SMTX.MinimalSubGModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X79EF16677C2EE095">69.12-10 SMTX.MatrixSum</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7D1471077A774C81">69.12-11 SMTX.CompleteBasis</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap69.html#X7FDF8F3F83B83336">69.13 <span class="Heading">Smash MeatAxe Flags</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X84A93AC482A1946D">69.13-1 SMTX.Subbasis</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7ABCD69880772B2D">69.13-2 SMTX.AlgEl</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7D6C947A7C8C14B2">69.13-3 SMTX.AlgElMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8417F86A7A20F128">69.13-4 SMTX.AlgElCharPol</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X79A82FED785BFB6D">69.13-5 SMTX.AlgElCharPolFac</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X8367B4A17EC39ABD">69.13-6 SMTX.AlgElNullspaceVec</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X877F1AB77DC1E12C">69.13-7 SMTX.AlgElNullspaceDimension</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X78A6B95686671067">69.13-8 SMTX.CentMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap69.html#X7D199DB6804F5D8F">69.13-9 SMTX.CentMatMinPoly</a></span>
</div></div>
</div>
<h3>69 <span class="Heading">The MeatAxe</span></h3>
<p>The MeatAxe <a href="chapBib.html#biBPar84">[Par84]</a> is a tool for the examination of submodules of a group algebra. It is a basic tool for the examination of group actions on finite-dimensional modules.</p>
<p><strong class="pkg">GAP</strong> uses the improved MeatAxe of Derek Holt and Sarah Rees, and also incorporates further improvements of Ivanyos and Lux.</p>
<p>Please note that, consistently with the convention for group actions, the action of the <strong class="pkg">GAP</strong> MeatAxe is always that of matrices on row vectors by multiplication on the right. If you want to investigate left modules you will have to transpose the matrices.</p>
<p><a id="X85B05BBA78ED7BE2" name="X85B05BBA78ED7BE2"></a></p>
<h4>69.1 <span class="Heading">MeatAxe Modules</span></h4>
<p><a id="X801022027B066497" name="X801022027B066497"></a></p>
<h5>69.1-1 <span class="Heading">GModuleByMats</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GModuleByMats</code>( <var class="Arg">gens</var>, <var class="Arg">field</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GModuleByMats</code>( <var class="Arg">emptygens</var>, <var class="Arg">dim</var>, <var class="Arg">field</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>creates a MeatAxe module over <var class="Arg">field</var> from a list of invertible matrices <var class="Arg">gens</var> which reflect a group's action. If the list of generators is empty, the dimension must be given as second argument.
<p>MeatAxe routines are on a level with Gaussian elimination. Therefore they do not deal with <strong class="pkg">GAP</strong> modules but essentially with lists of matrices. For the MeatAxe, a module is a record with components</p>
<dl>
<dt><strong class="Mark"><code class="code">generators</code></strong></dt>
<dd><p>A list of matrices which represent a group operation on a finite dimensional row vector space.</p>
</dd>
<dt><strong class="Mark"><code class="code">dimension</code></strong></dt>
<dd><p>The dimension of the vector space (this is the common length of the row vectors (see <code class="func">DimensionOfVectors</code> (<a href="chap61.html#X8534A750878478D0"><span class="RefLink">61.9-6</span></a>))).</p>
</dd>
<dt><strong class="Mark"><code class="code">field</code></strong></dt>
<dd><p>The field over which the vector space is defined.</p>
</dd>
</dl>
<p>Once a module has been created its entries may not be changed. A MeatAxe may create a new component <var class="Arg">NameOfMeatAxe</var> in which it can store private information. By a MeatAxe <q>submodule</q> or <q>factor module</q> we denote actually the <em>induced action</em> on the submodule, respectively factor module. Therefore the submodules or factor modules are again MeatAxe modules. The arrangement of <code class="code">generators</code> is guaranteed to be the same for the induced modules, but to obtain the complete relation to the original module, the bases used are needed as well.</p>
<p><a id="X87B82250801A1BD0" name="X87B82250801A1BD0"></a></p>
<h4>69.2 <span class="Heading">Module Constructions</span></h4>
<p><a id="X860E128B7D388FBE" name="X860E128B7D388FBE"></a></p>
<h5>69.2-1 <span class="Heading">NaturalGModule</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NaturalGModule</code>( <var class="Arg">group</var>[, <var class="Arg">field</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>creates a MeatAxe module over <var class="Arg">field</var> from the generators of the matrix group <var class="Arg">group</var>. If <var class="Arg">field</var> is not provided then the value returned by <code class="func">DefaultFieldOfMatrixGroup</code> (<a href="chap44.html#X7D540083793CD496"><span class="RefLink">44.2-2</span></a>) is used instead.</p>
<p><a id="X8233134A81D58DA3" name="X8233134A81D58DA3"></a></p>
<h5>69.2-2 PermutationGModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PermutationGModule</code>( <var class="Arg">G</var>, <var class="Arg">F</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Called with a permutation group <var class="Arg">G</var> and a field <var class="Arg">F</var> (<var class="Arg">F</var> may be infinite), <code class="func">PermutationGModule</code> returns the natural permutation module <span class="SimpleMath">M</span> over <var class="Arg">F</var> for the group of permutation matrices that acts on the canonical basis of <span class="SimpleMath">M</span> in the same way as <var class="Arg">G</var> acts on the points up to its largest moved point (see <code class="func">LargestMovedPoint</code> (<a href="chap42.html#X84AA603987C94AC0"><span class="RefLink">42.3-2</span></a>)).</p>
<p><a id="X809B2F4585E7E7A5" name="X809B2F4585E7E7A5"></a></p>
<h5>69.2-3 TrivialGModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TrivialGModule</code>( <var class="Arg">G</var>, <var class="Arg">F</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Called with a group <var class="Arg">G</var> and a field <var class="Arg">F</var> (<var class="Arg">F</var> may be infinite), <code class="func">TrivialGModule</code> returns the trivial module over <var class="Arg">F</var>.</p>
<p><a id="X80A50F717B206C98" name="X80A50F717B206C98"></a></p>
<h5>69.2-4 TensorProductGModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TensorProductGModule</code>( <var class="Arg">m1</var>, <var class="Arg">m2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">TensorProductGModule</code> calculates the tensor product of the modules <var class="Arg">m1</var> and <var class="Arg">m2</var>. They are assumed to be modules over the same algebra so, in particular, they should have the same number of generators.</p>
<p><a id="X7ABC0E98832FEA69" name="X7ABC0E98832FEA69"></a></p>
<h5>69.2-5 WedgeGModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WedgeGModule</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">WedgeGModule</code> calculates the wedge product of a <var class="Arg">G</var>-module. That is the action on antisymmetric tensors.</p>
<p><a id="X7C77D22782C98D4E" name="X7C77D22782C98D4E"></a></p>
<h4>69.3 <span class="Heading">Selecting a Different MeatAxe</span></h4>
<p><a id="X7C2352A17B505AF6" name="X7C2352A17B505AF6"></a></p>
<h5>69.3-1 MTX</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX</code></td><td class="tdright">( global variable )</td></tr></table></div>
<p>All MeatAxe routines are accessed via the global variable <code class="func">MTX</code>, which is a record whose components hold the various functions. It is possible to have several implementations of a MeatAxe available. Each MeatAxe represents its routines in an own global variable and assigning <code class="func">MTX</code> to this variable selects the corresponding MeatAxe.</p>
<p><a id="X84AB808B7C543377" name="X84AB808B7C543377"></a></p>
<h4>69.4 <span class="Heading">Accessing a Module</span></h4>
<p>Even though a MeatAxe module is a record, its components should never be accessed outside of MeatAxe functions. Instead the following operations should be used:</p>
<p><a id="X78E61F7287BF1D0C" name="X78E61F7287BF1D0C"></a></p>
<h5>69.4-1 MTX.Generators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Generators</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of matrix generators of <var class="Arg">module</var>.</p>
<p><a id="X7DF2D6C07D7B09CD" name="X7DF2D6C07D7B09CD"></a></p>
<h5>69.4-2 MTX.Dimension</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Dimension</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the dimension in which the matrices act.</p>
<p><a id="X830C00887CE9323C" name="X830C00887CE9323C"></a></p>
<h5>69.4-3 MTX.Field</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Field</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the field over which <var class="Arg">module</var> is defined.</p>
<p><a id="X84D04C7E8423EB5D" name="X84D04C7E8423EB5D"></a></p>
<h4>69.5 <span class="Heading">Irreducibility Tests</span></h4>
<p><a id="X83BEDF86784A6491" name="X83BEDF86784A6491"></a></p>
<h5>69.5-1 MTX.IsIrreducible</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsIrreducible</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>tests whether the module <var class="Arg">module</var> is irreducible (i.e. contains no proper submodules.)</p>
<p><a id="X876810D679926679" name="X876810D679926679"></a></p>
<h5>69.5-2 MTX.IsAbsolutelyIrreducible</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsAbsolutelyIrreducible</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>A module is absolutely irreducible if it remains irreducible over the algebraic closure of the field. (Formally: If the tensor product <span class="SimpleMath">L ⊗_K M</span> is irreducible where <span class="SimpleMath">M</span> is the module defined over <span class="SimpleMath">K</span> and <span class="SimpleMath">L</span> is the algebraic closure of <span class="SimpleMath">K</span>.)</p>
<p><a id="X7E84E1927EBFD483" name="X7E84E1927EBFD483"></a></p>
<h5>69.5-3 MTX.DegreeSplittingField</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.DegreeSplittingField</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the degree of the splitting field as extension of the prime field.</p>
<p><a id="X791BA495829669C4" name="X791BA495829669C4"></a></p>
<h4>69.6 <span class="Heading">Decomposition of modules</span></h4>
<p>A module is <em>decomposable</em> if it can be written as the direct sum of two proper submodules (and <em>indecomposable</em> if not). Obviously every finite dimensional module is a direct sum of its indecomposable parts. The <em>homogeneous components</em> of a module are the direct sums of isomorphic indecomposable components. They are uniquely determined.</p>
<p><a id="X7D9B5B4E7F5A5FBD" name="X7D9B5B4E7F5A5FBD"></a></p>
<h5>69.6-1 MTX.IsIndecomposable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsIndecomposable</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns whether <var class="Arg">module</var> is indecomposable.</p>
<p><a id="X781772FD865B9F9C" name="X781772FD865B9F9C"></a></p>
<h5>69.6-2 MTX.Indecomposition</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Indecomposition</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a decomposition of <var class="Arg">module</var> as a direct sum of indecomposable modules. It returns a list, each entry is a list of form [<var class="Arg">B</var>,<var class="Arg">ind</var>] where <var class="Arg">B</var> is a list of basis vectors for the indecomposable component and <var class="Arg">ind</var> the induced module action on this component. (Such a decomposition is not unique.)</p>
<p><a id="X7F00E49484FBA7B8" name="X7F00E49484FBA7B8"></a></p>
<h5>69.6-3 MTX.HomogeneousComponents</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.HomogeneousComponents</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>computes the homogeneous components of <var class="Arg">module</var> given as sums of indecomposable components. The function returns a list, each entry of which is a record corresponding to one isomorphism type of indecomposable components. The record has the following components.</p>
<dl>
<dt><strong class="Mark"><code class="code">indices</code></strong></dt>
<dd><p>the index numbers of the indecomposable components, as given by <code class="func">MTX.Indecomposition</code> (<a href="chap69.html#X781772FD865B9F9C"><span class="RefLink">69.6-2</span></a>), that are in the homogeneous component,</p>
</dd>
<dt><strong class="Mark"><code class="code">component</code></strong></dt>
<dd><p>one of the indecomposable components,</p>
</dd>
<dt><strong class="Mark"><code class="code">images</code></strong></dt>
<dd><p>a list of the remaining indecomposable components, each given as a record with the components <code class="code">component</code> (the component itself) and <code class="code">isomorphism</code> (an isomorphism from the defining component to this one).</p>
</dd>
</dl>
<p><a id="X85A258567D96B9BE" name="X85A258567D96B9BE"></a></p>
<h4>69.7 <span class="Heading">Finding Submodules</span></h4>
<p><a id="X80FFB229852B24E9" name="X80FFB229852B24E9"></a></p>
<h5>69.7-1 MTX.SubmoduleGModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.SubmoduleGModule</code>( <var class="Arg">module</var>, <var class="Arg">subspace</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.SubGModule</code>( <var class="Arg">module</var>, <var class="Arg">subspace</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">subspace</var> should be a subspace of (or a vector in) the underlying vector space of <var class="Arg">module</var> i.e. the full row space of the same dimension and over the same field as <var class="Arg">module</var>. A normalized basis of the submodule of <var class="Arg">module</var> generated by <var class="Arg">subspace</var> is returned.</p>
<p><a id="X81326D84845C206F" name="X81326D84845C206F"></a></p>
<h5>69.7-2 MTX.ProperSubmoduleBasis</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.ProperSubmoduleBasis</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the basis of a proper submodule of <var class="Arg">module</var> and <code class="keyw">fail</code> if no proper submodule exists.</p>
<p><a id="X84604D867983DD41" name="X84604D867983DD41"></a></p>
<h5>69.7-3 MTX.BasesSubmodules</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasesSubmodules</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list containing a basis for every submodule.</p>
<p><a id="X871D9AF87FABFB00" name="X871D9AF87FABFB00"></a></p>
<h5>69.7-4 MTX.BasesMinimalSubmodules</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasesMinimalSubmodules</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of bases of all minimal submodules.</p>
<p><a id="X864527B77A359195" name="X864527B77A359195"></a></p>
<h5>69.7-5 MTX.BasesMaximalSubmodules</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasesMaximalSubmodules</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of bases of all maximal submodules.</p>
<p><a id="X830500CE7ABF6039" name="X830500CE7ABF6039"></a></p>
<h5>69.7-6 MTX.BasisRadical</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasisRadical</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a basis of the radical of <var class="Arg">module</var>.</p>
<p><a id="X86A5197D8154A63C" name="X86A5197D8154A63C"></a></p>
<h5>69.7-7 MTX.BasisSocle</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasisSocle</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a basis of the socle of <var class="Arg">module</var>.</p>
<p><a id="X7F7FB6687ADE3FD8" name="X7F7FB6687ADE3FD8"></a></p>
<h5>69.7-8 MTX.BasesMinimalSupermodules</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasesMinimalSupermodules</code>( <var class="Arg">module</var>, <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of bases of all minimal supermodules of the submodule given by the basis <var class="Arg">sub</var>.</p>
<p><a id="X79B704998400B9FC" name="X79B704998400B9FC"></a></p>
<h5>69.7-9 MTX.BasesCompositionSeries</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasesCompositionSeries</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of bases of submodules in a composition series in ascending order.</p>
<p><a id="X7E77F9A97EA855E2" name="X7E77F9A97EA855E2"></a></p>
<h5>69.7-10 MTX.CompositionFactors</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.CompositionFactors</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list of composition factors of <var class="Arg">module</var> in ascending order.</p>
<p><a id="X7E5038F384DBCAEC" name="X7E5038F384DBCAEC"></a></p>
<h5>69.7-11 MTX.CollectedFactors</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.CollectedFactors</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list giving all irreducible composition factors with their frequencies.</p>
<p><a id="X7AE730FB81ED86FE" name="X7AE730FB81ED86FE"></a></p>
<h4>69.8 <span class="Heading">Induced Actions</span></h4>
<p><a id="X79EA05D4822C2668" name="X79EA05D4822C2668"></a></p>
<h5>69.8-1 MTX.NormedBasisAndBaseChange</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.NormedBasisAndBaseChange</code>( <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a list <code class="code">[<var class="Arg">bas</var>, <var class="Arg">change</var> ]</code> where <var class="Arg">bas</var> is a normed basis (i.e. in echelon form with pivots normed to 1) for <var class="Arg">sub</var> and <var class="Arg">change</var> is the base change from <var class="Arg">bas</var> to <var class="Arg">sub</var> (the basis vectors of <var class="Arg">bas</var> expressed in coefficients for <var class="Arg">sub</var>).</p>
<p><a id="X7812D644850D7AED" name="X7812D644850D7AED"></a></p>
<h5>69.8-2 MTX.InducedActionSubmodule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionSubmodule</code>( <var class="Arg">module</var>, <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionSubmoduleNB</code>( <var class="Arg">module</var>, <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>creates a new module corresponding to the action of <var class="Arg">module</var> on the non-trivial submodule <var class="Arg">sub</var>. In the <code class="code">NB</code> version the basis <var class="Arg">sub</var> must be normed. (That is it must be in echelon form with pivots normed to 1, see <code class="func">MTX.NormedBasisAndBaseChange</code> (<a href="chap69.html#X79EA05D4822C2668"><span class="RefLink">69.8-1</span></a>).)</p>
<p><a id="X7EAC61B381385A99" name="X7EAC61B381385A99"></a></p>
<h5>69.8-3 MTX.InducedActionFactorModule</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionFactorModule</code>( <var class="Arg">module</var>, <var class="Arg">sub</var>[, <var class="Arg">compl</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>creates a new module corresponding to the action of <var class="Arg">module</var> on the factor of the proper submodule <var class="Arg">sub</var>. If <var class="Arg">compl</var> is given, it has to be a basis of a (vector space-)complement of <var class="Arg">sub</var>. The action then will correspond to <var class="Arg">compl</var>.</p>
<p>The basis <var class="Arg">sub</var> has to be given in normed form. (That is it must be in echelon form with pivots normed to 1, see <code class="func">MTX.NormedBasisAndBaseChange</code> (<a href="chap69.html#X79EA05D4822C2668"><span class="RefLink">69.8-1</span></a>))</p>
<p><a id="X8753A03A7C7CBFF1" name="X8753A03A7C7CBFF1"></a></p>
<h5>69.8-4 MTX.InducedActionSubMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionSubMatrix</code>( <var class="Arg">mat</var>, <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionSubMatrixNB</code>( <var class="Arg">mat</var>, <var class="Arg">sub</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedActionFactorMatrix</code>( <var class="Arg">mat</var>, <var class="Arg">sub</var>[, <var class="Arg">compl</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>work the same way as the above functions for modules, but take as input only a single matrix.</p>
<p><a id="X7B137BE5877A7FA1" name="X7B137BE5877A7FA1"></a></p>
<h5>69.8-5 MTX.InducedAction</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InducedAction</code>( <var class="Arg">module</var>, <var class="Arg">sub</var>[, <var class="Arg">type</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Computes induced actions on submodules or factor modules and also returns the corresponding bases. The action taken is binary encoded in <var class="Arg">type</var>: <code class="code">1</code> stands for subspace action, <code class="code">2</code> for factor action, and <code class="code">4</code> for action of the full module on a subspace adapted basis. The routine returns the computed results in a list in sequence (<var class="Arg">sub</var>,<var class="Arg">quot</var>,<var class="Arg">both</var>,<var class="Arg">basis</var>) where <var class="Arg">basis</var> is a basis for the whole space, extending <var class="Arg">sub</var>. (Actions which are not computed are omitted, so the returned list may be shorter.) If no <var class="Arg">type</var> is given, it is assumed to be <code class="code">7</code>. The basis given in <var class="Arg">sub</var> must be normed!</p>
<p>All these routines return <code class="keyw">fail</code> if <var class="Arg">sub</var> is not a proper subspace.</p>
<p><a id="X8040270F791514C8" name="X8040270F791514C8"></a></p>
<h4>69.9 <span class="Heading">Module Homomorphisms</span></h4>
<p><a id="X8292535D8533671C" name="X8292535D8533671C"></a></p>
<h5>69.9-1 MTX.BasisModuleHomomorphisms</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasisModuleHomomorphisms</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a basis of all module homomorphisms from <var class="Arg">module1</var> to <var class="Arg">module2</var>. Homomorphisms are by matrices, whose rows give the images of the standard basis vectors of <var class="Arg">module1</var> in the standard basis of <var class="Arg">module2</var>.</p>
<p><a id="X78EE1274825D9E03" name="X78EE1274825D9E03"></a></p>
<h5>69.9-2 MTX.BasisModuleEndomorphisms</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.BasisModuleEndomorphisms</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a basis of all module homomorphisms from <var class="Arg">module</var> to <var class="Arg">module</var>.</p>
<p><a id="X8519B3C486AC8C7E" name="X8519B3C486AC8C7E"></a></p>
<h5>69.9-3 MTX.IsomorphismModules</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsomorphismModules</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">module1</var> and <var class="Arg">module2</var> are isomorphic modules, this function returns an isomorphism from <var class="Arg">module1</var> to <var class="Arg">module2</var> in form of a matrix. It returns <code class="keyw">fail</code> if the modules are not isomorphic.</p>
<p><a id="X8442D91F7C4D724F" name="X8442D91F7C4D724F"></a></p>
<h5>69.9-4 MTX.ModuleAutomorphisms</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.ModuleAutomorphisms</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the module automorphisms of <var class="Arg">module</var> (the set of all isomorphisms from <var class="Arg">module</var> to itself) as a matrix group.</p>
<p><a id="X850324FF7912A541" name="X850324FF7912A541"></a></p>
<h4>69.10 <span class="Heading">Module Homomorphisms for irreducible modules</span></h4>
<p>The following are lower-level functions that provide homomorphism functionality for irreducible modules. Generic code should use the functions in Section <a href="chap69.html#X8040270F791514C8"><span class="RefLink">69.9</span></a> instead.</p>
<p><a id="X858D2B0D7AE032D5" name="X858D2B0D7AE032D5"></a></p>
<h5>69.10-1 MTX.IsEquivalent</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsEquivalent</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>tests two irreducible modules for equivalence.</p>
<p><a id="X7E86F5B67CBD7C41" name="X7E86F5B67CBD7C41"></a></p>
<h5>69.10-2 MTX.IsomorphismIrred</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.IsomorphismIrred</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns an isomorphism from <var class="Arg">module1</var> to <var class="Arg">module2</var> (if one exists), and <code class="keyw">fail</code> otherwise. It requires that one of the modules is known to be irreducible. It implicitly assumes that the same group is acting, otherwise the results are unpredictable. The isomorphism is given by a matrix <span class="SimpleMath">M</span>, whose rows give the images of the standard basis vectors of <var class="Arg">module1</var> in the standard basis of <var class="Arg">module2</var>. That is, conjugation of the generators of <var class="Arg">module2</var> with <span class="SimpleMath">M</span> yields the generators of <var class="Arg">module1</var>.</p>
<p><a id="X807AE3AC7E9B7CFF" name="X807AE3AC7E9B7CFF"></a></p>
<h5>69.10-3 MTX.Homomorphism</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Homomorphism</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var>, <var class="Arg">mat</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">mat</var> should be a <var class="Arg">dim1</var> <span class="SimpleMath">×</span> <var class="Arg">dim2</var> matrix defining a homomorphism from <var class="Arg">module1</var> to <var class="Arg">module2</var>. This function verifies that <var class="Arg">mat</var> really does define a module homomorphism, and then returns the corresponding homomorphism between the underlying row spaces of the modules. This can be used for computing kernels, images and pre-images.</p>
<p><a id="X7BC612D2860C582B" name="X7BC612D2860C582B"></a></p>
<h5>69.10-4 MTX.Homomorphisms</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Homomorphisms</code>( <var class="Arg">module1</var>, <var class="Arg">module2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a basis of the space of all homomorphisms from the irreducible module <var class="Arg">module1</var> to <var class="Arg">module2</var>.</p>
<p><a id="X81A6ECB078D4441C" name="X81A6ECB078D4441C"></a></p>
<h5>69.10-5 MTX.Distinguish</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.Distinguish</code>( <var class="Arg">cf</var>, <var class="Arg">nr</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">cf</var> be the output of <code class="func">MTX.CollectedFactors</code> (<a href="chap69.html#X7E5038F384DBCAEC"><span class="RefLink">69.7-11</span></a>). This routine tries to find a group algebra element that has nullity zero on all composition factors except number <var class="Arg">nr</var>.</p>
<p><a id="X7B426E4679C1AF25" name="X7B426E4679C1AF25"></a></p>
<h4>69.11 <span class="Heading">MeatAxe Functionality for Invariant Forms</span></h4>
<p>The functions in this section can only be applied to an absolutely irreducible MeatAxe module.</p>
<p><a id="X78B114E78227EA37" name="X78B114E78227EA37"></a></p>
<h5>69.11-1 MTX.InvariantBilinearForm</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InvariantBilinearForm</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns an invariant bilinear form, which may be symmetric or anti-symmetric, of <var class="Arg">module</var>, or <code class="keyw">fail</code> if no such form exists.</p>
<p><a id="X7E1F430278A334E1" name="X7E1F430278A334E1"></a></p>
<h5>69.11-2 MTX.InvariantSesquilinearForm</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InvariantSesquilinearForm</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns an invariant hermitian (= self-adjoint) sesquilinear form of <var class="Arg">module</var>, which must be defined over a finite field whose order is a square, or <code class="keyw">fail</code> if no such form exists.</p>
<p><a id="X7ADE65997F16EE63" name="X7ADE65997F16EE63"></a></p>
<h5>69.11-3 MTX.InvariantQuadraticForm</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MTX.InvariantQuadraticForm</code>( <var class="Arg">module</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns either the matrix of an invariant quadratic form of the absolutely irreducible module <var class="Arg">module</var>, or <code class="keyw">fail</code>.</p>
<p>If the characteristic of <var class="Arg">module</var> is odd then <code class="keyw">fail</code> is returned if there is no nonzero invariant bilinear form, otherwise a matrix of the bilinear form divided by <span class="SimpleMath">2</span> is returned; note that this matrix may be antisymmetric and thus describe the zero quadratic form. If the characteristic of <var class="Arg">module</var> is <span class="SimpleMath">2</span> then <code class="keyw">fail</code> is returned if <var class="Arg">module</var> does not admit a nonzero quadratic form, otherwise a lower triangular matrix describing the form is returned.</p>
<p>An error is signalled if <var class="Arg">module</var> is not absolutely irreducible.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= SO(-1, 4, 2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= NaturalGModule( g );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( MTX.InvariantQuadraticForm( m ) );</ | |