Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/doc/ref/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.9.2025 mit Größe 171 kB image not shown  

Quelle  chap62.html   Sprache: HTML

 
 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> )</codeis 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>, <span class="SimpleMath">i i = <var class="Arg">a</var> e</span>, <span class="SimpleMath">i j = - j i = k</span>, <span class="SimpleMath">i k = - k i = <var class="Arg">a</var> j</span>, <span class="SimpleMath">j j = <var class="Arg">b</var> e</span>, <span class="SimpleMath">k j = - j k = <var class="Arg">b</var> i</span>, <span class="SimpleMath">k k = - <var class="Arg">a</var> <var class="Arg">b</var> e</span>. The default value for both <var class="Arg">a</var> and <var class="Arg">b</var> is <span class="SimpleMath">-1 ∈ F</span>.</p>

<p>The <code class="func">GeneratorsOfAlgebra</code> (<a href="chap62.html#X83B055F37EBF2438"><span class="RefLink">62.9-1</span></a>) and <code class="func">CanonicalBasis</code> (<a href="chap61.html#X7C8EBFF5805F8C51"><span class="RefLink">61.5-3</span></a>) value of an algebra constructed with <code class="func">QuaternionAlgebra</code> is the list <span class="SimpleMath">[ e, i, j, k ]</span>.</p>

<p>Two quaternion algebras with the same parameters <var class="Arg">a</var>, <var class="Arg">b</var> lie in the same family, so it makes sense to consider their intersection or to ask whether they are contained in each other. (This is due to the fact that the results of <code class="func">QuaternionAlgebra</code> are cached, in the global variable <code class="code">QuaternionAlgebraData</code>.)</p>

<p>The embedding of the field <code class="func">GaussianRationals</code> (<a href="chap60.html#X82F53C65802FF551"><span class="RefLink">60.1-3</span></a>) into a quaternion algebra <span class="SimpleMath">A</span> over <code class="func">Rationals</code> (<a href="chap17.html#X7B6029D18570C08A"><span class="RefLink">17.1-1</span></a>) is not uniquely determined. One can specify one embedding as a vector space homomorphism that maps <code class="code">1</code> to the first algebra generator of <span class="SimpleMath">A</span>, and <code class="code">E(4)</code> to one of the others.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">QuaternionAlgebra( Rationals );</span>
<algebra-with-one of dimension 4 over Rationals>
</pre></div>

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

