Oh! I see!
The tricky part is in this constructor:
template <class Tensor>
idmrgRVal<Tensor>
idmrg(MPSt<Tensor> & psi,
MPOt<Tensor> const& H,
Sweeps const& sweeps,
DMRGObserver<Tensor> & obs,
Args const& args)
{
auto lval = idmrgRVal<Tensor>();
lval.IL = Tensor(dag(H.A(H.N()+1)));
return idmrg(psi,H,lval,sweeps,obs,args);
}
You start with the end of the finite state machine so all the multiplication of H are just multiplication of identity matrix. By doing so, the Index of the IL are identical to HL.
This is really a smart trick! Thank you for your explanation!