I see. It does make sense that the zero vector behaves as you describe, unfortunately.
My goal was to replicate ITensor’s correlation_function method for an MPS that does not represent a pure state but a mixed one, as in “Eigen currently only supports block diagonal matrices.” when applying an MPO to a MPS with QNs. For this kind of object I defined custom methods to compute expectation values, using the trace and such instead of the usual inner product. The correlation matrix would be defined using these new methods.
Since I’m dealing with fermions, I use the OpSum → MPO method to construct the observable so that I don’t have to put in Jordan-Wigner strings by hand. That’s why I’m using apply in this situation.