<h5>62.5-2 ComplexificationQuat</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ComplexificationQuat</code>( <var class="Arg">vector</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">‣ ComplexificationQuat</code>( <var class="Arg">matrix</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <span class="SimpleMath">A = e F ⊕ i F ⊕ j F ⊕ k F</span> be a quaternion algebra over the field <span class="SimpleMath">F</span> of cyclotomics, with basis <span class="SimpleMath">(e,i,j,k)</span>.</p>

<p>If <span class="SimpleMath">v = v_1 + v_2 j</span> is a row vector over <span class="SimpleMath">A</span> with <span class="SimpleMath">v_1 = e w_1 + i w_2</span> and <span class="SimpleMath">v_2 = e w_3 + i w_4</span> then <code class="func">ComplexificationQuat</code> called with argument <span class="SimpleMath">v</span> returns the concatenation of <span class="SimpleMath">w_1 +</span><code class="code">E(4)</code><span class="SimpleMath">w_2</span> and <span class="SimpleMath">w_3 +</span><code class="code">E(4)</code><span class="SimpleMath">w_4</span>.</p>

<p>If <span class="SimpleMath">M = M_1 + M_2 j</span> is a matrix over <span class="SimpleMath">A</span> with <span class="SimpleMath">M_1 = e N_1 + i N_2</span> and <span class="SimpleMath">M_2 = e N_3 + i N_4</span> then <code class="func">ComplexificationQuat</code> called with argument <span class="SimpleMath">M</span> returns the block matrix <span class="SimpleMath">A</span> over <span class="SimpleMath">e F ⊕ i F</span> such that <span class="SimpleMath">A(1,1) = N_1 +</span><code class="code">E(4)</code><span class="SimpleMath">N_2</span>, <span class="SimpleMath">A(2,2) = N_1 -</span><code class="code">E(4)</code><span class="SimpleMath">N_2</span>, <span class="SimpleMath">A(1,2) = N_3 +</span><code class="code">E(4)</code><span class="SimpleMath">N_4</span>, and <span class="SimpleMath">A(2,1) = - N_3 +</span><code class="code">E(4)</code><span class="SimpleMath">N_4</span>.</p>

<p>Then <code class="code">ComplexificationQuat(<var class="Arg">v</var>) * ComplexificationQuat(<var class="Arg">M</var>)= ComplexificationQuat(<var class="Arg">v</var> * <var class="Arg">M</var>)</code>, since</p>

<p class="pcenter">v M = v_1 M_1 + v_2 j M_1 + v_1 M_2 j + v_2 j M_2 j = ( v_1 M_1 - v_2 overline{M_2} ) + ( v_1 M_2 + v_2 overline{M_1} ) j.</p>

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

<h5>62.5-3 OctaveAlgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ OctaveAlgebra</code>( <var class="Arg">F</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The algebra of octonions over <var class="Arg">F</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">OctaveAlgebra( Rationals );</span>
<algebra of dimension 8 over Rationals>
</pre></div>

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

<h5>62.5-4 FullMatrixAlgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FullMatrixAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">n</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">‣ MatrixAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">n</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">‣ MatAlgebra</code>( <var class="Arg">R</var>, <var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is the full matrix algebra of <span class="SimpleMath"><var class="Arg">n</var> × <var class="Arg">n</var></span> matrices over the ring <var class="Arg">R</var>, for a nonnegative integer <var class="Arg">n</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:=FullMatrixAlgebra( Rationals, 20 );</span>
( Rationals^[ 20, 20 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( A );</span>
400
</pre></div>

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

<h5>62.5-5 NullAlgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NullAlgebra</code>( <var class="Arg">R</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The zero-dimensional algebra over <var class="Arg">R</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= NullAlgebra( Rationals );</span>
<algebra of dimension 0 over Rationals>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( A );</span>
0
</pre></div>

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

<h4>62.6 <span class="Heading">Subalgebras</span></h4>

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

<h5>62.6-1 Subalgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Subalgebra</code>( <var class="Arg">A</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>is the <span class="SimpleMath">F</span>-algebra generated by <var class="Arg">gens</var>, with parent algebra <var class="Arg">A</var>, where <span class="SimpleMath">F</span> is the left acting domain of <var class="Arg">A</var>.</p>

<p><em>Note</em> that being a subalgebra of <var class="Arg">A</var> means to be an algebra, to be contained in <var class="Arg">A</var>, <em>and</em> to have the same left acting domain as <var class="Arg">A</var>.</p>

<p>An optional argument <code class="code">"basis"</code> may be added if it is known that the generators already form a basis of the algebra. Then it is <em>not</em> checked whether <var class="Arg">gens</var> really are linearly independent and whether all elements in <var class="Arg">gens</var> lie in <var class="Arg">A</var>.</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">B:= Subalgebra( A, [ m^2 ] );</span>
<algebra over Rationals, with 1 generator>
</pre></div>

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

<h5>62.6-2 SubalgebraNC</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubalgebraNC</code>( <var class="Arg">A</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">SubalgebraNC</code> does the same as <code class="func">Subalgebra</code> (<a href="chap62.html#X8396643D7A49EEAD"><span class="RefLink">62.6-1</span></a>), except that it does not check whether all elements in <var class="Arg">gens</var> lie in <var class="Arg">A</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= RandomMat( 3, 3 );;</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">SubalgebraNC( A, [ IdentityMat( 3, 3 ) ], "basis" );</span>
<algebra of dimension 1 over Rationals>
</pre></div>

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

<h5>62.6-3 SubalgebraWithOne</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubalgebraWithOne</code>( <var class="Arg">A</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>is the algebra-with-one generated by <var class="Arg">gens</var>, with parent algebra <var class="Arg">A</var>.</p>

<p>The optional third argument, the string <code class="code">"basis"</code>, may be added if it is known that the elements from <var class="Arg">gens</var> are linearly independent. Then it is <em>not</em> checked whether <var class="Arg">gens</var> really are linearly independent and whether all elements in <var class="Arg">gens</var> lie in <var class="Arg">A</var>.</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">B1:= SubalgebraWithOne( A, [ m ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B2:= Subalgebra( A, [ m ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( B1 );</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( B2 );</span>
2
</pre></div>

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

<h5>62.6-4 SubalgebraWithOneNC</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubalgebraWithOneNC</code>( <var class="Arg">A</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">SubalgebraWithOneNC</code> does the same as <code class="func">SubalgebraWithOne</code> (<a href="chap62.html#X83ECF489846F00B0"><span class="RefLink">62.6-3</span></a>), except that it does not check whether all elements in <var class="Arg">gens</var> lie in <var class="Arg">A</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= RandomMat( 3, 3 );; A:= Algebra( Rationals, [ m ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SubalgebraWithOneNC( A, [ m ] );</span>
<algebra-with-one over Rationals, with 1 generator>
</pre></div>

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

<h5>62.6-5 TrivialSubalgebra</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TrivialSubalgebra</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The zero dimensional subalgebra of the algebra <var class="Arg">A</var>.</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">B:= TrivialSubalgebra( A );</span>
<algebra of dimension 0 over Rationals>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( B );</span>
0
</pre></div>

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

<h4>62.7 <span class="Heading">Ideals of Algebras</span></h4>

<p>For constructing and working with ideals in algebras the same functions are available as for ideals in rings. So for the precise description of these functions we refer to Chapter <a href="chap56.html#X81897F6082CACB59"><span class="RefLink">56</span></a>. Here we give examples demonstrating the use of ideals in algebras. For an introduction into the construction of quotient algebras we refer to Chapter <a href="../../doc/tut/chap6.html#X7DDBF6F47A2E021C"><span class="RefLink">Tutorial: Algebras</span></a> of the user's tutorial.




<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= [ [ 0, 2, 3 ], [ 0, 0, 4 ], [ 0, 0, 0] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= AlgebraWithOne( Rationals, [ m ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:= Ideal( A, [ m ] );  # the two-sided ideal of `A' generated by `m'</span>
<two-sided ideal in <algebra-with-one of dimension 3 over Rationals>,
  (1 generator)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( I );</span>
2
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfIdeal( I );</span>
[ [ [ 0, 2, 3 ], [ 0, 0, 4 ], [ 0, 0, 0 ] ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">BasisVectors( Basis( I ) );</span>
[ [ [ 0, 1, 3/2 ], [ 0, 0, 2 ], [ 0, 0, 0 ] ],
  [ [ 0, 0, 1 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FullMatrixAlgebra( Rationals, 4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">m:= NullMat( 4, 4 );; m[1][4]:=1;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:= LeftIdeal( A, [ m ] );</span>
<left ideal in ( Rationals^[ 4, 4 ] ), (1 generator)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Dimension( I );</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfLeftIdeal( I );</span>
[ [ [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">mats:= [ [[1,0],[0,0]], [[0,1],[0,0]], [[0,0],[0,1]] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= Algebra( Rationals, mats );;</span>
--> --------------------

--> maximum size reached

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

100%


¤ Dauer der Verarbeitung: 0.31 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.