Quelle chap56.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/doc/ref/chap56.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 56: Rings</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="chap56" 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="chap55.html">[Previous Chapter]</a> <a href="chap57.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap56_mj.html">[MathJax on]</a></p>
<p><a id="X81897F6082CACB59" name="X81897F6082CACB59"></a></p>
<div class="ChapSects"><a href="chap56.html#X81897F6082CACB59">56 <span class="Heading">Rings</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X839FC48687C25FCD">56.1 <span class="Heading">Generating Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X80FD843C8221DAC9">56.1-1 IsRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X820B172A860A5B1A">56.1-2 <span class="Heading">Ring</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X83AFFCC77DE6ABDA">56.1-3 <span class="Heading">DefaultRing</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7D736E027DFD8961">56.1-4 RingByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X839E609480495E27">56.1-5 DefaultRingByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7D0428D87E63288C">56.1-6 GeneratorsOfRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X860E4AC78520D27E">56.1-7 Subring</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X819B0AFE79C78C34">56.1-8 <span class="Heading">ClosureRing</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X8350500B8576F833">56.1-9 Quotient</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X8776C3F97A731E70">56.2 <span class="Heading">Ideals of Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7C486A7C821D79F0">56.2-1 TwoSidedIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7C8E196478C7431A">56.2-2 TwoSidedIdealNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7DF623847B338850">56.2-3 IsTwoSidedIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X86C998178690DAE0">56.2-4 TwoSidedIdealByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X82D8B07281EB0AC7">56.2-5 LeftIdealByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X858EAEAF87751428">56.2-6 RightIdealByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X86AAF5F9800E97EE">56.2-7 GeneratorsOfTwoSidedIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7B20BD2B7FAFBD64">56.2-8 GeneratorsOfLeftIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X80F2239F8653FF74">56.2-9 GeneratorsOfRightIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X81D81D027C2F8D06">56.2-10 LeftActingRingOfIdeal</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X83D9D7408706B69A">56.2-11 AsLeftIdeal</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X790DD00586F9B8B8">56.3 <span class="Heading">Rings With One</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7E601FBD8020A0F3">56.3-1 IsRingWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X80942A318417366E">56.3-2 <span class="Heading">RingWithOne</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X851115EC79B8C393">56.3-3 RingWithOneByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7F9F122C831BCDD1">56.3-4 GeneratorsOfRingWithOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7D0BADF178D4DDF8">56.3-5 SubringWithOne</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X797F5869874BDBFB">56.4 <span class="Heading">Properties of Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X87A7D5B584713B52">56.4-1 IsIntegralRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X789A917085DB7527">56.4-2 IsUniqueFactorizationRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7D4BB44187C55BF2">56.4-3 IsLDistributive</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X79A5AEE786AED315">56.4-4 IsRDistributive</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X86716D4F7B968604">56.4-5 IsDistributive</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X82DECD237D49D937">56.4-6 IsAnticommutative</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7EC0FEC88535E8CC">56.4-7 IsZeroSquaredRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X799BEF8581971A13">56.4-8 IsJacobianRing</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X8130085978A9B3C4">56.5 <span class="Heading">Units and Factorizations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X85CBFBAE78DE72E8">56.5-1 IsUnit</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X853C045B7BA6A580">56.5-2 Units</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7B307F217DDC7E20">56.5-3 IsAssociated</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7A69C9097E17D161">56.5-4 Associates</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7B1A9A4C7C59FB36">56.5-5 StandardAssociate</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7EB6803C789E027D">56.5-6 StandardAssociateUnit</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7CD7C64A7D961A18">56.5-7 IsIrreducibleRingElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7AA107AE7F79C6D8">56.5-8 IsPrime</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X82D6EDC685D12AE2">56.5-9 Factors</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X8559CC7B80C479F1">56.5-10 PadicValuation</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X7F12BB99865EB7BF">56.6 <span class="Heading">Euclidean Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X808B8E8E80D48E4A">56.6-1 IsEuclideanRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X784234088350D4E4">56.6-2 EuclideanDegree</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7A93FA788318B147">56.6-3 EuclideanQuotient</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7B5E9639865E91BA">56.6-4 EuclideanRemainder</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X876B7532801A1B35">56.6-5 QuotientRemainder</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X7E9CF2C07C4A6CEE">56.7 <span class="Heading">Gcd and Lcm</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7DE207718456F98F">56.7-1 <span class="Heading">Gcd</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7836D50F8341D6E1">56.7-2 GcdOp</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7ABB91EF838075EF">56.7-3 <span class="Heading">GcdRepresentation</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X81392E7F84956341">56.7-4 GcdRepresentationOp</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X836DB8B47A0219FB">56.7-5 ShowGcd</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7ABA92057DD6C7AF">56.7-6 <span class="Heading">Lcm</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7FB6C5A67AC1E8C1">56.7-7 LcmOp</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X8555913A83D716A4">56.7-8 QuotientMod</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X805A35D684B7A952">56.7-9 PowerMod</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X87711E6F8024A358">56.7-10 InterpolatedPolynomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X7B13484581169439">56.8 <span class="Heading">Homomorphisms of Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7DE9CC5B877C91DA">56.8-1 RingGeneralMappingByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X78C1016284F08026">56.8-2 RingHomomorphismByImages</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7D01646A7CCBEDBB">56.8-3 RingHomomorphismByImagesNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X83D53D98809EC461">56.8-4 NaturalHomomorphismByIdeal</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap56.html#X81D526A57B375AAD">56.9 <span class="Heading">Small Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7E86DCB7812DF04C">56.9-1 SmallRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7F2EE9AF83DCE641">56.9-2 NumberSmallRings</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X8070D20B86148929">56.9-3 Subrings</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X83629803819C4A6F">56.9-4 Ideals</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X82AD6F187B550060">56.9-5 DirectSum</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap56.html#X7E7B1B727EA434CF">56.9-6 RingByStructureConstants</a></span>
</div></div>
</div>
<h3>56 <span class="Heading">Rings</span></h3>
<p>This chapter deals with domains that are additive groups (see <code class="func">IsAdditiveGroup</code> (<a href="chap55.html#X7B8FBD9082CE271B"><span class="RefLink">55.1-6</span></a>) closed under multiplication <code class="code">*</code>. Such a domain, if <code class="code">*</code> and <code class="code">+</code> are distributive, is called a <em>ring</em> in <strong class="pkg">GAP</strong>. Each division ring, field (see <a href="chap58.html#X80A8E676814A19FD"><span class="RefLink">58</span></a>), or algebra (see <a href="chap62.html#X7DDBF6F47A2E021C"><span class="RefLink">62</span></a>) is a ring. Important examples of rings are the integers (see <a href="chap14.html#X853DF11B80068ED5"><span class="RefLink">14</span></a>) and matrix rings.</p>
<p>In the case of a <em>ring-with-one</em>, additional multiplicative structure is present, see <code class="func">IsRingWithOne</code> (<a href="chap56.html#X7E601FBD8020A0F3"><span class="RefLink">56.3-1</span></a>). There is a little support in <strong class="pkg">GAP</strong> for rings that have no additional structure: it is possible to perform some computations for small finite rings; infinite rings are handled by <strong class="pkg">GAP</strong> in an acceptable way in the case that they are algebras.</p>
<p>Also, the <strong class="pkg">SONATA</strong> package provides support for near-rings, and a related functionality for multiplicative semigroups of near-rings is available in the <strong class="pkg">Smallsemi</strong> package.</p>
<p>Several functions for ring elements, such as <code class="func">IsPrime</code> (<a href="chap56.html#X7AA107AE7F79C6D8"><span class="RefLink">56.5-8</span></a>) and <code class="func">Factors</code> (<a href="chap56.html#X82D6EDC685D12AE2"><span class="RefLink">56.5-9</span></a>), are defined only relative to a ring <var class="Arg">R</var>, which can be entered as an optional argument; if <var class="Arg">R</var> is omitted then a <em>default ring</em> is formed from the ring elements given as arguments, see <code class="func">DefaultRing</code> (<a href="chap56.html#X83AFFCC77DE6ABDA"><span class="RefLink">56.1-3</span></a>).</p>
<p><a id="X839FC48687C25FCD" name="X839FC48687C25FCD"></a></p>
<h4>56.1 <span class="Heading">Generating Rings</span></h4>
<p><a id="X80FD843C8221DAC9" name="X80FD843C8221DAC9"></a></p>
<h5>56.1-1 IsRing</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRing</code>( <var class="Arg">R</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>A <em>ring</em> in <strong class="pkg">GAP</strong> is an additive group (see <code class="func">IsAdditiveGroup</code> (<a href="chap55.html#X7B8FBD9082CE271B"><span class="RefLink">55.1-6</span></a>)) that is also a magma (see <code class="func">IsMagma</code> (<a href="chap35.html#X87D3F38B7EAB13FA"><span class="RefLink">35.1-1</span></a>)), such that addition <code class="code">+</code> and multiplication <code class="code">*</code> are distributive, see <code class="func">IsDistributive</code> (<a href="chap56.html#X86716D4F7B968604"><span class="RefLink">56.4-5</span></a>).</p>
<p>The multiplication need <em>not</em> be associative (see <code class="func">IsAssociative</code> (<a href="chap35.html#X7C83B5A47FD18FB7"><span class="RefLink">35.4-7</span></a>)). For example, a Lie algebra (see <a href="chap64.html#X78559D4C800AF58A"><span class="RefLink">64</span></a>) is regarded as a ring in <strong class="pkg">GAP</strong>.</p>
<p><a id="X820B172A860A5B1A" name="X820B172A860A5B1A"></a></p>
<h5>56.1-2 <span class="Heading">Ring</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Ring</code>( <var class="Arg">r</var>, <var class="Arg">s</var>, <var class="Arg">...</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">‣ Ring</code>( <var class="Arg">coll</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>In the first form <code class="func">Ring</code> returns the smallest ring that contains all the elements <var class="Arg">r</var>, <var class="Arg">s</var>, <span class="SimpleMath">...</span> In the second form <code class="func">Ring</code> returns the smallest ring that contains all the elements in the collection <var class="Arg">coll</var>. If any element is not an element of a ring or if the elements lie in no common ring an error is raised.</p>
<p><code class="func">Ring</code> differs from <code class="func">DefaultRing</code> (<a href="chap56.html#X83AFFCC77DE6ABDA"><span class="RefLink">56.1-3</span></a>) in that it returns the smallest ring in which the elements lie, while <code class="func">DefaultRing</code> (<a href="chap56.html#X83AFFCC77DE6ABDA"><span class="RefLink">56.1-3</span></a>) may return a larger ring if that makes sense.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Ring( 2, E(4) );</span>
<ring with 2 generators>
</pre></div>
<p><a id="X83AFFCC77DE6ABDA" name="X83AFFCC77DE6ABDA"></a></p>
<h5>56.1-3 <span class="Heading">DefaultRing</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DefaultRing</code>( <var class="Arg">r</var>, <var class="Arg">s</var>, <var class="Arg">...</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">‣ DefaultRing</code>( <var class="Arg">coll</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>In the first form <code class="func">DefaultRing</code> returns a ring that contains all the elements <var class="Arg">r</var>, <var class="Arg">s</var>, <span class="SimpleMath">...</span> etc. In the second form <code class="func">DefaultRing</code> returns a ring that contains all the elements in the collection <var class="Arg">coll</var>. If any element is not an element of a ring or if the elements lie in no common ring an error is raised.</p>
<p>The ring returned by <code class="func">DefaultRing</code> need not be the smallest ring in which the elements lie. For example for elements from cyclotomic fields, <code class="func">DefaultRing</code> may return the ring of integers of the smallest cyclotomic field in which the elements lie, which need not be the smallest ring overall, because the elements may in fact lie in a smaller number field which is itself not a cyclotomic field.</p>
<p>(For the exact definition of the default ring of a certain type of elements, look at the corresponding method installation.)</p>
<p><code class="func">DefaultRing</code> is used by ring functions such as <code class="func">Quotient</code> (<a href="chap56.html#X8350500B8576F833"><span class="RefLink">56.1-9</span></a>), <code class="func">IsPrime</code> (<a href="chap56.html#X7AA107AE7F79C6D8"><span class="RefLink">56.5-8</span></a>), <code class="func">Factors</code> (<a href="chap56.html#X82D6EDC685D12AE2"><span class="RefLink">56.5-9</span></a>), or <code class="func">Gcd</code> (<a href="chap56.html#X7DE207718456F98F"><span class="RefLink">56.7-1</span></a>) if no explicit ring is given.</p>
<p><code class="func">Ring</code> (<a href="chap56.html#X820B172A860A5B1A"><span class="RefLink">56.1-2</span></a>) differs from <code class="func">DefaultRing</code> in that it returns the smallest ring in which the elements lie, while <code class="func">DefaultRing</code> may return a larger ring if that makes sense.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DefaultRing( 2, E(4) );</span>
GaussianIntegers
</pre></div>
<p><a id="X7D736E027DFD8961" name="X7D736E027DFD8961"></a></p>
<h5>56.1-4 RingByGenerators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RingByGenerators</code>( <var class="Arg">C</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">RingByGenerators</code> returns the ring generated by the elements in the collection <var class="Arg">C</var>, i. e., the closure of <var class="Arg">C</var> under addition, multiplication, and taking additive inverses.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">RingByGenerators([ 2, E(4) ]);</span>
<ring with 2 generators>
</pre></div>
<p><a id="X839E609480495E27" name="X839E609480495E27"></a></p>
<h5>56.1-5 DefaultRingByGenerators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DefaultRingByGenerators</code>( <var class="Arg">coll</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>For a collection <var class="Arg">coll</var>, returns a default ring in which <var class="Arg">coll</var> is contained.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DefaultRingByGenerators([ 2, E(4) ]);</span>
GaussianIntegers
</pre></div>
<p><a id="X7D0428D87E63288C" name="X7D0428D87E63288C"></a></p>
<h5>56.1-6 GeneratorsOfRing</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfRing</code>( <var class="Arg">R</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">GeneratorsOfRing</code> returns a list of elements such that the ring <var class="Arg">R</var> is the closure of these elements under addition, multiplication, and taking additive inverses.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=Ring( 2, 1/2 );</span>
<ring with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfRing( R );</span>
[ 2, 1/2 ]
</pre></div>
<p><a id="X860E4AC78520D27E" name="X860E4AC78520D27E"></a></p>
<h5>56.1-7 Subring</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Subring</code>( <var class="Arg">R</var>, <var class="Arg">gens</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">‣ SubringNC</code>( <var class="Arg">R</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the ring with parent <var class="Arg">R</var> generated by the elements in <var class="Arg">gens</var>. When the second form, <code class="func">SubringNC</code> is used, it is <em>not</em> checked whether all elements in <var class="Arg">gens</var> lie in <var class="Arg">R</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:= Integers;</span>
Integers
<span class="GAPprompt">gap></span> <span class="GAPinput">S:= Subring( R, [ 4, 6 ] );</span>
<ring with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">Parent( S );</span>
Integers
</pre></div>
<p><a id="X819B0AFE79C78C34" name="X819B0AFE79C78C34"></a></p>
<h5>56.1-8 <span class="Heading">ClosureRing</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ClosureRing</code>( <var class="Arg">R</var>, <var class="Arg">r</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ClosureRing</code>( <var class="Arg">R</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>For a ring <var class="Arg">R</var> and either an element <var class="Arg">r</var> of its elements family or a ring <var class="Arg">S</var>, <code class="func">ClosureRing</code> returns the ring generated by both arguments.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ClosureRing( Integers, E(4) );</span>
<ring-with-one, with 2 generators>
</pre></div>
<p><a id="X8350500B8576F833" name="X8350500B8576F833"></a></p>
<h5>56.1-9 Quotient</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Quotient</code>( [<var class="Arg">R</var>, ]<var class="Arg">r</var>, <var class="Arg">s</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">Quotient</code> returns a (right) quotient of the two ring elements <var class="Arg">r</var> and <var class="Arg">s</var> in the ring <var class="Arg">R</var>, if given, and otherwise in their default ring (see <code class="func">DefaultRing</code> (<a href="chap56.html#X83AFFCC77DE6ABDA"><span class="RefLink">56.1-3</span></a>)). More specifically, it returns a ring element <span class="SimpleMath">q</span> such that <span class="SimpleMath">r = q * s</span> holds, or <code class="keyw">fail</code> if no such elements exists in the respective ring.</p>
<p>The result may not be unique if the ring contains zero divisors.</p>
<p>(To perform the division in the quotient field of a ring, use the quotient operator <code class="code">/</code>.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Quotient( 2, 3 );</span>
fail
<span class="GAPprompt">gap></span> <span class="GAPinput">Quotient( 6, 3 );</span>
2
</pre></div>
<p><a id="X8776C3F97A731E70" name="X8776C3F97A731E70"></a></p>
<h4>56.2 <span class="Heading">Ideals of Rings</span></h4>
<p>A <em>left ideal</em> in a ring <span class="SimpleMath">R</span> is a subring of <span class="SimpleMath">R</span> that is closed under multiplication with elements of <span class="SimpleMath">R</span> from the left.</p>
<p>A <em>right ideal</em> in a ring <span class="SimpleMath">R</span> is a subring of <span class="SimpleMath">R</span> that is closed under multiplication with elements of <span class="SimpleMath">R</span> from the right.</p>
<p>A <em>two-sided ideal</em> or simply <em>ideal</em> in a ring <span class="SimpleMath">R</span> is both a left ideal and a right ideal in <span class="SimpleMath">R</span>.</p>
<p>So being a (left/right/two-sided) ideal is not a property of a domain but refers to the acting ring(s). Hence we must ask, e. g., <code class="code">IsIdeal( </code><span class="SimpleMath">R, I</span><code class="code"> )</code> if we want to know whether the ring <span class="SimpleMath">I</span> is an ideal in the ring <span class="SimpleMath">R</span>. The property <code class="func">IsTwoSidedIdealInParent</code> (<a href="chap56.html#X7DF623847B338850"><span class="RefLink">56.2-3</span></a>) can be used to store whether a ring is an ideal in its parent.</p>
<p>(Whenever the term <code class="code">"Ideal"</code> occurs in an identifier without a specifying prefix <code class="code">"Left"</code> or <code class="code">"Right"</code>, this means the same as <code class="code">"TwoSidedIdeal"</code>. Conversely, any occurrence of <code class="code">"TwoSidedIdeal"</code> can be substituted by <code class="code">"Ideal"</code>.)</p>
<p>For any of the above kinds of ideals, there is a notion of generators, namely <code class="func">GeneratorsOfLeftIdeal</code> (<a href="chap56.html#X7B20BD2B7FAFBD64"><span class="RefLink">56.2-8</span></a>), <code class="func">GeneratorsOfRightIdeal</code> (<a href="chap56.html#X80F2239F8653FF74"><span class="RefLink">56.2-9</span></a>), and <code class="func">GeneratorsOfTwoSidedIdeal</code> (<a href="chap56.html#X86AAF5F9800E97EE"><span class="RefLink">56.2-7</span></a>). The acting rings can be accessed as <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>) and <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>), respectively. Note that ideals are detected from known values of these attributes, especially it is assumed that whenever a domain has both a left and a right acting ring then these two are equal.</p>
<p>Note that we cannot use <code class="func">LeftActingDomain</code> (<a href="chap57.html#X86F070E0807DC34E"><span class="RefLink">57.1-11</span></a>) and <code class="code">RightActingDomain</code> here, since ideals in algebras are themselves vector spaces, and such a space can of course also be a module for an action from the right. In order to make the usual vector space functionality automatically available for ideals, we have to distinguish the left and right module structure from the additional closure properties of the ideal.</p>
<p>Further note that the attributes denoting ideal generators and acting ring are used to create ideals if this is explicitly wanted, but the ideal relation in the sense of <code class="func">IsTwoSidedIdeal</code> (<a href="chap56.html#X7DF623847B338850"><span class="RefLink">56.2-3</span></a>) is of course independent of the presence of the attribute values.</p>
<p>Ideals are constructed with <code class="func">LeftIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>), <code class="func">RightIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>), <code class="func">TwoSidedIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>). Principal ideals of the form <span class="SimpleMath">x * R</span>, <span class="SimpleMath">R * x</span>, <span class="SimpleMath">R * x * R</span> can also be constructed with a simple multiplication.</p>
<p>Currently many methods for dealing with ideals need linear algebra to work, so they are mainly applicable to ideals in algebras.</p>
<p><a id="X7C486A7C821D79F0" name="X7C486A7C821D79F0"></a></p>
<h5>56.2-1 TwoSidedIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TwoSidedIdeal</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ Ideal</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ LeftIdeal</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ RightIdeal</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">R</var> be a ring, and <var class="Arg">gens</var> a list of collection of elements in <var class="Arg">R</var>. <code class="func">TwoSidedIdeal</code>, <code class="func">LeftIdeal</code>, and <code class="func">RightIdeal</code> return the two-sided, left, or right ideal, respectively, <span class="SimpleMath">I</span> in <var class="Arg">R</var> that is generated by <var class="Arg">gens</var>. The ring <var class="Arg">R</var> can be accessed as <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>) or <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>) (or both) of <span class="SimpleMath">I</span>.</p>
<p>If <var class="Arg">R</var> is a left <span class="SimpleMath">F</span>-module then also <span class="SimpleMath">I</span> is a left <span class="SimpleMath">F</span>-module, in particular the <code class="func">LeftActingDomain</code> (<a href="chap57.html#X86F070E0807DC34E"><span class="RefLink">57.1-11</span></a>) values of <var class="Arg">R</var> and <span class="SimpleMath">I</span> are equal.</p>
<p>If the optional argument <code class="code">"basis"</code> is given then <var class="Arg">gens</var> are assumed to be a list of basis vectors of <span class="SimpleMath">I</span> viewed as a free <span class="SimpleMath">F</span>-module. (This is mainly applicable to ideals in algebras.) In this case, it is <em>not</em> checked whether <var class="Arg">gens</var> really is linearly independent and whether <var class="Arg">gens</var> is a subset of <var class="Arg">R</var>.</p>
<p><code class="func">Ideal</code> is simply a synonym of <code class="func">TwoSidedIdeal</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:= Integers;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:= Ideal( R, [ 2 ] );</span>
<two-sided ideal in Integers, (1 generator)>
</pre></div>
<p><a id="X7C8E196478C7431A" name="X7C8E196478C7431A"></a></p>
<h5>56.2-2 TwoSidedIdealNC</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TwoSidedIdealNC</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ IdealNC</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ LeftIdealNC</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</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">‣ RightIdealNC</code>( <var class="Arg">R</var>, <var class="Arg">gens</var>[, <var class="Arg">"basis"</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>The effects of <code class="func">TwoSidedIdealNC</code>, <code class="func">LeftIdealNC</code>, and <code class="func">RightIdealNC</code> are the same as <code class="func">TwoSidedIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>), <code class="func">LeftIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>), and <code class="func">RightIdeal</code> (<a href="chap56.html#X7C486A7C821D79F0"><span class="RefLink">56.2-1</span></a>), respectively, but they do not check whether all entries of <var class="Arg">gens</var> lie in <var class="Arg">R</var>.</p>
<p><a id="X7DF623847B338850" name="X7DF623847B338850"></a></p>
<h5>56.2-3 IsTwoSidedIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsTwoSidedIdeal</code>( <var class="Arg">R</var>, <var class="Arg">I</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLeftIdeal</code>( <var class="Arg">R</var>, <var class="Arg">I</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRightIdeal</code>( <var class="Arg">R</var>, <var class="Arg">I</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsTwoSidedIdealInParent</code>( <var class="Arg">I</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLeftIdealInParent</code>( <var class="Arg">I</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRightIdealInParent</code>( <var class="Arg">I</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>The properties <code class="func">IsTwoSidedIdealInParent</code> etc., are attributes of the ideal, and once known they are stored in the ideal.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FullMatrixAlgebra( Rationals, 3 );</span>
( Rationals^[ 3, 3 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">I:= Ideal( A, [ Random( A ) ] );</span>
<two-sided ideal in ( Rationals^[ 3, 3 ] ), (1 generator)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsTwoSidedIdeal( A, I );</span>
true
</pre></div>
<p><a id="X86C998178690DAE0" name="X86C998178690DAE0"></a></p>
<h5>56.2-4 TwoSidedIdealByGenerators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TwoSidedIdealByGenerators</code>( <var class="Arg">R</var>, <var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IdealByGenerators</code>( <var class="Arg">R</var>, <var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">TwoSidedIdealByGenerators</code> returns the ring that is generated by the elements of the collection <var class="Arg">gens</var> under addition, multiplication, and multiplication with elements of the ring <var class="Arg">R</var> from the left and from the right.</p>
<p><var class="Arg">R</var> can be accessed by <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>) or <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>), <var class="Arg">gens</var> can be accessed by <code class="func">GeneratorsOfTwoSidedIdeal</code> (<a href="chap56.html#X86AAF5F9800E97EE"><span class="RefLink">56.2-7</span></a>).</p>
<p><a id="X82D8B07281EB0AC7" name="X82D8B07281EB0AC7"></a></p>
<h5>56.2-5 LeftIdealByGenerators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LeftIdealByGenerators</code>( <var class="Arg">R</var>, <var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">LeftIdealByGenerators</code> returns the ring that is generated by the elements of the collection <var class="Arg">gens</var> under addition, multiplication, and multiplication with elements of the ring <var class="Arg">R</var> from the left.</p>
<p><var class="Arg">R</var> can be accessed by <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>), <var class="Arg">gens</var> can be accessed by <code class="func">GeneratorsOfLeftIdeal</code> (<a href="chap56.html#X7B20BD2B7FAFBD64"><span class="RefLink">56.2-8</span></a>).</p>
<p><a id="X858EAEAF87751428" name="X858EAEAF87751428"></a></p>
<h5>56.2-6 RightIdealByGenerators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RightIdealByGenerators</code>( <var class="Arg">R</var>, <var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">RightIdealByGenerators</code> returns the ring that is generated by the elements of the collection <var class="Arg">gens</var> under addition, multiplication, and multiplication with elements of the ring <var class="Arg">R</var> from the right.</p>
<p><var class="Arg">R</var> can be accessed by <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>), <var class="Arg">gens</var> can be accessed by <code class="func">GeneratorsOfRightIdeal</code> (<a href="chap56.html#X80F2239F8653FF74"><span class="RefLink">56.2-9</span></a>).</p>
<p><a id="X86AAF5F9800E97EE" name="X86AAF5F9800E97EE"></a></p>
<h5>56.2-7 GeneratorsOfTwoSidedIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfTwoSidedIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list of generators for the ideal <var class="Arg">I</var>, with respect to the action of the rings that are stored as the values of <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>) and <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>), from the left and from the right, respectively.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FullMatrixAlgebra( Rationals, 3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:= Ideal( A, [ One( A ) ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfIdeal( I );</span>
[ [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] ]
</pre></div>
<p><a id="X7B20BD2B7FAFBD64" name="X7B20BD2B7FAFBD64"></a></p>
<h5>56.2-8 GeneratorsOfLeftIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfLeftIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list of generators for the left ideal <var class="Arg">I</var>, with respect to the action from the left of the ring that is stored as the value of <code class="func">LeftActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>).</p>
<p><a id="X80F2239F8653FF74" name="X80F2239F8653FF74"></a></p>
<h5>56.2-9 GeneratorsOfRightIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfRightIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list of generators for the right ideal <var class="Arg">I</var>, with respect to the action from the right of the ring that is stored as the value of <code class="func">RightActingRingOfIdeal</code> (<a href="chap56.html#X81D81D027C2F8D06"><span class="RefLink">56.2-10</span></a>).</p>
<p><a id="X81D81D027C2F8D06" name="X81D81D027C2F8D06"></a></p>
<h5>56.2-10 LeftActingRingOfIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LeftActingRingOfIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RightActingRingOfIdeal</code>( <var class="Arg">I</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the left (resp. right) acting ring of an ideal <var class="Arg">I</var>.</p>
<p><a id="X83D9D7408706B69A" name="X83D9D7408706B69A"></a></p>
<h5>56.2-11 AsLeftIdeal</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsLeftIdeal</code>( <var class="Arg">R</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsRightIdeal</code>( <var class="Arg">R</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsTwoSidedIdeal</code>( <var class="Arg">R</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Let <var class="Arg">S</var> be a subring of the ring <var class="Arg">R</var>.</p>
<p>If <var class="Arg">S</var> is a left ideal in <var class="Arg">R</var> then <code class="func">AsLeftIdeal</code> returns this left ideal, otherwise <code class="keyw">fail</code> is returned.</p>
<p>If <var class="Arg">S</var> is a right ideal in <var class="Arg">R</var> then <code class="func">AsRightIdeal</code> returns this right ideal, otherwise <code class="keyw">fail</code> is returned.</p>
<p>If <var class="Arg">S</var> is a two-sided ideal in <var class="Arg">R</var> then <code class="func">AsTwoSidedIdeal</code> returns this two-sided ideal, otherwise <code class="keyw">fail</code> is returned.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:= FullMatrixAlgebra( Rationals, 3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B:= DirectSumOfAlgebras( A, A );</sp | |