In my work, I found it necessary to create an abstract `TensorAlgebra`

type. Searching on github, I found that many others had also devised some sort of `AsbtractTensor`

concept.

As a multilinear map, a tensor is defined on a `VectorSpace`

. To facilitate compile-time operations with various different `VectorSpace`

instances encountered, I created the `DirectSum`

package:

In order to manage the interoperability of `TensorAlgebra{V}`

elements over `V`

(a `VectorSpace`

) it was natural to make these abstractions available separately from the specific implementations. In this case, my original applications were for constructing the Grassmann.jl exterior tensor product algebra, wich required a dispatch bypass in the scope of Reduce.jl module `Reduce.Algebra`

. Thus,

Together, this can provide a unified abstract type root for arbitrary `TensorAlgebra`

dispatch.

By itself, this package does not impose any structure or specifications on the `TensorAlgebra{V}`

subtypes and elements, aside from requiring `V`

to be a `VectorSpace`

. This means that different packages can create special types of tensors with shared method names and a common underlying `VectorSpace`

structure.

These two packages have been registered and are now available for use. Although primarily intended for the implementation of the `Grassmann`

package, it is my hope that perhaps the `AbstractTensors`

and `DirectSum`

packages could help towards making a universal `TensorAlgebra{V}`

abstraction.

If any other developers are interested in this `VectorSpace`

and `TensorAlgebra`

abstraction layer, I would be interested to see any discussions or feedback concerning it. This project tracks related issues.