1%
2% Bug in noncom2 package: redefinition of ordp
3% Petrov Alexander, Aug 2013
4%
5
6on intstr$
7
8
9
10load_package noncom2;
11
12
13
14
15operator a,ac;
16
17
18noncom a,a;
19
20
21noncom ac,ac;
22
23
24noncom a,ac;
25
26
27
28for all i let a(i)*ac(i) = 1 - ac(i)*a(i);
29
30
31for all i,j such that i neq j let a(i)*ac(j) = -ac(j)*a(i);
32
33
34for all i,j such that ordp(i,j) let a(i)*a(j) = -a(j)*a(i);
35
36
37for all i,j such that ordp(i,j) let ac(i)*ac(j) = -ac(j)*ac(i);
38
39
40
41operator a2,a2c;
42
43
44noncom a2,a2;
45
46
47noncom a2c,a2c;
48
49
50noncom a2,a2c;
51
52
53
54for all i let a2(i)*a2c(i) = 1 - a2c(i)*a2(i);
55
56
57for all i,j such that i neq j let a2(i)*a2c(j) = -a2c(j)*a2(i);
58
59
60for all i,j such that ordp(i,j) let a2(i)*a2(j) = -a2(j)*a2(i);
61
62
63for all i,j such that ordp(i,j) let a2c(i)*a2c(j) = -a2c(j)*a2c(i);
64
65
66
67
68operator !H;
69
70
71!H := !J1*ac(i)*a(i+1) + !J1*ac(i+1)*a(i);
72
73
74H := J1*(ac(i + 1)*a(i) + ac(i)*a(i + 1))
75
76
77operator !U,!U!T,!V,!V!T;
78
79
80
81sub_fermi := { a(~i) => !U(i,j1)*a2(j1) + !V(i,j1)*a2c(j1),
82                 ac(~i) => !V!T(i,j2)*a2(j2) + !U!T(i,j2)*a2c(j2) };
83
84
85sub_fermi := {a(~i) => U(i,j1)*a2(j1) + V(i,j1)*a2c(j1),
86
87              ac(~i) => VT(i,j2)*a2(j2) + UT(i,j2)*a2c(j2)}
88
89!H2 :=  (!H where sub_fermi);
90
91
92H2 := J1*(a2(j2)*a2(j1)*U(i + 1,j1)*VT(i,j2)
93
94           + a2(j2)*a2(j1)*U(i,j1)*VT(i + 1,j2)
95
96           - a2c(j1)*a2(j2)*V(i + 1,j1)*VT(i,j2)
97
98           - a2c(j1)*a2(j2)*V(i,j1)*VT(i + 1,j2)
99
100           + a2c(j2)*a2(j1)*U(i + 1,j1)*UT(i,j2)
101
102           + a2c(j2)*a2(j1)*U(i,j1)*UT(i + 1,j2)
103
104           + a2c(j2)*a2c(j1)*UT(i + 1,j2)*V(i,j1)
105
106           + a2c(j2)*a2c(j1)*UT(i,j2)*V(i + 1,j1))
107
108on factor;
109
110
111!H2;
112
113
114 - J1*(a2c(j1)*a2(j2)*V(i + 1,j1)*VT(i,j2) + a2c(j1)*a2(j2)*V(i,j1)*VT(i + 1,j2)
115
116        - a2c(j2)*(a2(j1)*U(i + 1,j1)*UT(i,j2) + a2(j1)*U(i,j1)*UT(i + 1,j2)
117
118           + a2c(j1)*UT(i + 1,j2)*V(i,j1) + a2c(j1)*UT(i,j2)*V(i + 1,j1))
119
120        - a2(j2)*a2(j1)*(U(i + 1,j1)*VT(i,j2) + U(i,j1)*VT(i + 1,j2)))
121
122
123end;
124
125Tested on x86_64-pc-windows CSL
126Time (counter 1): 0 ms
127
128End of Lisp run after 0.00+0.06 seconds
129real 0.19
130user 0.04
131sys 0.03
132