Given an iMPS \(|s \rangle \), is it possible to construct an MPO corresponding to \(\hat{O} = | s \rangle \langle s |\)?
Ultimately, what I would like to do is given two iMPS objects \(|s \rangle\), and \(|t \rangle\), evaluate the Grover operator
\(\hat{U}_s|t \rangle = 2 \langle s | t \rangle \ |s \rangle - | t \rangle\). Since the add method of tenpy.networks.mps.MPS does not work for iMPS, I am attempting to construct the Grover operator as an MPO.
How do I calculate an MPO using an iMPS
Re: How do I calculate an MPO using an iMPS
This is ill-defined for infinite systems: The overlap \(\braket{s | t}\) for any two iMPS which do not represent exactly the same state goes to 0 in the the thermodynamic limit (or to infinity, if you don't have normalized MPS.).
Also, you generally don't want to write down "cat state" superpositions \(\alpha \ket{s} + \beta \ket{t}\) with infinite MPS: the transfer matrix of that iMPS would have two independent eigenvectors with eigenvalue 1, so the boundary conditions infinitely far away do matter to determine which (superposition of those two) states you actually have and affect local expectation values. In our numerics, we don't want to have this ambiguity.
Also, you generally don't want to write down "cat state" superpositions \(\alpha \ket{s} + \beta \ket{t}\) with infinite MPS: the transfer matrix of that iMPS would have two independent eigenvectors with eigenvalue 1, so the boundary conditions infinitely far away do matter to determine which (superposition of those two) states you actually have and affect local expectation values. In our numerics, we don't want to have this ambiguity.