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: 418346<?xml version="1.0" encoding="UTF-8"?>12<!--34usage.xml GaussForHomalg package documentation Simon Goertzen567Copyright (C) 2007-2008, Lehrstuhl B für Mathematik, RWTH-Aachen89This chapter explains the usage of this package.1011-->1213<Chapter Label="usage">14<Heading>Usage</Heading>1516If you are just interested in using the &Gauss; package with &homalg;,17you do not need to know much about &GaussForHomalg;, as it will work18in the background, telling &homalg; which functions to call.<P/>1920However, you might be interested in writing your own21<Package>XyzForHomalg</Package>, enabling &homalg; to assist you with22your computations. For this purpose, I will provide an overview of the23&GaussForHomalg; code. Please note that &Gauss; is a &GAP; package,24therefore this is not a reference guide for the package25&RingsForHomalg;, which utilizes the IO-stream functionality of &IO_ForHomalg;26to send commands to external computer algebra systems. If you wish to27tie an external system to &homalg;, &RingsForHomalg; is the better28reference package.<P/>2930The file for all low-level operations is <F>GaussTools.gi</F>. Like31all "Tools" files it just includes one global variable32<C>CommonHomalgTableForGaussTools</C>, which is a record of functions33with &homalg; matrices as arguments. The return values of the34&GaussForHomalg; tools are documented in <Ref Label="methods"/> and35have to be the same for each tools table.<P/>3637In this particular case, the file also includes the following38code:<P/>3940<Listing>if IsBound( HOMALG.OtherInternalMatrixTypes ) then41Add( HOMALG.OtherInternalMatrixTypes, IsSparseMatrix );42else43HOMALG.OtherInternalMatrixTypes := [ IsSparseMatrix ];44fi;</Listing>4546This is a specialty to explain to &homalg; that &Gauss; introduces a47new matrix type in &GAP;. Usually, there should not be a need for this.<P/>4849The next "general" file is <F>GaussBasic.gi</F>. This includes the50basic functions based on <Cite Key="BR"/>, again stored in the global51record <C>CommonHomalgTableForGaussBasic</C>. Preceding this record52are some small methods to make sure &GaussForHomalg; works with sparse53as well as with dense matrices - just like above, these should not be54neccessary in general.<P/>5556In <F>GaussForHomalg.gi</F> the methods for matrix entry manipulation57are installed.<P/>5859Finally, we come to the most important files, making sense of the60basic functions and tools defined above. Depending on the61functionality (especially concerning function names) of the system you62will need different files for different rings. In this case,63functionality for <M>&ZZ; / n &ZZ;</M> is stored in <F>GaussFQI.gi</F>64(Finite Quotients of the Integers), while the Rationals have their own65file, <F>GaussRationals.gi</F>. Note that both files include only one66method, <C>CreateHomalgTable</C>, using method selection to create the67correct table. Depending on the properties of the ring, the basic68functions are loaded and some more "specific" functions can be69defined, in this case for example the function70<Ref Func="RowReducedEchelonForm"/>, both in a one- and a two-argument71version. The tools should be universal enough to be loaded for every72possible ring. If it is neccessary to overwrite a tool, this is the73place to do it. An example for this could be <Ref Func="Involution"/>,74which is generally just a matrix transposition, but could be75overwritten to be a true involution when creating the &homalg; table76for noncommutative rings.7778</Chapter>798081