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
2
2 Usage
3
4
If you are just interested in using the Gauss package with homalg, you do
5
not need to know much about GaussForHomalg, as it will work in the
6
background, telling homalg which functions to call.
7
8
However, you might be interested in writing your own XyzForHomalg, enabling
9
homalg to assist you with your computations. For this purpose, I will
10
provide an overview of the GaussForHomalg code. Please note that Gauss is a
11
GAP package, therefore this is not a reference guide for the package
12
RingsForHomalg, which utilizes the IO-stream functionality of IO_ForHomalg
13
to send commands to external computer algebra systems. If you wish to tie an
14
external system to homalg, RingsForHomalg is the better reference package.
15
16
The file for all low-level operations is GaussTools.gi. Like all "Tools"
17
files it just includes one global variable CommonHomalgTableForGaussTools,
18
which is a record of functions with homalg matrices as arguments. The return
19
values of the GaussForHomalg tools are documented in 3 and have to be the
20
same for each tools table.
21
22
In this particular case, the file also includes the following code:
23
24

25
if IsBound( HOMALG.OtherInternalMatrixTypes ) then
26
 Add( HOMALG.OtherInternalMatrixTypes, IsSparseMatrix );
27
else
28
 HOMALG.OtherInternalMatrixTypes := [ IsSparseMatrix ];
29
fi;
30

31
32
This is a specialty to explain to homalg that Gauss introduces a new matrix
33
type in GAP. Usually, there should not be a need for this.
34
35
The next "general" file is GaussBasic.gi. This includes the basic functions
36
based on [BR08], again stored in the global record
37
CommonHomalgTableForGaussBasic. Preceding this record are some small methods
38
to make sure GaussForHomalg works with sparse as well as with dense matrices
39
- just like above, these should not be neccessary in general.
40
41
In GaussForHomalg.gi the methods for matrix entry manipulation are
42
installed.
43
44
Finally, we come to the most important files, making sense of the basic
45
functions and tools defined above. Depending on the functionality
46
(especially concerning function names) of the system you will need different
47
files for different rings. In this case, functionality for ℤ / n ℤ is stored
48
in GaussFQI.gi (Finite Quotients of the Integers), while the Rationals have
49
their own file, GaussRationals.gi. Note that both files include only one
50
method, CreateHomalgTable, using method selection to create the correct
51
table. Depending on the properties of the ring, the basic functions are
52
loaded and some more "specific" functions can be defined, in this case for
53
example the function RowReducedEchelonForm (3.2-5), both in a one- and a
54
two-argument version. The tools should be universal enough to be loaded for
55
every possible ring. If it is neccessary to overwrite a tool, this is the
56
place to do it. An example for this could be Involution (3.1-5), which is
57
generally just a matrix transposition, but could be overwritten to be a true
58
involution when creating the homalg table for noncommutative rings.
59
60
61