72.2 More about Vector Enumeration

As stated in the introduction to this chapter, VE is a share library package. The computations are done by standalone programs written in C.

The interface between VE and GAP consists essentially of two parts, namely the global variable VE, and the function FpAlgebraOps.OperationQuotientModule.

The VE record

VE is a record with components

Path:

the full path name of the directory that contains the executables of the standalones me, qme, zme,

options:

a string with command line options for VE; it will be appended to the command string of CallVE (see below), so the default options chosen there can be overwritten. This may be useful for example in case of the -v option to enable the printing of comments (see section 4.3 of~Lin93), but you should not change the output file (using -o) when you simply call Operation for a finitely presented algebra. options is defaulted to the empty string.

FpAlgebraOps.OperationQuotientModule

This function is called automatically by FpAlgebraOps.Operation (see Operation for Finitely Presented Algebras), it can also be called directly as follows.

FpAlgebraOps.OperationQuotientModule( A, Q, opr )
FpAlgebraOps.OperationQuotientModule( A, Q, "mtx" )

It takes a finitely presented algebra A and a list of submodule generators Q, that is, the entries of Q are list of equal length, with entries in A, and returns the matrix representation computed by the VE program.

The third argument must be either one of the operations OnPoints, OnRight, or the string "mtx". In the latter case the output will Using Vector Enumeration with the MeatAxe for further explanation.

Accessible Subroutines

The following three functions are used by FpAlgebraOps.OperationQuotientModule. They are the real interface that allows to access VE from GAP.

PrintVEInput( A, Q, names )

takes a finitely presented algebra A, a list of submodule generators Q, and a list names of names the generators shall have in the presentation that is passed to VE, and prints a string that represents the input presentation for VE. See section 3.1 of the VE manual~Lin93 for a description of the syntax.

    gap> PrintVEInput( a, [ [ a.zero ] ], [ "A", "B" ] );
    2.
    A B .
    .
    .
    {1}(0).
    A*A, B*B, :
    A*B+B*A = 0, .  

CallVE( commandstr, infile, outfile, options )

calls VE with command string commandstr, presentation file infile, and command line options options, and prescribes the output file outfile.

If not overwritten in the string options, the default options "-i -P -v0 -Y VE.out -L# " are chosen.

Of course it is not necessary that infile was produced using PrintVEInput, and also the output is independent of GAP.

    gap> PrintTo( "infile.pres",
    >             PrintVEInput( a, [ [ a.zero ] ], [ "A", "B" ] ) );
    gap> CallVE( "me", "infile", "outfile", " -G -vs2" ); 

(The option -G sets the output format to GAP, -vs2 chooses a more verbose mode.)

VEOutput( A, Q, names, outfile )
VEOutput( A, Q, names, outfile, "mtx" )

returns the output record produced by VE that was written to the file outfile. A component operation is added that contains the information for the construction of the operation homomorphisms.

The arguments A, Q, names describe the finitely presented algebra, the quotient module it acts on, and the chosen generators names, i.e., the original structures for that VE was called.

    gap> out:= VEOutput( a, [ [ a.zero ] ], [ "A", "B" ], "outfile" );;
    gap> out.dim; out.operation.moduleinfo.preimagesBasis;
    4
    [ [ a.one ], [ a.2 ], [ a.1 ], [ a.1*a.2 ] ] 

If the optional fifth argument "mtx" is present, the output is regarded Using Vector Enumeration with the MeatAxe). For that, an appropriate command string had to be passed to CallVE.

Previous Up Top Next
Index

GAP 3.4.4
April 1997