LabeledModule -- the class of free modules with a labeled basis

Description

A labeled module $F$ is a free module together with two additional pieces of data: a basisList which corresponds to the basis of $F$, and a list of underlyingModules which were used in the construction of $F$. The constructor labeledModule can be used to construct a labeled module from a free module. The call labeledModule E, where $E$ is a free module, returns a labeled module with basisList $\{1,\dots, rank E\}$ and underlyingModules $\{E\}$.ß

For example if $A,B$ are of type LabeledModule, then F=tensorProduct(A,B) constructs the LabeledModule $F=A\otimes B$ with basisList equal to the list of pairs $\{a,b\}$ where $a$ belongs to the basis list of $A$ and $b$ belongs to the basis list of $b$. The list of underlyingModules of $F$ is $\{A,B\}$.

Certain functors which are the identity in the category of modules are non-trivial isomorphisms in the category of labeled modules. For example, if F is a labeled module with basis list \{0,1\} then tensorProduct F is a labeled free module with basis list \{\{ 0\},\{ 1\}\} . Similarly, one must be careful when applying the functors exteriorPower and symmetricPower. For a ring $S$, the multiplicative unit for tensor product is the rank 1 free $S$-module whose generator is labeled by \{\} . This is constructed by labeledModule S.

Methods that use a free module with labeled basis :

• "basisList(LabeledModule)" -- see basisList -- gives the list used to label the basis elements of a labeled module
• "cauchyMap(ZZ,LabeledModule)" -- see cauchyMap -- produces one surjection from the Cauchy decomposition of the exterior power of a tensor product
• exteriorPower(ZZ,LabeledModule) -- Exterior power of a @TO LabeledModule@
• "fromOrdinal(ZZ,LabeledModule)" -- see fromOrdinal -- outputs the label of a basis element of a labeled module
• LabeledModule ** LabeledModule (missing documentation)
• LabeledModule == LabeledModule (missing documentation)
• map(LabeledModule,LabeledModule,Function) -- create a LabeledModuleMap by specifying a function that gives each entry
• map(LabeledModule,LabeledModule,LabeledModuleMap) -- creates a new LabeledModuleMap from a given LabeledModuleMap
• map(LabeledModule,LabeledModule,List) -- creates a LabeledModuleMap from a list
• map(LabeledModule,LabeledModule,Matrix) -- creates a LabeledModuleMap from a matrix
• map(LabeledModule,LabeledModule,ZZ) -- creates scalar multiplication by an integer as a LabeledModuleMap
• "minorsMap(LabeledModuleMap,LabeledModule)" -- see minorsMap -- creates a map of labeled free modules whose image is the minors of a map of labeled free modules
• "minorsMap(Matrix,LabeledModule)" -- see minorsMap -- creates a map of labeled free modules whose image is the minors of a map of labeled free modules
• module(LabeledModule) (missing documentation)
• net(LabeledModule) (missing documentation)
• rank(LabeledModule) (missing documentation)
• ring(LabeledModule) (missing documentation)
• "symmetricMultiplication(LabeledModule,ZZ,ZZ)" -- see symmetricMultiplication -- creates the symmetric multiplication map
• symmetricPower(ZZ,LabeledModule) -- Symmetric power of a @TO LabeledModule@
• "toOrdinal(Thing,LabeledModule)" -- see toOrdinal -- turns the label of a basis element of a labeled module into a corresponding ordinal
• "traceMap(LabeledModule)" -- see traceMap -- produces the trace map from a ring to a free module tensored with its dual
• "underlyingModules(LabeledModule)" -- see underlyingModules -- gives the list of underlying modules of a labeled module

For the programmer

The object LabeledModule is a type, with ancestor classes HashTable < Thing.