Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
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
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X2 [33X[0;0YUsage[133X[101X23[33X[0;0YIf you are just interested in using the [5XGauss[105X package with [5Xhomalg[105X, you do4not need to know much about [5XGaussForHomalg[105X, as it will work in the5background, telling [5Xhomalg[105X which functions to call.[133X67[33X[0;0YHowever, you might be interested in writing your own [5XXyzForHomalg[105X, enabling8[5Xhomalg[105X to assist you with your computations. For this purpose, I will9provide an overview of the [5XGaussForHomalg[105X code. Please note that [5XGauss[105X is a10[5XGAP[105X package, therefore this is not a reference guide for the package11[5XRingsForHomalg[105X, which utilizes the IO-stream functionality of [5XIO_ForHomalg[105X12to send commands to external computer algebra systems. If you wish to tie an13external system to [5Xhomalg[105X, [5XRingsForHomalg[105X is the better reference package.[133X1415[33X[0;0YThe file for all low-level operations is [11XGaussTools.gi[111X. Like all "Tools"16files it just includes one global variable [10XCommonHomalgTableForGaussTools[110X,17which is a record of functions with [5Xhomalg[105X matrices as arguments. The return18values of the [5XGaussForHomalg[105X tools are documented in [14X3[114X and have to be the19same for each tools table.[133X2021[33X[0;0YIn this particular case, the file also includes the following code:[133X2223[4X[32X[104X24[4Xif IsBound( HOMALG.OtherInternalMatrixTypes ) then[104X25[4X Add( HOMALG.OtherInternalMatrixTypes, IsSparseMatrix );[104X26[4Xelse[104X27[4X HOMALG.OtherInternalMatrixTypes := [ IsSparseMatrix ];[104X28[4Xfi;[104X29[4X[32X[104X3031[33X[0;0YThis is a specialty to explain to [5Xhomalg[105X that [5XGauss[105X introduces a new matrix32type in [5XGAP[105X. Usually, there should not be a need for this.[133X3334[33X[0;0YThe next "general" file is [11XGaussBasic.gi[111X. This includes the basic functions35based on [BR08], again stored in the global record36[10XCommonHomalgTableForGaussBasic[110X. Preceding this record are some small methods37to make sure [5XGaussForHomalg[105X works with sparse as well as with dense matrices38- just like above, these should not be neccessary in general.[133X3940[33X[0;0YIn [11XGaussForHomalg.gi[111X the methods for matrix entry manipulation are41installed.[133X4243[33X[0;0YFinally, we come to the most important files, making sense of the basic44functions and tools defined above. Depending on the functionality45(especially concerning function names) of the system you will need different46files for different rings. In this case, functionality for [22Xℤ / n ℤ[122X is stored47in [11XGaussFQI.gi[111X (Finite Quotients of the Integers), while the Rationals have48their own file, [11XGaussRationals.gi[111X. Note that both files include only one49method, [10XCreateHomalgTable[110X, using method selection to create the correct50table. Depending on the properties of the ring, the basic functions are51loaded and some more "specific" functions can be defined, in this case for52example the function [2XRowReducedEchelonForm[102X ([14X3.2-5[114X), both in a one- and a53two-argument version. The tools should be universal enough to be loaded for54every possible ring. If it is neccessary to overwrite a tool, this is the55place to do it. An example for this could be [2XInvolution[102X ([14X3.1-5[114X), which is56generally just a matrix transposition, but could be overwritten to be a true57involution when creating the [5Xhomalg[105X table for noncommutative rings.[133X58596061