The package &homalg; <E>delegates</E> <E>all</E> matrix operations as
it treats matrices and their rings as <E>black boxes</E>. &homalg;
comes with a single predefined class of rings and a single predefined
class of matrices over these rings -- the so-called internal matrices
(&see; <Ref Label="IsHomalgInternalMatrixRep"/>) over so-called
internal rings (&see; <Ref Label="IsHomalgInternalRingRep"/>). An
internal matrix (resp. ring) is simply a wrapper containing a
&GAP;-builtin matrix (resp. ring). &homalg; allows other packages to
define further classes or extend existing classes of rings and
matrices <E>together</E> with their operations. For example:
<List>
<Item>The &homalg; subpackage &ResidueClassRingForHomalg; (&see;
Appendix <Ref Chap="ResidueClassRingForHomalg"/>) defines the
classes of residue class rings, residue class ring elements, and
matrices over residue class rings. Such a matrix is defined by a
matrix over the ambient ring which is nevertheless interpreted
modulo the ring relations, i.e. modulo the generators of the
defining ideal. </Item>
<Item>The package &GaussForHomalg; extends the class of internal
matrices enabling it to wrap sparse matrices provided by the
package &Gauss;. &GaussForHomalg; delegates the essential part of
the matrix creation and all matrix operations to &Gauss;.</Item>
<Item>The package &HomalgToCAS; defines the classes of so-called
external rings and matrices and the package &RingsForHomalg;
delegates the essential part of the matrix creation and all matrix
operations to external computer algebra systems like &Singular;,
&Macaulay2;, &Sage;, &Macaulay2;, &MAGMA;, &Maple;, ... . The
package &homalg; accesses external matrices via pointers. The
pointer of an external matrix is simply its name in the external
system. &HomalgToCAS; chooses these names.</Item>
<Item>The package &LocalizeRingForHomalg; defines the classes of
local(ized) rings, local ring elements, and local matrices. A
&homalg; local matrix contains a &homalg; matrix as a numerator and
an element of the global ring as a denominator.</Item>
</List>
<P/>
The matrix operations are divided into two classes called <Q>Tools</Q>
and <Q>Basic</Q>. The <Q>Tools</Q> operations include addition,
subtraction, multiplication, extracting certain rows or columns,
stacking, and augmenting matrices (&see; Appendix
<Ref Chap="Tool_Operations"/>). The <Q>Basic</Q> operations include
the two basic operations in linear algebra needed to solve an
inhomogeneous linear system <M>XA=B</M> with coefficients in a not
necessarily commutative ring <M>R</M> (&see; Appendix
<Ref Chap="Basic_Operations"/>):
<List>
<Item>Effectively reducing <M>B</M> modulo <M>A</M>,
i.e. effectively deciding if a row (or a set of rows) <M>B</M>
lies in the <M>R</M>-span of the rows of the
matrix <M>A</M>.</Item>
<Item>Computing an <M>R</M>-generating set of row syzygies
(=<M>R</M>-relations among the rows) of <M>A</M>, i.e. computing
an <M>R</M>-generating set of the left kernel of <M>A</M>. This
generating set is then given as the rows of a matrix <M>Y</M>
and <M>YA=0</M>.</Item>
</List>
The first operation is nothing but deciding the solvability of the
inhomogeneous system <M>XA=B</M> and if solvable to compute a
particular solution <M>X</M>, while the second is to compute an
<M>R</M>-generating set for the homogeneous solution space, i.e. the
solution space of the homogeneous system <M>YA=0</M>. The above is of
course also valid for the column convention.
<!-- (&see; <Ref Label="SufficientSupport" Text="Rings supported in a sufficient way"/>)
-->
</Subsection>
<Subsection Label="black box">
<Heading>The black box concept</Heading>
<P/>
Now we address the following concerns: Wouldn't the idea of using
algorithms like the Gröbnerbasis algorithm(s) as a black box (&see;
<Ref Sect="homalg-delegates" Text="homalg delegates ..."/>) contradict
the following facts?
<List>
<Item> It is known that an efficient Gröbnerbasis algorithm depends
on the ring <M>R</M> under consideration. For example the
implementation of the algorithm depends on the ground ring (or
field) <M>k</M>.</Item>
<Item> Often enough highly specialized implementations are used to
address specific types of linear systems of equations (occuring in
specific homological problems) in order to increase the speed or
reduce the space needed for the computations.</Item>
</List>
The following should clarify the above concerns.
<List>
<Item> Since each ring comes with its own black box, the first point
is automatically resolved.</Item>
<Item> Allow the black box coming with each ring to contain the
different available implementations and make them accessible to
&homalg; via standarized names, independent of the computer
algebra system used to perform computations.</Item>
</List>
Chapter <Ref Chap="install"/> describes the installation of this
package. The remaining chapters are each devoted to one of
the &MatricesForHomalg; objects (&see; <Ref Label="MatricesForHomalg-provides"/>) with its
constructors, properties, attributes, and operations.
<!-- Finally, Chapter <Ref Chap="examples"/> shows some instructive examples for the usage of this package.
-->
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.18Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.