54.3 Free Modules

  • IsFreeLeftModule( M ) C

    A left module is free as module if it is isomorphic to a direct sum of copies of its left acting domain.

    Free left modules can have bases.

    The characteristic (see Characteristic) of a free left module is defined as the characteristic of its left acting domain (see LeftActingDomain).

  • FreeLeftModule( R, gens ) F
  • FreeLeftModule( R, gens, zero ) F
  • FreeLeftModule( R, gens, "basis" ) F
  • FreeLeftModule( R, gens, zero, "basis" ) F

    FreeLeftModule( R, gens ) is the free left module over the ring R, generated by the vectors in the collection gens.

    If there are three arguments, a ring R and a collection gens and an element zero, then FreeLeftModule( R, gens, zero ) is the R-free left module generated by gens, with zero element zero.

    If the last argument is the string "basis" then the vectors in gens are known to form a basis of the free module.

    It should be noted that the generators gens must be vectors, that is, they must support an addition and a scalar action of R via left multiplication. (See also Section Constructing Domains for the general meaning of ``generators'' in GAP.) In particular, FreeLeftModule is not an equivalent of commands such as FreeGroup (see FreeGroup) in the sense of a constructor of a free group on abstract generators; Such a construction seems to be unnecessary for vector spaces, for that one can use for example row spaces (see FullRowSpace) in the finite dimensional case and polynomial rings (see PolynomialRing) in the infinite dimensional case. Moreover, the definition of a ``natural'' addition for elements of a given magma (for example a permutation group) is possible via the construction of magma rings (see Chapter Magma Rings).

    gap> V:= FreeLeftModule( Rationals, [ [ 1, 0, 0 ], [ 0, 1, 0 ] ], "basis" );
    <vector space of dimension 2 over Rationals>
    

  • AsFreeLeftModule( F, D ) O

    if the domain D is a free left module over F, then AsFreeLeftModule( F, D ) returns the domain D viewed as free left module over F.

  • Dimension( M ) A

    A free left module has dimension n if it is isomorphic to a direct sum of n copies of its left acting domain.

    (We do not mark Dimension as invariant under isomorphisms since we want to call UseIsomorphismRelation also for free left modules over different left acting domains.)

    gap> V:= FreeLeftModule( Rationals, [ [ 1, 0 ], [ 0, 1 ], [ 1, 1 ] ] );;       
    gap> Dimension( V );
    2
    

  • IsFiniteDimensional( M ) P

    is true if M is a free left module that is finite dimensional over its left acting domain, and false otherwise.

    gap> V:= FreeLeftModule( Rationals, [ [ 1, 0 ], [ 0, 1 ], [ 1, 1 ] ] );;
    gap> IsFiniteDimensional( V );
    true
    

  • UseBasis( V, gens ) O

    The vectors in the list gens are known to form a basis of the free left module V. UseBasis stores information in V that can be derived form this fact, namely

    -
    gens are stored as left module generators if no such generators were bound (this is useful especially if V is an algebra),
    -
    the dimension of V is stored.

    gap> V:= FreeLeftModule( Rationals, [ [ 1, 0 ], [ 0, 1 ], [ 1, 1 ] ] );;
    gap> UseBasis( V, [ [ 1, 0 ], [ 1, 1 ] ] );
    gap> V;
    <vector space of dimension 2 over Rationals> # now V knows its dimension
    

  • IsRowModule( V ) P

    A row module is a free left module whose elements are row vectors.

  • IsMatrixModule( V ) P

    A matrix module is a free left module whose elements are matrices.

  • IsFullRowModule( M ) P

    A full row module is a module Rn, for a ring R and a nonnegative integer n.

    More precisely, a full row module is a free left module over a ring R such that the elements are row vectors with entries in R and such that the dimension is equal to the length of the row vectors.

    Several functions delegate their tasks to full row modules, for example Iterator and Enumerator.

  • FullRowModule( R, n ) F

    is the row module R^n, for a ring R and a nonnegative integer n.

    gap> V:= FullRowModule( Integers, 5 );
    ( Integers^5 )
    

  • IsFullMatrixModule( M ) P

    A full matrix module is a module R[m,n], for a ring R and two nonnegative integers m, n.

    More precisely, a full matrix module is a free left module over a ring R such that the elements are matrices with entries in R and such that the dimension is equal to the number of entries in each matrix.

  • FullMatrixModule( R, m, n ) F

    is the row module R^[m,n], for a ring R and nonnegative integers m and n.

    gap> FullMatrixModule( GaussianIntegers, 3, 6 );
    ( GaussianIntegers^[ 3, 6 ] )
    

  • IsHandledByNiceBasis( M ) C

    For a free left module M in this category, essentially all operations are performed using a ``nicer'' free left module, which is usually a row module.

    [Top] [Previous] [Up] [Index]

    GAP 4 manual
    February 2000