1%
2% Bug in noncom2 package: redefinition of ordp
3% Petrov Alexander, Aug 2013
4%
5
6on intstr$
7
8load_package noncom2;
9
10
11operator a,ac;
12noncom a,a;
13noncom ac,ac;
14noncom a,ac;
15
16for all i let a(i)*ac(i) = 1 - ac(i)*a(i);
17for all i,j such that i neq j let a(i)*ac(j) = -ac(j)*a(i);
18for all i,j such that ordp(i,j) let a(i)*a(j) = -a(j)*a(i);
19for all i,j such that ordp(i,j) let ac(i)*ac(j) = -ac(j)*ac(i);
20
21operator a2,a2c;
22noncom a2,a2;
23noncom a2c,a2c;
24noncom a2,a2c;
25
26for all i let a2(i)*a2c(i) = 1 - a2c(i)*a2(i);
27for all i,j such that i neq j let a2(i)*a2c(j) = -a2c(j)*a2(i);
28for all i,j such that ordp(i,j) let a2(i)*a2(j) = -a2(j)*a2(i);
29for all i,j such that ordp(i,j) let a2c(i)*a2c(j) = -a2c(j)*a2c(i);
30
31
32operator !H;
33!H := !J1*ac(i)*a(i+1) + !J1*ac(i+1)*a(i);
34
35operator !U,!U!T,!V,!V!T;
36
37sub_fermi := { a(~i) => !U(i,j1)*a2(j1) + !V(i,j1)*a2c(j1),
38                 ac(~i) => !V!T(i,j2)*a2(j2) + !U!T(i,j2)*a2c(j2) };
39!H2 :=  (!H where sub_fermi);
40on factor;
41!H2;
42
43end;
44