Green's function via method:apply(Jordan-wigner..."Cdagup"|0>)

,

Hello there,

I was planning to compute greater and lesser Green’s functions for an tight binding model I was intereseted in. After some try and error, I noticed my implementation was lagging the Jordan Wigner string operators (JW) to respect the fermionic statistics. I did so in the following code

using ITensors, ItensorsMPW

function yield_proper_Cdag_(sites, j)


    JW_dagup_j = ITensor[]
    JW_up_j = ITensor[]
    JW_dagdn_j = ITensor[]
    JW_dn_j = ITensor[]

    push!(JW_dagup_j, op(sites, "Cdagup", j)) #creation
    push!(JW_dagdn_j, op(sites, "Cdagdn", j)) #creation

    push!(JW_dn_j, op(sites, "F", j)) #additional JW for creation spin_dn
    for k in 1:(j-1)
        push!(JW_up_j, op(sites, "F", k)) 
        push!(JW_dn_j, op(sites, "F", k)) 
        push!(JW_dagup_j, op(sites, "F", j-k)) #reversed order due to ^dagger
        push!(JW_dagdn_j, op(sites, "F", j-k)) #reversed order due to ^dagger
    end
    push!(JW_dn_j, op(sites, "F", j))  #additional JW for annihilation spin_dn

    push!(JW_up_j, op(sites, "Cup", j))
    push!(JW_dn_j, op(sites, "Cdn", j))

    
    return JW_dagup_j, JW_dagdn_j, JW_up_j, JW_dn_j
end

However, I was told, that there are implementation procedures, which already engage at least the local parity behavior. This would otherwise be fixed by adding an JW-Operator on the actual site, where an “Cdn” is added (that corresbosnds to the two push! statements right before and after my Code example).

My question is therefore:
Does the ITensor implementation already fix the local behaviour, or am I supposed to add the additional ones?

Note:
I am not using the MPO method, since I have to apply a “C(dag)” operator to perform time evolution for my calculation of Greens functions. I am also open for better suggestions to implement this too :).