Hi! I am doing some simulations with conserved quantum numbers. I am interested in computing the two-operator correlation functions. I was basing on this tutorial:

http://itensor.org/docs.cgi?vers=cppv3&page=tutorials/correlations

My code for the Sx*i Sx*j correlation looks as follows

```
auto first = [...] // This is just index of the first site
auto second = [...] // This is just index of the other site
//
// Calculate the ⟨Sx_i Sx_j⟩ (nearest-neighbor spin-spin interaction).
//
// Re-gauge psi to get ready to measure at 'first' position.
psi.position(first);
// Get the site index without QNs
auto sj_first = removeQNs(sites(first));
auto sj_second = removeQNs(sites(second));
// Create a SpinOneSite from the Index
// without QNs to use in the op function
auto op_first_x = op(SpinOneSite(sj_first),"Sx");
auto op_second_x = op(SpinOneSite(sj_second),"Sx");
// Create the bra/dual version of the MPS psi.
auto psidag = dag(psi);
// Prime the link indices to make them distinct from the original ket links.
psidag.prime("Link");
// Index linking 'first'-1 to 'first':
auto li_1 = leftLinkIndex(psi,first);
auto C = prime(psi(first),li_1)*op_first_x;
C *= prime(psidag(first),"Site");
for (int k = first+1; k < second; ++k) {
C *= psi(k);
C *= psidag(k);
}
// Index linking 'second' to 'second'+1:
auto lj = rightLinkIndex(psi,second);
C *= prime(psi(second),lj)*op_second_x;
C *= prime(psidag(second),"Site");
auto spin_spin_inter_x = elt(C); // <-- final value that I wanted to compute
```

Is my approach correct? Or maybe I should also remove QNs on the sites between `first`

and `second`

?