Esempio n. 1
0
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))
Esempio n. 2
0
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))