I recommend exploiting  new and powerful  [capabilities][1] of _Mathematica 9_.  

When we deal with **symbolic tensors** sometimes we would like to assume special properties of tensors like their specific symmetries, dimensions etc. because most of tensor equations of mathematical physics (Maxwell, Yang-Mills, Einstein etc.) involve special symmetries of underlying tensors and one would substantially simplify symbolic processing if one assumed appropriate symmetries from scratch. For this purpose one may use `$Assumptions`, however there were rather few questions explicitly asking about them (see e.g. [How to declare a 3D vector variable?](https://mathematica.stackexchange.com/questions/25820/how-to-declare-a-3d-vector-variable) or [Can Mathematica do symbolic linear algebra?](https://mathematica.stackexchange.com/questions/3242/can-mathematica-do-symbolic-linear-algebra)). 

We can define a general tensor product of tensor `v` with `LeviCivitaTensor[3]`: 

    tp[v_]:= TensorProduct[ v, LeviCivitaTensor[3]]

and also an appropriate tensor contraction of a tensor, namely we need to contract the tensor product `tp`  having `6` indicies in their appropriate pairs, namely `{1, 4}, {2, 5}` and `{3, 6}`:

    tc[v_]:= TensorContract[ TensorProduct[ v, LeviCivitaTensor[3]],
                             {{1, 4}, {2, 5}, {3, 6}}] 

when we have defined a tensor `v`. e.g.:

    v = RandomInteger[{-10, 10}, {3, 3, 3}]
>     {{{8, 4, -4}, {2, -2, 4}, {-1, 9, -8}},
     {{-9, -7, 8}, {-9, -4, 5}, {-9, 2, -7}}, 
     {{-7, 10, -4}, {-5, 9, -9}, {-4, 6, 5}}}

    tc[ v, {{1, 4}, {2, 5}, {3, 6}}]
>     -7


Tensor contraction of a tensor product can be performed also  using `Inner` or in an obvious (more procedural) way, using  `Sum`, `Part` and `Times` (see e.g. [How to calculate scalar curvature Ricci tensor and Christoffel symbols in Mathematica?](https://mathematica.stackexchange.com/questions/8895/how-to-calculate-scalar-curvature-ricci-tensor-and-christoffel-symbols-in-mathem/8908#8908) for more extensive usage of the latter approach) :

    Sum[ v[[i, j, k]] LeviCivitaTensor[3][[i, j, k]], {i, 3}, {j, 3}, {k, 3}]
>     -7

A bit a simpler example of tensor contraction is e.g. a trace of a matrix (an operator in appropriate basis) `m`:
 

    m = RandomInteger[{-10, 10}, {3, 3}]
>     {{ 9, 3, -8}, 
     {-2, 4, -6}, 
     { 9, 1, -7}}

We can see that the result should be `6`. We can contract it with respect to the first and the second indicies , i.e. using `{ 1, 2}` as the second argument in `TensorContract` or `Tr` or simply computing the sum of diagonal elements:

    TensorContract[ m, {1, 2}]
    Tr @ m == TensorContract[ m, {1, 2}] 
>      6
     True 


  [1]: http://reference.wolfram.com/mathematica/guide/SymbolicTensors.html