Hi everyone!

I am sorry for asking a rather generic question not directly related to the ITensor code: I am working on applications of MPS to quantum chemistry and for my code I need a couple of features (e.g. autodifferentiation) which are not (yet?) implemented in ITensor — however, I very much hope that I am not asking something completely unrelated and it would still be possible to find an answer within the community.

Roughly my question is as follows: **given an arbitrary MPS representing an N qubit system (i.e. site tensors are initialised randomly and bond dimensions are consequtive powers of 2) is there any way to project this MPS onto a particular symmetry sector? (say, corresponding to some particular value of a quantum number).**

By "projection" I mean such transformation of site tensors that (i) the transformed MPS assigns zero amplitude to those vectors of computational basis which do not belong to a chosen symmetry sector; (ii) amplitudes of vectors of computational basis belonging to the symmetry sector remain the same as given by the non-transformed MPS.

I know that if an MPS belongs to a particular symmetry sector, then its site tensors have block structure (which can be exploited to speed up the computations, improve the convergence etc.). Hence, I can imagine that the projection sought might be as simple as dropping some blocks of site tensors and keeping the others, but so far I can't figure out what has to be done.

Also, the situation here is somewhat different to the conventional use case of symmetries: if I got it right, when one needs to get a random MPS belonging to a certain symmetry sector, they start from a random low-entangled state belonging to the chosen sector, and then increase the bond dimension by entanglement-growing operations — the resulting MPS has the block structure thanks to the fact that we know how to perform common TN operations and keep the block structure. Here I already have an MPS and I want to keep all values of its "correct" amplitudes the same.

Finally, I shall mention that for my particular type of symmetry I can construct an MPO which would represent *the actual projector operator* to the symmetry sector, but I am not so keen on doing this as it will increase my bond dimensions quite significantly.

Thanks to whoever might join the discussion!

P.S. Sorry for a long and rather contrived question, I am just the only person working on this topic in my research group and I don't have anyone to chat about it — so I decided to seek help here, especially because I saw a couple of questions similar to mine.