Hi Anupam,
Yes, raising and lowering indices of tensors is a core part of xAct, sometimes performed automatically and sometimes when instructed with the function ContractMetric.
With abstract tensors you can do something like this:
<< xAct`xTensor`
DefManifold[M, 4, {a, b, c, d}]
DefTensor[T[a, -b], M]
DefMetric[-1, g[-a, -b], cd]
In[5]:= ContractMetric[T[a, -b] g[-a, -c]]
Out[5]= T[-c, -b]
In[6]:= ContractMetric[T[a, -b] g[-a, -c] g[b, d]]
Out[6]= T[-c, d]
Undefine the metric, because we will use a different metric for the component example below:
UndefMetric[g]
With component tensors you can do something like this:
<< xAct`xCoba`
DefChart[cart, M, {0, 1, 2, 3}, {t[], x[], y[], z[]}]
Introduce a component metric in that chart, in this case a simple diagonal matrix:
met = CTensor[DiagonalMatrix[{-1, 1, 1, 1}], {-cart, -cart}]
SetCMetric[met, cart]
Take this tensor defined by components:
S = CTensor[RandomInteger[{-10, 10}, {4, 4}], {cart, -cart}]
You can now work with it in any up/down configurations of its indices:
S[b, -c]
S[-b, -c]
S[b, c]
Cheers,
Jose.