|
|
|
|
Quelle chap5.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/pkg/matricesforhomalg/doc/chap5.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 (MatricesForHomalg) - Chapter 5: Matrices</ 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= "chap5" 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="chapA.html">A</a> <a href="chapB.html">B</a> <a href="chapC.html">C</a> <a href="chapD.html">D</a> <a href="chapE.html">E</a> <a href="chapF.html">F</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="chap4.html">[Previous Chapter]</a> <a href="chap6.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap5_mj.html">[MathJax on]</a></p>
<p><a id="X812CCAB278643A59" name="X812CCAB278643A59"></a></p>
<div class="ChapSects"><a href="chap5.html#X812CCAB278643A59">5 <span class="Heading">Matrices</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5.html#X78C552687FF14479">5.1 <span class="Heading">Matrices: Category and Representations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B68E1057F5F011F">5.1-1 IsHomalgMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7FE94FC47F460E35">5.1-2 IsHomalgInternalMatrixRep</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5.html#X7977387186436CDF">5.2 <span class="Heading">Matrices: Constructors</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86D290B084AC6638">5.2-1 HomalgInitialMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7CB77009868D369A">5.2-2 HomalgInitialIdentityMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8309EB7B86953A23">5.2-3 HomalgZeroMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X83266B9D7BE740D8">5.2-4 HomalgIdentityMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D2E3472879E28AB">5.2-5 HomalgVoidMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X864ACCB08094F0B7">5.2-6 HomalgMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8246E1D17F96DAE7">5.2-7 HomalgMatrixListList</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B127B5584CD012D">5.2-8 HomalgRowVector</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X871AF271843FF2B5">5.2-9 HomalgColumnVector</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X872D39C678D0C4AE">5.2-10 HomalgDiagonalMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X81225377833C4644"><code>5.2-11 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7C4E49D287011DCD">5.2-12 CoercedMatrix</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5.html#X7D92ECFC8030CF40">5.3 <span class="Heading">Matrices: Properties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X858B5AF57D5BC90A">5.3-1 IsZero</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X814D78347858EC13">5.3-2 IsOne</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7813653578F174AB">5.3-3 IsUnitFree</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8612CB4A82D6D79E">5.3-4 IsPermutationMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EEE3E9780EBA607">5.3-5 IsSpecialSubidentityMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8672364D79EBCC5D">5.3-6 IsSubidentityMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EF95CAD78BDE12F">5.3-7 IsLeftRegular</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X87C369D27D6AAF68">5.3-8 IsRightRegular</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X856E1D217A47EE8C">5.3-9 IsInvertibleMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7A4FA27C80BC42D1">5.3-10 IsLeftInvertibleMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7E43FDE57E8449B6">5.3-11 IsRightInvertibleMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7BFC9266823F2C15">5.3-12 IsEmptyMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EEC8E768178696E">5.3-13 IsDiagonalMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7848E6A0783B7428">5.3-14 IsScalarMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8740E71C799C0BCC">5.3-15 IsUpperTriangularMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X853A5B988306DBFE">5.3-16 IsLowerTriangularMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7976C42B7FA905EC">5.3-17 IsStrictUpperTriangularMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B0C78AF8056D650">5.3-18 IsStrictLowerTriangularMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X81A2C3F67C99A3C2">5.3-19 IsUpperStairCaseMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B3A5DE1860373F0">5.3-20 IsLowerStairCaseMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7BAAE75A8660D7A5">5.3-21 IsTriangularMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7F520F89821A8602">5.3-22 IsBasisOfRowsMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D46613983DC5302">5.3-23 IsBasisOfColumnsMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86445AD281024339">5.3-24 IsReducedBasisOfRowsMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7E6BB540865C0344">5.3-25 IsReducedBasisOfColumnsMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7E6E51517822CB3F">5.3-26 IsInitialMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EE624707ACEC26E">5.3-27 IsInitialIdentityMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X802794217F56DE51">5.3-28 IsVoidMatrix</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5.html#X86F766077C89558F">5.4 <span class="Heading">Matrices: Attributes</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7C72971F7D0CA3C8">5.4-1 NumberRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X847D45BF7F2BC67C">5.4-2 NumberColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X83045F6F82C180E1">5.4-3 DeterminantMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X828225E0857B1FDA">5.4-4 ZeroRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X870D761F7AB96D12">5.4-5 ZeroColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7991ED337C73065A">5.4-6 NonZeroRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7F335DCB7B8781E4">5.4-7 NonZeroColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B7A073D7E1FAEA4">5.4-8 PositionOfFirstNonZeroEntryPerRow</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X83B389A97A703E42">5.4-9 PositionOfFirstNonZeroEntryPerColumn</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X862841E68674FA2A">5.4-10 RowRankOfMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7C61862E81CABD51">5.4-11 ColumnRankOfMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EFCE38281AE60F9">5.4-12 LeftInverse</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X87614CA48493B63F">5.4-13 RightInverse</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7809E0507E882674">5.4-14 CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7938E13A7EF4ADB1">5.4-15 CoefficientsOfNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X781E2CDB8743B1C6">5.4-16 UnreducedNumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7C44039382DD5D91">5.4-17 NumeratorOfHilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7B93B7D082A50E61">5.4-18 HilbertPoincareSeries</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X84299BAB807A1E13">5.4-19 HilbertPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7BC36CC67CB09858">5.4-20 AffineDimension</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X87C428A079000336">5.4-21 AffineDegree</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X82A1B55879AB1742">5.4-22 ProjectiveDegree</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X791B772A7E368A88">5.4-23 ConstantTermOfHilbertPolynomialn</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X835972A77F02C5BB">5.4-24 MatrixOfSymbols</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5.html#X80FA5AE87E8591BC">5.5 <span class="Heading">Matrices: Operations and Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X81BBF79C79C3B6DF">5.5-1 HomalgRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7FBAA11B8008D936">5.5-2 LeftInverse</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7AAD17D47839BCAE">5.5-3 RightInverse</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7A7E42C179142727">5.5-4 LeftInverseLazy</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7FA3E7617EED7E1E">5.5-5 RightInverseLazy</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X800FA81F7C42BFEA">5.5-6 Involution</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D0D35B582D9C0B0">5.5-7 TransposedMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7CF5CE79796001F6">5.5-8 CertainRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8256AF2A840B19C4">5.5-9 CertainColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D6D0BDF854C9EBC">5.5-10 UnionOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7FF9661D85EC46B1">5.5-11 UnionOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7E61390E79B663E8">5.5-12 ConvertRowToMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X853EA6C87EDDF6EF">5.5-13 ConvertColumnToMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7ED5C86379A647F2">5.5-14 ConvertMatrixToRow</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X84C7C1D07DB6FBAA">5.5-15 ConvertMatrixToColumn</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7C7830BE847D84B4">5.5-16 DiagMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7CDA5D848468A0AA">5.5-17 KroneckerMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7ECF744B7DE82BED">5.5-18 DualKroneckerMat</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D1A074278B415BE"><code>5.5-19 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X87C773DA85B21ADF"><code>5.5-20 \+</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X784B57617B24208C"><code>5.5-21 \-</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7F5961D78754157B"><code>5.5-22 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7E2074A77AFF518A"><code>5.5-23 \=</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X85887BBB86F0A08B">5.5-24 GetColumnIndependentUnitPositions</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X824AB44184DD63B0">5.5-25 GetRowIndependentUnitPositions</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7A1969A17979FC49">5.5-26 GetUnitPosition</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X781B1C0C80529B09">5.5-27 Eliminate</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X80ADBE0D82CC6E85">5.5-28 BasisOfRowModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X868CDA327D6C8DDC">5.5-29 BasisOfColumnModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7F851EC7861170D1">5.5-30 DecideZeroRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86C97DBB787BAD6D">5.5-31 DecideZeroColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86ECEA9B7A4AE578">5.5-32 SyzygiesGeneratorsOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86504B757F6DC990">5.5-33 SyzygiesGeneratorsOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X84A93458804F16F6">5.5-34 SyzygiesGeneratorsOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D3FC0CE7B63AAF1">5.5-35 SyzygiesGeneratorsOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X82E0FF517DC38040">5.5-36 ReducedBasisOfRowModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X84CED11F7A633BDA">5.5-37 ReducedBasisOfColumnModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7DE458D67B9B85BF">5.5-38 ReducedSyzygiesGeneratorsOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8699114D7A865C11">5.5-39 ReducedSyzygiesGeneratorsOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D9DEC6081AF0003">5.5-40 BasisOfRowsCoeff</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7BBC885F7C24DEC2">5.5-41 BasisOfColumnsCoeff</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8513963C84A9F8CB">5.5-42 DecideZeroRowsEffectively</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7A06BF7779830815">5.5-43 DecideZeroColumnsEffectively</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X81ABDA3E7D94C661">5.5-44 BasisOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X83A5B51980FFDE53">5.5-45 BasisOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X85C980288304B4AC">5.5-46 DecideZero</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86C93ABD857447F8">5.5-47 SyzygiesOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X80325CAD7CE56F4F">5.5-48 SyzygiesOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86A798D4850BF9E8">5.5-49 ReducedSyzygiesOfRows</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8766BBD578557D15">5.5-50 ReducedSyzygiesOfColumns</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X850AEC9C7C00AFF5">5.5-51 RightDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7D0EAF527F8514E0">5.5-52 LeftDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7A8546EA87E3AE67">5.5-53 RightDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86CEB1FC7C358777">5.5-54 LeftDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X86DFDD25824E2F35">5.5-55 SafeRightDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X85B64BD47F0379C5">5.5-56 SafeLeftDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7F6BAF8E7F2343EA">5.5-57 UniqueRightDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X8788CB987A8A18A7">5.5-58 UniqueLeftDivide</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X82B2C4987D6D5BD3">5.5-59 GenerateSameRowModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X867A947682754A9A">5.5-60 GenerateSameColumnModule</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X81CDBBBE878DC1E5">5.5-61 SimplifyHomalgMatrixByLeftAndRightMultiplicationWithInvertibleMatrices</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X85DA10C07E7E5A3D">5.5-62 SimplifyHomalgMatrixByLeftMultiplicationWithInvertibleMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X79C124318588F37F">5.5-63 SimplifyHomalgMatrixByRightMultiplicationWithInvertibleMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap5.html#X7EEFD7887E96714F">5.5-64 CoefficientsWithGivenMonomials</a></span>
</div></div>
</div>
<h3>5 <span class="Heading">Matrices</span></h3>
<p><a id="X78C552687FF14479" name="X78C552687FF14479"></a></p>
<h4>5.1 <span class="Heading">Matrices: Category and Representations</span></h4>
<p><a id="X7B68E1057F5F011F" name="X7B68E1057F5F011F"></a></p>
<h5>5.1-1 IsHomalgMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsHomalgMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p>The <strong class="pkg">GAP</strong> category of <strong class="pkg">homalg</strong> matrices.</p>
<div class="example"><pre>
DeclareCategory( "IsHomalgMatrix",
IsMatrixObj and
IsAttributeStoringRep );
</pre></div>
<p><a id="X7FE94FC47F460E35" name="X7FE94FC47F460E35"></a></p>
<h5>5.1-2 IsHomalgInternalMatrixRep</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsHomalgInternalMatrixRep</code>( <var class="Arg">A</var> )</td><td class="tdright">( representation )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p>The internal representation of <strong class="pkg">homalg</strong> matrices.</p>
<p>(It is a representation of the <strong class="pkg">GAP</strong> category <code class="func">IsHomalgMatrix</code> (<a href="chap5.html#X7B68E1057F5F011F"><span class="RefLink">5.1-1</span></a>).)</p>
<p><a id="X7977387186436CDF" name="X7977387186436CDF"></a></p>
<h4>5.2 <span class="Heading">Matrices: Constructors</span></h4>
<p><a id="X86D290B084AC6638" name="X86D290B084AC6638"></a></p>
<h5>5.2-1 HomalgInitialMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgInitialMatrix</code>( <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>A mutable unevaluated initial <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">n</var></span> <strong class="pkg">homalg</strong> matrix filled with zeros over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>. This construction is useful in case one wants to define a matrix by assigning its nonzero entries. The property <code class="func">IsInitialMatrix</code> (<a href="chap5.html#X7E6E51517822CB3F"><span class="RefLink">5.3-26</span></a>) is reset as soon as the matrix is evaluated. New computed properties or attributes of the matrix won't be cached, until the matrix is explicitly made immutable using (--> MakeImmutable (Reference 12.6-4)).
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">z := HomalgInitialMatrix( 2, 3, zz );</span>
<An initial 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasIsZero( z );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( z );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">z;</span>
<A 2 x 3 mutable matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasIsZero( z );</span>
false
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">n := HomalgInitialMatrix( 2, 3, zz );</span>
<An initial 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">n[ 1, 1 ] := "1";;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">n[ 2, 3 ] := "1";;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">MakeImmutable( n );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( n );</span>
[ [ 1, 0, 0 ],
[ 0, 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( n );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">n;</span>
<A non-zero 2 x 3 matrix over an internal ring>
</pre></div>
<p><a id="X7CB77009868D369A" name="X7CB77009868D369A"></a></p>
<h5>5.2-2 HomalgInitialIdentityMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgInitialIdentityMatrix</code>( <var class="Arg">m</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>A mutable unevaluated initial <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">m</var></span> <strong class="pkg">homalg</strong> quadratic matrix with ones on the diagonal over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>. This construction is useful in case one wants to define an elementary matrix by assigning its off-diagonal nonzero entries. The property <code class="func">IsInitialIdentityMatrix</code> (<a href="chap5.html#X7EE624707ACEC26E"><span class="RefLink">5.3-27</span></a>) is reset as soon as the matrix is evaluated. New computed properties or attributes of the matrix won't be cached, until the matrix is explicitly made immutable using (--> MakeImmutable (Reference 12.6-4)).
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">id := HomalgInitialIdentityMatrix( 3, zz );</span>
<An initial identity 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasIsOne( id );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsOne( id );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">id;</span>
<A 3 x 3 mutable matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasIsOne( id );</span>
false
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">e := HomalgInitialIdentityMatrix( 3, zz );</span>
<An initial identity 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">e[ 1, 2 ] := "1";;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">e[ 2, 1 ] := "-1";;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">MakeImmutable( e );</span>
<A 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( e );</span>
[ [ 1, 1, 0 ],
[ -1, 1, 0 ],
[ 0, 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsOne( e );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">e;</span>
<A 3 x 3 matrix over an internal ring>
</pre></div>
<p><a id="X8309EB7B86953A23" name="X8309EB7B86953A23"></a></p>
<h5>5.2-3 HomalgZeroMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgZeroMatrix</code>( <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>An immutable unevaluated <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">n</var></span> <strong class="pkg">homalg</strong> zero matrix over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">z := HomalgZeroMatrix( 2, 3, zz );</span>
<An unevaluated 2 x 3 zero matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( z );</span>
[ [ 0, 0, 0 ],
[ 0, 0, 0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">z;</span>
<A 2 x 3 zero matrix over an internal ring>
</pre></div>
<p><a id="X83266B9D7BE740D8" name="X83266B9D7BE740D8"></a></p>
<h5>5.2-4 HomalgIdentityMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgIdentityMatrix</code>( <var class="Arg">m</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>An immutable unevaluated <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">m</var></span> <strong class="pkg">homalg</strong> identity matrix over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">id := HomalgIdentityMatrix( 3, zz );</span>
<An unevaluated 3 x 3 identity matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( id );</span>
[ [ 1, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">id;</span>
<A 3 x 3 identity matrix over an internal ring>
</pre></div>
<p><a id="X7D2E3472879E28AB" name="X7D2E3472879E28AB"></a></p>
<h5>5.2-5 HomalgVoidMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgVoidMatrix</code>( [<var class="Arg">m</var>, ][<var class="Arg">n</var>, ]<var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>A void <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">n</var></span> <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X864ACCB08094F0B7" name="X864ACCB08094F0B7"></a></p>
<h5>5.2-6 HomalgMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgMatrix</code>( <var class="Arg">llist</var>, <var class="Arg">R</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">‣ HomalgMatrix</code>( <var class="Arg">llist</var>, <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</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">‣ HomalgMatrix</code>( <var class="Arg">list</var>, <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</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">‣ HomalgMatrix</code>( <var class="Arg">str_llist</var>, <var class="Arg">R</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">‣ HomalgMatrix</code>( <var class="Arg">str_list</var>, <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>An immutable evaluated <span class="SimpleMath"><var class="Arg">m</var> × <var class="Arg">n</var></span> <strong class="pkg">homalg</strong> matrix over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ], zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ], 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( [ 1, 2, 3, 4, 5, 6 ], 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( "[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]", zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( "[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]", 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<p>It is nevertheless recommended to use the following form to create <strong class="pkg">homalg</strong> matrices. This form can also be used to define external matrices. Since whitespaces (--> <a href="../../../doc/ref/chap4.html#X7C53CEFC8641B919"><span class="RefLink">Reference: Whitespaces</span></a>) are ignored, they can be used as optical delimiters:</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( "[ 1, 2, 3, 4, 5, 6 ]", 2, 3, zz );</span>
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<p>One can split the input string over several lines using the backslash character '\' to end each line</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">m := HomalgMatrix( "[ \
<span class="GAPprompt">></span> <span class="GAPinput">1, 2, 3, \</span>
<span class="GAPprompt">></span> <span class="GAPinput">4, 5, 6 \</span>
<span class="GAPprompt">></span> <span class="GAPinput">]", 2, 3, zz );
<A 2 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( m );</span>
[ [ 1, 2, 3 ],
[ 4, 5, 6 ] ]
</pre></div>
<p><a id="X8246E1D17F96DAE7" name="X8246E1D17F96DAE7"></a></p>
<h5>5.2-7 HomalgMatrixListList</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgMatrixListList</code>( <var class="Arg">llist</var>, <var class="Arg">m</var>, <var class="Arg">n</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>Special case of <code class="func">HomalgMatrix</code> (<a href="chap5.html#X864ACCB08094F0B7"><span class="RefLink">5.2-6</span></a>).</p>
<p><a id="X7B127B5584CD012D" name="X7B127B5584CD012D"></a></p>
<h5>5.2-8 HomalgRowVector</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgRowVector</code>( <var class="Arg">entries</var>, <var class="Arg">nr_cols</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>Special case of <code class="func">HomalgMatrix</code> (<a href="chap5.html#X864ACCB08094F0B7"><span class="RefLink">5.2-6</span></a>) for matrices with a single row. <var class="Arg">entries</var> must be a list of ring elements.</p>
<p><a id="X871AF271843FF2B5" name="X871AF271843FF2B5"></a></p>
<h5>5.2-9 HomalgColumnVector</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgColumnVector</code>( <var class="Arg">entries</var>, <var class="Arg">nr_rows</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>Special case of <code class="func">HomalgMatrix</code> (<a href="chap5.html#X864ACCB08094F0B7"><span class="RefLink">5.2-6</span></a>) for matrices with a single column. <var class="Arg">entries</var> must be a list of ring elements.</p>
<p><a id="X872D39C678D0C4AE" name="X872D39C678D0C4AE"></a></p>
<h5>5.2-10 HomalgDiagonalMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomalgDiagonalMatrix</code>( <var class="Arg">diag</var>, <var class="Arg">R</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>An immutable unevaluated diagonal <strong class="pkg">homalg</strong> matrix over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var>. The diagonal consists of the entries of the list <var class="Arg">diag</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">d := HomalgDiagonalMatrix( [ 1, 2, 3 ], zz );</span>
<An unevaluated diagonal 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( d );</span>
[ [ 1, 0, 0 ],
[ 0, 2, 0 ],
[ 0, 0, 3 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">d;</span>
<A diagonal 3 x 3 matrix over an internal ring>
</pre></div>
<p><a id="X81225377833C4644" name="X81225377833C4644"></a></p>
<h5><code>5.2-11 \*</code></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">R</var>, <var class="Arg">mat</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">‣ \*</code>( <var class="Arg">mat</var>, <var class="Arg">R</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>An immutable evaluated <strong class="pkg">homalg</strong> matrix over the <strong class="pkg">homalg</strong> ring <var class="Arg">R</var> having the same entries as the matrix <var class="Arg">mat</var>. Syntax: <var class="Arg">R</var> <code class="code">*</code> <var class="Arg">mat</var> or <var class="Arg">mat</var> <code class="code">*</code> <var class="Arg">R</var></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">Z4 := zz / 4;</span>
Z/( 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( Z4 );</span>
<A residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">d := HomalgDiagonalMatrix( [ 2 .. 4 ], zz );</span>
<An unevaluated diagonal 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">d2 := Z4 * d; ## or d2 := d * Z4;</span>
<A 3 x 3 matrix over a residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( d2 );</span>
[ [ 2, 0, 0 ],
[ 0, 3, 0 ],
[ 0, 0, 4 ] ]
modulo [ 4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">d;</span>
<A diagonal 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">ZeroRows( d );</span>
[ ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ZeroRows( d2 );</span>
[ 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">d;</span>
<A non-zero diagonal 3 x 3 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">d2;</span>
<A non-zero 3 x 3 matrix over a residue class ring>
</pre></div>
<p><a id="X7C4E49D287011DCD" name="X7C4E49D287011DCD"></a></p>
<h5>5.2-12 CoercedMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoercedMatrix</code>( <var class="Arg">ring_from</var>, <var class="Arg">ring_to</var>, <var class="Arg">mat</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">‣ CoercedMatrix</code>( <var class="Arg">ring_to</var>, <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <strong class="pkg">homalg</strong> matrix</p>
<p>A copy of the <strong class="pkg">homalg</strong> matrix <var class="Arg">mat</var> with <strong class="pkg">homalg</strong> ring <var class="Arg">ring_from</var> in the <strong class="pkg">homalg</strong> ring <var class="Arg">ring_to</var>.</p>
<p>(for the installed standard method see <code class="func">Eval</code> (<a href="chapC.html#X87BF7FD083D0EE88"><span class="RefLink">C.4-9</span></a>))</p>
<p><a id="X7D92ECFC8030CF40" name="X7D92ECFC8030CF40"></a></p>
<h4>5.3 <span class="Heading">Matrices: Properties</span></h4>
<p><a id="X858B5AF57D5BC90A" name="X858B5AF57D5BC90A"></a></p>
<h5>5.3-1 IsZero</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsZero</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p>Check if the <strong class="pkg">homalg</strong> matrix <var class="Arg">A</var> is a zero matrix, taking possible ring relations into account.</p>
<p>(for the installed standard method see <code class="func">IsZeroMatrix</code> (<a href="chapB.html#X849BB912798A01EB"><span class="RefLink">B.1-20</span></a>))</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">zz := HomalgRingOfIntegers( );</span>
Z
<span class="GAPprompt">gap></span> <span class="GAPinput">A := HomalgMatrix( "[ 2 ]", zz );</span>
<A 1 x 1 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Z2 := zz / 2;</span>
Z/( 2 )
<span class="GAPprompt">gap></span> <span class="GAPinput">A := Z2 * A;</span>
<A 1 x 1 matrix over a residue class ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( A );</span>
[ [ 2 ] ]
modulo [ 2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( A );</span>
true
</pre></div>
<p><a id="X814D78347858EC13" name="X814D78347858EC13"></a></p>
<h5>5.3-2 IsOne</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsOne</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p>Check if the <strong class="pkg">homalg</strong> matrix <var class="Arg">A</var> is an identity matrix, taking possible ring relations into account.</p>
<p>(for the installed standard method see <code class="func">IsIdentityMatrix</code> (<a href="chapB.html#X80C1856D82172268"><span class="RefLink">B.2-2</span></a>))</p>
<p><a id="X7813653578F174AB" name="X7813653578F174AB"></a></p>
<h5>5.3-3 IsUnitFree</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsUnitFree</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X8612CB4A82D6D79E" name="X8612CB4A82D6D79E"></a></p>
<h5>5.3-4 IsPermutationMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPermutationMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7EEE3E9780EBA607" name="X7EEE3E9780EBA607"></a></p>
<h5>5.3-5 IsSpecialSubidentityMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSpecialSubidentityMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X8672364D79EBCC5D" name="X8672364D79EBCC5D"></a></p>
<h5>5.3-6 IsSubidentityMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSubidentityMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7EF95CAD78BDE12F" name="X7EF95CAD78BDE12F"></a></p>
<h5>5.3-7 IsLeftRegular</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLeftRegular</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X87C369D27D6AAF68" name="X87C369D27D6AAF68"></a></p>
<h5>5.3-8 IsRightRegular</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRightRegular</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X856E1D217A47EE8C" name="X856E1D217A47EE8C"></a></p>
<h5>5.3-9 IsInvertibleMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsInvertibleMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7A4FA27C80BC42D1" name="X7A4FA27C80BC42D1"></a></p>
<h5>5.3-10 IsLeftInvertibleMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLeftInvertibleMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7E43FDE57E8449B6" name="X7E43FDE57E8449B6"></a></p>
<h5>5.3-11 IsRightInvertibleMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRightInvertibleMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7BFC9266823F2C15" name="X7BFC9266823F2C15"></a></p>
<h5>5.3-12 IsEmptyMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsEmptyMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7EEC8E768178696E" name="X7EEC8E768178696E"></a></p>
<h5>5.3-13 IsDiagonalMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsDiagonalMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p>Check if the <strong class="pkg">homalg</strong> matrix <var class="Arg">A</var> is a diagonal matrix, taking possible ring relations into account.</p>
<p>(for the installed standard method see <code class="func">IsDiagonalMatrix</code> (<a href="chapB.html#X7B6420E88418316B"><span class="RefLink">B.2-3</span></a>))</p>
<p><a id="X7848E6A0783B7428" name="X7848E6A0783B7428"></a></p>
<h5>5.3-14 IsScalarMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsScalarMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X8740E71C799C0BCC" name="X8740E71C799C0BCC"></a></p>
<h5>5.3-15 IsUpperTriangularMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsUpperTriangularMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X853A5B988306DBFE" name="X853A5B988306DBFE"></a></p>
<h5>5.3-16 IsLowerTriangularMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLowerTriangularMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7976C42B7FA905EC" name="X7976C42B7FA905EC"></a></p>
<h5>5.3-17 IsStrictUpperTriangularMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsStrictUpperTriangularMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7B0C78AF8056D650" name="X7B0C78AF8056D650"></a></p>
<h5>5.3-18 IsStrictLowerTriangularMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsStrictLowerTriangularMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X81A2C3F67C99A3C2" name="X81A2C3F67C99A3C2"></a></p>
<h5>5.3-19 IsUpperStairCaseMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsUpperStairCaseMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7B3A5DE1860373F0" name="X7B3A5DE1860373F0"></a></p>
<h5>5.3-20 IsLowerStairCaseMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLowerStairCaseMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7BAAE75A8660D7A5" name="X7BAAE75A8660D7A5"></a></p>
<h5>5.3-21 IsTriangularMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsTriangularMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7F520F89821A8602" name="X7F520F89821A8602"></a></p>
<h5>5.3-22 IsBasisOfRowsMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsBasisOfRowsMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7D46613983DC5302" name="X7D46613983DC5302"></a></p>
<h5>5.3-23 IsBasisOfColumnsMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsBasisOfColumnsMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X86445AD281024339" name="X86445AD281024339"></a></p>
<h5>5.3-24 IsReducedBasisOfRowsMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsReducedBasisOfRowsMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7E6BB540865C0344" name="X7E6BB540865C0344"></a></p>
<h5>5.3-25 IsReducedBasisOfColumnsMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsReducedBasisOfColumnsMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7E6E51517822CB3F" name="X7E6E51517822CB3F"></a></p>
<h5>5.3-26 IsInitialMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsInitialMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X7EE624707ACEC26E" name="X7EE624707ACEC26E"></a></p>
<h5>5.3-27 IsInitialIdentityMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsInitialIdentityMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X802794217F56DE51" name="X802794217F56DE51"></a></p>
<h5>5.3-28 IsVoidMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsVoidMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>
<p><var class="Arg">A</var> is a <strong class="pkg">homalg</strong> matrix.</p>
<p><a id="X86F766077C89558F" name="X86F766077C89558F"></a></p>
<h4>5.4 <span class="Heading">Matrices: Attributes</span></h4>
<p><a id="X7C72971F7D0CA3C8" name="X7C72971F7D0CA3C8"></a></p>
<h5>5.4-1 NumberRows</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumberRows</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a nonnegative integer</p>
<p>The number of rows of the matrix <var class="Arg">A</var>.</p>
<p>(for the installed standard method see <code class="func">NumberRows</code> (<a href="chapB.html#X7F4D7FAF821DA1C2"><span class="RefLink">B.1-21</span></a>))</p>
<p><a id="X847D45BF7F2BC67C" name="X847D45BF7F2BC67C"></a></p>
<h5>5.4-2 NumberColumns</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumberColumns</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a nonnegative integer</p>
<p>The number of columns of the matrix <var class="Arg">A</var>.</p>
<p>(for the installed standard method see <code class="func">NumberColumns</code> (<a href="chapB.html#X7DFA534B7AFA2E17"><span class="RefLink">B.1-22</span></a>))</p>
<p><a id="X83045F6F82C180E1" name="X83045F6F82C180E1"></a></p>
<h5>5.4-3 DeterminantMat</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DeterminantMat</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a ring element</p>
<p>The determinant of the quadratic matrix <var class="Arg">A</var>.</p>
<p>You can invoke it with <code class="code">Determinant</code>( <var class="Arg">A</var> ).</p>
<p>(for the installed standard method see <code class="func">Determinant</code> (<a href="chapB.html#X80A573257D7F2E1A"><span class="RefLink">B.1-23</span></a>))</p>
<p><a id="X828225E0857B1FDA" name="X828225E0857B1FDA"></a></p>
<h5>5.4-4 ZeroRows</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ZeroRows</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a (possibly empty) list of positive integers</p>
<p>The list of zero rows of the matrix <var class="Arg">A</var>.</p>
<p>(for the installed standard method see <code class="func">ZeroRows</code> (<a href="chapB.html#X872B70367F412945"><span class="RefLink">B.2-4</span></a>))</p>
<p><a id="X870D761F7AB96D12" name="X870D761F7AB96D12"></a></p>
<h5>5.4-5 ZeroColumns</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ZeroColumns</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a (possibly empty) list of positive integers</p>
<p>The list of zero columns of the matrix <var class="Arg">A</var>.</p>
<p>(for the installed standard method see <code class="func">ZeroColumns</code> (<a href="chapB.html#X7A469E6D7EA63BB6"><span class="RefLink">B.2-5</span></a>))</p>
<p><a id="X7991ED337C73065A" name="X7991ED337C73065A"></a></p>
<h5>5.4-6 NonZeroRows</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NonZeroRows</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a (possibly empty) list of positive integers</p>
<p>The list of nonzero rows of the matrix <var class="Arg">A</var>.</p>
<p><a id="X7F335DCB7B8781E4" name="X7F335DCB7B8781E4"></a></p>
<h5>5.4-7 NonZeroColumns</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NonZeroColumns</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a (possibly empty) list of positive integers</p>
<p>The list of nonzero columns of the matrix <var class="Arg">A</var>.</p>
<p><a id="X7B7A073D7E1FAEA4" name="X7B7A073D7E1FAEA4"></a></p>
<h5>5.4-8 PositionOfFirstNonZeroEntryPerRow</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PositionOfFirstNonZeroEntryPerRow</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of nonnegative integers</p>
<p>The list of positions of the first nonzero entry per row of the matrix <var class="Arg">A</var>, else zero.</p>
<p><a id="X83B389A97A703E42" name="X83B389A97A703E42"></a></p>
<h5>5.4-9 PositionOfFirstNonZeroEntryPerColumn</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PositionOfFirstNonZeroEntryPerColumn</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of nonnegative integers</p>
<p>The list of positions of the first nonzero entry per column of the matrix <var class="Arg">A</var>, else zero.</p>
<p><a id="X862841E68674FA2A" name="X862841E68674FA2A"></a></p>
<h5>5.4-10 RowRankOfMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RowRankOfMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a nonnegative integer</p>
<p>The row rank of the matrix <var class="Arg">A</var>.</p>
<p><a id="X7C61862E81CABD51" name="X7C61862E81CABD51"></a></p>
<h5>5.4-11 ColumnRankOfMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ColumnRankOfMatrix</code>( <var class="Arg">A</var> )</td><td class="tdright">( attribute )</td></tr></t | | |