|
|
|
|
SSL chap62.html
Interaktion und PortierbarkeitHTML
|
|
| products/sources/formale Sprachen/GAP/doc/ref/chap62.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 62: Algebras</ 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= "chap62" 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="chap61.html">[Previous Chapter]</a> <a href="chap63.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap62_mj.html">[MathJax on]</a></p>
<p><a id="X7DDBF6F47A2E021C" name="X7DDBF6F47A2E021C"></a></p>
<div class="ChapSects"><a href="chap62.html#X7DDBF6F47A2E021C">62 <span class="Heading">Algebras</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X830EDB5F85645FFB">62.1 <span class="Heading">InfoAlgebra (Info Class)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8665F459841AAD53">62.1-1 InfoAlgebra</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X8686DEBA85D3F3B6">62.2 <span class="Heading">Constructing Algebras by Generators</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7B213851791A594B">62.2-1 Algebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X80FE16EA84EE56CD">62.2-2 AlgebraWithOne</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7A7B00127DC9DD40">62.3 <span class="Heading">Constructing Algebras as Free Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X83484C917D8F7A1A">62.3-1 FreeAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7FBD04B07B85623D">62.3-2 FreeAlgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X87835FFE79D2E068">62.3-3 FreeAssociativeAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X845A777584A7D711">62.3-4 FreeAssociativeAlgebraWithOne</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7E8F45547CC07CE5">62.4 <span class="Heading">Constructing Algebras by Structure Constants</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7CC58DFD816E6B65">62.4-1 AlgebraByStructureConstants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X80D528A57FD64873">62.4-2 AlgebraWithOneByStructureConstants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X804ADF0280F67CDC">62.4-3 StructureConstantsTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F1203A1793411DF">62.4-4 EmptySCTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X817BD086876EC1C4">62.4-5 SetEntrySCTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F333822780B6731">62.4-6 GapInputSCTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C23ED85814C0371">62.4-7 TestJacobi</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X78B633CE7A5B9F9A">62.4-8 IdentityFromSCTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F2A71608602635D">62.4-9 QuotientFromSCTable</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X79B7C3078112E7E1">62.5 <span class="Heading">Some Special Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X83DF4BCC7CE494FC">62.5-1 QuaternionAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7B807702782F56FF">62.5-2 ComplexificationQuat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X78C88A38853A8443">62.5-3 OctaveAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7D88E42B7DE087B0">62.5-4 FullMatrixAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X78B8BA77869DAA13">62.5-5 NullAlgebra</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7DF5989886BE611E">62.6 <span class="Heading">Subalgebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8396643D7A49EEAD">62.6-1 Subalgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C6B08657BD836C3">62.6-2 SubalgebraNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X83ECF489846F00B0">62.6-3 SubalgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7A11B177868E76AA">62.6-4 SubalgebraWithOneNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7FDD953A84CFC3D2">62.6-5 TrivialSubalgebra</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X81EE8C1F7D7A7CF8">62.7 <span class="Heading">Ideals of Algebras</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7DC95D6982C9D7B0">62.8 <span class="Heading">Categories and Properties of Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7FEDFAA383AB20D2">62.8-1 IsFLMLOR</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X85C1E13A877DF2C8">62.8-2 IsFLMLORWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X801ED693808F6C84">62.8-3 IsAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X80B21AC27DE6D068">62.8-4 IsAlgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X839BAC687B4E1A1D">62.8-5 IsLieAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X877DF13387831A6A">62.8-6 IsSimpleAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C5AECE87D79D075">62.8-7 IsFiniteDimensional</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X82B3A9077D0CB453">62.8-8 IsQuaternion</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7E9273E47CF38CF1">62.9 <span class="Heading">Attributes and Operations for Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X83B055F37EBF2438">62.9-1 GeneratorsOfAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7FA408307A5A420E">62.9-2 GeneratorsOfAlgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7D309FD37D94B196">62.9-3 ProductSpace</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X875CD2B37EE9A8A2">62.9-4 PowerSubalgebraSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X788F4E6184E5C863">62.9-5 AdjointBasis</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X800A410B8536E6DD">62.9-6 IndicesOfAdjointBasis</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7BA35CB28062D407">62.9-7 AsAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X878323367D0B68EB">62.9-8 AsAlgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7A922D26805AFF99">62.9-9 AsSubalgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7B964BC37A975E48">62.9-10 AsSubalgebraWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C280DAC7F840B60">62.9-11 MutableBasisOfClosureUnderAction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7BA1739D7F8B3A2B">62.9-12 MutableBasisOfNonassociativeAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8467B687823371F9">62.9-13 MutableBasisOfIdealInNonassociativeAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C591B7C7DEA7EEB">62.9-14 DirectSumOfAlgebras</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7D0EB1437D3D9495">62.9-15 FullMatrixAlgebraCentralizer</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X850C29907A509533">62.9-16 RadicalOfAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X82571785846CF05C">62.9-17 CentralIdempotentsOfAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7CFB230582C26DAA">62.9-18 DirectSumDecomposition</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X85C58364833E014C">62.9-19 LeviMalcevDecomposition</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7DCA2568870A2D34">62.9-20 Grading</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X7E94B857847F95C1">62.10 <span class="Heading">Homomorphisms of Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X83CE798C7D39E368">62.10-1 AlgebraGeneralMappingByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7A7F97ED8608C882">62.10-2 AlgebraHomomorphismByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8326D1BD79725462">62.10-3 AlgebraHomomorphismByImagesNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8057E55B864567AD">62.10-4 AlgebraWithOneGeneralMappingByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X866F32B5846E5857">62.10-5 AlgebraWithOneHomomorphismByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X80BF4D6A7FDC959A">62.10-6 AlgebraWithOneHomomorphismByImagesNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X825149467C57DEFC">62.10-7 AlgebraHomomorphismByFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8712E5C1861CC32C">62.10-8 NaturalHomomorphismByIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8705A9C68102FEA3">62.10-9 OperationAlgebraHomomorphism</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7B249E8E86D895F0">62.10-10 NiceAlgebraMonomorphism</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X79D770777D873F80">62.10-11 IsomorphismFpAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7FB760F9813B0789">62.10-12 IsomorphismMatrixAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F8D3DF2863EC50D">62.10-13 IsomorphismSCAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F34244B81979696">62.10-14 RepresentativeLinearOperation</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap62.html#X818DE6C57D1A4B33">62.11 <span class="Heading">Representations of Algebras</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8055B87F7ADBD66B">62.11-1 LeftAlgebraModuleByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8026B99B7955A355">62.11-2 RightAlgebraModuleByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7F28A47E876427E0">62.11-3 BiAlgebraModuleByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X852524F581613359">62.11-4 LeftAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8222F2B67D753036">62.11-5 RightAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X84517770868DDA02">62.11-6 BiAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X79AAB50D83A14A43">62.11-7 GeneratorsOfAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X82B708BD84F3DAB1">62.11-8 IsAlgebraModuleElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X80E786467F9163F9">62.11-9 IsLeftAlgebraModuleElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X863756787E2B6E75">62.11-10 IsRightAlgebraModuleElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X85654EF07F708AC3">62.11-11 LeftActingAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X826298B37E1B1520">62.11-12 RightActingAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8308408D86CFC3C9">62.11-13 ActingAlgebra</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7C325A507EC9BA18">62.11-14 IsBasisOfAlgebraModuleElementSpace</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X789863037B0E35D2">62.11-15 MatrixOfAction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8742A7D27F26AFAB">62.11-16 SubAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X86E0515987192F0E">62.11-17 LeftModuleByHomomorphismToMatAlg</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7EE41297867E41A8">62.11-18 RightModuleByHomomorphismToMatAlg</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X8729F0A678A4A09C">62.11-19 AdjointModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X84813BCD80BDF3C4">62.11-20 FaithfulModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7E16630185CE2C10">62.11-21 ModuleByRestriction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7885AAC87FDCF649">62.11-22 NaturalHomomorphismBySubAlgebraModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X85D0F3758551DADC">62.11-23 DirectSumOfAlgebraModules</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap62.html#X7D7A6486803B15CE">62.11-24 TranslatorSubalgebra</a></span>
</div></div>
</div>
<h3>62 <span class="Heading">Algebras</span></h3>
<p>An algebra is a vector space equipped with a bilinear map (multiplication). This chapter describes the functions in <strong class="pkg">GAP</strong> that deal with general algebras and associative algebras.</p>
<p>Algebras in <strong class="pkg">GAP</strong> are vector spaces in a natural way. So all the functionality for vector spaces (see Chapter <a href="chap61.html#X7DAD6700787EC845"><span class="RefLink">61</span></a>) is also applicable to algebras.</p>
<p><a id="X830EDB5F85645FFB" name="X830EDB5F85645FFB"></a></p>
<h4>62.1 <span class="Heading">InfoAlgebra (Info Class)</span></h4>
<p><a id="X8665F459841AAD53" name="X8665F459841AAD53"></a></p>
<h5>62.1-1 InfoAlgebra</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InfoAlgebra</code></td><td class="tdright">( info class )</td></tr></table></div>
<p>is the info class for the functions dealing with algebras (see <a href="chap7.html#X7A9C902479CB6F7C"><span class="RefLink">7.4</span></a>).</p>
<p><a id="X8686DEBA85D3F3B6" name="X8686DEBA85D3F3B6"></a></p>
<h4>62.2 <span class="Heading">Constructing Algebras by Generators</span></h4>
<p><a id="X7B213851791A594B" name="X7B213851791A594B"></a></p>
<h5>62.2-1 Algebra</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Algebra</code>( <var class="Arg">F</var>, <var class="Arg">gens</var>[, <var class="Arg">zero</var>][, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="code">Algebra( <var class="Arg">F</var>, <var class="Arg">gens</var> )</code> is the algebra over the division ring <var class="Arg">F</var>, generated by the vectors in the list <var class="Arg">gens</var>.</p>
<p>If there are three arguments, a division ring <var class="Arg">F</var> and a list <var class="Arg">gens</var> and an element <var class="Arg">zero</var>, then <code class="code">Algebra( <var class="Arg">F</var>, <var class="Arg">gens</var>, <var class="Arg">zero</var> )</code> is the <var class="Arg">F</var>-algebra generated by <var class="Arg">gens</var>, with zero element <var class="Arg">zero</var>.</p>
<p>If the last argument is the string <code class="code">"basis"</code> then the vectors in <var class="Arg">gens</var> are known to form a basis of the algebra (as an <var class="Arg">F</var>-vector space).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= [ [ 0, 1, 2 ], [ 0, 0, 3], [ 0, 0, 0 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= Algebra( Rationals, [ m ] );</span>
<algebra over Rationals, with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( A );</span>
2
</pre></div>
<p><a id="X80FE16EA84EE56CD" name="X80FE16EA84EE56CD"></a></p>
<h5>62.2-2 AlgebraWithOne</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AlgebraWithOne</code>( <var class="Arg">F</var>, <var class="Arg">gens</var>[, <var class="Arg">zero</var>][, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="code">AlgebraWithOne( <var class="Arg">F</var>, <var class="Arg">gens</var> )</code> is the algebra-with-one over the division ring <var class="Arg">F</var>, generated by the vectors in the list <var class="Arg">gens</var>.</p>
<p>If there are three arguments, a division ring <var class="Arg">F</var> and a list <var class="Arg">gens</var> and an element <var class="Arg">zero</var>, then <code class="code">AlgebraWithOne( <var class="Arg">F</var>, <var class="Arg">gens</var>, <var class="Arg">zero</var> )</code> is the <var class="Arg">F</var>-algebra-with-one generated by <var class="Arg">gens</var>, with zero element <var class="Arg">zero</var>.</p>
<p>If the last argument is the string <code class="code">"basis"</code> then the vectors in <var class="Arg">gens</var> are known to form a basis of the algebra (as an <var class="Arg">F</var>-vector space).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= [ [ 0, 1, 2 ], [ 0, 0, 3], [ 0, 0, 0 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= AlgebraWithOne( Rationals, [ m ] );</span>
<algebra-with-one over Rationals, with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( A );</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">One(A);</span>
[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ]
</pre></div>
<p><a id="X7A7B00127DC9DD40" name="X7A7B00127DC9DD40"></a></p>
<h4>62.3 <span class="Heading">Constructing Algebras as Free Algebras</span></h4>
<p><a id="X83484C917D8F7A1A" name="X83484C917D8F7A1A"></a></p>
<h5>62.3-1 FreeAlgebra</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">rank</var>[, <var class="Arg">name</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">‣ FreeAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">name1</var>, <var class="Arg">name2</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a free (nonassociative) algebra of rank <var class="Arg">rank</var> over the division ring <var class="Arg">R</var>. Here <var class="Arg">name</var>, and <var class="Arg">name1</var>, <var class="Arg">name2</var>, ... are optional strings that can be used to provide names for the generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FreeAlgebra( Rationals, "a", "b" );</span>
<algebra over Rationals, with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= GeneratorsOfAlgebra( A );</span>
[ (1)*a, (1)*b ]
<span class="GAPprompt">gap></span> <span class="GAPinput">(g[1]*g[2])*((g[2]*g[1])*g[1]);</span>
(1)*((a*b)*((b*a)*a))
</pre></div>
<p><a id="X7FBD04B07B85623D" name="X7FBD04B07B85623D"></a></p>
<h5>62.3-2 FreeAlgebraWithOne</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeAlgebraWithOne</code>( <var class="Arg">R</var>, <var class="Arg">rank</var>[, <var class="Arg">name</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">‣ FreeAlgebraWithOne</code>( <var class="Arg">R</var>, <var class="Arg">name1</var>, <var class="Arg">name2</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a free (nonassociative) algebra-with-one of rank <var class="Arg">rank</var> over the division ring <var class="Arg">R</var>. Here <var class="Arg">name</var>, and <var class="Arg">name1</var>, <var class="Arg">name2</var>, ... are optional strings that can be used to provide names for the generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FreeAlgebraWithOne( Rationals, 4, "q" );</span>
<algebra-with-one over Rationals, with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfAlgebra( A );</span>
[ (1)*<identity ...>, (1)*q.1, (1)*q.2, (1)*q.3, (1)*q.4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">One( A );</span>
(1)*<identity ...>
</pre></div>
<p><a id="X87835FFE79D2E068" name="X87835FFE79D2E068"></a></p>
<h5>62.3-3 FreeAssociativeAlgebra</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeAssociativeAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">rank</var>[, <var class="Arg">name</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">‣ FreeAssociativeAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">name1</var>, <var class="Arg">name2</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a free associative algebra of rank <var class="Arg">rank</var> over the division ring <var class="Arg">R</var>. Here <var class="Arg">name</var>, and <var class="Arg">name1</var>, <var class="Arg">name2</var>, ... are optional strings that can be used to provide names for the generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FreeAssociativeAlgebra( GF( 5 ), 4, "a" );</span>
<algebra over GF(5), with 4 generators>
</pre></div>
<p><a id="X845A777584A7D711" name="X845A777584A7D711"></a></p>
<h5>62.3-4 FreeAssociativeAlgebraWithOne</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeAssociativeAlgebraWithOne</code>( <var class="Arg">R</var>, <var class="Arg">rank</var>[, <var class="Arg">name</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">‣ FreeAssociativeAlgebraWithOne</code>( <var class="Arg">R</var>, <var class="Arg">name1</var>, <var class="Arg">name2</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a free associative algebra-with-one of rank <var class="Arg">rank</var> over the division ring <var class="Arg">R</var>. Here <var class="Arg">name</var>, and <var class="Arg">name1</var>, <var class="Arg">name2</var>, ... are optional strings that can be used to provide names for the generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FreeAssociativeAlgebraWithOne( Rationals, "a", "b", "c" );</span>
<algebra-with-one over Rationals, with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfAlgebra( A );</span>
[ (1)*<identity ...>, (1)*a, (1)*b, (1)*c ]
<span class="GAPprompt">gap></span> <span class="GAPinput">One( A );</span>
(1)*<identity ...>
</pre></div>
<p><a id="X7E8F45547CC07CE5" name="X7E8F45547CC07CE5"></a></p>
<h4>62.4 <span class="Heading">Constructing Algebras by Structure Constants</span></h4>
<p>For an introduction into structure constants and how they are handled by <strong class="pkg">GAP</strong>, we refer to Section <a href="../../doc/tut/chap6.html#X7DDBF6F47A2E021C"><span class="RefLink">Tutorial: Algebras</span></a> of the user's tutorial.
<p><a id="X7CC58DFD816E6B65" name="X7CC58DFD816E6B65"></a></p>
<h5>62.4-1 AlgebraByStructureConstants</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AlgebraByStructureConstants</code>( <var class="Arg">R</var>, <var class="Arg">sctable</var>[, <var class="Arg">nameinfo</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns a free left module <span class="SimpleMath">A</span> over the division ring <var class="Arg">R</var>, with multiplication defined by the structure constants table <var class="Arg">sctable</var>. The optional argument <var class="Arg">nameinfo</var> can be used to prescribe names for the elements of the canonical basis of <span class="SimpleMath">A</span>; it can be either a string <var class="Arg">name</var> (then <var class="Arg">name</var><code class="code">1</code>, <var class="Arg">name</var><code class="code">2</code> etc. are chosen) or a list of strings which are then chosen. The vectors of the canonical basis of <span class="SimpleMath">A</span> correspond to the vectors of the basis given by <var class="Arg">sctable</var>.</p>
<p>It is <em>not</em> checked whether the coefficients in <var class="Arg">sctable</var> are really elements in <var class="Arg">R</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 1, [ 1/2, 1, 2/3, 2 ] );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= AlgebraByStructureConstants( Rationals, T );</span>
<algebra of dimension 2 over Rationals>
<span class="GAPprompt">gap></span> <span class="GAPinput">b:= BasisVectors( Basis( A ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b[1]^2;</span>
(1/2)*v.1+(2/3)*v.2
<span class="GAPprompt">gap></span> <span class="GAPinput">b[1]*b[2];</span>
0*v.1
</pre></div>
<p><a id="X80D528A57FD64873" name="X80D528A57FD64873"></a></p>
<h5>62.4-2 AlgebraWithOneByStructureConstants</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AlgebraWithOneByStructureConstants</code>( <var class="Arg">R</var>, <var class="Arg">sctable</var>[, <var class="Arg">nameinfo</var>], <var class="Arg">onecoeffs</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The only differences between this function and <code class="func">AlgebraByStructureConstants</code> (<a href="chap62.html#X7CC58DFD816E6B65"><span class="RefLink">62.4-1</span></a>) are that <code class="func">AlgebraWithOneByStructureConstants</code> takes an additional argument <var class="Arg">onecoeffs</var>, the coefficients vector over the ring <var class="Arg">R</var> that describes the unique multiplicative identity element of the returned algebra w. r. t. the defining basis of this algebra, and that the returned algebra is an algebra-with-one (see <code class="func">IsAlgebraWithOne</code> (<a href="chap62.html#X80B21AC27DE6D068"><span class="RefLink">62.8-4</span></a>)).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= GF(2)^[2,2];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B:= Basis( A );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">onecoeffs:= Coefficients( B, One( A ) );</span>
[ Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= StructureConstantsTable( B );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sc1:= AlgebraByStructureConstants( GF(2), T );</span>
<algebra of dimension 4 over GF(2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasOne( sc1 );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">One( sc1 );</span>
v.1+v.4
<span class="GAPprompt">gap></span> <span class="GAPinput">sc2:= AlgebraWithOneByStructureConstants( GF(2), T, onecoeffs );</span>
<algebra-with-one of dimension 4 over GF(2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasOne( sc2 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">One( sc2 );</span>
v.1+v.4
</pre></div>
<p><a id="X804ADF0280F67CDC" name="X804ADF0280F67CDC"></a></p>
<h5>62.4-3 StructureConstantsTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ StructureConstantsTable</code>( <var class="Arg">B</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Let <var class="Arg">B</var> be a basis of a free left module <span class="SimpleMath">R</span> that is also a ring. In this case <code class="func">StructureConstantsTable</code> returns a structure constants table <span class="SimpleMath">T</span> in sparse representation, as used for structure constants algebras (see Section <a href="../../doc/tut/chap6.html#X7DDBF6F47A2E021C"><span class="RefLink">Tutorial: Algebras</span></a> of the <strong class="pkg">GAP</strong> User's Tutorial).
<p>If <var class="Arg">B</var> has length <span class="SimpleMath">n</span> then <span class="SimpleMath">T</span> is a list of length <span class="SimpleMath">n+2</span>. The first <span class="SimpleMath">n</span> entries of <span class="SimpleMath">T</span> are lists of length <span class="SimpleMath">n</span>. <span class="SimpleMath">T[ n+1 ]</span> is one of <span class="SimpleMath">1</span>, <span class="SimpleMath">-1</span>, or <span class="SimpleMath">0</span>; in the case of <span class="SimpleMath">1</span> the table is known to be symmetric, in the case of <span class="SimpleMath">-1</span> it is known to be antisymmetric, and <span class="SimpleMath">0</span> occurs in all other cases. <span class="SimpleMath">T[ n+2 ]</span> is the zero element of the coefficient domain.</p>
<p>The coefficients w.r.t. <var class="Arg">B</var> of the product of the <span class="SimpleMath">i</span>-th and <span class="SimpleMath">j</span>-th basis vector of <var class="Arg">B</var> are stored in <span class="SimpleMath">T[i][j]</span> as a list of length <span class="SimpleMath">2</span>; its first entry is the list of positions of nonzero coefficients, the second entry is the list of these coefficients themselves.</p>
<p>The multiplication in an algebra <span class="SimpleMath">A</span> with vector space basis <var class="Arg">B</var> with basis vectors <span class="SimpleMath">[ v_1, ..., v_n ]</span> is determined by the so-called structure matrices <span class="SimpleMath">M_k = [ m_ijk ]_ij</span>, <span class="SimpleMath">1 ≤ k ≤ n</span>. The <span class="SimpleMath">M_k</span> are defined by <span class="SimpleMath">v_i v_j = ∑_k m_ijk v_k</span>. Let <span class="SimpleMath">a = [ a_1, ..., a_n ]</span> and <span class="SimpleMath">b = [ b_1, ..., b_n ]</span>. Then</p>
<p class="pcenter">( ∑_i a_i v_i ) ( ∑_j b_j v_j ) = ∑_{i,j} a_i b_j ( v_i v_j ) = ∑_k ( ∑_j ( ∑_i a_i m_ijk ) b_j ) v_k = ∑_k ( a M_k b^tr ) v_k.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= QuaternionAlgebra( Rationals );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureConstantsTable( Basis( A ) );</span>
[ [ [ [ 1 ], [ 1 ] ], [ [ 2 ], [ 1 ] ], [ [ 3 ], [ 1 ] ],
[ [ 4 ], [ 1 ] ] ],
[ [ [ 2 ], [ 1 ] ], [ [ 1 ], [ -1 ] ], [ [ 4 ], [ 1 ] ],
[ [ 3 ], [ -1 ] ] ],
[ [ [ 3 ], [ 1 ] ], [ [ 4 ], [ -1 ] ], [ [ 1 ], [ -1 ] ],
[ [ 2 ], [ 1 ] ] ],
[ [ [ 4 ], [ 1 ] ], [ [ 3 ], [ 1 ] ], [ [ 2 ], [ -1 ] ],
[ [ 1 ], [ -1 ] ] ], 0, 0 ]
</pre></div>
<p><a id="X7F1203A1793411DF" name="X7F1203A1793411DF"></a></p>
<h5>62.4-4 EmptySCTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EmptySCTable</code>( <var class="Arg">dim</var>, <var class="Arg">zero</var>[, <var class="Arg">flag</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">EmptySCTable</code> returns a structure constants table for an algebra of dimension <var class="Arg">dim</var>, describing trivial multiplication. <var class="Arg">zero</var> must be the zero of the coefficients domain. If the multiplication is known to be (anti)commutative then this can be indicated by the optional third argument <var class="Arg">flag</var>, which must be one of the strings <code class="code">"symmetric"</code>, <code class="code">"antisymmetric"</code>.</p>
<p>For filling up the structure constants table, see <code class="func">SetEntrySCTable</code> (<a href="chap62.html#X817BD086876EC1C4"><span class="RefLink">62.4-5</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">EmptySCTable( 2, Zero( GF(5) ), "antisymmetric" );</span>
[ [ [ [ ], [ ] ], [ [ ], [ ] ] ],
[ [ [ ], [ ] ], [ [ ], [ ] ] ], -1, 0*Z(5) ]
</pre></div>
<p><a id="X817BD086876EC1C4" name="X817BD086876EC1C4"></a></p>
<h5>62.4-5 SetEntrySCTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SetEntrySCTable</code>( <var class="Arg">T</var>, <var class="Arg">i</var>, <var class="Arg">j</var>, <var class="Arg">list</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>sets the entry of the structure constants table <var class="Arg">T</var> that describes the product of the <var class="Arg">i</var>-th basis element with the <var class="Arg">j</var>-th basis element to the value given by the list <var class="Arg">list</var>.</p>
<p>If <var class="Arg">T</var> is known to be antisymmetric or symmetric then also the value <code class="code"><var class="Arg">T</var>[<var class="Arg">j</var>][<var class="Arg">i</var>]</code> is set.</p>
<p><var class="Arg">list</var> must be of the form <span class="SimpleMath">[ c_ij^{k_1}, k_1, c_ij^{k_2}, k_2, ... ]</span>.</p>
<p>The entries at the odd positions of <var class="Arg">list</var> must be compatible with the zero element stored in <var class="Arg">T</var>. For convenience, these entries may also be rational numbers that are automatically replaced by the corresponding elements in the appropriate prime field in finite characteristic if necessary.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 1, [ 1/2, 1, 2/3, 2 ] );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">T;</span>
[ [ [ [ 1, 2 ], [ 1/2, 2/3 ] ], [ [ ], [ ] ] ],
[ [ [ ], [ ] ], [ [ ], [ ] ] ], 0, 0 ]
</pre></div>
<p><a id="X7F333822780B6731" name="X7F333822780B6731"></a></p>
<h5>62.4-6 GapInputSCTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GapInputSCTable</code>( <var class="Arg">T</var>, <var class="Arg">varname</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a string that describes the structure constants table <var class="Arg">T</var> in terms of <code class="func">EmptySCTable</code> (<a href="chap62.html#X7F1203A1793411DF"><span class="RefLink">62.4-4</span></a>) and <code class="func">SetEntrySCTable</code> (<a href="chap62.html#X817BD086876EC1C4"><span class="RefLink">62.4-5</span></a>). The assignments are made to the variable <var class="Arg">varname</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 2, [ 1, 2 ] );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 2, 1, [ 1, 2 ] );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GapInputSCTable( T, "T" );</span>
"T:= EmptySCTable( 2, 0 );\nSetEntrySCTable( T, 1, 2, [1,2] );\nSetEnt\
rySCTable( T, 2, 1, [1,2] );\n"
</pre></div>
<p><a id="X7C23ED85814C0371" name="X7C23ED85814C0371"></a></p>
<h5>62.4-7 TestJacobi</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TestJacobi</code>( <var class="Arg">T</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>tests whether the structure constants table <var class="Arg">T</var> satisfies the Jacobi identity <span class="SimpleMath">v_i * (v_j * v_k) + v_j * (v_k * v_i) + v_k * (v_i * v_j) = 0</span> for all basis vectors <span class="SimpleMath">v_i</span> of the underlying algebra, where <span class="SimpleMath">i ≤ j ≤ k</span>. (Thus antisymmetry is assumed.)</p>
<p>The function returns <code class="keyw">true</code> if the Jacobi identity is satisfied, and a failing triple <span class="SimpleMath">[ i, j, k ]</span> otherwise.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0, "antisymmetric" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 2, [ 1, 2 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">TestJacobi( T );</span>
true
</pre></div>
<p><a id="X78B633CE7A5B9F9A" name="X78B633CE7A5B9F9A"></a></p>
<h5>62.4-8 IdentityFromSCTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IdentityFromSCTable</code>( <var class="Arg">T</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">T</var> be a structure constants table of an algebra <span class="SimpleMath">A</span> of dimension <span class="SimpleMath">n</span>. <code class="code">IdentityFromSCTable( <var class="Arg">T</var> )</code> is either <code class="keyw">fail</code> or the vector of length <span class="SimpleMath">n</span> that contains the coefficients of the multiplicative identity of <span class="SimpleMath">A</span> with respect to the basis that belongs to <var class="Arg">T</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 1, [ 1, 1 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 2, [ 1, 2 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 2, 1, [ 1, 2 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IdentityFromSCTable( T );</span>
[ 1, 0 ]
</pre></div>
<p><a id="X7F2A71608602635D" name="X7F2A71608602635D"></a></p>
<h5>62.4-9 QuotientFromSCTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuotientFromSCTable</code>( <var class="Arg">T</var>, <var class="Arg">num</var>, <var class="Arg">den</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">T</var> be a structure constants table of an algebra <span class="SimpleMath">A</span> of dimension <span class="SimpleMath">n</span>. <code class="code">QuotientFromSCTable( <var class="Arg">T</var> )</code> is either <code class="keyw">fail</code> or the vector of length <span class="SimpleMath">n</span> that contains the coefficients of the quotient of <var class="Arg">num</var> and <var class="Arg">den</var> with respect to the basis that belongs to <var class="Arg">T</var>.</p>
<p>We solve the equation system <var class="Arg">num</var><span class="SimpleMath">= x *</span> <var class="Arg">den</var>. If no solution exists, <code class="keyw">fail</code> is returned.</p>
<p>In terms of the basis <span class="SimpleMath">B</span> with vectors <span class="SimpleMath">b_1, ..., b_n</span> this means for <span class="SimpleMath"><var class="Arg">num</var> = ∑_{i = 1}^n a_i b_i</span>, <span class="SimpleMath"><var class="Arg">den</var> = ∑_{i = 1}^n c_i b_i</span>, <span class="SimpleMath">x = ∑_{i = 1}^n x_i b_i</span> that <span class="SimpleMath">a_k = ∑_{i,j} c_i x_j c_ijk</span> for all <span class="SimpleMath">k</span>. Here <span class="SimpleMath">c_ijk</span> denotes the structure constants with respect to <span class="SimpleMath">B</span>. This means that (as a vector) <span class="SimpleMath">a = x M</span> with <span class="SimpleMath">M_jk = ∑_{i = 1}^n c_ijk c_i</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">T:= EmptySCTable( 2, 0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 1, [ 1, 1 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 2, 1, [ 1, 2 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetEntrySCTable( T, 1, 2, [ 1, 2 ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">QuotientFromSCTable( T, [0,1], [1,0] );</span>
[ 0, 1 ]
</pre></div>
<p><a id="X79B7C3078112E7E1" name="X79B7C3078112E7E1"></a></p>
<h4>62.5 <span class="Heading">Some Special Algebras</span></h4>
<p><a id="X83DF4BCC7CE494FC" name="X83DF4BCC7CE494FC"></a></p>
<h5>62.5-1 QuaternionAlgebra</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuaternionAlgebra</code>( <var class="Arg">F</var>[, <var class="Arg">a</var>, <var class="Arg">b</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a quaternion algebra over <var class="Arg">F</var>, with parameters <var class="Arg">a</var> and <var class="Arg">b</var>.</p>
<p>Let <var class="Arg">F</var> be a field or a list of field elements, let <span class="SimpleMath">F</span> be the field generated by <var class="Arg">F</var>, and let <var class="Arg">a</var> and <var class="Arg">b</var> two elements in <span class="SimpleMath">F</span>. <code class="func">QuaternionAlgebra</code> returns a quaternion algebra over <span class="SimpleMath">F</span>, with parameters <var class="Arg">a</var> and <var class="Arg">b</var>, i.e., a four-dimensional associative <span class="SimpleMath">F</span>-algebra with basis <span class="SimpleMath">(e,i,j,k)</span> and multiplication defined by <span class="SimpleMath">e e = e</span>, <span class="SimpleMath">e i = i e = i</span>, <span class="SimpleMath">e j = j e = j</span>, <span class="SimpleMath">e k = k e = k</span>, <spa | | |