def test_NO(): i,j,k,l = symbols('ijkl',below_fermi=True) a,b,c,d = symbols('abcd',above_fermi=True) p,q,r,s = symbols('pqrs', dummy=True) assert (NO(Fd(p)*F(q) + Fd(a)*F(b))== NO(Fd(p)*F(q)) + NO(Fd(a)*F(b))) assert (NO(Fd(i)*NO(F(j)*Fd(a))) == NO(Fd(i)*F(j)*Fd(a))) assert NO(1) == 1 assert NO(i) == i assert (NO(Fd(a)*Fd(b)*(F(c)+F(d))) == NO(Fd(a)*Fd(b)*F(c)) + NO(Fd(a)*Fd(b)*F(d))) assert NO(Fd(a)*F(i))._remove_brackets()==Fd(a)*F(i) assert NO(Fd(a)*F(b))._remove_brackets()==Fd(a)*F(b) assert NO(F(j)*Fd(i))._remove_brackets()==F(j)*Fd(i) assert (NO(Fd(p)*F(q)).subs(Fd(p),Fd(a)+Fd(i)) == NO(Fd(a)*F(q)) + NO(Fd(i)*F(q))) assert (NO(Fd(p)*F(q)).subs(F(q),F(a)+F(i)) == NO(Fd(p)*F(a)) + NO(Fd(p)*F(i))) expr = NO(Fd(p)*F(q))._remove_brackets() assert wicks(expr) == NO(expr) assert NO(Fd(a)*F(b)) == - NO(F(b)*Fd(a)) no = NO(Fd(a)*F(i)*Fd(j)*F(b)) assert no[0] == Fd(a) assert no[1] == F(i) assert no[2] == Fd(j) assert no[3] == F(b) l1 = [ ind for ind in no.iter_q_creators() ] assert l1 == [0,1] l2 = [ ind for ind in no.iter_q_annihilators() ] assert l2 == [3,2] assert no.get_subNO(1) == NO(Fd(a)*Fd(j)*F(b))
def test_NO(): i, j, k, l = symbols('ijkl', below_fermi=True) a, b, c, d = symbols('abcd', above_fermi=True) p, q, r, s = symbols('pqrs', dummy=True) assert (NO(Fd(p) * F(q) + Fd(a) * F(b)) == NO(Fd(p) * F(q)) + NO(Fd(a) * F(b))) assert (NO(Fd(i) * NO(F(j) * Fd(a))) == NO(Fd(i) * F(j) * Fd(a))) assert NO(1) == 1 assert NO(i) == i assert (NO(Fd(a) * Fd(b) * (F(c) + F(d))) == NO(Fd(a) * Fd(b) * F(c)) + NO(Fd(a) * Fd(b) * F(d))) assert NO(Fd(a) * F(i))._remove_brackets() == Fd(a) * F(i) assert NO(Fd(a) * F(b))._remove_brackets() == Fd(a) * F(b) assert NO(F(j) * Fd(i))._remove_brackets() == F(j) * Fd(i) assert (NO(Fd(p) * F(q)).subs(Fd(p), Fd(a) + Fd(i)) == NO(Fd(a) * F(q)) + NO(Fd(i) * F(q))) assert (NO(Fd(p) * F(q)).subs(F(q), F(a) + F(i)) == NO(Fd(p) * F(a)) + NO(Fd(p) * F(i))) expr = NO(Fd(p) * F(q))._remove_brackets() assert wicks(expr) == NO(expr) assert NO(Fd(a) * F(b)) == -NO(F(b) * Fd(a)) no = NO(Fd(a) * F(i) * Fd(j) * F(b)) assert no[0] == Fd(a) assert no[1] == F(i) assert no[2] == Fd(j) assert no[3] == F(b) l1 = [ind for ind in no.iter_q_creators()] assert l1 == [0, 1] l2 = [ind for ind in no.iter_q_annihilators()] assert l2 == [3, 2] assert no.get_subNO(1) == NO(Fd(a) * Fd(j) * F(b))