# TensorComplexes -- multilinear algebra for the construction of tensor complexes

## Description

A $b_1\times \cdots\times b_n$ tensor with coefficients in a ring S may be thought of as a multilinear linear form on $X := Proj(Spec S \times \mathbb P^{b_1-1}\times \cdots \times \mathbb P^{b_n-1})$. (If $S$ is graded, we may replace $Spec S$ by $Proj S$.)

This package provides a family of definitions around the notion of LabeledModule that makes it convenient to manipulate complicated multilinear constructions with tensors. We implement one such construction, that of Tensor Complexes, from the paper Tensor Complexes: Multilinear free resolutions constructed from higher tensors'' of Berkesch, Erman, Kummini and Sam (BEKS), which extends the construction of pure resolutions in the paper Betti numbers of graded modules and cohomology of vector bundles'' of Eisenbud and Schreyer. This itself is an instance of the technique of collapsing homogeneous vector bundles'' developed by Kempf and described, for example, in the book Cohomology of vector bundles and syzygies'' of Weyman.

Tensor complexes specialize to several well-known constructions including: the Eagon-Northcott and Buchsbaum-Rim complexes, and the others in this family described by Eisenbud and Buchsbaum (see Eisenbud Commutative algebra with a view towards algebraic geometry'', A2.6), and the hyperdeterminants of Weyman and Zelevinsky.

A collection of $a$ tensors of type $b_1\times \dots \times b_n$ may be regarded as a map $E := \mathcal O_X^a(-1,-1,\dots,-1) \to \mathcal O_X$ (with $X$ as above). Equivalently, we may think of this as a single $a \times b_1 \times \cdots \times b_n$ tensor.

One important construction made from such a collection of tensors is the Koszul complex $$\mathbf K := \cdots \to \wedge^2 (\oplus_1^a O_X(-1,\dots, -1)) \to \oplus_1^a O_X(-1,\dots, -1)\to O_X \to 0.$$ Let $\mathcal O_X(d, e_1,\dots e_n)$ be the tensor product of the pull-backs to $X$ of the line bundles $\mathcal O_{\mathbb P^n}(d)$ and $\mathcal O_{\mathbb P^{b_i-1}}(-1)$. If we twist the Koszul complex by $O_X(0, -w_1, \dots -w_n)$ and then push it forward to $Spec S$ we get the tensor complex $F(\phi,w)$ of BEKS.

Each map $\partial_i$ in the tensor complex can be defined by a rather involved construct in multilinear algebra. This package implements the construction of $\partial_1$ in the range of cases described explicitly in BEKS (Sections 4 and 12). This range includes the hyperdeterminants of boundary format, the construction of the first map of the pure resolutions of Eisenbud-Schreyer, and the first map in most of the much larger family of generic pure resolutions of BEKS.

## Version

This documentation describes version 1.0 of TensorComplexes.

## Source code

The source code from which this documentation is derived is in the file TensorComplexes.m2.

## Exports

• Types
• Functions and commands
• basisList -- gives the list used to label the basis elements of a labeled module
• cauchyMap -- produces one surjection from the Cauchy decomposition of the exterior power of a tensor product
• flattenedESTensor -- make a flattened tensor from elementary symmetric functions
• flattenedGenericTensor -- Make a generic tensor of given format
• fromOrdinal -- outputs the label of a basis element of a labeled module
• hyperdeterminant -- computes the hyperdeterminant of a boundary format tensor
• hyperdeterminantMatrix -- computes a matrix whose determinant equals the hyperdeterminant of a boundary format tensor
• labeledModule -- makes a labeled module
• minorsMap -- creates a map of labeled free modules whose image is the minors of a map of labeled free modules
• multiSubsets -- produce all subsets of a given size, allowing repetitions
• pureResES -- constructs the Eisenbud--Schreyer pure resolution of a given type
• pureResES1 -- computes the first map of the Eisenbud--Schreyer pure resolution of a given type
• pureResTC -- constructs the balanced tensor complex of a given type
• pureResTC1 -- computes the first map of a balanced tensor complex with pure resolution of a given type
• symmetricMultiplication -- creates the symmetric multiplication map
• tensorComplex1 -- computes the first map of the tensor complex
• tensorProduct -- tensor product of Modules and LabeledModules, Matrices, Maps and LabeledModuleMaps
• toOrdinal -- turns the label of a basis element of a labeled module into a corresponding ordinal
• traceMap -- produces the trace map from a ring to a free module tensored with its dual
• underlyingModules -- gives the list of underlying modules of a labeled module
• Methods
• "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@
• "flattenedGenericTensor(List,Ring)" -- see flattenedGenericTensor -- Make a generic tensor of given format
• "fromOrdinal(ZZ,LabeledModule)" -- see fromOrdinal -- outputs the label of a basis element of a labeled module
• "hyperdeterminant(LabeledModuleMap)" -- see hyperdeterminant -- computes the hyperdeterminant of a boundary format tensor
• "hyperdeterminantMatrix(LabeledModuleMap)" -- see hyperdeterminantMatrix -- computes a matrix whose determinant equals the hyperdeterminant of a boundary format tensor
• "labeledModule(Module)" -- see labeledModule -- makes a labeled module
• "labeledModule(Ring)" -- see labeledModule -- makes a labeled module
• 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
• "multiSubsets(List,ZZ)" -- see multiSubsets -- produce all subsets of a given size, allowing repetitions
• "multiSubsets(ZZ,ZZ)" -- see multiSubsets -- produce all subsets of a given size, allowing repetitions
• source(LabeledModuleMap) -- the source of a map of a labeled modules
• "symmetricMultiplication(LabeledModule,ZZ,ZZ)" -- see symmetricMultiplication -- creates the symmetric multiplication map
• symmetricPower(ZZ,LabeledModule) -- Symmetric power of a @TO LabeledModule@
• target(LabeledModuleMap) -- the target of a map of a labeled modules
• tensor(LabeledModule,LabeledModule) -- creates the tensor product of two labeled modules, as a labeled module
• tensor(LabeledModuleMap,LabeledModuleMap) -- creates the tensor product of two maps of labeled modules, as a map of labeled module
• "tensorComplex1(LabeledModuleMap)" -- see tensorComplex1 -- computes the first map of the tensor complex
• "tensorComplex1(LabeledModuleMap,List)" -- see tensorComplex1 -- computes the first map of the tensor complex
• "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
• Symbols
• MonSize (missing documentation)

## For the programmer

The object TensorComplexes is .