CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!--
4
5
usage.xml GaussForHomalg package documentation Simon Goertzen
6
7
8
Copyright (C) 2007-2008, Lehrstuhl B für Mathematik, RWTH-Aachen
9
10
This chapter explains the usage of this package.
11
12
-->
13
14
<Chapter Label="usage">
15
<Heading>Usage</Heading>
16
17
If you are just interested in using the &Gauss; package with &homalg;,
18
you do not need to know much about &GaussForHomalg;, as it will work
19
in the background, telling &homalg; which functions to call.<P/>
20
21
However, you might be interested in writing your own
22
<Package>XyzForHomalg</Package>, enabling &homalg; to assist you with
23
your computations. For this purpose, I will provide an overview of the
24
&GaussForHomalg; code. Please note that &Gauss; is a &GAP; package,
25
therefore this is not a reference guide for the package
26
&RingsForHomalg;, which utilizes the IO-stream functionality of &IO_ForHomalg;
27
to send commands to external computer algebra systems. If you wish to
28
tie an external system to &homalg;, &RingsForHomalg; is the better
29
reference package.<P/>
30
31
The file for all low-level operations is <F>GaussTools.gi</F>. Like
32
all "Tools" files it just includes one global variable
33
<C>CommonHomalgTableForGaussTools</C>, which is a record of functions
34
with &homalg; matrices as arguments. The return values of the
35
&GaussForHomalg; tools are documented in <Ref Label="methods"/> and
36
have to be the same for each tools table.<P/>
37
38
In this particular case, the file also includes the following
39
code:<P/>
40
41
<Listing>if IsBound( HOMALG.OtherInternalMatrixTypes ) then
42
Add( HOMALG.OtherInternalMatrixTypes, IsSparseMatrix );
43
else
44
HOMALG.OtherInternalMatrixTypes := [ IsSparseMatrix ];
45
fi;</Listing>
46
47
This is a specialty to explain to &homalg; that &Gauss; introduces a
48
new matrix type in &GAP;. Usually, there should not be a need for this.<P/>
49
50
The next "general" file is <F>GaussBasic.gi</F>. This includes the
51
basic functions based on <Cite Key="BR"/>, again stored in the global
52
record <C>CommonHomalgTableForGaussBasic</C>. Preceding this record
53
are some small methods to make sure &GaussForHomalg; works with sparse
54
as well as with dense matrices - just like above, these should not be
55
neccessary in general.<P/>
56
57
In <F>GaussForHomalg.gi</F> the methods for matrix entry manipulation
58
are installed.<P/>
59
60
Finally, we come to the most important files, making sense of the
61
basic functions and tools defined above. Depending on the
62
functionality (especially concerning function names) of the system you
63
will need different files for different rings. In this case,
64
functionality for <M>&ZZ; / n &ZZ;</M> is stored in <F>GaussFQI.gi</F>
65
(Finite Quotients of the Integers), while the Rationals have their own
66
file, <F>GaussRationals.gi</F>. Note that both files include only one
67
method, <C>CreateHomalgTable</C>, using method selection to create the
68
correct table. Depending on the properties of the ring, the basic
69
functions are loaded and some more "specific" functions can be
70
defined, in this case for example the function
71
<Ref Func="RowReducedEchelonForm"/>, both in a one- and a two-argument
72
version. The tools should be universal enough to be loaded for every
73
possible ring. If it is neccessary to overwrite a tool, this is the
74
place to do it. An example for this could be <Ref Func="Involution"/>,
75
which is generally just a matrix transposition, but could be
76
overwritten to be a true involution when creating the &homalg; table
77
for noncommutative rings.
78
79
</Chapter>
80
81