When starting with an InfiniteMPS from tensors that are not full rank, the gauging algorithm does not necessarily lead to square CR tensors. If this happens at the edges of the unitcell, IDMRG2 fails because it takes an inverse of C which is not square.
In general, there are many subtle problems for MPS tensors that aren't full rank, so I think we should both add an explicit check in the InfiniteMPS constructor that prohibits this, as well as provide a mechanism for creating full rank MPS tensors from non-full rank ones.
When starting with an InfiniteMPS from tensors that are not full rank, the gauging algorithm does not necessarily lead to square
CR
tensors. If this happens at the edges of the unitcell, IDMRG2 fails because it takes an inverse ofC
which is not square.In general, there are many subtle problems for MPS tensors that aren't full rank, so I think we should both add an explicit check in the InfiniteMPS constructor that prohibits this, as well as provide a mechanism for creating full rank MPS tensors from non-full rank ones.
partial stack trace for completeness: