1###########################################################################
2#
3# this file contains the entry corelg.SuperLie, which is used in forms.gi
4#
5#
6#
7
8corelg.SuperLie:=function(arg)
9
10
11local T, L, Lo, To, R, P, S, s, V, B, p, TT, i, j, g, K, f, g0, g1, k, l, D, U,  KK1, KK2, KK3, KK4, BB, bb, N, CC, a, b, c, d, ww, K0, P0, H0, t, pos, makeCartInv, sp, rts, v, q, n, t0, h, F0, CartInt, fundr, allrts;
12
13q:= arg[1];
14n:= arg[2];
15t0:= arg[3];
16h:= arg[4];
17if Length(arg)=5 then
18   F0:= arg[5];
19else
20   F0:= CF(4);
21fi;
22
23t:= ShallowCopy(t0);
24
25Lo:=SimpleLieAlgebra(q,n,Rationals);
26To:= StructureConstantsTable(Basis(Lo));;
27#T:=Sub3( a, n);
28#L:=LieAlgebraByStructureConstants( Rationals,T);
29R:= RootSystem(Lo);
30P:= PositiveRoots(R);
31S:= SimpleSystem(R);
32#C:= ChevalleyBasis(L);
33V:= VectorSpace(Rationals,  S);
34B:= Basis(V, S);
35s:= Length(S);;
36p:= Length(P);;
37D:=[];; #set of alpha such that X=x-x
38U:=[];; #set of alpha such that X=x+x
39TT:=EmptySCTable( 2*p+s,  Zero(F0),  "antisymmetric" );;
40a:=0;
41b:=0;
42c:=0;
43d:=0;
44
45#############################################################################################################################################
46
47#cerchiamo di sistemare il vettore dei\Phi(alpha), ovvero tenere a mente le permutazioni
48#cioè in questo modo creo il vettore N con le radici permutate
49#mentre il vettore P ha quelle normali.
50
51K:=[];
52
53for i in [1..s] do
54	Add(K, P[Position(P,P[OnPoints(i,h)])] );
55od;
56#ho appena sistemato il vettore K con le permutazioni definite da h sul simple system
57
58############################################################################################################################################
59
60#resta da sistemare il resto delle radici positive
61
62for i in [s+1..p] do
63	N:=P[1]*0;
64	CC:=Coefficients(B,P[i]); #mi scrivo i coefficienti di P[i] rispetto al simple System
65	for j in [1..s] do
66		N:=N+CC[j]*P[Position(P,K[j])]; #Calcolo la permutaziona associata a questa radice
67	od;
68	Add(K, P[Position(P,N)] );
69od;
70
71#Vettore K con le immagini della prmutazione è a posto.
72
73###############################################################################################################################################
74
75#Sistemiamo il vettore dei segni, per ora l ho solo definito sul Simple System
76
77for i in [s+1..p] do
78	for j in [1..s] do
79		if (P[i]-P[j] in P ) then
80			f:=Position(P, P[i]-P[j]); #calcolo la posizione in P di P[i]-P[j]
81			g0:=Position(P,K[j]); #calcolo la posizione in P della permutazione di P[j]
82			g1:=Position(P, K[f]); #calcolo la posizione in P della permutazione di P[i]-P[j]
83		Add(t, t[j]*t[f]*To[g0][g1][2][1]*(To[j][f][2][1]^(-1)));
84		break;
85		fi;
86	od;
87od;
88
89
90##############################################################################################################################################
91
92#sistemiamo i prodotti [H,X] e [H,Y]
93
94for i in [1..s] do
95	for j in [1..p] do
96		if (Position(P,K[i]) > i) then #permutazione solo sugli h, quindi mi bastano i primi s
97			if ( Position(P,K[j]) > Position(P,P[j])) then
98a:=0;
99b:=0;
100c:=0;
101d:=0;
102
103if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
104	if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
105
106a:=a+To[2*p+Position(P,P[i])][j][2][1];
107b:=b+To[2*p+Position(P,K[i])][j][2][1];
108c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
109d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
110
111SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    (a+b+c+d)/2, 		  p+j ]);
112SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    (a+b+c+d)/2, p+Position(P,K[j])]);
113SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*(a+b+c+d)/2, 		    j] );
114SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+b+c+d)/2, Position(P,K[j])]);
115
116SetEntrySCTable( TT, 2*p+Position(P,K[i]), 	  	    j, [-1*(a-b-c+d)/2, p+Position(P,K[j]) ]);
117SetEntrySCTable( TT, 2*p+Position(P,K[i]),   Position(P,K[j]), [   (a-b-c+d)/2, 		       p+j]);
118SetEntrySCTable( TT, 2*p+Position(P,K[i]), 		  p+j, [   (a-b-c+d)/2, 	  Position(P,K[j]) ]);
119SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]), [-1*(a-b-c+d)/2, 	   	       j ]);
120
121	else
122
123a:=a+To[2*p+Position(P,P[i])][j][2][1];
124#b:=b+To[2*p+Position(P,K[i])][j][2][1];
125#c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
126d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
127
128SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    (a+d)/2, 		  p+j ]);
129SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    (a+d)/2, p+Position(P,K[j])]);
130SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*(a+d)/2, 		    j] );
131SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+d)/2, Position(P,K[j])]);
132
133SetEntrySCTable( TT, 2*p+Position(P,K[i]), 	  	    j,[ -1*(a+d)/2, p+Position(P,K[j]) ]);
134SetEntrySCTable( TT, 2*p+Position(P,K[i]),   Position(P,K[j]),[    (a+d)/2, 		       p+j]);
135SetEntrySCTable( TT, 2*p+Position(P,K[i]), 		  p+j,[    (a+d)/2, 	  Position(P,K[j] )]);
136SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]),[ -1*(a+d)/2, 	   	       j]) ;
137
138	fi;
139else
140	if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
141
142#a:=a+To[2*p+Position(P,P[i])][j][2][1];
143b:=b+To[2*p+Position(P,K[i])][j][2][1];
144c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
145#d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
146
147SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    (b+c)/2, 		  p+j ]);
148SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    (b+c)/2, p+Position(P,K[j])]);
149SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*(b+c)/2, 		    j ]);
150SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(b+c)/2, Position(P,K[j])]);
151
152SetEntrySCTable( TT, 2*p+Position(P,K[i]), 	  	    j,[ -1*(-b-c)/2, p+Position(P,K[j]) ]);
153SetEntrySCTable( TT, 2*p+Position(P,K[i]),   Position(P,K[j]),[    (-b-c)/2, 		       p+j]);
154SetEntrySCTable( TT, 2*p+Position(P,K[i]), 		  p+j,[    (-b-c)/2, 	  Position(P,K[j] )]);
155SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]),[ -1*(-b-c)/2, 	   	       j]) ;
156
157	fi;
158
159fi;
160
161			else
162				if ( Position(P,K[j]) = Position(P,P[j])) then
163
164a:=0;
165b:=0;
166c:=0;
167d:=0;
168
169if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
170	if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
171
172a:=a+To[2*p+Position(P,P[i])][j][2][1];
173c:=c+To[2*p+Position(P,K[i])][j][2][1];
174
175SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    (a+c),   		   p+j]);
176SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*(a+c), 		    j ]);
177	else
178a:=a+To[2*p+Position(P,P[i])][j][2][1];
179
180SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    a,   		   p+j]);
181SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*a, 		    j ]);
182	fi;
183else
184	if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
185
186c:=c+To[2*p+Position(P,K[i])][j][2][1];
187
188SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    c,   		   p+j]);
189SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*c, 		    j ]);
190	fi;
191fi;
192
193				fi;
194			fi;
195		else
196			if (Position(P,K[i]) = i) then #permutazione solo sugli h, quindi mi bastano i primi s
197				if ( Position(P,K[j]) > Position(P,P[j])) then
198a:=0;
199b:=0;
200c:=0;
201d:=0;
202
203if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
204	if not ( IsEmpty(To[2*p+Position(P,P[i])][Position(P,K[j])][2])=true ) then
205
206a:=a+To[2*p+Position(P,P[i])][j][2][1];
207c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
208
209SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    (a+c),   		   p+j]);
210SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    (a+c),   p+Position(P,K[j])]);
211SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*(a+c), 		    j ]);
212SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+c),     Position(P,K[j])]);
213
214	else
215
216a:=a+To[2*p+Position(P,P[i])][j][2][1];
217
218SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    a, 		  p+j ]);
219SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    a, p+Position(P,K[j])]);
220SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*a, 		    j ]);
221SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*a, Position(P,K[j])]);
222	fi;
223
224else
225	if not ( IsEmpty(To[2*p+Position(P,P[i])][Position(P,K[j])][2]) =true ) then
226
227c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
228
229SetEntrySCTable( TT, 2*p+Position(P,P[i]), 	  	    j,[    c, 		  p+j ]);
230SetEntrySCTable( TT, 2*p+Position(P,P[i]),   Position(P,K[j]),[    c, p+Position(P,K[j])]);
231SetEntrySCTable( TT, 2*p+Position(P,P[i]), 		  p+j,[ -1*c, 		    j ]);
232SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*c, Position(P,K[j])]);
233
234	fi;
235fi;
236
237				else
238					if ( Position(P,K[j]) = Position(P,P[j])) then
239a:=0;
240
241if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
242
243a:=a+To[2*p+Position(P,P[i])][j][2][1];
244
245SetEntrySCTable( TT, 2*p+Position(P,P[i]),	j,[2*a, p+j] );
246SetEntrySCTable( TT, 2*p+Position(P,P[i]),	p+j,[-2*a, j] );
247fi;
248
249					fi;
250				fi;
251			fi;
252		fi;
253	od;
254od;
255
256
257#######################################################################################################################################
258#####################################################################################################################################
259
260#sistemiamo i prodotti [X,Y] con indici uguali
261
262
263for i in [1..p] do #alpha varia in P
264	if ( Position(P,K[i]) > Position(P, P[i]) ) then #alpha <phi_alpha
265
266KK1:=[]; #++ nessun problema
267KK2:=[]; #+- nessun problema
268KK3:=[]; #-+ occhio ai prodotti misti
269KK4:=[]; #-- occhio ai prodotti misti
270
271if (t[i]=1) then
272
273if (P[i]+K[i] in P) then
274if not ( IsEmpty( To[i][Position(P,K[i])][2] )= true ) then
275if ( t[Position(P, P[i]+K[i])] = 1 ) then
276
277if not ( (+1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1]) = 0 ) then
278Add(KK1, (+1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
279Add(KK1, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione  di j nella nuova base
280Add(KK4, +1*(+1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
281Add(KK4, p+Position(P,P[i]+K[i]));
282fi;
283
284else
285
286if not ( (-1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1]) = 0 ) then
287Add(KK2, (-1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
288Add(KK2, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione  di j nella nuova base
289Add(KK3, (+1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
290Add(KK3, p+Position(P,P[i]+K[i]));
291fi;
292
293fi; fi; fi;
294
295if not (IsEmpty( To[i][p+i][2]) = true) then
296
297for j in [1..s] do
298	for k in [1..Length(To[i][p+i][2])] do
299		if (2*p+j = To[i][p+i][1][k] ) then
300
301			if ( OnPoints(j,h) > j ) then
302				if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
303
304ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
305
306if not (To[i][p+i][2][k] = To[i][p+i][2][ww] ) then
307Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
308Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
309Add(KK2, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
310Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione  di j nella nuova base
311Add(KK3, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
312Add(KK3, 2*p+Position(P,K[j]));
313Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
314Add(KK4, 2*p+j);
315else
316Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
317Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
318Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
319Add(KK4, 2*p+j);
320fi;
321				else
322Add(KK1, 2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
323Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
324Add(KK2, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
325Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione  di j nella nuova base
326Add(KK3, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
327Add(KK3, 2*p+Position(P,K[j]));
328Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
329Add(KK4, 2*p+j);
330				fi;
331			else
332					if ( OnPoints(j,h) = j ) then
333Add(KK1, +2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
334Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
335Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
336Add(KK4, 2*p+j);
337					fi;
338			fi;
339
340fi; od; od; fi;
341
342
343else #t[i]=-1
344
345if not (IsEmpty( To[i][p+i][2]) = true) then
346
347for j in [1..s] do
348	for k in [1..Length(To[i][p+i][2])] do
349		if (2*p+j = To[i][p+i][1][k] ) then
350
351			if ( OnPoints(j,h) > j ) then
352				if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
353ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
354
355if not (To[i][p+i][2][k] = To[i][p+i][2][ww] ) then
356Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
357Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
358Add(KK2, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
359Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione  di j nella nuova base
360Add(KK3, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
361Add(KK3, 2*p+Position(P,K[j]));
362Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
363Add(KK4, 2*p+j);
364else
365Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
366Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
367Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
368Add(KK4, 2*p+j);
369fi;
370				else
371Add(KK1, 2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
372Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
373Add(KK2, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
374Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione  di j nella nuova base
375Add(KK3, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
376Add(KK3, 2*p+Position(P,K[j]));
377Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
378Add(KK4, 2*p+j);
379				fi;
380			else
381					if ( OnPoints(j,h) = j ) then
382Add(KK1, +2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
383Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
384Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
385Add(KK4, 2*p+j);
386					fi;
387			fi;
388
389fi; od; od; fi;
390
391if (P[i]+K[i] in P) then
392if not ( IsEmpty(To[i][Position(P,K[i])][2])= true ) then
393if ( t[Position(P, P[i]+K[i])] = 1 ) then
394
395if not ( (-1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1]) = 0 ) then
396Add(KK1, (-1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
397Add(KK1, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione  di j nella nuova base
398Add(KK4, (-1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
399Add(KK4, p+Position(P,P[i]+K[i]));
400fi;
401
402else
403if not ( (+1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1]) = 0 ) then
404Add(KK2, (+1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
405Add(KK2, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione  di j nella nuova base
406Add(KK3, (-1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1])/2 ); #aggiungo il valore del prodotto relativo all'indice j
407Add(KK3, p+Position(P,P[i]+K[i]));
408fi;
409
410fi; fi; fi;
411
412fi;
413
414SetEntrySCTable( TT, i, p+i , KK1);
415SetEntrySCTable( TT, i, p+Position(P,K[i]) , KK2);
416SetEntrySCTable( TT, Position(P, K[i]), p+i , KK3);
417SetEntrySCTable( TT, Position(P, K[i]), p+Position(P, K[i]) , KK4);
418
419	else
420		if ( Position(P,K[i]) = Position(P, P[i]) ) then #alpha <phi_alpha
421
422KK1:=[]; #++ nessun problema
423
424for j in [1..s] do
425	for k in [1..Length(To[i][p+i][2])] do
426		if (2*p+j = To[i][p+i][1][k] ) then
427
428if (t[i]=1) then
429
430			if ( OnPoints(j,h) > j ) then
431				if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
432ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
433Add(KK1, +4*(To[i][p+i][2][k] + To[i][p+i][2][ww] ) ); #aggiungo il valore del prodotto relativo all'indice j
434Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
435				else
436Add(KK1, +4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
437Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
438				fi;
439			else
440					if ( OnPoints(j,h) = j ) then
441Add(KK1, +4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
442Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
443					fi;
444			fi;
445
446else #t[i]=-1
447
448#KK1:=[]; #-- occhio ai prodotti misti
449			if ( OnPoints(j,h) > j ) then
450				if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
451ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
452Add(KK1, -4*(To[i][p+i][2][k] + To[i][p+i][2][ww] ) ); #aggiungo il valore del prodotto relativo all'indice j
453Add(KK1, 2*p+j); #aggiungo la relativa posizione  di j nella nuova base
454				else
455Add(KK1, -4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
456Add(KK1, 2*p+j);
457				fi;
458			else
459					if ( OnPoints(j,h) = j ) then
460Add(KK1, -4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
461Add(KK1, 2*p+j);
462					fi;
463			fi;
464fi;
465
466		fi;
467	od;
468od;
469
470SetEntrySCTable( TT, i, p+i , KK1);
471
472		fi;
473	fi;
474od;
475#####################################################################################################################
476
477
478
479##############################################################################################################################################
480
481#Prodotti [X,X] con indici differenti
482
483
484for i in [1..p] do #variazione alpha per gli X
485	for j in [i+1..p] do #variazione beta >alpha per gli Y
486		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
487			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then # beta< phi_beta (ragiono con gli Y)
488
489KK1:=[]; # i p+j
490KK2:=[]; # i p+jbar
491KK3:=[]; # ibar p+j
492KK4:=[]; # ibar p+jbar
493
494if (t[i]=1) then
495if (t[j]=1) then
496
497if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
498if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
499if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
500
501if (t[Position(P,P[j]+P[i] )] = 1) then
502Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
503Add(KK1, Position(P, P[i]+P[j]) );
504Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
505Add(KK2, Position(P, K[i]+K[j]) );
506Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
507Add(KK3, Position(P, K[i]+K[j]) );
508Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
509Add(KK4, Position(P, P[i]+P[j]) );
510else
511Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
512Add(KK1, Position(P, P[i]+P[j]) );
513Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
514Add(KK2, Position(P, K[i]+K[j]) );
515Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
516Add(KK3, Position(P, K[i]+K[j]) );
517Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
518Add(KK4, Position(P, P[i]+P[j]) );
519fi;
520else
521	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
522
523if (t[Position(P,P[j]+P[i] )] = 1) then
524Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
525Add(KK1, Position(P, P[i]+P[j]) );
526Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
527Add(KK4, Position(P, P[i]+P[j]) );
528else
529Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
530Add(KK2, Position(P, K[i]+K[j]) );
531Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
532Add(KK3, Position(P, K[i]+K[j]) );
533fi;
534	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
535if (t[Position(P,P[j]+P[i] )] = 1) then
536Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
537Add(KK1, Position(P, K[j]+K[i]) );
538Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
539Add(KK2, Position(P, P[i]+P[j]) );
540Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
541Add(KK3, Position(P, P[i]+P[j]) );
542Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
543Add(KK4, Position(P,K[j]+K[i]) );
544else
545Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
546Add(KK1, Position(P, K[j]+K[i]) );
547Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
548Add(KK2, Position(P, P[i]+P[j]) );
549Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
550Add(KK3, Position(P, P[i]+P[j]) );
551Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
552Add(KK4, Position(P, K[j]+K[i]) );
553fi;
554	fi;
555
556fi;
557fi; fi;
558
559#######
560############
561###############
562
563if (P[j]-P[i] in P ) then
564if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
565if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
566
567if (t[Position(P,P[j]-P[i] )] = 1) then
568Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
569Add(KK1, Position(P, P[j]-P[i]) );
570Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
571Add(KK2, Position(P, K[j]-K[i]) );
572Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
573Add(KK3, Position(P, K[j]-K[i]) );
574Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
575Add(KK4, Position(P, P[j]-P[i]) );
576else
577Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
578Add(KK1, Position(P, P[j]-P[i]) );
579Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
580Add(KK2, Position(P, K[j]-K[i]) );
581Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
582Add(KK3, Position(P, K[j]-K[i]) );
583Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
584Add(KK4, Position(P, P[j]-P[i]) );
585fi;
586
587else
588	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
589
590if (t[Position(P,P[j]-P[i] )] = 1) then
591Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
592Add(KK1, Position(P, P[j]-P[i]) );
593Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
594Add(KK4, Position(P, P[j]-P[i]) );
595else
596Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
597Add(KK2, Position(P, K[j]-K[i]) );
598Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
599Add(KK3, Position(P, K[j]-K[i]) );
600fi;
601	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
602
603if (t[Position(P,P[j]-P[i] )] = 1) then
604Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
605Add(KK1, Position(P, K[j]-K[i]) );
606Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
607Add(KK2, Position(P, P[j]-P[i]) );
608Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
609Add(KK3, Position(P, P[j]-P[i]) );
610Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
611Add(KK4, Position(P, K[j]-K[i]) );
612else
613Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
614Add(KK1, Position(P, K[j]-K[i]) );
615Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
616Add(KK2, Position(P, P[j]-P[i]) );
617Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
618Add(KK3, Position(P, P[j]-P[i]) );
619Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
620Add(KK4, Position(P, K[j]-K[i]) );
621fi;
622	fi;
623
624fi;
625fi; fi;
626
627
628######
629##########
630#############
631
632if (P[i]+K[j] in P ) then
633if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
634if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
635
636if (t[Position(P,P[i]+K[j] )] = 1) then
637Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
638Add(KK1, Position(P, P[i]+K[j]) );
639Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
640Add(KK2, Position(P, K[i]+P[j]) );
641Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
642Add(KK3, Position(P, K[i]+P[j]) );
643Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
644Add(KK4, Position(P, P[i]+K[j]) );
645else
646Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
647Add(KK1, Position(P, P[i]+K[j]) );
648Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
649Add(KK2, Position(P, K[i]+P[j]) );
650Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
651Add(KK3, Position(P, K[i]+P[j]) );
652Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
653Add(KK4, Position(P, P[i]+K[j]) );
654fi;
655else
656	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
657
658if (t[Position(P,K[j]+P[i] )] = 1) then
659Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
660Add(KK1, Position(P, P[i]+K[j]) );
661Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
662Add(KK4, Position(P, P[i]+K[j]) );
663else
664Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
665Add(KK2, Position(P, K[i]+P[j]) );
666Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
667Add(KK3, Position(P, K[i]+P[j]) );
668fi;
669	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
670
671if (t[Position(P,P[i]+K[j] )] = 1) then
672Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
673Add(KK1, Position(P, K[i]+P[j]) );
674Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
675Add(KK2, Position(P, P[i]+K[j]) );
676Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
677Add(KK3, Position(P, P[i]+K[j]) );
678Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
679Add(KK4, Position(P, K[i]+P[j]) );
680else
681Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
682Add(KK1, Position(P, K[i]+P[j]) );
683Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
684Add(KK2, Position(P, P[i]+K[j]) );
685Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
686Add(KK3, Position(P, P[i]+K[j]) );
687Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
688Add(KK4, Position(P, K[i]+P[j]) );
689fi;
690	fi;
691
692fi;
693fi; fi;
694
695######
696##########
697#############
698
699
700if (K[j]-P[i] in P ) then
701if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
702if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
703
704if (t[Position(P,K[j]-P[i] )] = 1) then
705Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
706Add(KK1, Position(P, K[j]-P[i]) );
707Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
708Add(KK2, Position(P, P[j]-K[i]) );
709Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
710Add(KK3, Position(P, P[j]-K[i]) );
711Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
712Add(KK4, Position(P, K[j]-P[i]) );
713else
714Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
715Add(KK1, Position(P, K[j]-P[i]) );
716Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
717Add(KK2, Position(P, P[j]-K[i]) );
718Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
719Add(KK3, Position(P, P[j]-K[i]) );
720Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
721Add(KK4, Position(P, K[j]-P[i]) );
722fi;
723
724else
725	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
726
727if (t[Position(P,K[j]-P[i] )] = 1) then
728Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
729Add(KK1, Position(P, K[j]-P[i]) );
730Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
731Add(KK4, Position(P, K[j]-P[i]) );
732else
733Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
734Add(KK2, Position(P, P[j]-K[i]) );
735Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
736Add(KK3, Position(P, P[j]-K[i]) );
737fi;
738	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
739
740if (t[Position(P,K[j]-P[i] )] = 1) then
741Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
742Add(KK1, Position(P, P[j]-K[i]) );
743Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
744Add(KK2, Position(P, K[j]-P[i]) );
745Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
746Add(KK3, Position(P, K[j]-P[i]) );
747Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
748Add(KK4, Position(P, P[j]-K[i]) );
749else
750Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
751Add(KK1, Position(P, P[j]-K[i]) );
752Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
753Add(KK2, Position(P, K[j]-P[i]) );
754Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
755Add(KK3, Position(P, K[j]-P[i]) );
756Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
757Add(KK4, Position(P, P[j]-K[i]) );
758fi;
759	fi;
760
761fi;
762fi; fi;
763
764###########
765##################
766####################
767
768
769
770else # ovvero t[j]=-1
771
772###############
773#####################
774#########################
775
776if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
777if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
778if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
779
780if (t[Position(P,P[j]+P[i] )] = 1) then
781Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
782Add(KK1, Position(P, P[i]+P[j]) );
783Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
784Add(KK2, Position(P, K[i]+K[j]) );
785Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
786Add(KK3, Position(P, K[i]+K[j]) );
787Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
788Add(KK4, Position(P, P[i]+P[j]) );
789else
790Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
791Add(KK1, Position(P, P[i]+P[j]) );
792Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
793Add(KK2, Position(P, K[i]+K[j]) );
794Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
795Add(KK3, Position(P, K[i]+K[j]) );
796Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
797Add(KK4, Position(P, P[i]+P[j]) );
798fi;
799else
800	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
801
802if (t[Position(P,P[j]+P[i] )] = 1) then
803Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
804Add(KK1, Position(P, P[i]+P[j]) );
805Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
806Add(KK4, Position(P, P[i]+P[j]) );
807else
808Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
809Add(KK2, Position(P, K[i]+K[j]) );
810Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
811Add(KK3, Position(P, K[i]+K[j]) );
812fi;
813	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
814
815if (t[Position(P,P[j]+P[i] )] = 1) then
816Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
817Add(KK1, Position(P, K[j]+K[i]) );
818Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
819Add(KK2, Position(P, P[i]+P[j]) );
820Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
821Add(KK3, Position(P, P[i]+P[j]) );
822Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
823Add(KK4, Position(P,K[j]+K[i]) );
824else
825Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
826Add(KK1, Position(P, K[j]+K[i]) );
827Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
828Add(KK2, Position(P, P[i]+P[j]) );
829Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
830Add(KK3, Position(P, P[i]+P[j]) );
831Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
832Add(KK4, Position(P, K[j]+K[i]) );
833fi;
834	fi;
835
836fi;
837fi; fi;
838
839#######
840############
841###############
842
843if (P[j]-P[i] in P ) then
844if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
845if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
846
847if (t[Position(P,P[j]-P[i] )] = 1) then
848Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
849Add(KK1, Position(P, P[j]-P[i]) );
850Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
851Add(KK2, Position(P, K[j]-K[i]) );
852Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
853Add(KK3, Position(P, K[j]-K[i]) );
854Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
855Add(KK4, Position(P, P[j]-P[i]) );
856else
857Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
858Add(KK1, Position(P, P[j]-P[i]) );
859Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
860Add(KK2, Position(P, K[j]-K[i]) );
861Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
862Add(KK3, Position(P, K[j]-K[i]) );
863Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
864Add(KK4, Position(P, P[j]-P[i]) );
865fi;
866else
867	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
868
869if (t[Position(P,P[j]-P[i] )] = 1) then
870Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
871Add(KK1, Position(P, P[j]-P[i]) );
872Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
873Add(KK4, Position(P, P[j]-P[i]) );
874else
875Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
876Add(KK2, Position(P, K[j]-K[i]) );
877Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
878Add(KK3, Position(P, K[j]-K[i]) );
879fi;
880	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
881
882if (t[Position(P,P[j]-P[i] )] = 1) then
883Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
884Add(KK1, Position(P, K[j]-K[i]) );
885Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
886Add(KK2, Position(P, P[j]-P[i]) );
887Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
888Add(KK3, Position(P, P[j]-P[i]) );
889Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
890Add(KK4, Position(P, K[j]-K[i]) );
891else
892Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
893Add(KK1, Position(P, K[j]-K[i]) );
894Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
895Add(KK2, Position(P, P[j]-P[i]) );
896Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
897Add(KK3, Position(P, P[j]-P[i]) );
898Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
899Add(KK4, Position(P, K[j]-K[i]) );
900fi;
901	fi;
902
903fi;
904fi; fi;
905
906######
907##########
908#############
909
910if (P[i]+K[j] in P ) then
911if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
912if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
913
914if (t[Position(P,P[i]+K[j] )] = 1) then
915Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
916Add(KK1, Position(P, P[i]+K[j]) );
917Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
918Add(KK2, Position(P, K[i]+P[j]) );
919Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
920Add(KK3, Position(P, K[i]+P[j]) );
921Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
922Add(KK4, Position(P, P[i]+K[j]) );
923else
924Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
925Add(KK1, Position(P, P[i]+K[j]) );
926Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
927Add(KK2, Position(P, K[i]+P[j]) );
928Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
929Add(KK3, Position(P, K[i]+P[j]) );
930Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
931Add(KK4, Position(P, P[i]+K[j]) );
932fi;
933else
934	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
935
936if (t[Position(P,K[j]+P[i] )] = 1) then
937Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
938Add(KK1, Position(P, P[i]+K[j]) );
939Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
940Add(KK4, Position(P, P[i]+K[j]) );
941else
942Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
943Add(KK2, Position(P, K[i]+P[j]) );
944Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
945Add(KK3, Position(P, K[i]+P[j]) );
946fi;
947	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
948
949if (t[Position(P,P[i]+K[j] )] = 1) then
950Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
951Add(KK1, Position(P, K[i]+P[j]) );
952Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
953Add(KK2, Position(P, P[i]+K[j]) );
954Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
955Add(KK3, Position(P, P[i]+K[j]) );
956Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
957Add(KK4, Position(P, K[i]+P[j]) );
958else
959Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
960Add(KK1, Position(P, K[i]+P[j]) );
961Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
962Add(KK2, Position(P, P[i]+K[j]) );
963Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
964Add(KK3, Position(P, P[i]+K[j]) );
965Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
966Add(KK4, Position(P, K[i]+P[j]) );
967fi;
968	fi;
969
970fi;
971fi; fi;
972
973######
974##########
975#############
976
977
978if (K[j]-P[i] in P ) then
979if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
980if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
981
982if (t[Position(P,K[j]-P[i] )] = 1) then
983Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
984Add(KK1, Position(P, K[j]-P[i]) );
985Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
986Add(KK2, Position(P, P[j]-K[i]) );
987Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
988Add(KK3, Position(P, P[j]-K[i]) );
989Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
990Add(KK4, Position(P, K[j]-P[i]) );
991else
992Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
993Add(KK1, Position(P, K[j]-P[i]) );
994Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
995Add(KK2, Position(P, P[j]-K[i]) );
996Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
997Add(KK3, Position(P, P[j]-K[i]) );
998Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
999Add(KK4, Position(P, K[j]-P[i]) );
1000fi;
1001else
1002	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
1003
1004if (t[Position(P,K[j]-P[i] )] = 1) then
1005Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1006Add(KK1, Position(P, K[j]-P[i]) );
1007Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1008Add(KK4, Position(P, K[j]-P[i]) );
1009else
1010Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1011Add(KK2, Position(P, P[j]-K[i]) );
1012Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1013Add(KK3, Position(P, P[j]-K[i]) );
1014fi;
1015	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1016
1017if (t[Position(P,K[j]-P[i] )] = 1) then
1018Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1019Add(KK1, Position(P, P[j]-K[i]) );
1020Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1021Add(KK2, Position(P, K[j]-P[i]) );
1022Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1023Add(KK3, Position(P, K[j]-P[i]) );
1024Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1025Add(KK4, Position(P, P[j]-K[i]) );
1026
1027else
1028
1029Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1030Add(KK1, Position(P, P[j]-K[i]) );
1031Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1032Add(KK2, Position(P, K[j]-P[i]) );
1033Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1034Add(KK3, Position(P, K[j]-P[i]) );
1035Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1036Add(KK4, Position(P, P[j]-K[i]) );
1037
1038fi;
1039	fi;
1040
1041fi;
1042fi; fi;
1043
1044
1045
1046
1047fi;
1048
1049##############
1050#####################
1051########################à
1052
1053else #t[i]=-1
1054
1055if (t[j]=1) then
1056
1057
1058###############
1059#####################
1060#########################
1061
1062if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
1063if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
1064if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
1065
1066if (t[Position(P,P[j]+P[i] )] = 1) then
1067
1068Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1069Add(KK1, Position(P, P[i]+P[j]) );
1070Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1071Add(KK2, Position(P, K[i]+K[j]) );
1072Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1073Add(KK3, Position(P, K[i]+K[j]) );
1074Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1075Add(KK4, Position(P, P[i]+P[j]) );
1076
1077else
1078
1079Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1080Add(KK1, Position(P, P[i]+P[j]) );
1081Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1082Add(KK2, Position(P, K[i]+K[j]) );
1083Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1084Add(KK3, Position(P, K[i]+K[j]) );
1085Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1086Add(KK4, Position(P, P[i]+P[j]) );
1087
1088fi;
1089
1090else
1091	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
1092
1093if (t[Position(P,P[j]+P[i] )] = 1) then
1094
1095Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1096Add(KK1, Position(P, P[i]+P[j]) );
1097Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1098Add(KK4, Position(P, P[i]+P[j]) );
1099
1100else
1101
1102Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1103Add(KK2, Position(P, K[i]+K[j]) );
1104Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1105Add(KK3, Position(P, K[i]+K[j]) );
1106
1107fi;
1108	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1109
1110if (t[Position(P,P[j]+P[i] )] = 1) then
1111
1112Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1113Add(KK1, Position(P, K[j]+K[i]) );
1114Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1115Add(KK2, Position(P, P[i]+P[j]) );
1116Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1117Add(KK3, Position(P, P[i]+P[j]) );
1118Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1119Add(KK4, Position(P,K[j]+K[i]) );
1120
1121else
1122
1123Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1124Add(KK1, Position(P, K[j]+K[i]) );
1125Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1126Add(KK2, Position(P, P[i]+P[j]) );
1127Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1128Add(KK3, Position(P, P[i]+P[j]) );
1129Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1130Add(KK4, Position(P, K[j]+K[i]) );
1131
1132fi;
1133	fi;
1134
1135fi;
1136fi; fi;
1137
1138
1139
1140
1141
1142#######
1143############
1144###############
1145
1146
1147
1148
1149
1150if (P[j]-P[i] in P ) then
1151if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
1152if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
1153
1154if (t[Position(P,P[j]-P[i] )] = 1) then
1155
1156Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1157Add(KK1, Position(P, P[j]-P[i]) );
1158Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1159Add(KK2, Position(P, K[j]-K[i]) );
1160Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1161Add(KK3, Position(P, K[j]-K[i]) );
1162Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1163Add(KK4, Position(P, P[j]-P[i]) );
1164
1165else
1166
1167Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1168Add(KK1, Position(P, P[j]-P[i]) );
1169Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1170Add(KK2, Position(P, K[j]-K[i]) );
1171Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1172Add(KK3, Position(P, K[j]-K[i]) );
1173Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1174Add(KK4, Position(P, P[j]-P[i]) );
1175
1176fi;
1177
1178else
1179	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
1180
1181if (t[Position(P,P[j]-P[i] )] = 1) then
1182
1183Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1184Add(KK1, Position(P, P[j]-P[i]) );
1185Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1186Add(KK4, Position(P, P[j]-P[i]) );
1187
1188else
1189
1190Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1191Add(KK2, Position(P, K[j]-K[i]) );
1192Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1193Add(KK3, Position(P, K[j]-K[i]) );
1194
1195fi;
1196	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1197
1198if (t[Position(P,P[j]-P[i] )] = 1) then
1199
1200Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1201Add(KK1, Position(P, K[j]-K[i]) );
1202Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1203Add(KK2, Position(P, P[j]-P[i]) );
1204Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1205Add(KK3, Position(P, P[j]-P[i]) );
1206Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1207Add(KK4, Position(P, K[j]-K[i]) );
1208
1209else
1210
1211Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1212Add(KK1, Position(P, K[j]-K[i]) );
1213Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1214Add(KK2, Position(P, P[j]-P[i]) );
1215Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1216Add(KK3, Position(P, P[j]-P[i]) );
1217Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1218Add(KK4, Position(P, K[j]-K[i]) );
1219
1220fi;
1221	fi;
1222
1223fi;
1224fi; fi;
1225
1226
1227######
1228##########
1229#############
1230
1231
1232if (P[i]+K[j] in P ) then
1233if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
1234if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
1235
1236if (t[Position(P,P[i]+K[j] )] = 1) then
1237
1238Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1239Add(KK1, Position(P, P[i]+K[j]) );
1240Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1241Add(KK2, Position(P, K[i]+P[j]) );
1242Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1243Add(KK3, Position(P, K[i]+P[j]) );
1244Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1245Add(KK4, Position(P, P[i]+K[j]) );
1246
1247else
1248
1249Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1250Add(KK1, Position(P, P[i]+K[j]) );
1251Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1252Add(KK2, Position(P, K[i]+P[j]) );
1253Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1254Add(KK3, Position(P, K[i]+P[j]) );
1255Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1256Add(KK4, Position(P, P[i]+K[j]) );
1257
1258fi;
1259
1260else
1261	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
1262
1263if (t[Position(P,K[j]+P[i] )] = 1) then
1264
1265Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1266Add(KK1, Position(P, P[i]+K[j]) );
1267Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1268Add(KK4, Position(P, P[i]+K[j]) );
1269
1270else
1271
1272Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1273Add(KK2, Position(P, K[i]+P[j]) );
1274Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1275Add(KK3, Position(P, K[i]+P[j]) );
1276
1277fi;
1278	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1279
1280if (t[Position(P,P[i]+K[j] )] = 1) then
1281
1282Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1283Add(KK1, Position(P, K[i]+P[j]) );
1284Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1285Add(KK2, Position(P, P[i]+K[j]) );
1286Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1287Add(KK3, Position(P, P[i]+K[j]) );
1288Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1289Add(KK4, Position(P, K[i]+P[j]) );
1290
1291else
1292
1293Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1294Add(KK1, Position(P, K[i]+P[j]) );
1295Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1296Add(KK2, Position(P, P[i]+K[j]) );
1297Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1298Add(KK3, Position(P, P[i]+K[j]) );
1299Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1300Add(KK4, Position(P, K[i]+P[j]) );
1301
1302fi;
1303	fi;
1304
1305fi;
1306fi; fi;
1307
1308######
1309##########
1310#############
1311
1312
1313if (K[j]-P[i] in P ) then
1314if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
1315if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
1316
1317if (t[Position(P,K[j]-P[i] )] = 1) then
1318
1319Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1320Add(KK1, Position(P, K[j]-P[i]) );
1321Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1322Add(KK2, Position(P, P[j]-K[i]) );
1323Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1324Add(KK3, Position(P, P[j]-K[i]) );
1325Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1326Add(KK4, Position(P, K[j]-P[i]) );
1327
1328else
1329
1330Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1331Add(KK1, Position(P, K[j]-P[i]) );
1332Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1333Add(KK2, Position(P, P[j]-K[i]) );
1334Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1335Add(KK3, Position(P, P[j]-K[i]) );
1336Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1337Add(KK4, Position(P, K[j]-P[i]) );
1338
1339fi;
1340
1341else
1342	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
1343
1344if (t[Position(P,K[j]-P[i] )] = 1) then
1345
1346Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1347Add(KK1, Position(P, K[j]-P[i]) );
1348Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1349Add(KK4, Position(P, K[j]-P[i]) );
1350
1351else
1352
1353Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1354Add(KK2, Position(P, P[j]-K[i]) );
1355Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1356Add(KK3, Position(P, P[j]-K[i]) );
1357
1358fi;
1359	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1360
1361if (t[Position(P,K[j]-P[i] )] = 1) then
1362
1363Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1364Add(KK1, Position(P, P[j]-K[i]) );
1365Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1366Add(KK2, Position(P, K[j]-P[i]) );
1367Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1368Add(KK3, Position(P, K[j]-P[i]) );
1369Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1370Add(KK4, Position(P, P[j]-K[i]) );
1371
1372else
1373
1374Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1375Add(KK1, Position(P, P[j]-K[i]) );
1376Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1377Add(KK2, Position(P, K[j]-P[i]) );
1378Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1379Add(KK3, Position(P, K[j]-P[i]) );
1380Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1381Add(KK4, Position(P, P[j]-K[i]) );
1382
1383fi;
1384	fi;
1385
1386fi;
1387fi; fi;
1388
1389
1390
1391else #t[j]=-1
1392
1393
1394###############
1395#####################
1396#########################
1397
1398if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
1399if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
1400if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
1401
1402if (t[Position(P,P[j]+P[i] )] = 1) then
1403
1404Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1405Add(KK1, Position(P, P[i]+P[j]) );
1406Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1407Add(KK2, Position(P, K[i]+K[j]) );
1408Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1409Add(KK3, Position(P, K[i]+K[j]) );
1410Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1411Add(KK4, Position(P, P[i]+P[j]) );
1412
1413else
1414
1415Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1416Add(KK1, Position(P, P[i]+P[j]) );
1417Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1418Add(KK2, Position(P, K[i]+K[j]) );
1419Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1420Add(KK3, Position(P, K[i]+K[j]) );
1421Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1422Add(KK4, Position(P, P[i]+P[j]) );
1423
1424fi;
1425
1426else
1427	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
1428
1429if (t[Position(P,P[j]+P[i] )] = 1) then
1430
1431Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1432Add(KK1, Position(P, P[i]+P[j]) );
1433Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1434Add(KK4, Position(P, P[i]+P[j]) );
1435
1436else
1437
1438Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1439Add(KK2, Position(P, K[i]+K[j]) );
1440Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1441Add(KK3, Position(P, K[i]+K[j]) );
1442
1443fi;
1444	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1445
1446if (t[Position(P,P[j]+P[i] )] = 1) then
1447
1448Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1449Add(KK1, Position(P, K[j]+K[i]) );
1450Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1451Add(KK2, Position(P, P[i]+P[j]) );
1452Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1453Add(KK3, Position(P, P[i]+P[j]) );
1454Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1455Add(KK4, Position(P,K[j]+K[i]) );
1456
1457else
1458
1459Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1460Add(KK1, Position(P, K[j]+K[i]) );
1461Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1462Add(KK2, Position(P, P[i]+P[j]) );
1463Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1464Add(KK3, Position(P, P[i]+P[j]) );
1465Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
1466Add(KK4, Position(P, K[j]+K[i]) );
1467
1468fi;
1469	fi;
1470
1471fi;
1472fi; fi;
1473
1474
1475
1476
1477
1478#######
1479############
1480###############
1481
1482
1483if (P[j]-P[i] in P ) then
1484if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
1485if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
1486
1487if (t[Position(P,P[j]-P[i] )] = 1) then
1488
1489Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1490Add(KK1, Position(P, P[j]-P[i]) );
1491Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1492Add(KK2, Position(P, K[j]-K[i]) );
1493Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1494Add(KK3, Position(P, K[j]-K[i]) );
1495Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1496Add(KK4, Position(P, P[j]-P[i]) );
1497
1498else
1499
1500Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1501Add(KK1, Position(P, P[j]-P[i]) );
1502Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1503Add(KK2, Position(P, K[j]-K[i]) );
1504Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1505Add(KK3, Position(P, K[j]-K[i]) );
1506Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1507Add(KK4, Position(P, P[j]-P[i]) );
1508
1509fi;
1510
1511else
1512	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
1513
1514if (t[Position(P,P[j]-P[i] )] = 1) then
1515
1516Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1517Add(KK1, Position(P, P[j]-P[i]) );
1518Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1519Add(KK4, Position(P, P[j]-P[i]) );
1520
1521else
1522
1523Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1524Add(KK2, Position(P, K[j]-K[i]) );
1525Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1526Add(KK3, Position(P, K[j]-K[i]) );
1527
1528fi;
1529	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1530
1531if (t[Position(P,P[j]-P[i] )] = 1) then
1532
1533Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1534Add(KK1, Position(P, K[j]-K[i]) );
1535Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1536Add(KK2, Position(P, P[j]-P[i]) );
1537Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1538Add(KK3, Position(P, P[j]-P[i]) );
1539Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1540Add(KK4, Position(P, K[j]-K[i]) );
1541
1542else
1543
1544Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1545Add(KK1, Position(P, K[j]-K[i]) );
1546Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1547Add(KK2, Position(P, P[j]-P[i]) );
1548Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1549Add(KK3, Position(P, P[j]-P[i]) );
1550Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
1551Add(KK4, Position(P, K[j]-K[i]) );
1552
1553fi;
1554	fi;
1555
1556fi;
1557fi; fi;
1558
1559
1560######
1561##########
1562#############
1563
1564
1565if (P[i]+K[j] in P ) then
1566if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
1567if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
1568
1569if (t[Position(P,P[i]+K[j] )] = 1) then
1570
1571Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1572Add(KK1, Position(P, P[i]+K[j]) );
1573Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1574Add(KK2, Position(P, K[i]+P[j]) );
1575Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1576Add(KK3, Position(P, K[i]+P[j]) );
1577Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1578Add(KK4, Position(P, P[i]+K[j]) );
1579
1580else
1581
1582Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1583Add(KK1, Position(P, P[i]+K[j]) );
1584Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1585Add(KK2, Position(P, K[i]+P[j]) );
1586Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1587Add(KK3, Position(P, K[i]+P[j]) );
1588Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1589Add(KK4, Position(P, P[i]+K[j]) );
1590
1591fi;
1592
1593else
1594	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
1595
1596if (t[Position(P,K[j]+P[i] )] = 1) then
1597
1598Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1599Add(KK1, Position(P, P[i]+K[j]) );
1600Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1601Add(KK4, Position(P, P[i]+K[j]) );
1602
1603else
1604
1605Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1606Add(KK2, Position(P, K[i]+P[j]) );
1607Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1608Add(KK3, Position(P, K[i]+P[j]) );
1609
1610fi;
1611	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1612
1613if (t[Position(P,P[i]+K[j] )] = 1) then
1614
1615Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1616Add(KK1, Position(P, K[i]+P[j]) );
1617Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1618Add(KK2, Position(P, P[i]+K[j]) );
1619Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1620Add(KK3, Position(P, P[i]+K[j]) );
1621Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1622Add(KK4, Position(P, K[i]+P[j]) );
1623
1624else
1625
1626Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1627Add(KK1, Position(P, K[i]+P[j]) );
1628Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1629Add(KK2, Position(P, P[i]+K[j]) );
1630Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1631Add(KK3, Position(P, P[i]+K[j]) );
1632Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
1633Add(KK4, Position(P, K[i]+P[j]) );
1634
1635fi;
1636	fi;
1637
1638fi;
1639fi; fi;
1640
1641######
1642##########
1643#############
1644
1645
1646if (K[j]-P[i] in P ) then
1647if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
1648if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
1649
1650if (t[Position(P,K[j]-P[i] )] = 1) then
1651
1652Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1653Add(KK1, Position(P, K[j]-P[i]) );
1654Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1655Add(KK2, Position(P, P[j]-K[i]) );
1656Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1657Add(KK3, Position(P, P[j]-K[i]) );
1658Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1659Add(KK4, Position(P, K[j]-P[i]) );
1660
1661else
1662
1663Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1664Add(KK1, Position(P, K[j]-P[i]) );
1665Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1666Add(KK2, Position(P, P[j]-K[i]) );
1667Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1668Add(KK3, Position(P, P[j]-K[i]) );
1669Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1670Add(KK4, Position(P, K[j]-P[i]) );
1671
1672fi;
1673
1674else
1675	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
1676
1677if (t[Position(P,K[j]-P[i] )] = 1) then
1678
1679Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1680Add(KK1, Position(P, K[j]-P[i]) );
1681Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1682Add(KK4, Position(P, K[j]-P[i]) );
1683
1684else
1685
1686Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1687Add(KK2, Position(P, P[j]-K[i]) );
1688Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1689Add(KK3, Position(P, P[j]-K[i]) );
1690
1691fi;
1692	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1693
1694if (t[Position(P,K[j]-P[i] )] = 1) then
1695
1696Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1697Add(KK1, Position(P, P[j]-K[i]) );
1698Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1699Add(KK2, Position(P, K[j]-P[i]) );
1700Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1701Add(KK3, Position(P, K[j]-P[i]) );
1702Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1703Add(KK4, Position(P, P[j]-K[i]) );
1704
1705else
1706
1707Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1708Add(KK1, Position(P, P[j]-K[i]) );
1709Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1710Add(KK2, Position(P, K[j]-P[i]) );
1711Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1712Add(KK3, Position(P, K[j]-P[i]) );
1713Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
1714Add(KK4, Position(P, P[j]-K[i]) );
1715
1716fi;
1717	fi;
1718
1719fi;
1720fi; fi;
1721
1722
1723fi; fi;
1724
1725SetEntrySCTable( TT, i,  j , KK1);
1726SetEntrySCTable( TT, i,  Position(P, K[j]), KK2);
1727SetEntrySCTable( TT, Position(P,K[i]), j, KK3);
1728SetEntrySCTable( TT, Position(P,K[i]) ,Position(P, K[j]), KK4);
1729
1730else
1731
1732	if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
1733
1734KK1:=[];
1735KK2:=[];
1736
1737if (t[i]=1) then
1738if (t[j]=1) then
1739
1740if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
1741if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
1742if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
1743
1744if (t[Position(P,P[j]+P[i] )] = 1) then
1745Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1746Add(KK1, Position(P, P[i]+P[j]) );
1747Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1748Add(KK2, Position(P, K[i]+K[j]) );
1749else
1750Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1751Add(KK1, Position(P, P[i]+P[j]) );
1752Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1753Add(KK2, Position(P, K[i]+K[j]) );
1754fi;
1755
1756else
1757	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
1758if (t[Position(P,P[j]+P[i] )] = 1) then
1759Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1760Add(KK1, Position(P, P[i]+P[j]) );
1761else
1762Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1763Add(KK2, Position(P, K[i]+K[j]) );
1764fi;
1765	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1766
1767if (t[Position(P,P[j]+P[i] )] = 1) then
1768Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1769Add(KK1, Position(P, K[j]+K[i]) );
1770Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1771Add(KK2, Position(P, P[i]+P[j]) );
1772else
1773Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1774Add(KK1, Position(P, K[j]+K[i]) );
1775Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1776Add(KK2, Position(P, P[i]+P[j]) );
1777fi;
1778	fi;
1779fi;
1780fi; fi;
1781
1782#######
1783############
1784###############
1785
1786if (P[j]-P[i] in P ) then
1787if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
1788if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
1789
1790if (t[Position(P,P[j]-P[i] )] = 1) then
1791Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1792Add(KK1, Position(P, P[j]-P[i]) );
1793Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1794Add(KK2, Position(P, K[j]-K[i]) );
1795else
1796Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1797Add(KK1, Position(P, P[j]-P[i]) );
1798Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1799Add(KK2, Position(P, K[j]-K[i]) );
1800fi;
1801else
1802	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
1803if (t[Position(P,P[j]-P[i] )] = 1) then
1804Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1805Add(KK1, Position(P, P[j]-P[i]) );
1806else
1807Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1808Add(KK2, Position(P, K[j]-K[i]) );
1809fi;
1810	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1811if (t[Position(P,P[j]-P[i] )] = 1) then
1812Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1813Add(KK1, Position(P, K[j]-K[i]) );
1814Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1815Add(KK2, Position(P, P[j]-P[i]) );
1816else
1817Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1818Add(KK1, Position(P, K[j]-K[i]) );
1819Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1820Add(KK2, Position(P, P[j]-P[i]) );
1821fi;
1822	fi;
1823fi;
1824fi; fi;
1825
1826###########
1827##################
1828####################
1829
1830else #t[j]=-1
1831
1832if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
1833if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
1834if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
1835if (t[Position(P,P[j]+P[i] )] = 1) then
1836Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1837Add(KK1, Position(P, K[j]+K[i]) );
1838Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1839Add(KK2, Position(P, P[i]+P[j]) );
1840else
1841Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1842Add(KK1, Position(P, K[j]+K[i]) );
1843Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1844Add(KK2, Position(P, P[i]+P[j]) );
1845fi;
1846else
1847	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
1848if (t[Position(P,P[j]+P[i] )] = 1) then
1849Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1850Add(KK2, Position(P, P[i]+P[j]) );
1851else
1852Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1853Add(KK1, Position(P, K[j]+K[i]) );
1854fi;
1855	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1856
1857if (t[Position(P,P[j]+P[i] )] = 1) then
1858Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1859Add(KK1, Position(P, K[j]+K[i]) );
1860Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1861Add(KK2, Position(P, P[i]+P[j]) );
1862else
1863Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1864Add(KK1, Position(P, P[i]+P[j]) );
1865Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1866Add(KK2, Position(P, K[j]+K[i]) );
1867fi;
1868	fi;
1869fi;
1870fi; fi;
1871
1872#######
1873############
1874###############
1875
1876if (P[j]-P[i] in P ) then
1877if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
1878if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
1879if (t[Position(P,P[j]-P[i] )] = 1) then
1880Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1881Add(KK1, Position(P, K[j]-K[i]) );
1882Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1883Add(KK2, Position(P, P[j]-P[i]) );
1884else
1885Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1886Add(KK1, Position(P, K[j]-K[i]) );
1887Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1888Add(KK2, Position(P, P[j]-P[i]) );
1889fi;
1890else
1891	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
1892if (t[Position(P,P[j]-P[i] )] = 1) then
1893Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1894Add(KK2, Position(P, P[j]-P[i]) );
1895else
1896Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1897Add(KK1, Position(P, K[j]-K[i]) );
1898fi;
1899	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1900if (t[Position(P,P[j]-P[i] )] = 1) then
1901Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1902Add(KK1, Position(P, P[j]-P[i]) );
1903Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1904Add(KK2, Position(P, K[j]-K[i]) );
1905else
1906Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1907Add(KK1, Position(P, P[j]-P[i]) );
1908Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1909Add(KK2, Position(P, K[j]-K[i]) );
1910fi;
1911	fi;
1912fi;
1913fi; fi;
1914
1915fi;
1916
1917else #t[i]=-1
1918if (t[j]=1) then
1919
1920if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
1921if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
1922if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
1923if (t[Position(P,P[j]+P[i] )] = 1) then
1924Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1925Add(KK1, Position(P, P[i]+P[j]) );
1926Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1927Add(KK2, Position(P, K[i]+K[j]) );
1928else
1929Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1930Add(KK1, Position(P, P[i]+P[j]) );
1931Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1932Add(KK2, Position(P, K[i]+K[j]) );
1933fi;
1934else
1935	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
1936if (t[Position(P,P[j]+P[i] )] = 1) then
1937Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1938Add(KK1, Position(P, P[i]+P[j]) );
1939else
1940Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1941Add(KK2, Position(P, K[i]+K[j]) );
1942fi;
1943	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1944if (t[Position(P,P[j]+P[i] )] = 1) then
1945Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1946Add(KK1, Position(P, K[j]+K[i]) );
1947Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1948Add(KK2, Position(P, P[i]+P[j]) );
1949else
1950Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1951Add(KK1, Position(P, K[j]+K[i]) );
1952Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
1953Add(KK2, Position(P, P[i]+P[j]) );
1954fi;
1955	fi;
1956fi;
1957fi; fi;
1958
1959#######
1960############
1961###############
1962
1963if (P[j]-P[i] in P ) then
1964if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
1965if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
1966if (t[Position(P,P[j]-P[i] )] = 1) then
1967Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1968Add(KK1, Position(P, P[j]-P[i]) );
1969Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1970Add(KK2, Position(P, K[j]-K[i]) );
1971else
1972Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1973Add(KK1, Position(P, P[j]-P[i]) );
1974Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1975Add(KK2, Position(P, K[j]-K[i]) );
1976fi;
1977else
1978	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
1979if (t[Position(P,P[j]-P[i] )] = 1) then
1980Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1981Add(KK1, Position(P, P[j]-P[i]) );
1982else
1983Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1984Add(KK2, Position(P, K[j]-K[i]) );
1985fi;
1986	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
1987if (t[Position(P,P[j]-P[i] )] = 1) then
1988Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1989Add(KK1, Position(P, K[j]-K[i]) );
1990Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1991Add(KK2, Position(P, P[j]-P[i]) );
1992else
1993Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1994Add(KK1, Position(P, K[j]-K[i]) );
1995Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
1996Add(KK2, Position(P, P[j]-P[i]) );
1997fi;
1998	fi;
1999fi;
2000fi; fi;
2001
2002###########
2003##################
2004####################
2005
2006else #t[i]=t[j]=-1
2007
2008if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2009if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2010if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2011if (t[Position(P,P[j]+P[i] )] = 1) then
2012Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2013Add(KK1, Position(P, K[i]+K[j]) );
2014Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2015Add(KK2, Position(P, P[j]+P[i]) );
2016else
2017Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2018Add(KK1, Position(P, K[i]+K[j]) );
2019Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2020Add(KK2, Position(P, P[j]+P[i]) );
2021fi;
2022else
2023	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2024if (t[Position(P,P[j]+P[i] )] = 1) then
2025Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2026Add(KK2, Position(P, P[j]+P[i]) );
2027else
2028Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2029Add(KK1, Position(P, K[i]+K[j]) );
2030fi;
2031	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2032if (t[Position(P,P[j]+P[i] )] = 1) then
2033Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2034Add(KK1, Position(P, P[j]+P[i]) );
2035Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2036Add(KK2, Position(P, K[i]+K[j]) );
2037else
2038Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2039Add(KK1, Position(P, P[j]+P[i]) );
2040Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2041Add(KK2, Position(P, K[i]+K[j]) );
2042fi;
2043	fi;
2044fi;
2045fi; fi;
2046
2047#######
2048############
2049###############
2050
2051if (P[j]-P[i] in P ) then
2052if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2053if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2054if (t[Position(P,P[j]-P[i] )] = 1) then
2055Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2056Add(KK1, Position(P, K[j]-K[i]) );
2057Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2058Add(KK2, Position(P, P[j]-P[i]) );
2059else
2060Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2061Add(KK1, Position(P, K[j]-K[i]) );
2062Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2063Add(KK2, Position(P, P[j]-P[i]) );
2064fi;
2065else
2066	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2067if (t[Position(P,P[j]-P[i] )] = 1) then
2068Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2069Add(KK2, Position(P, P[j]-P[i]) );
2070else
2071Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2072Add(KK1, Position(P, K[j]-K[i]) );
2073fi;
2074	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2075if (t[Position(P,P[j]-P[i] )] = 1) then
2076Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2077Add(KK1, Position(P, P[j]-P[i]) );
2078Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2079Add(KK2, Position(P, K[j]-K[i]) );
2080else
2081Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2082Add(KK1, Position(P, P[j]-P[i]) );
2083Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2084Add(KK2, Position(P, K[j]-K[i]) );
2085fi;
2086	fi;
2087fi;
2088fi; fi;
2089
2090fi; fi;
2091
2092SetEntrySCTable( TT, i,  j , KK1);
2093SetEntrySCTable( TT, Position(P,K[i]), j, KK2);
2094
2095fi;
2096fi;
2097
2098else
2099	if ( p+Position(P, K[i]) = p+Position(P,P[i]) ) then #alpha< phi_alpha
2100			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then #beta< phi_beta
2101
2102KK1:=[];
2103KK2:=[];
2104
2105if (t[i]=1) then
2106if (t[j]=1) then
2107
2108if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2109if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2110if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2111if (t[Position(P,P[j]+P[i] )] = 1) then
2112Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2113Add(KK1, Position(P, P[i]+P[j]) );
2114Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2115Add(KK2, Position(P, K[i]+K[j]) );
2116else
2117Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2118Add(KK1, Position(P, P[i]+P[j]) );
2119Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2120Add(KK2, Position(P, K[i]+K[j]) );
2121fi;
2122else
2123	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2124if (t[Position(P,P[j]+P[i] )] = 1) then
2125Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2126Add(KK1, Position(P, P[i]+P[j]) );
2127else
2128Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2129Add(KK2, Position(P, K[i]+K[j]) );
2130fi;
2131	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2132if (t[Position(P,P[j]+P[i] )] = 1) then
2133Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2134Add(KK1, Position(P, K[j]+K[i]) );
2135Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2136Add(KK2, Position(P, P[i]+P[j]) );
2137else
2138Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2139Add(KK1, Position(P, K[j]+K[i]) );
2140Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2141Add(KK2, Position(P, P[i]+P[j]) );
2142fi;
2143	fi;
2144fi;
2145fi; fi;
2146
2147#######
2148############
2149###############
2150
2151if (P[j]-P[i] in P ) then
2152if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2153if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2154if (t[Position(P,P[j]-P[i] )] = 1) then
2155Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2156Add(KK1, Position(P, P[j]-P[i]) );
2157Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2158Add(KK2, Position(P, K[j]-K[i]) );
2159else
2160Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2161Add(KK1, Position(P, P[j]-P[i]) );
2162Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2163Add(KK2, Position(P, K[j]-K[i]) );
2164fi;
2165else
2166	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2167if (t[Position(P,P[j]-P[i] )] = 1) then
2168Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2169Add(KK1, Position(P, P[j]-P[i]) );
2170else
2171Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2172Add(KK2, Position(P, K[j]-K[i]) );
2173fi;
2174	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2175if (t[Position(P,P[j]-P[i] )] = 1) then
2176Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2177Add(KK1, Position(P, K[j]-K[i]) );
2178Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2179Add(KK2, Position(P, P[j]-P[i]) );
2180else
2181Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2182Add(KK1, Position(P, K[j]-K[i]) );
2183Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2184Add(KK2, Position(P, P[j]-P[i]) );
2185fi;
2186	fi;
2187fi;
2188fi; fi;
2189
2190
2191###########
2192##################
2193####################
2194
2195else #t[j]=-1
2196
2197if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2198if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2199if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2200if (t[Position(P,P[j]+P[i] )] = 1) then
2201Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2202Add(KK1, Position(P, P[i]+P[j]) );
2203Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2204Add(KK2, Position(P, K[i]+K[j]) );
2205else
2206Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2207Add(KK1, Position(P, P[i]+P[j]) );
2208Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2209Add(KK2, Position(P, K[i]+K[j]) );
2210fi;
2211else
2212	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2213if (t[Position(P,P[j]+P[i] )] = 1) then
2214Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2215Add(KK1, Position(P, P[i]+P[j]) );
2216else
2217Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2218Add(KK2, Position(P, K[i]+K[j]) );
2219fi;
2220	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2221if (t[Position(P,P[j]+P[i] )] = 1) then
2222Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2223Add(KK1, Position(P, K[j]+K[i]) );
2224Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2225Add(KK2, Position(P, P[i]+P[j]) );
2226else
2227Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2228Add(KK1, Position(P, K[j]+K[i]) );
2229Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2230Add(KK2, Position(P, P[i]+P[j]) );
2231fi;
2232	fi;
2233fi;
2234fi; fi;
2235
2236#######
2237############
2238###############
2239
2240if (P[j]-P[i] in P ) then
2241if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2242if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2243if (t[Position(P,P[j]-P[i] )] = 1) then
2244Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2245Add(KK1, Position(P, P[j]-P[i]) );
2246Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2247Add(KK2, Position(P, K[j]-K[i]) );
2248else
2249Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2250Add(KK1, Position(P, P[j]-P[i]) );
2251Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2252Add(KK2, Position(P, K[j]-K[i]) );
2253fi;
2254else
2255	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2256if (t[Position(P,P[j]-P[i] )] = 1) then
2257Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2258Add(KK1, Position(P, P[j]-P[i]) );
2259else
2260Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2261Add(KK2, Position(P, K[j]-K[i]) );
2262fi;
2263	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2264if (t[Position(P,P[j]-P[i] )] = 1) then
2265Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2266Add(KK1, Position(P, K[j]-K[i]) );
2267Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2268Add(KK2, Position(P, P[j]-P[i]) );
2269else
2270Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2271Add(KK1, Position(P, K[j]-K[i]) );
2272Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2273Add(KK2, Position(P, P[j]-P[i]) );
2274fi;
2275	fi;
2276fi;
2277fi; fi;
2278
2279###########
2280##################
2281####################
2282fi;
2283
2284else #t[i]=1
2285if (t[j]=1) then
2286
2287if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2288if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2289if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2290if (t[Position(P,P[j]+P[i] )] = 1) then
2291Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2292Add(KK1, Position(P, K[j]+K[i]) );
2293Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2294Add(KK2, Position(P, P[i]+P[j]) );
2295else
2296Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2297Add(KK1, Position(P, K[j]+K[i]) );
2298Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2299Add(KK2, Position(P, P[i]+P[j]) );
2300fi;
2301else
2302	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2303if (t[Position(P,P[j]+P[i] )] = 1) then
2304Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2305Add(KK2, Position(P, P[i]+P[j]) );
2306else
2307Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2308Add(KK1, Position(P, K[j]+K[i]) );
2309fi;
2310	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2311if (t[Position(P,P[j]+P[i] )] = 1) then
2312Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2313Add(KK1, Position(P, K[j]+K[i]) );
2314Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2315Add(KK2, Position(P, P[i]+P[j]) );
2316else
2317Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2318Add(KK1, Position(P, P[i]+P[j]) );
2319Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2320Add(KK2, Position(P, K[j]+K[i]) );
2321fi;
2322	fi;
2323fi;
2324fi; fi;
2325
2326#######
2327############
2328###############
2329
2330if (P[j]-P[i] in P ) then
2331if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2332if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2333if (t[Position(P,P[j]-P[i] )] = 1) then
2334Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2335Add(KK1, Position(P, K[j]-K[i]) );
2336Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2337Add(KK2, Position(P, P[j]-P[i]) );
2338else
2339Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2340Add(KK1, Position(P, K[j]-K[i]) );
2341Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2342Add(KK2, Position(P, P[j]-P[i]) );
2343fi;
2344else
2345	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2346if (t[Position(P,P[j]-P[i] )] = 1) then
2347Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2348Add(KK2, Position(P, P[j]-P[i]) );
2349else
2350Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2351Add(KK1, Position(P, K[j]-K[i]) );
2352fi;
2353	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2354if (t[Position(P,P[j]-P[i] )] = 1) then
2355Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2356Add(KK1, Position(P, P[j]-P[i]) );
2357Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2358Add(KK2, Position(P, K[j]-K[i]) );
2359else
2360Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2361Add(KK1, Position(P, P[j]-P[i]) );
2362Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2363Add(KK2, Position(P, K[j]-K[i]) );
2364fi;
2365	fi;
2366fi;
2367fi; fi;
2368
2369else
2370
2371if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2372if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2373if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2374if (t[Position(P,P[j]+P[i] )] = 1) then
2375Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2376Add(KK1, Position(P, K[i]+K[j]) );
2377Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2378Add(KK2, Position(P, P[j]+P[i]) );
2379else
2380Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2381Add(KK1, Position(P, K[i]+K[j]) );
2382Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2383Add(KK2, Position(P, P[j]+P[i]) );
2384fi;
2385else
2386	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2387if (t[Position(P,P[j]+P[i] )] = 1) then
2388Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2389Add(KK2, Position(P, P[j]+P[i]) );
2390else
2391Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2392Add(KK1, Position(P, K[i]+K[j]) );
2393fi;
2394	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2395if (t[Position(P,P[j]+P[i] )] = 1) then
2396Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2397Add(KK1, Position(P, P[j]+P[i]) );
2398Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2399Add(KK2, Position(P, K[i]+K[j]) );
2400else
2401Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2402Add(KK1, Position(P, P[j]+P[i]) );
2403Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
2404Add(KK2, Position(P, K[i]+K[j]) );
2405fi;
2406	fi;
2407fi;
2408fi; fi;
2409
2410######
2411############
2412###############
2413
2414if (P[j]-P[i] in P ) then
2415if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2416if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2417if (t[Position(P,P[j]-P[i] )] = 1) then
2418Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2419Add(KK1, Position(P, K[j]-K[i]) );
2420Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2421Add(KK2, Position(P, P[j]-P[i]) );
2422else
2423Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2424Add(KK1, Position(P, K[j]-K[i]) );
2425Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2426Add(KK2, Position(P, P[j]-P[i]) );
2427fi;
2428else
2429	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2430if (t[Position(P,P[j]-P[i] )] = 1) then
2431Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2432Add(KK2, Position(P, P[j]-P[i]) );
2433else
2434Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2435Add(KK1, Position(P, K[j]-K[i]) );
2436fi;
2437	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2438
2439if (t[Position(P,P[j]-P[i] )] = 1) then
2440Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2441Add(KK1, Position(P, P[j]-P[i]) );
2442Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2443Add(KK2, Position(P, K[j]-K[i]) );
2444else
2445Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2446Add(KK1, Position(P, P[j]-P[i]) );
2447Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
2448Add(KK2, Position(P, K[j]-K[i]) );
2449fi;
2450	fi;
2451fi;
2452fi; fi;
2453fi;
2454fi;
2455
2456SetEntrySCTable( TT, i,  j , KK1);
2457SetEntrySCTable( TT, i,  Position(P,K[j]), KK2);
2458
2459##########################
2460###########################################
2461#################################################
2462
2463		else
2464			if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
2465
2466KK1:=[];
2467
2468if (t[i]=1) then
2469if (t[j]=1) then
2470
2471if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha + phi_beta quindi sono nel caso sicuro
2472if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2473if (t[Position(P,P[j]+P[i])]=1) then
2474Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
2475Add(KK1, Position(P, P[i]+P[j]) );
2476fi; fi; fi;
2477
2478if (P[j]-P[i] in P ) then
2479if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2480if (t[Position(P,P[j]-P[i])]=1) then
2481if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2482Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2483Add(KK1, Position(P, P[j]-P[i]) );
2484else
2485	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
2486Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2487Add(KK1, Position(P, P[j]-P[i]) );
2488	else
2489Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2490Add(KK1, Position(P, K[j]-K[i]) );
2491	fi;
2492fi; fi; fi; fi;
2493
2494SetEntrySCTable( TT, i,  j , KK1);
2495
2496else
2497
2498if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2499if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2500if (t[Position(P,P[j]+P[i])]=-1) then
2501Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
2502Add(KK1, Position(P, P[i]+P[j]) );
2503fi; fi; fi;
2504
2505if (P[j]-P[i] in P ) then
2506if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2507if (t[Position(P,P[j]-P[i])]=-1) then
2508if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2509Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2510Add(KK1, Position(P, P[j]-P[i]) );
2511else
2512	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
2513Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2514Add(KK1, Position(P, P[j]-P[i]) );
2515	else
2516Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2517Add(KK1, Position(P, K[j]-K[i]) );
2518	fi;
2519fi; fi; fi; fi;
2520SetEntrySCTable( TT, i,  j , KK1);
2521fi;
2522
2523else
2524if (t[j]=1) then
2525
2526if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2527if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2528if (t[Position(P,P[j]+P[i])]=-1) then
2529Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
2530Add(KK1, Position(P, P[i]+P[j]) );
2531fi; fi; fi;
2532
2533if (P[j]-P[i] in P ) then
2534if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2535if (t[Position(P,P[j]-P[i])]=-1) then
2536if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2537Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2538Add(KK1, Position(P, P[j]-P[i]) );
2539else
2540	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
2541Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2542Add(KK1, Position(P, P[j]-P[i]) );
2543	else
2544Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2545Add(KK1, Position(P, K[j]-K[i]) );
2546	fi;
2547fi; fi; fi; fi;
2548
2549SetEntrySCTable( TT, i,  j , KK1);
2550
2551
2552else
2553
2554
2555if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2556if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2557if (t[Position(P,P[j]+P[i])]=1) then
2558Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
2559Add(KK1, Position(P, P[i]+P[j]) );
2560fi; fi; fi;
2561
2562if (P[j]-P[i] in P ) then
2563if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
2564if (t[Position(P,P[j]-P[i])]=1) then
2565if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2566Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2567Add(KK1, Position(P, P[j]-P[i]) );
2568else
2569	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
2570Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2571Add(KK1, Position(P, P[j]-P[i]) );
2572	else
2573Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
2574Add(KK1, Position(P, K[j]-K[i]) );
2575	fi;
2576fi; fi; fi; fi;
2577
2578SetEntrySCTable( TT, i,  j , KK1);
2579
2580fi;
2581fi; fi; fi;
2582fi; fi;
2583od; od;
2584
2585for i in [1..p] do #variazione alpha per gli X
2586		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
2587KK1:=[];
2588
2589if (t[i] = 1) then
2590
2591if (P[i]+K[i] in P ) then
2592if not  (IsEmpty(To[i][Position(P,K[i])][2] ) = true ) then
2593if (t[Position(P, P[i]+K[i])]=-1) then
2594Add(KK1, -1*To[Position(P, P[i])][Position(P,K[i])][2][1]);
2595Add(KK1, Position(P, K[i]+P[i]) );
2596fi; fi; fi;
2597
2598else
2599
2600if (P[i]+K[i] in P ) then
2601if not  (IsEmpty(To[i][Position(P,K[i])][2] ) = true ) then
2602if (t[Position(P, P[i]+K[i])]=-1) then
2603Add(KK1, +1*To[Position(P, P[i])][Position(P,K[i])][2][1]);
2604Add(KK1, Position(P, K[i]+P[i]) );
2605fi; fi; fi;
2606
2607fi;
2608
2609SetEntrySCTable( TT, i,  Position(P,K[i]) , KK1);
2610
2611		fi;
2612od;
2613
2614
2615#########################################################################################################
2616###########################################################################################################
2617
2618
2619#############################################################################################################################################
2620###################################################################################################################
2621
2622#Prodotti [Y,Y] con indici differenti X>Y ovvero alpha > beta !!!!!!!
2623
2624
2625for i in [1..p-1] do #variazione alpha per gli X
2626	for j in [i+1..p] do #variazione beta < alpha per gli Y
2627		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
2628			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then # beta< phi_beta (ragiono con gli Y)
2629
2630KK1:=[]; # i p+j
2631KK2:=[]; # i p+jbar
2632KK3:=[]; # ibar p+j
2633KK4:=[]; # ibar p+jbar
2634
2635if (t[i]=1) then
2636if (t[j]=1) then
2637
2638if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2639if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2640if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2641
2642if (t[Position(P,P[j]+P[i] )] = 1) then
2643Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2644Add(KK1, Position(P, P[i]+P[j]) );
2645Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2646Add(KK2, Position(P, K[i]+K[j]) );
2647Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2648Add(KK3, Position(P, K[i]+K[j]) );
2649Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2650Add(KK4, Position(P, P[i]+P[j]) );
2651else
2652Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2653Add(KK1, Position(P, P[i]+P[j]) );
2654Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2655Add(KK2, Position(P, K[i]+K[j]) );
2656Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2657Add(KK3, Position(P, K[i]+K[j]) );
2658Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2659Add(KK4, Position(P, P[i]+P[j]) );
2660fi;
2661
2662else
2663	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2664
2665if (t[Position(P,P[j]+P[i] )] = 1) then
2666Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2667Add(KK1, Position(P, P[i]+P[j]) );
2668Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2669Add(KK4, Position(P, P[i]+P[j]) );
2670else
2671Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2672Add(KK2, Position(P, K[i]+K[j]) );
2673Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2674Add(KK3, Position(P, K[i]+K[j]) );
2675fi;
2676	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2677
2678if (t[Position(P,P[j]+P[i] )] = 1) then
2679Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2680Add(KK1, Position(P, K[j]+K[i]) );
2681Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2682Add(KK2, Position(P, P[i]+P[j]) );
2683Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2684Add(KK3, Position(P, P[i]+P[j]) );
2685Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2686Add(KK4, Position(P,K[j]+K[i]) );
2687else
2688Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2689Add(KK1, Position(P, K[j]+K[i]) );
2690Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2691Add(KK2, Position(P, P[i]+P[j]) );
2692Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2693Add(KK3, Position(P, P[i]+P[j]) );
2694Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2695Add(KK4, Position(P, K[j]+K[i]) );
2696fi;
2697	fi;
2698fi;
2699fi; fi;
2700
2701############
2702
2703if (P[j]-P[i] in P ) then
2704if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
2705if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2706
2707if (t[Position(P,P[j]-P[i] )] = 1) then
2708Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2709Add(KK1, Position(P, P[j]-P[i]) );
2710Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2711Add(KK2, Position(P, K[j]-K[i]) );
2712Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2713Add(KK3, Position(P, K[j]-K[i]) );
2714Add(KK4, (+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2715Add(KK4, Position(P, P[j]-P[i]) );
2716else
2717Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2718Add(KK1, Position(P, P[j]-P[i]) );
2719Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2720Add(KK2, Position(P, K[j]-K[i]) );
2721Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2722Add(KK3, Position(P, K[j]-K[i]) );
2723Add(KK4, (+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2724Add(KK4, Position(P, P[j]-P[i]) );
2725fi;
2726
2727else
2728	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2729
2730if (t[Position(P,P[j]-P[i] )] = 1) then
2731Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2732Add(KK1, Position(P, P[j]-P[i]) );
2733Add(KK4, (+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2734Add(KK4, Position(P, P[j]-P[i]) );
2735else
2736Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2737Add(KK2, Position(P, K[j]-K[i]) );
2738Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2739Add(KK3, Position(P, K[j]-K[i]) );
2740fi;
2741	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2742
2743if (t[Position(P,P[j]-P[i] )] = 1) then
2744Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2745Add(KK1, Position(P, K[j]-K[i]) );
2746Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2747Add(KK2, Position(P, P[j]-P[i]) );
2748Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2749Add(KK3, Position(P, P[j]-P[i]) );
2750Add(KK4, (+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2751Add(KK4, Position(P, K[j]-K[i]) );
2752else
2753Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2754Add(KK1, Position(P, K[j]-K[i]) );
2755Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2756Add(KK2, Position(P, P[j]-P[i]) );
2757Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2758Add(KK3, Position(P, P[j]-P[i]) );
2759Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2760Add(KK4, Position(P, K[j]-K[i]) );
2761fi;
2762	fi;
2763fi;
2764fi; fi;
2765
2766
2767##########
2768
2769if (P[i]+K[j] in P ) then
2770if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
2771if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
2772
2773if (t[Position(P,P[i]+K[j] )] = 1) then
2774Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2775Add(KK1, Position(P, P[i]+K[j]) );
2776Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2777Add(KK2, Position(P, K[i]+P[j]) );
2778Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2779Add(KK3, Position(P, K[i]+P[j]) );
2780Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2781Add(KK4, Position(P, P[i]+K[j]) );
2782else
2783Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2784Add(KK1, Position(P, P[i]+K[j]) );
2785Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2786Add(KK2, Position(P, K[i]+P[j]) );
2787Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2788Add(KK3, Position(P, K[i]+P[j]) );
2789Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2790Add(KK4, Position(P, P[i]+K[j]) );
2791fi;
2792else
2793	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
2794
2795if (t[Position(P,K[j]+P[i] )] = 1) then
2796Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2797Add(KK1, Position(P, P[i]+K[j]) );
2798Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2799Add(KK4, Position(P, P[i]+K[j]) );
2800else
2801Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2802Add(KK2, Position(P, K[i]+P[j]) );
2803Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2804Add(KK3, Position(P, K[i]+P[j]) );
2805fi;
2806	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2807
2808if (t[Position(P,P[i]+K[j] )] = 1) then
2809Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2810Add(KK1, Position(P, K[i]+P[j]) );
2811Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2812Add(KK2, Position(P, P[i]+K[j]) );
2813Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2814Add(KK3, Position(P, P[i]+K[j]) );
2815Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2816Add(KK4, Position(P, K[i]+P[j]) );
2817else
2818Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2819Add(KK1, Position(P, K[i]+P[j]) );
2820Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2821Add(KK2, Position(P, P[i]+K[j]) );
2822Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2823Add(KK3, Position(P, P[i]+K[j]) );
2824Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
2825Add(KK4, Position(P, K[i]+P[j]) );
2826fi;
2827	fi;
2828fi;
2829fi; fi;
2830
2831##########
2832
2833if (K[j]-P[i] in P ) then
2834if not (IsEmpty(To[p+Position(P, P[i])][Position(P,K[j])][2])=true) then
2835if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
2836
2837if (t[Position(P,K[j]-P[i] )] = 1) then
2838Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2839Add(KK1, Position(P, K[j]-P[i]) );
2840Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2841Add(KK2, Position(P, P[j]-K[i]) );
2842Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2843Add(KK3, Position(P, P[j]-K[i]) );
2844Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2845Add(KK4, Position(P, K[j]-P[i]) );
2846else
2847Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2848Add(KK1, Position(P, K[j]-P[i]) );
2849Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2850Add(KK2, Position(P, P[j]-K[i]) );
2851Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2852Add(KK3, Position(P, P[j]-K[i]) );
2853Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2854Add(KK4, Position(P, K[j]-P[i]) );
2855fi;
2856else
2857	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
2858
2859if (t[Position(P,K[j]-P[i] )] = 1) then
2860Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2861Add(KK1, Position(P, K[j]-P[i]) );
2862Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2863Add(KK4, Position(P, K[j]-P[i]) );
2864else
2865Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2866Add(KK2, Position(P, P[j]-K[i]) );
2867Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2868Add(KK3, Position(P, P[j]-K[i]) );
2869fi;
2870	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2871
2872if (t[Position(P,K[j]-P[i] )] = 1) then
2873Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2874Add(KK1, Position(P, P[j]-K[i]) );
2875Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2876Add(KK2, Position(P, K[j]-P[i]) );
2877Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2878Add(KK3, Position(P, K[j]-P[i]) );
2879Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2880Add(KK4, Position(P, P[j]-K[i]) );
2881else
2882Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2883Add(KK1, Position(P, P[j]-K[i]) );
2884Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2885Add(KK2, Position(P, K[j]-P[i]) );
2886Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2887Add(KK3, Position(P, K[j]-P[i]) );
2888Add(KK4, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
2889Add(KK4, Position(P, P[j]-K[i]) );
2890fi;
2891	fi;
2892fi;
2893fi; fi;
2894
2895####################
2896
2897else # ovvero t[j]=-1
2898
2899#########################
2900
2901if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
2902if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
2903if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
2904
2905if (t[Position(P,P[j]+P[i] )] = 1) then
2906Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2907Add(KK1, Position(P, P[i]+P[j]) );
2908Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2909Add(KK2, Position(P, K[i]+K[j]) );
2910Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2911Add(KK3, Position(P, K[i]+K[j]) );
2912Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2913Add(KK4, Position(P, P[i]+P[j]) );
2914else
2915Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2916Add(KK1, Position(P, P[i]+P[j]) );
2917Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2918Add(KK2, Position(P, K[i]+K[j]) );
2919Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2920Add(KK3, Position(P, K[i]+K[j]) );
2921Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2922Add(KK4, Position(P, P[i]+P[j]) );
2923fi;
2924else
2925	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
2926
2927if (t[Position(P,P[j]+P[i] )] = 1) then
2928Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2929Add(KK1, Position(P, P[i]+P[j]) );
2930Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2931Add(KK4, Position(P, P[i]+P[j]) );
2932else
2933Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2934Add(KK2, Position(P, K[i]+K[j]) );
2935Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2936Add(KK3, Position(P, K[i]+K[j]) );
2937fi;
2938	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
2939
2940if (t[Position(P,P[j]+P[i] )] = 1) then
2941Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2942Add(KK1, Position(P, K[j]+K[i]) );
2943Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2944Add(KK2, Position(P, P[i]+P[j]) );
2945Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2946Add(KK3, Position(P, P[i]+P[j]) );
2947Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2948Add(KK4, Position(P,K[j]+K[i]) );
2949else
2950Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2951Add(KK1, Position(P, K[j]+K[i]) );
2952Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2953Add(KK2, Position(P, P[i]+P[j]) );
2954Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2955Add(KK3, Position(P, P[i]+P[j]) );
2956Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
2957Add(KK4, Position(P, K[j]+K[i]) );
2958fi;
2959	fi;
2960fi;
2961fi; fi;
2962
2963###############
2964
2965if (P[j]-P[i] in P ) then
2966if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
2967if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
2968
2969if (t[Position(P,P[j]-P[i] )] = 1) then
2970Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2971Add(KK1, Position(P, P[j]-P[i]) );
2972Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2973Add(KK2, Position(P, K[j]-K[i]) );
2974Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2975Add(KK3, Position(P, K[j]-K[i]) );
2976Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2977Add(KK4, Position(P, P[j]-P[i]) );
2978else
2979Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2980Add(KK1, Position(P, P[j]-P[i]) );
2981Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2982Add(KK2, Position(P, K[j]-K[i]) );
2983Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2984Add(KK3, Position(P, K[j]-K[i]) );
2985Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2986Add(KK4, Position(P, P[j]-P[i]) );
2987fi;
2988else
2989	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
2990
2991if (t[Position(P,P[j]-P[i] )] = 1) then
2992Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2993Add(KK1, Position(P, P[j]-P[i]) );
2994Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2995Add(KK4, Position(P, P[j]-P[i]) );
2996else
2997Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
2998Add(KK2, Position(P, K[j]-K[i]) );
2999Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3000Add(KK3, Position(P, K[j]-K[i]) );
3001fi;
3002	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3003
3004if (t[Position(P,P[j]-P[i] )] = 1) then
3005Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3006Add(KK1, Position(P, K[j]-K[i]) );
3007Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3008Add(KK2, Position(P, P[j]-P[i]) );
3009Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3010Add(KK3, Position(P, P[j]-P[i]) );
3011Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3012Add(KK4, Position(P, K[j]-K[i]) );
3013else
3014Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3015Add(KK1, Position(P, K[j]-K[i]) );
3016Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3017Add(KK2, Position(P, P[j]-P[i]) );
3018Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3019Add(KK3, Position(P, P[j]-P[i]) );
3020Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3021Add(KK4, Position(P, K[j]-K[i]) );
3022fi;
3023	fi;
3024fi;
3025fi; fi;
3026
3027##########
3028
3029if (P[i]+K[j] in P ) then
3030if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
3031if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
3032
3033if (t[Position(P,P[i]+K[j] )] = 1) then
3034Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3035Add(KK1, Position(P, P[i]+K[j]) );
3036Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3037Add(KK2, Position(P, K[i]+P[j]) );
3038Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3039Add(KK3, Position(P, K[i]+P[j]) );
3040Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3041Add(KK4, Position(P, P[i]+K[j]) );
3042else
3043Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3044Add(KK1, Position(P, P[i]+K[j]) );
3045Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3046Add(KK2, Position(P, K[i]+P[j]) );
3047Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3048Add(KK3, Position(P, K[i]+P[j]) );
3049Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3050Add(KK4, Position(P, P[i]+K[j]) );
3051fi;
3052else
3053	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
3054
3055if (t[Position(P,K[j]+P[i] )] = 1) then
3056Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3057Add(KK1, Position(P, P[i]+K[j]) );
3058Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3059Add(KK4, Position(P, P[i]+K[j]) );
3060else
3061Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3062Add(KK2, Position(P, K[i]+P[j]) );
3063Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3064Add(KK3, Position(P, K[i]+P[j]) );
3065fi;
3066	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3067
3068if (t[Position(P,P[i]+K[j] )] = 1) then
3069Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3070Add(KK1, Position(P, K[i]+P[j]) );
3071Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3072Add(KK2, Position(P, P[i]+K[j]) );
3073Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3074Add(KK3, Position(P, P[i]+K[j]) );
3075Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3076Add(KK4, Position(P, K[i]+P[j]) );
3077else
3078Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3079Add(KK1, Position(P, K[i]+P[j]) );
3080Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3081Add(KK2, Position(P, P[i]+K[j]) );
3082Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3083Add(KK3, Position(P, P[i]+K[j]) );
3084Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3085Add(KK4, Position(P, K[i]+P[j]) );
3086fi;
3087	fi;
3088fi;
3089fi; fi;
3090
3091#############
3092
3093if (K[j]-P[i] in P ) then
3094if not (IsEmpty(To[p+Position(P, P[i])][Position(P,K[j])][2])=true) then
3095if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
3096
3097if (t[Position(P,K[j]-P[i] )] = 1) then
3098Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3099Add(KK1, Position(P, K[j]-P[i]) );
3100Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3101Add(KK2, Position(P, P[j]-K[i]) );
3102Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3103Add(KK3, Position(P, P[j]-K[i]) );
3104Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3105Add(KK4, Position(P, K[j]-P[i]) );
3106else
3107Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3108Add(KK1, Position(P, K[j]-P[i]) );
3109Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3110Add(KK2, Position(P, P[j]-K[i]) );
3111Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3112Add(KK3, Position(P, P[j]-K[i]) );
3113Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3114Add(KK4, Position(P, K[j]-P[i]) );
3115fi;
3116else
3117	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
3118
3119if (t[Position(P,K[j]-P[i] )] = 1) then
3120Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3121Add(KK1, Position(P, K[j]-P[i]) );
3122Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3123Add(KK4, Position(P, K[j]-P[i]) );
3124else
3125Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3126Add(KK2, Position(P, P[j]-K[i]) );
3127Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3128Add(KK3, Position(P, P[j]-K[i]) );
3129fi;
3130	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3131
3132if (t[Position(P,K[j]-P[i] )] = 1) then
3133Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3134Add(KK1, Position(P, P[j]-K[i]) );
3135Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3136Add(KK2, Position(P, K[j]-P[i]) );
3137Add(KK3, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3138Add(KK3, Position(P, K[j]-P[i]) );
3139Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3140Add(KK4, Position(P, P[j]-K[i]) );
3141else
3142Add(KK1, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3143Add(KK1, Position(P, P[j]-K[i]) );
3144Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3145Add(KK2, Position(P, K[j]-P[i]) );
3146Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3147Add(KK3, Position(P, K[j]-P[i]) );
3148Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3149Add(KK4, Position(P, P[j]-K[i]) );
3150fi;
3151	fi;
3152fi;
3153fi; fi;
3154
3155fi;
3156
3157########################à
3158
3159else #t[i]=-1
3160if (t[j]=1) then
3161
3162#########################
3163
3164if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3165if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3166if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3167
3168if (t[Position(P,P[j]+P[i] )] = 1) then
3169Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3170Add(KK1, Position(P, P[i]+P[j]) );
3171Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3172Add(KK2, Position(P, K[i]+K[j]) );
3173Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3174Add(KK3, Position(P, K[i]+K[j]) );
3175Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3176Add(KK4, Position(P, P[i]+P[j]) );
3177else
3178Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3179Add(KK1, Position(P, P[i]+P[j]) );
3180Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3181Add(KK2, Position(P, K[i]+K[j]) );
3182Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3183Add(KK3, Position(P, K[i]+K[j]) );
3184Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3185Add(KK4, Position(P, P[i]+P[j]) );
3186fi;
3187else
3188	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3189
3190if (t[Position(P,P[j]+P[i] )] = 1) then
3191Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3192Add(KK1, Position(P, P[i]+P[j]) );
3193Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3194Add(KK4, Position(P, P[i]+P[j]) );
3195else
3196Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3197Add(KK2, Position(P, K[i]+K[j]) );
3198Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3199Add(KK3, Position(P, K[i]+K[j]) );
3200fi;
3201	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3202
3203if (t[Position(P,P[j]+P[i] )] = 1) then
3204Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3205Add(KK1, Position(P, K[j]+K[i]) );
3206Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3207Add(KK2, Position(P, P[i]+P[j]) );
3208Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3209Add(KK3, Position(P, P[i]+P[j]) );
3210Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3211Add(KK4, Position(P,K[j]+K[i]) );
3212else
3213Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3214Add(KK1, Position(P, K[j]+K[i]) );
3215Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3216Add(KK2, Position(P, P[i]+P[j]) );
3217Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3218Add(KK3, Position(P, P[i]+P[j]) );
3219Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3220Add(KK4, Position(P, K[j]+K[i]) );
3221fi;
3222	fi;
3223fi;
3224fi; fi;
3225
3226###############
3227
3228if (P[j]-P[i] in P ) then
3229if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
3230if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
3231
3232if (t[Position(P,P[j]-P[i] )] = 1) then
3233Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3234Add(KK1, Position(P, P[j]-P[i]) );
3235Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3236Add(KK2, Position(P, K[j]-K[i]) );
3237Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3238Add(KK3, Position(P, K[j]-K[i]) );
3239Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3240Add(KK4, Position(P, P[j]-P[i]) );
3241else
3242Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3243Add(KK1, Position(P, P[j]-P[i]) );
3244Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3245Add(KK2, Position(P, K[j]-K[i]) );
3246Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3247Add(KK3, Position(P, K[j]-K[i]) );
3248Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3249Add(KK4, Position(P, P[j]-P[i]) );
3250fi;
3251
3252else
3253	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
3254
3255if (t[Position(P,P[j]-P[i] )] = 1) then
3256Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3257Add(KK1, Position(P, P[j]-P[i]) );
3258Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3259Add(KK4, Position(P, P[j]-P[i]) );
3260else
3261Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3262Add(KK2, Position(P, K[j]-K[i]) );
3263Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3264Add(KK3, Position(P, K[j]-K[i]) );
3265fi;
3266	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3267
3268if (t[Position(P,P[j]-P[i] )] = 1) then
3269Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3270Add(KK1, Position(P, K[j]-K[i]) );
3271Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3272Add(KK2, Position(P, P[j]-P[i]) );
3273Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3274Add(KK3, Position(P, P[j]-P[i]) );
3275Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3276Add(KK4, Position(P, K[j]-K[i]) );
3277else
3278Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3279Add(KK1, Position(P, K[j]-K[i]) );
3280Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3281Add(KK2, Position(P, P[j]-P[i]) );
3282Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3283Add(KK3, Position(P, P[j]-P[i]) );
3284Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3285Add(KK4, Position(P, K[j]-K[i]) );
3286fi;
3287	fi;
3288fi;
3289fi; fi;
3290
3291#############
3292
3293if (P[i]+K[j] in P ) then
3294if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
3295if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
3296
3297if (t[Position(P,P[i]+K[j] )] = 1) then
3298Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3299Add(KK1, Position(P, P[i]+K[j]) );
3300Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3301Add(KK2, Position(P, K[i]+P[j]) );
3302Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3303Add(KK3, Position(P, K[i]+P[j]) );
3304Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3305Add(KK4, Position(P, P[i]+K[j]) );
3306else
3307Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3308Add(KK1, Position(P, P[i]+K[j]) );
3309Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3310Add(KK2, Position(P, K[i]+P[j]) );
3311Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3312Add(KK3, Position(P, K[i]+P[j]) );
3313Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3314Add(KK4, Position(P, P[i]+K[j]) );
3315fi;
3316else
3317	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
3318
3319if (t[Position(P,K[j]+P[i] )] = 1) then
3320Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3321Add(KK1, Position(P, P[i]+K[j]) );
3322Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3323Add(KK4, Position(P, P[i]+K[j]) );
3324else
3325Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3326Add(KK2, Position(P, K[i]+P[j]) );
3327Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3328Add(KK3, Position(P, K[i]+P[j]) );
3329fi;
3330	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3331
3332if (t[Position(P,P[i]+K[j] )] = 1) then
3333Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3334Add(KK1, Position(P, K[i]+P[j]) );
3335Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3336Add(KK2, Position(P, P[i]+K[j]) );
3337Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3338Add(KK3, Position(P, P[i]+K[j]) );
3339Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3340Add(KK4, Position(P, K[i]+P[j]) );
3341else
3342Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3343Add(KK1, Position(P, K[i]+P[j]) );
3344Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3345Add(KK2, Position(P, P[i]+K[j]) );
3346Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3347Add(KK3, Position(P, P[i]+K[j]) );
3348Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3349Add(KK4, Position(P, K[i]+P[j]) );
3350fi;
3351	fi;
3352fi;
3353fi; fi;
3354
3355#############
3356
3357if (K[j]-P[i] in P ) then
3358if not (IsEmpty(To[p+Position(P, P[i])][Position(P,K[j])][2])=true) then
3359if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
3360
3361if (t[Position(P,K[j]-P[i] )] = 1) then
3362Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3363Add(KK1, Position(P, K[j]-P[i]) );
3364Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3365Add(KK2, Position(P, P[j]-K[i]) );
3366Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3367Add(KK3, Position(P, P[j]-K[i]) );
3368Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3369Add(KK4, Position(P, K[j]-P[i]) );
3370else
3371Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3372Add(KK1, Position(P, K[j]-P[i]) );
3373Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3374Add(KK2, Position(P, P[j]-K[i]) );
3375Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3376Add(KK3, Position(P, P[j]-K[i]) );
3377Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3378Add(KK4, Position(P, K[j]-P[i]) );
3379fi;
3380else
3381	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
3382
3383if (t[Position(P,K[j]-P[i] )] = 1) then
3384Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3385Add(KK1, Position(P, K[j]-P[i]) );
3386Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3387Add(KK4, Position(P, K[j]-P[i]) );
3388else
3389Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3390Add(KK2, Position(P, P[j]-K[i]) );
3391Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3392Add(KK3, Position(P, P[j]-K[i]) );
3393fi;
3394	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3395
3396if (t[Position(P,K[j]-P[i] )] = 1) then
3397Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3398Add(KK1, Position(P, P[j]-K[i]) );
3399Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3400Add(KK2, Position(P, K[j]-P[i]) );
3401Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3402Add(KK3, Position(P, K[j]-P[i]) );
3403Add(KK4, +1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3404Add(KK4, Position(P, P[j]-K[i]) );
3405else
3406Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3407Add(KK1, Position(P, P[j]-K[i]) );
3408Add(KK2, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3409Add(KK2, Position(P, K[j]-P[i]) );
3410Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3411Add(KK3, Position(P, K[j]-P[i]) );
3412Add(KK4, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3413Add(KK4, Position(P, P[j]-K[i]) );
3414fi;
3415	fi;
3416fi;
3417fi; fi;
3418
3419else #t[j]=-1
3420
3421#########################
3422
3423if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3424if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3425if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3426
3427if (t[Position(P,P[j]+P[i] )] = 1) then
3428Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3429Add(KK1, Position(P, P[i]+P[j]) );
3430Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3431Add(KK2, Position(P, K[i]+K[j]) );
3432Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3433Add(KK3, Position(P, K[i]+K[j]) );
3434Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3435Add(KK4, Position(P, P[i]+P[j]) );
3436else
3437Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3438Add(KK1, Position(P, P[i]+P[j]) );
3439Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3440Add(KK2, Position(P, K[i]+K[j]) );
3441Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3442Add(KK3, Position(P, K[i]+K[j]) );
3443Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3444Add(KK4, Position(P, P[i]+P[j]) );
3445fi;
3446else
3447	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3448
3449if (t[Position(P,P[j]+P[i] )] = 1) then
3450Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3451Add(KK1, Position(P, P[i]+P[j]) );
3452Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3453Add(KK4, Position(P, P[i]+P[j]) );
3454else
3455Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3456Add(KK2, Position(P, K[i]+K[j]) );
3457Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3458Add(KK3, Position(P, K[i]+K[j]) );
3459fi;
3460	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3461
3462if (t[Position(P,P[j]+P[i] )] = 1) then
3463Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3464Add(KK1, Position(P, K[j]+K[i]) );
3465Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3466Add(KK2, Position(P, P[i]+P[j]) );
3467Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3468Add(KK3, Position(P, P[i]+P[j]) );
3469Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3470Add(KK4, Position(P,K[j]+K[i]) );
3471else
3472Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3473Add(KK1, Position(P, K[j]+K[i]) );
3474Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3475Add(KK2, Position(P, P[i]+P[j]) );
3476Add(KK3, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3477Add(KK3, Position(P, P[i]+P[j]) );
3478Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
3479Add(KK4, Position(P, K[j]+K[i]) );
3480fi;
3481	fi;
3482fi;
3483fi; fi;
3484
3485###############
3486
3487if (P[j]-P[i] in P ) then
3488if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
3489if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
3490
3491if (t[Position(P,P[j]-P[i] )] = 1) then
3492Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3493Add(KK1, Position(P, P[j]-P[i]) );
3494Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3495Add(KK2, Position(P, K[j]-K[i]) );
3496Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3497Add(KK3, Position(P, K[j]-K[i]) );
3498Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3499Add(KK4, Position(P, P[j]-P[i]) );
3500else
3501Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3502Add(KK1, Position(P, P[j]-P[i]) );
3503Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3504Add(KK2, Position(P, K[j]-K[i]) );
3505Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3506Add(KK3, Position(P, K[j]-K[i]) );
3507Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3508Add(KK4, Position(P, P[j]-P[i]) );
3509fi;
3510else
3511	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
3512
3513if (t[Position(P,P[j]-P[i] )] = 1) then
3514Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3515Add(KK1, Position(P, P[j]-P[i]) );
3516Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3517Add(KK4, Position(P, P[j]-P[i]) );
3518else
3519Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3520Add(KK2, Position(P, K[j]-K[i]) );
3521Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3522Add(KK3, Position(P, K[j]-K[i]) );
3523fi;
3524	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3525
3526if (t[Position(P,P[j]-P[i] )] = 1) then
3527Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3528Add(KK1, Position(P, K[j]-K[i]) );
3529Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3530Add(KK2, Position(P, P[j]-P[i]) );
3531Add(KK3, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3532Add(KK3, Position(P, P[j]-P[i]) );
3533Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3534Add(KK4, Position(P, K[j]-K[i]) );
3535else
3536Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3537Add(KK1, Position(P, K[j]-K[i]) );
3538Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3539Add(KK2, Position(P, P[j]-P[i]) );
3540Add(KK3, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3541Add(KK3, Position(P, P[j]-P[i]) );
3542Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1])/2);
3543Add(KK4, Position(P, K[j]-K[i]) );
3544fi;
3545	fi;
3546fi;
3547fi; fi;
3548
3549#############
3550
3551if (P[i]+K[j] in P ) then
3552if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
3553if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
3554
3555if (t[Position(P,P[i]+K[j] )] = 1) then
3556Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3557Add(KK1, Position(P, P[i]+K[j]) );
3558Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3559Add(KK2, Position(P, K[i]+P[j]) );
3560Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3561Add(KK3, Position(P, K[i]+P[j]) );
3562Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3563Add(KK4, Position(P, P[i]+K[j]) );
3564else
3565Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3566Add(KK1, Position(P, P[i]+K[j]) );
3567Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3568Add(KK2, Position(P, K[i]+P[j]) );
3569Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3570Add(KK3, Position(P, K[i]+P[j]) );
3571Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3572Add(KK4, Position(P, P[i]+K[j]) );
3573fi;
3574
3575else
3576	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
3577
3578if (t[Position(P,K[j]+P[i] )] = 1) then
3579Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3580Add(KK1, Position(P, P[i]+K[j]) );
3581Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3582Add(KK4, Position(P, P[i]+K[j]) );
3583else
3584Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3585Add(KK2, Position(P, K[i]+P[j]) );
3586Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3587Add(KK3, Position(P, K[i]+P[j]) );
3588fi;
3589	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3590
3591if (t[Position(P,P[i]+K[j] )] = 1) then
3592Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3593Add(KK1, Position(P, K[i]+P[j]) );
3594Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3595Add(KK2, Position(P, P[i]+K[j]) );
3596Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3597Add(KK3, Position(P, P[i]+K[j]) );
3598Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3599Add(KK4, Position(P, K[i]+P[j]) );
3600else
3601Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3602Add(KK1, Position(P, K[i]+P[j]) );
3603Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3604Add(KK2, Position(P, P[i]+K[j]) );
3605Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3606Add(KK3, Position(P, P[i]+K[j]) );
3607Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
3608Add(KK4, Position(P, K[i]+P[j]) );
3609fi;
3610	fi;
3611fi;
3612fi; fi;
3613
3614#############
3615
3616if (K[j]-P[i] in P ) then
3617if not (IsEmpty(To[p+Position(P, P[i])][Position(P,K[j])][2])=true) then
3618if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
3619
3620if (t[Position(P,K[j]-P[i] )] = 1) then
3621Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3622Add(KK1, Position(P, K[j]-P[i]) );
3623Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3624Add(KK2, Position(P, P[j]-K[i]) );
3625Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3626Add(KK3, Position(P, P[j]-K[i]) );
3627Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3628Add(KK4, Position(P, K[j]-P[i]) );
3629else
3630Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3631Add(KK1, Position(P, K[j]-P[i]) );
3632Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3633Add(KK2, Position(P, P[j]-K[i]) );
3634Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3635Add(KK3, Position(P, P[j]-K[i]) );
3636Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3637Add(KK4, Position(P, K[j]-P[i]) );
3638fi;
3639
3640else
3641	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
3642
3643if (t[Position(P,K[j]-P[i] )] = 1) then
3644Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3645Add(KK1, Position(P, K[j]-P[i]) );
3646Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3647Add(KK4, Position(P, K[j]-P[i]) );
3648else
3649Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3650Add(KK2, Position(P, P[j]-K[i]) );
3651Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3652Add(KK3, Position(P, P[j]-K[i]) );
3653fi;
3654	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3655
3656if (t[Position(P,K[j]-P[i] )] = 1) then
3657Add(KK1, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3658Add(KK1, Position(P, P[j]-K[i]) );
3659Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3660Add(KK2, Position(P, K[j]-P[i]) );
3661Add(KK3, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3662Add(KK3, Position(P, K[j]-P[i]) );
3663Add(KK4, +1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3664Add(KK4, Position(P, P[j]-K[i]) );
3665else
3666Add(KK1, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3667Add(KK1, Position(P, P[j]-K[i]) );
3668Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3669Add(KK2, Position(P, K[j]-P[i]) );
3670Add(KK3, (+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3671Add(KK3, Position(P, K[j]-P[i]) );
3672Add(KK4, -1*(+1*To[p+Position(P, P[i])][Position(P,K[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,P[j])][2][1])/2);
3673Add(KK4, Position(P, P[j]-K[i]) );
3674fi;
3675	fi;
3676fi;
3677fi; fi;
3678
3679fi; fi;
3680
3681SetEntrySCTable( TT, p+i,  p+j , KK1);
3682SetEntrySCTable( TT, p+i,  p+Position(P, K[j]), KK2);
3683SetEntrySCTable( TT, p+Position(P,K[i]), p+j, KK3);
3684SetEntrySCTable( TT, p+Position(P,K[i]) ,p+Position(P, K[j]), KK4);
3685
3686else
3687
3688	if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
3689
3690KK1:=[];
3691KK2:=[];
3692
3693if (t[i]=1) then
3694if (t[j]=1) then
3695
3696if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3697if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3698if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3699
3700if (t[Position(P,P[j]+P[i] )] = 1) then
3701Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3702Add(KK1, Position(P, P[i]+P[j]) );
3703Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3704Add(KK2, Position(P, K[i]+K[j]) );
3705else
3706Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3707Add(KK1, Position(P, P[i]+P[j]) );
3708Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3709Add(KK2, Position(P, K[i]+K[j]) );
3710fi;
3711else
3712	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3713
3714if (t[Position(P,P[j]+P[i] )] = 1) then
3715Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3716Add(KK1, Position(P, P[i]+P[j]) );
3717else
3718Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3719Add(KK2, Position(P, K[i]+K[j]) );
3720fi;
3721	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3722
3723if (t[Position(P,P[j]+P[i] )] = 1) then
3724Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3725Add(KK1, Position(P, K[j]+K[i]) );
3726Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3727Add(KK2, Position(P, P[i]+P[j]) );
3728else
3729Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3730Add(KK1, Position(P, K[j]+K[i]) );
3731Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3732Add(KK2, Position(P, P[i]+P[j]) );
3733fi;
3734	fi;
3735fi;
3736fi; fi;
3737
3738###############
3739
3740if (P[j]-P[i] in P ) then
3741if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
3742if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
3743
3744if (t[Position(P,P[j]-P[i] )] = 1) then
3745Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3746Add(KK1, Position(P, P[j]-P[i]) );
3747Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3748Add(KK2, Position(P, K[j]-K[i]) );
3749else
3750Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3751Add(KK1, Position(P, P[j]-P[i]) );
3752Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3753Add(KK2, Position(P, K[j]-K[i]) );
3754fi;
3755else
3756	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
3757
3758if (t[Position(P,P[j]-P[i] )] = 1) then
3759Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3760Add(KK1, Position(P, P[j]-P[i]) );
3761else
3762Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3763Add(KK2, Position(P, K[j]-K[i]) );
3764fi;
3765	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3766
3767if (t[Position(P,P[j]-P[i] )] = 1) then
3768Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3769Add(KK1, Position(P, K[j]-K[i]) );
3770Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3771Add(KK2, Position(P, P[j]-P[i]) );
3772else
3773Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3774Add(KK1, Position(P, K[j]-K[i]) );
3775Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3776Add(KK2, Position(P, P[j]-P[i]) );
3777fi;
3778	fi;
3779fi;
3780fi; fi;
3781
3782####################
3783else #t[j]=-1
3784
3785if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3786if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3787if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3788
3789if (t[Position(P,P[j]+P[i] )] = 1) then
3790Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3791Add(KK1, Position(P, K[j]+K[i]) );
3792Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3793Add(KK2, Position(P, P[i]+P[j]) );
3794else
3795Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3796Add(KK1, Position(P, K[j]+K[i]) );
3797Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3798Add(KK2, Position(P, P[i]+P[j]) );
3799fi;
3800else
3801	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3802
3803if (t[Position(P,P[j]+P[i] )] = 1) then
3804Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3805Add(KK2, Position(P, P[i]+P[j]) );
3806else
3807Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3808Add(KK1, Position(P, K[j]+K[i]) );
3809fi;
3810	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3811
3812if (t[Position(P,P[j]+P[i] )] = 1) then
3813Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3814Add(KK1, Position(P, K[j]+K[i]) );
3815Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3816Add(KK2, Position(P, P[i]+P[j]) );
3817else
3818Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3819Add(KK1, Position(P, P[i]+P[j]) );
3820Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3821Add(KK2, Position(P, K[j]+K[i]) );
3822fi;
3823	fi;
3824fi;
3825fi; fi;
3826
3827###############
3828
3829if (P[j]-P[i] in P ) then
3830if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
3831if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
3832if (t[Position(P,P[j]-P[i] )] = 1) then
3833Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3834Add(KK1, Position(P, K[j]-K[i]) );
3835Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3836Add(KK2, Position(P, P[j]-P[i]) );
3837else
3838Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3839Add(KK1, Position(P, K[j]-K[i]) );
3840Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3841Add(KK2, Position(P, P[j]-P[i]) );
3842fi;
3843
3844else
3845	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
3846
3847if (t[Position(P,P[j]-P[i] )] = 1) then
3848Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3849Add(KK2, Position(P, P[j]-P[i]) );
3850else
3851Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3852Add(KK1, Position(P, K[j]-K[i]) );
3853fi;
3854	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3855
3856if (t[Position(P,P[j]-P[i] )] = 1) then
3857Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3858Add(KK1, Position(P, P[j]-P[i]) );
3859Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3860Add(KK2, Position(P, K[j]-K[i]) );
3861else
3862Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3863Add(KK1, Position(P, P[j]-P[i]) );
3864Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3865Add(KK2, Position(P, K[j]-K[i]) );
3866fi;
3867	fi;
3868fi;
3869fi; fi;
3870
3871fi;
3872
3873else #t[i]=-1
3874if (t[j]=1) then
3875
3876if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3877if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3878if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3879if (t[Position(P,P[j]+P[i] )] = 1) then
3880Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3881Add(KK1, Position(P, P[i]+P[j]) );
3882Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3883Add(KK2, Position(P, K[i]+K[j]) );
3884else
3885Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3886Add(KK1, Position(P, P[i]+P[j]) );
3887Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3888Add(KK2, Position(P, K[i]+K[j]) );
3889fi;
3890
3891else
3892	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3893
3894if (t[Position(P,P[j]+P[i] )] = 1) then
3895Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3896Add(KK1, Position(P, P[i]+P[j]) );
3897else
3898Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3899Add(KK2, Position(P, K[i]+K[j]) );
3900fi;
3901	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3902
3903if (t[Position(P,P[j]+P[i] )] = 1) then
3904Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3905Add(KK1, Position(P, K[j]+K[i]) );
3906Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3907Add(KK2, Position(P, P[i]+P[j]) );
3908else
3909Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3910Add(KK1, Position(P, K[j]+K[i]) );
3911Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3912Add(KK2, Position(P, P[i]+P[j]) );
3913fi;
3914	fi;
3915fi;
3916fi; fi;
3917
3918
3919#######
3920############
3921###############
3922
3923
3924if (P[j]-P[i] in P ) then
3925if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
3926if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
3927
3928if (t[Position(P,P[j]-P[i] )] = 1) then
3929Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3930Add(KK1, Position(P, P[j]-P[i]) );
3931Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3932Add(KK2, Position(P, K[j]-K[i]) );
3933else
3934Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3935Add(KK1, Position(P, P[j]-P[i]) );
3936Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3937Add(KK2, Position(P, K[j]-K[i]) );
3938fi;
3939
3940else
3941	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
3942
3943if (t[Position(P,P[j]-P[i] )] = 1) then
3944Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3945Add(KK1, Position(P, P[j]-P[i]) );
3946else
3947
3948Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3949Add(KK2, Position(P, K[j]-K[i]) );
3950
3951fi;
3952	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
3953
3954if (t[Position(P,P[j]-P[i] )] = 1) then
3955Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3956Add(KK1, Position(P, K[j]-K[i]) );
3957Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3958Add(KK2, Position(P, P[j]-P[i]) );
3959else
3960Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3961Add(KK1, Position(P, K[j]-K[i]) );
3962Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
3963Add(KK2, Position(P, P[j]-P[i]) );
3964fi;
3965	fi;
3966
3967fi;
3968fi; fi;
3969
3970
3971###########
3972##################
3973####################
3974
3975
3976else #t[i]=t[j]=-1
3977
3978
3979if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
3980if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
3981if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
3982if (t[Position(P,P[j]+P[i] )] = 1) then
3983Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3984Add(KK1, Position(P, K[i]+K[j]) );
3985Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3986Add(KK2, Position(P, P[j]+P[i]) );
3987else
3988Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3989Add(KK1, Position(P, K[i]+K[j]) );
3990Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3991Add(KK2, Position(P, P[j]+P[i]) );
3992fi;
3993
3994else
3995	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
3996
3997if (t[Position(P,P[j]+P[i] )] = 1) then
3998Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
3999Add(KK2, Position(P, P[j]+P[i]) );
4000else
4001Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4002Add(KK1, Position(P, K[i]+K[j]) );
4003fi;
4004	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4005
4006if (t[Position(P,P[j]+P[i] )] = 1) then
4007Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4008Add(KK1, Position(P, P[j]+P[i]) );
4009Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4010Add(KK2, Position(P, K[i]+K[j]) );
4011else
4012Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4013Add(KK1, Position(P, P[j]+P[i]) );
4014Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4015Add(KK2, Position(P, K[i]+K[j]) );
4016fi;
4017	fi;
4018
4019fi;
4020fi; fi;
4021
4022
4023#######
4024############
4025###############
4026
4027if (P[j]-P[i] in P ) then
4028if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4029if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4030if (t[Position(P,P[j]-P[i] )] = 1) then
4031Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4032Add(KK1, Position(P, K[j]-K[i]) );
4033Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4034Add(KK2, Position(P, P[j]-P[i]) );
4035else
4036Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4037Add(KK1, Position(P, K[j]-K[i]) );
4038Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4039Add(KK2, Position(P, P[j]-P[i]) );
4040fi;
4041
4042else
4043	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
4044
4045if (t[Position(P,P[j]-P[i] )] = 1) then
4046Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4047Add(KK2, Position(P, P[j]-P[i]) );
4048else
4049Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4050Add(KK1, Position(P, K[j]-K[i]) );
4051fi;
4052	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4053
4054if (t[Position(P,P[j]-P[i] )] = 1) then
4055Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4056Add(KK1, Position(P, P[j]-P[i]) );
4057Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4058Add(KK2, Position(P, K[j]-K[i]) );
4059else
4060Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4061Add(KK1, Position(P, P[j]-P[i]) );
4062Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4063Add(KK2, Position(P, K[j]-K[i]) );
4064fi;
4065	fi;
4066
4067fi;
4068fi; fi;
4069
4070fi; fi;
4071
4072SetEntrySCTable( TT, p+i,  p+j , KK1);
4073SetEntrySCTable( TT, p+Position(P,K[i]), p+j, KK2);
4074
4075fi;
4076fi;
4077
4078else
4079	if ( p+Position(P, K[i]) = p+Position(P,P[i]) ) then #alpha< phi_alpha
4080			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then #beta< phi_beta
4081
4082KK1:=[];
4083KK2:=[];
4084
4085if (t[i]=1) then
4086if (t[j]=1) then
4087
4088if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4089if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4090if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4091
4092if (t[Position(P,P[j]+P[i] )] = 1) then
4093Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4094Add(KK1, Position(P, P[i]+P[j]) );
4095Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4096Add(KK2, Position(P, K[i]+K[j]) );
4097else
4098Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4099Add(KK1, Position(P, P[i]+P[j]) );
4100Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4101Add(KK2, Position(P, K[i]+K[j]) );
4102fi;
4103
4104else
4105	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4106
4107if (t[Position(P,P[j]+P[i] )] = 1) then
4108Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4109Add(KK1, Position(P, P[i]+P[j]) );
4110else
4111Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4112Add(KK2, Position(P, K[i]+K[j]) );
4113fi;
4114	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4115
4116if (t[Position(P,P[j]+P[i] )] = 1) then
4117Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4118Add(KK1, Position(P, K[j]+K[i]) );
4119Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4120Add(KK2, Position(P, P[i]+P[j]) );
4121else
4122Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4123Add(KK1, Position(P, K[j]+K[i]) );
4124Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4125Add(KK2, Position(P, P[i]+P[j]) );
4126fi;
4127	fi;
4128
4129fi;
4130fi; fi;
4131
4132
4133#######
4134############
4135###############
4136
4137
4138if (P[j]-P[i] in P ) then
4139if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4140if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4141if (t[Position(P,P[j]-P[i] )] = 1) then
4142Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4143Add(KK1, Position(P, P[j]-P[i]) );
4144Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4145Add(KK2, Position(P, K[j]-K[i]) );
4146else
4147Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4148Add(KK1, Position(P, P[j]-P[i]) );
4149Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4150Add(KK2, Position(P, K[j]-K[i]) );
4151fi;
4152
4153else
4154	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
4155
4156if (t[Position(P,P[j]-P[i] )] = 1) then
4157Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4158Add(KK1, Position(P, P[j]-P[i]) );
4159else
4160Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4161Add(KK2, Position(P, K[j]-K[i]) );
4162fi;
4163	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4164
4165if (t[Position(P,P[j]-P[i] )] = 1) then
4166Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4167Add(KK1, Position(P, K[j]-K[i]) );
4168Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4169Add(KK2, Position(P, P[j]-P[i]) );
4170else
4171Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4172Add(KK1, Position(P, K[j]-K[i]) );
4173Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4174Add(KK2, Position(P, P[j]-P[i]) );
4175fi;
4176	fi;
4177
4178fi;
4179fi; fi;
4180
4181
4182###########
4183##################
4184####################
4185
4186else #t[j]=-1
4187
4188if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4189if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4190if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4191if (t[Position(P,P[j]+P[i] )] = 1) then
4192Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4193Add(KK1, Position(P, P[i]+P[j]) );
4194Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4195Add(KK2, Position(P, K[i]+K[j]) );
4196else
4197Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4198Add(KK1, Position(P, P[i]+P[j]) );
4199Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4200Add(KK2, Position(P, K[i]+K[j]) );
4201fi;
4202
4203else
4204	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4205if (t[Position(P,P[j]+P[i] )] = 1) then
4206Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4207Add(KK1, Position(P, P[i]+P[j]) );
4208else
4209Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4210Add(KK2, Position(P, K[i]+K[j]) );
4211fi;
4212	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4213
4214if (t[Position(P,P[j]+P[i] )] = 1) then
4215Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4216Add(KK1, Position(P, K[j]+K[i]) );
4217Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4218Add(KK2, Position(P, P[i]+P[j]) );
4219else
4220Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4221Add(KK1, Position(P, K[j]+K[i]) );
4222Add(KK2, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4223Add(KK2, Position(P, P[i]+P[j]) );
4224fi;
4225	fi;
4226
4227fi;
4228fi; fi;
4229
4230
4231#######
4232############
4233###############
4234
4235
4236if (P[j]-P[i] in P ) then
4237if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4238if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4239if (t[Position(P,P[j]-P[i] )] = 1) then
4240Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4241Add(KK1, Position(P, P[j]-P[i]) );
4242Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4243Add(KK2, Position(P, K[j]-K[i]) );
4244else
4245Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4246Add(KK1, Position(P, P[j]-P[i]) );
4247Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4248Add(KK2, Position(P, K[j]-K[i]) );
4249fi;
4250
4251else
4252	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
4253
4254if (t[Position(P,P[j]-P[i] )] = 1) then
4255Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4256Add(KK1, Position(P, P[j]-P[i]) );
4257else
4258Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4259Add(KK2, Position(P, K[j]-K[i]) );
4260fi;
4261	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4262
4263if (t[Position(P,P[j]-P[i] )] = 1) then
4264Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4265Add(KK1, Position(P, K[j]-K[i]) );
4266Add(KK2, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4267Add(KK2, Position(P, P[j]-P[i]) );
4268else
4269Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4270Add(KK1, Position(P, K[j]-K[i]) );
4271Add(KK2, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4272Add(KK2, Position(P, P[j]-P[i]) );
4273fi;
4274	fi;
4275
4276fi;
4277fi; fi;
4278
4279
4280###########
4281##################
4282####################
4283
4284fi;
4285
4286else #t[i]=-1
4287
4288if (t[j]=1) then
4289
4290if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4291if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4292if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4293if (t[Position(P,P[j]+P[i] )] = 1) then
4294Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4295Add(KK1, Position(P, K[j]+K[i]) );
4296Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4297Add(KK2, Position(P, P[i]+P[j]) );
4298else
4299Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4300Add(KK1, Position(P, K[j]+K[i]) );
4301Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4302Add(KK2, Position(P, P[i]+P[j]) );
4303fi;
4304
4305else
4306	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4307if (t[Position(P,P[j]+P[i] )] = 1) then
4308Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4309Add(KK2, Position(P, P[i]+P[j]) );
4310else
4311Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4312Add(KK1, Position(P, K[j]+K[i]) );
4313fi;
4314	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4315
4316if (t[Position(P,P[j]+P[i] )] = 1) then
4317Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4318Add(KK1, Position(P, K[j]+K[i]) );
4319Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4320Add(KK2, Position(P, P[i]+P[j]) );
4321else
4322
4323Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4324Add(KK1, Position(P, P[i]+P[j]) );
4325Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4326Add(KK2, Position(P, K[j]+K[i]) );
4327fi;
4328	fi;
4329
4330fi;
4331fi; fi;
4332
4333
4334#######
4335############
4336###############
4337
4338if (P[j]-P[i] in P ) then
4339if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4340if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4341
4342if (t[Position(P,P[j]-P[i] )] = 1) then
4343Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4344Add(KK1, Position(P, K[j]-K[i]) );
4345Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4346Add(KK2, Position(P, P[j]-P[i]) );
4347else
4348Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4349Add(KK1, Position(P, K[j]-K[i]) );
4350Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4351Add(KK2, Position(P, P[j]-P[i]) );
4352fi;
4353
4354else
4355	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
4356
4357if (t[Position(P,P[j]-P[i] )] = 1) then
4358Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4359Add(KK2, Position(P, P[j]-P[i]) );
4360else
4361Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4362Add(KK1, Position(P, K[j]-K[i]) );
4363fi;
4364	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4365
4366if (t[Position(P,P[j]-P[i] )] = 1) then
4367Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4368Add(KK1, Position(P, P[j]-P[i]) );
4369Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4370Add(KK2, Position(P, K[j]-K[i]) );
4371else
4372Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4373Add(KK1, Position(P, P[j]-P[i]) );
4374Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4375Add(KK2, Position(P, K[j]-K[i]) );
4376fi;
4377	fi;
4378
4379fi;
4380fi; fi;
4381
4382
4383else
4384
4385
4386if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4387if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4388if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4389if (t[Position(P,P[j]+P[i] )] = 1) then
4390Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4391Add(KK1, Position(P, K[i]+K[j]) );
4392Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4393Add(KK2, Position(P, P[j]+P[i]) );
4394else
4395Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4396Add(KK1, Position(P, K[i]+K[j]) );
4397Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4398Add(KK2, Position(P, P[j]+P[i]) );
4399fi;
4400
4401else
4402	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4403
4404if (t[Position(P,P[j]+P[i] )] = 1) then
4405Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4406Add(KK2, Position(P, P[j]+P[i]) );
4407else
4408Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4409Add(KK1, Position(P, K[i]+K[j]) );
4410fi;
4411	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4412
4413if (t[Position(P,P[j]+P[i] )] = 1) then
4414Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4415Add(KK1, Position(P, P[j]+P[i]) );
4416Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4417Add(KK2, Position(P, K[i]+K[j]) );
4418else
4419Add(KK1, (-1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4420Add(KK1, Position(P, P[j]+P[i]) );
4421Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
4422Add(KK2, Position(P, K[i]+K[j]) );
4423fi;
4424	fi;
4425
4426fi;
4427fi; fi;
4428
4429
4430#######
4431############
4432###############
4433
4434if (P[j]-P[i] in P ) then
4435if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4436if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4437if (t[Position(P,P[j]-P[i] )] = 1) then
4438Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4439Add(KK1, Position(P, K[j]-K[i]) );
4440Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4441Add(KK2, Position(P, P[j]-P[i]) );
4442else
4443Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4444Add(KK1, Position(P, K[j]-K[i]) );
4445Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4446Add(KK2, Position(P, P[j]-P[i]) );
4447fi;
4448
4449else
4450	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
4451
4452if (t[Position(P,P[j]-P[i] )] = 1) then
4453Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4454Add(KK2, Position(P, P[j]-P[i]) );
4455else
4456Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4457Add(KK1, Position(P, K[j]-K[i]) );
4458fi;
4459	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4460
4461if (t[Position(P,P[j]-P[i] )] = 1) then
4462Add(KK1, -1*(-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4463Add(KK1, Position(P, P[j]-P[i]) );
4464Add(KK2, +1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4465Add(KK2, Position(P, K[j]-K[i]) );
4466else
4467Add(KK1, (-1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]+1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4468Add(KK1, Position(P, P[j]-P[i]) );
4469Add(KK2, -1*(+1*To[p+Position(P, P[i])][Position(P,P[j])][2][1]-1*To[p+Position(P, K[i])][Position(P,K[j])][2][1]));
4470Add(KK2, Position(P, K[j]-K[i]) );
4471fi;
4472	fi;
4473
4474fi;
4475fi; fi;
4476
4477fi;
4478fi;
4479
4480SetEntrySCTable( TT, p+i,  p+j , KK1);
4481SetEntrySCTable( TT, p+i,  p+Position(P,K[j]), KK2);
4482
4483
4484##########################
4485###########################################
4486#################################################
4487
4488
4489		else
4490			if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
4491
4492
4493KK1:=[];
4494
4495if (t[i]=1) then
4496if (t[j]=1) then
4497
4498if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha + phi_beta quindi sono nel caso sicuro
4499if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4500if (t[Position(P,P[i]+P[j])]=1) then
4501Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
4502Add(KK1, Position(P, P[i]+P[j]) );
4503fi; fi; fi;
4504
4505if (P[j]-P[i] in P ) then
4506if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4507if (t[Position(P,P[j]-P[i])]=1) then
4508if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4509Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4510Add(KK1, Position(P, P[j]-P[i]) );
4511else
4512	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
4513Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4514Add(KK1, Position(P, P[j]-P[i]) );
4515	else
4516Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4517Add(KK1, Position(P, K[j]-K[i]) );
4518	fi;
4519fi; fi; fi; fi;
4520
4521SetEntrySCTable( TT, p+i,  p+j , KK1);
4522
4523else
4524
4525if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4526if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4527if (t[Position(P,P[j]+P[i])]=-1) then
4528Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
4529Add(KK1, Position(P, P[i]+P[j]) );
4530fi; fi; fi;
4531
4532if (P[j]-P[i] in P ) then
4533if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4534if (t[Position(P,P[j]-P[i])]=-1) then
4535if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4536Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4537Add(KK1, Position(P, P[j]-P[i]) );
4538else
4539	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
4540Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4541Add(KK1, Position(P, P[j]-P[i]) );
4542	else
4543Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4544Add(KK1, Position(P, K[j]-K[i]) );
4545	fi;
4546fi; fi; fi; fi;
4547SetEntrySCTable( TT, p+i,  p+j , KK1);
4548fi;
4549
4550else
4551if (t[j]=1) then
4552
4553if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4554if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4555if (t[Position(P,P[j]+P[i])]=-1) then
4556Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
4557Add(KK1, Position(P, P[i]+P[j]) );
4558fi; fi; fi;
4559
4560if (P[j]-P[i] in P ) then
4561if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4562if (t[Position(P,P[j]-P[i])]=-1) then
4563if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4564Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4565Add(KK1, Position(P, P[j]-P[i]) );
4566else
4567	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
4568Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4569Add(KK1, Position(P, P[j]-P[i]) );
4570	else
4571Add(KK1, -2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4572Add(KK1, Position(P, K[j]-K[i]) );
4573	fi;
4574fi; fi; fi; fi;
4575
4576SetEntrySCTable( TT, p+i,  p+j , KK1);
4577
4578
4579else
4580
4581
4582if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4583if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4584if (t[Position(P,P[j]+P[i])]=1) then
4585Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
4586Add(KK1, Position(P, P[i]+P[j]) );
4587fi; fi; fi;
4588
4589if (P[j]-P[i] in P ) then
4590if not (IsEmpty(To[p+Position(P, P[i])][Position(P,P[j])][2])=true) then
4591if (t[Position(P,P[j]-P[i])]=1) then
4592if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
4593Add(KK1, +2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4594Add(KK1, Position(P, P[j]-P[i]) );
4595else
4596	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
4597Add(KK1, +2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4598Add(KK1, Position(P, P[j]-P[i]) );
4599	else
4600Add(KK1, +2*To[p+Position(P, P[i])][Position(P,P[j])][2][1]);
4601Add(KK1, Position(P, K[j]-K[i]) );
4602	fi;
4603fi; fi; fi; fi;
4604
4605SetEntrySCTable( TT, p+i,  p+j , KK1);
4606
4607fi;
4608
4609
4610fi; fi; fi;
4611
4612fi; fi;
4613
4614
4615od; od;
4616
4617for i in [1..p] do #variazione alpha per gli X
4618		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
4619KK1:=[];
4620
4621if (t[i] = 1) then
4622
4623if (P[i]+K[i] in P ) then
4624if not  (IsEmpty(To[i][Position(P,K[i])][2] ) = true ) then
4625if (t[Position(P, P[i]+K[i])]=-1) then
4626Add(KK1, +1*To[Position(P, P[i])][Position(P,K[i])][2][1]);
4627Add(KK1, Position(P, K[i]+P[i]) );
4628fi; fi; fi;
4629
4630else
4631
4632if (P[i]+K[i] in P ) then
4633if not  (IsEmpty(To[i][Position(P,K[i])][2] ) = true ) then
4634if (t[Position(P, P[i]+K[i])]=-1) then
4635Add(KK1, -1*To[Position(P, P[i])][Position(P,K[i])][2][1]);
4636Add(KK1, Position(P, K[i]+P[i]) );
4637fi; fi; fi;
4638
4639fi;
4640
4641SetEntrySCTable( TT, p+i,  p+Position(P,K[i]) , KK1);
4642
4643		fi;
4644od;
4645
4646################################################################################################
4647########################################################################################################
4648
4649#############################################################################################################################################
4650###################################################################################################################
4651
4652#Prodotti [X,Y] con indici differenti X>Y ovvero alpha > beta !!!!!!!
4653
4654
4655for i in [2..p] do #variazione alpha per gli X
4656	for j in [1..i-1] do #variazione beta < alpha per gli Y
4657		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
4658			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then # beta< phi_beta (ragiono con gli Y)
4659
4660KK1:=[]; # i p+j
4661KK2:=[]; # i p+jbar
4662KK3:=[]; # ibar p+j
4663KK4:=[]; # ibar p+jbar
4664
4665if (t[i]=1) then
4666if (t[j]=1) then
4667
4668if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4669if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4670if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4671
4672if (t[Position(P,P[j]+P[i] )] = 1) then
4673Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4674Add(KK1, p+Position(P, P[i]+P[j]) );
4675Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4676Add(KK2, p+Position(P, K[i]+K[j]) );
4677Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4678Add(KK3, p+Position(P, K[i]+K[j]) );
4679Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4680Add(KK4, p+Position(P, P[i]+P[j]) );
4681else
4682Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4683Add(KK1, p+Position(P, P[i]+P[j]) );
4684Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4685Add(KK2, p+Position(P, K[i]+K[j]) );
4686Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4687Add(KK3, p+Position(P, K[i]+K[j]) );
4688Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4689Add(KK4, p+Position(P, P[i]+P[j]) );
4690fi;
4691else
4692	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4693if (t[Position(P,P[j]+P[i] )] = 1) then
4694Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4695Add(KK1, p+Position(P, P[i]+P[j]) );
4696Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4697Add(KK4, p+Position(P, P[i]+P[j]) );
4698else
4699Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4700Add(KK2, p+Position(P, K[i]+K[j]) );
4701Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4702Add(KK3, p+Position(P, K[i]+K[j]) );
4703fi;
4704	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4705if (t[Position(P,P[j]+P[i] )] = 1) then
4706Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4707Add(KK1, p+Position(P, K[j]+K[i]) );
4708Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4709Add(KK2, p+Position(P, P[i]+P[j]) );
4710Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4711Add(KK3, p+Position(P, P[i]+P[j]) );
4712Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4713Add(KK4, p+Position(P,K[j]+K[i]) );
4714else
4715Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4716Add(KK1, p+Position(P, K[j]+K[i]) );
4717Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4718Add(KK2, p+Position(P, P[i]+P[j]) );
4719Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4720Add(KK3, p+Position(P, P[i]+P[j]) );
4721Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4722Add(KK4, p+Position(P, K[j]+K[i]) );
4723fi;
4724	fi;
4725fi;
4726fi; fi;
4727
4728###############
4729
4730if (P[i]-P[j] in P ) then
4731if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
4732if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
4733
4734if (t[Position(P,P[i]-P[j] )] = 1) then
4735Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4736Add(KK1, p+Position(P, P[i]-P[j]) );
4737Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4738Add(KK2, p+Position(P, K[i]-K[j]) );
4739Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4740Add(KK3, p+Position(P, K[i]-K[j]) );
4741Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4742Add(KK4, p+Position(P, P[i]-P[j]) );
4743else
4744Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4745Add(KK1, p+Position(P, P[i]-P[j]) );
4746Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4747Add(KK2, p+Position(P, K[i]-K[j]) );
4748Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4749Add(KK3, p+Position(P, K[i]-K[j]) );
4750Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4751Add(KK4, p+Position(P, P[i]-P[j]) );
4752fi;
4753else
4754	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
4755if (t[Position(P,P[i]-P[j] )] = 1) then
4756Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4757Add(KK1, p+Position(P, P[i]-P[j]) );
4758Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4759Add(KK4, p+Position(P, P[i]-P[j]) );
4760else
4761Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4762Add(KK2, p+Position(P, K[i]-K[j]) );
4763Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4764Add(KK3, p+Position(P, K[i]-K[j]) );
4765fi;
4766	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4767if (t[Position(P,P[i]-P[j] )] = 1) then
4768Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4769Add(KK1, p+Position(P, K[i]-K[j]) );
4770Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4771Add(KK2, p+Position(P, P[i]-P[j]) );
4772Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4773Add(KK3, p+Position(P, P[i]-P[j]) );
4774Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4775Add(KK4, p+Position(P, K[i]-K[j]) );
4776else
4777Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4778Add(KK1, p+Position(P, K[i]-K[j]) );
4779Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4780Add(KK2, p+Position(P, P[i]-P[j]) );
4781Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4782Add(KK3, p+Position(P, P[i]-P[j]) );
4783Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4784Add(KK4, p+Position(P, K[i]-K[j]) );
4785fi;
4786	fi;
4787fi;
4788fi; fi;
4789
4790#############
4791
4792if (P[i]+K[j] in P ) then
4793if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
4794if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
4795
4796if (t[Position(P,P[i]+K[j] )] = 1) then
4797Add(KK1, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4798Add(KK1, p+Position(P, P[i]+K[j]) );
4799Add(KK2, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4800Add(KK2, p+Position(P, K[i]+P[j]) );
4801Add(KK3, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4802Add(KK3, p+Position(P, K[i]+P[j]) );
4803Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4804Add(KK4, p+Position(P, P[i]+K[j]) );
4805else
4806Add(KK1, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4807Add(KK1, p+Position(P, P[i]+K[j]) );
4808Add(KK2, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4809Add(KK2, p+Position(P, K[i]+P[j]) );
4810Add(KK3, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4811Add(KK3, p+Position(P, K[i]+P[j]) );
4812Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4813Add(KK4, p+Position(P, P[i]+K[j]) );
4814fi;
4815else
4816	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
4817if (t[Position(P,K[j]+P[i] )] = 1) then
4818Add(KK1, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4819Add(KK1, p+Position(P, P[i]+K[j]) );
4820Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4821Add(KK4, p+Position(P, P[i]+K[j]) );
4822else
4823Add(KK2, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4824Add(KK2, p+Position(P, K[i]+P[j]) );
4825Add(KK3, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4826Add(KK3, p+Position(P, K[i]+P[j]) );
4827fi;
4828	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4829if (t[Position(P,P[i]+K[j] )] = 1) then
4830Add(KK1, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4831Add(KK1, p+Position(P, K[i]+P[j]) );
4832Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4833Add(KK2, p+Position(P, P[i]+K[j]) );
4834Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4835Add(KK3, p+Position(P, P[i]+K[j]) );
4836Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4837Add(KK4, p+Position(P, K[i]+P[j]) );
4838else
4839Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4840Add(KK1, p+Position(P, K[i]+P[j]) );
4841Add(KK2, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4842Add(KK2, p+Position(P, P[i]+K[j]) );
4843Add(KK3, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4844Add(KK3, p+Position(P, P[i]+K[j]) );
4845Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
4846Add(KK4, p+Position(P, K[i]+P[j]) );
4847fi;
4848	fi;
4849fi;
4850fi; fi;
4851
4852#############
4853
4854if (P[i]-K[j] in P ) then
4855if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
4856if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
4857
4858if (t[Position(P,P[i]-K[j] )] = 1) then
4859Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4860Add(KK1, p+Position(P, P[i]-K[j]) );
4861Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4862Add(KK2, p+Position(P, K[i]-P[j]) );
4863Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4864Add(KK3, p+Position(P, K[i]-P[j]) );
4865Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4866Add(KK4, p+Position(P, P[i]-K[j]) );
4867else
4868Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4869Add(KK1, p+Position(P, P[i]-K[j]) );
4870Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4871Add(KK2, p+Position(P, K[i]-P[j]) );
4872Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4873Add(KK3, p+Position(P, K[i]-P[j]) );
4874Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4875Add(KK4, p+Position(P, P[i]-K[j]) );
4876fi;
4877else
4878	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
4879if (t[Position(P,P[i]-K[j] )] = 1) then
4880Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4881Add(KK1, p+Position(P, P[i]-K[j]) );
4882Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4883Add(KK4, p+Position(P, P[i]-K[j]) );
4884else
4885Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4886Add(KK2, p+Position(P, K[i]-P[j]) );
4887Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4888Add(KK3, p+Position(P, K[i]-P[j]) );
4889fi;
4890	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4891if (t[Position(P,P[i]-K[j] )] = 1) then
4892Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4893Add(KK1, p+Position(P, K[i]-P[j]) );
4894Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4895Add(KK2, p+Position(P, P[i]-K[j]) );
4896Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4897Add(KK3, p+Position(P, P[i]-K[j]) );
4898Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4899Add(KK4, p+Position(P, K[i]-P[j]) );
4900else
4901Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4902Add(KK1, p+Position(P, K[i]-P[j]) );
4903Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4904Add(KK2, p+Position(P, P[i]-K[j]) );
4905Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4906Add(KK3, p+Position(P, P[i]-K[j]) );
4907Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
4908Add(KK4, p+Position(P, K[i]-P[j]) );
4909fi;
4910	fi;
4911fi;
4912fi; fi;
4913
4914#############
4915else # ovvero t[j]=-1
4916#########################
4917
4918if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
4919if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
4920if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
4921
4922if (t[Position(P,P[j]+P[i] )] = 1) then
4923Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4924Add(KK1, p+Position(P, P[i]+P[j]) );
4925Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4926Add(KK2, p+Position(P, K[i]+K[j]) );
4927Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4928Add(KK3, p+Position(P, K[i]+K[j]) );
4929Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4930Add(KK4, p+Position(P, P[i]+P[j]) );
4931else
4932Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4933Add(KK1, p+Position(P, P[i]+P[j]) );
4934Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4935Add(KK2, p+Position(P, K[i]+K[j]) );
4936Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4937Add(KK3, p+Position(P, K[i]+K[j]) );
4938Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4939Add(KK4, p+Position(P, P[i]+P[j]) );
4940fi;
4941else
4942	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
4943if (t[Position(P,P[j]+P[i] )] = 1) then
4944Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4945Add(KK1, p+Position(P, P[i]+P[j]) );
4946Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4947Add(KK4, p+Position(P, P[i]+P[j]) );
4948else
4949Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4950Add(KK2, p+Position(P, K[i]+K[j]) );
4951Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4952Add(KK3, p+Position(P, K[i]+K[j]) );
4953fi;
4954	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
4955if (t[Position(P,P[j]+P[i] )] = 1) then
4956Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4957Add(KK1, p+Position(P, K[j]+K[i]) );
4958Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4959Add(KK2, p+Position(P, P[i]+P[j]) );
4960Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4961Add(KK3, p+Position(P, P[i]+P[j]) );
4962Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4963Add(KK4, p+Position(P,K[j]+K[i]) );
4964else
4965Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4966Add(KK1, p+Position(P, K[j]+K[i]) );
4967Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4968Add(KK2, p+Position(P, P[i]+P[j]) );
4969Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4970Add(KK3, p+Position(P, P[i]+P[j]) );
4971Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
4972Add(KK4, p+Position(P, K[j]+K[i]) );
4973fi;
4974	fi;
4975fi;
4976fi; fi;
4977
4978###############
4979
4980if (P[i]-P[j] in P ) then
4981if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
4982if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
4983
4984if (t[Position(P,P[i]-P[j] )] = 1) then
4985Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4986Add(KK1, p+Position(P, P[i]-P[j]) );
4987Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4988Add(KK2, p+Position(P, K[i]-K[j]) );
4989Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4990Add(KK3, p+Position(P, K[i]-K[j]) );
4991Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4992Add(KK4, p+Position(P, P[i]-P[j]) );
4993else
4994Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4995Add(KK1, p+Position(P, P[i]-P[j]) );
4996Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4997Add(KK2, p+Position(P, K[i]-K[j]) );
4998Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
4999Add(KK3, p+Position(P, K[i]-K[j]) );
5000Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5001Add(KK4, p+Position(P, P[i]-P[j]) );
5002fi;
5003else
5004	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5005if (t[Position(P,P[i]-P[j] )] = 1) then
5006Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5007Add(KK1, p+Position(P, P[i]-P[j]) );
5008Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5009Add(KK4, p+Position(P, P[i]-P[j]) );
5010else
5011Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5012Add(KK2, p+Position(P, K[i]-K[j]) );
5013Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5014Add(KK3, p+Position(P, K[i]-K[j]) );
5015fi;
5016	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5017if (t[Position(P,P[i]-P[j] )] = 1) then
5018Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5019Add(KK1, p+Position(P, K[i]-K[j]) );
5020Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5021Add(KK2, p+Position(P, P[i]-P[j]) );
5022Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5023Add(KK3, p+Position(P, P[i]-P[j]) );
5024Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5025Add(KK4, p+Position(P, K[i]-K[j]) );
5026else
5027Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5028Add(KK1, p+Position(P, K[i]-K[j]) );
5029Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5030Add(KK2, p+Position(P, P[i]-P[j]) );
5031Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5032Add(KK3, p+Position(P, P[i]-P[j]) );
5033Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5034Add(KK4, p+Position(P, K[i]-K[j]) );
5035fi;
5036	fi;
5037fi;
5038fi; fi;
5039
5040#############
5041
5042if (P[i]+K[j] in P ) then
5043if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
5044if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
5045
5046if (t[Position(P,P[i]+K[j] )] = 1) then
5047Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5048Add(KK1, p+Position(P, P[i]+K[j]) );
5049Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5050Add(KK2, p+Position(P, K[i]+P[j]) );
5051Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5052Add(KK3, p+Position(P, K[i]+P[j]) );
5053Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5054Add(KK4, p+Position(P, P[i]+K[j]) );
5055else
5056Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5057Add(KK1, p+Position(P, P[i]+K[j]) );
5058Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5059Add(KK2, p+Position(P, K[i]+P[j]) );
5060Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5061Add(KK3, p+Position(P, K[i]+P[j]) );
5062Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5063Add(KK4, p+Position(P, P[i]+K[j]) );
5064fi;
5065else
5066	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
5067if (t[Position(P,K[j]+P[i] )] = 1) then
5068Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5069Add(KK1, p+Position(P, P[i]+K[j]) );
5070Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5071Add(KK4, p+Position(P, P[i]+K[j]) );
5072else
5073Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5074Add(KK2, p+Position(P, K[i]+P[j]) );
5075Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5076Add(KK3, p+Position(P, K[i]+P[j]) );
5077fi;
5078	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5079if (t[Position(P,P[i]+K[j] )] = 1) then
5080Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5081Add(KK1, p+Position(P, K[i]+P[j]) );
5082Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5083Add(KK2, p+Position(P, P[i]+K[j]) );
5084Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5085Add(KK3, p+Position(P, P[i]+K[j]) );
5086Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5087Add(KK4, p+Position(P, K[i]+P[j]) );
5088else
5089Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5090Add(KK1, p+Position(P, K[i]+P[j]) );
5091Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5092Add(KK2, p+Position(P, P[i]+K[j]) );
5093Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5094Add(KK3, p+Position(P, P[i]+K[j]) );
5095Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5096Add(KK4, p+Position(P, K[i]+P[j]) );
5097fi;
5098	fi;
5099fi;
5100fi; fi;
5101
5102#############
5103
5104if (P[i]-K[j] in P ) then
5105if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
5106if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
5107
5108if (t[Position(P,P[i]-K[j] )] = 1) then
5109Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5110Add(KK1, p+Position(P, P[i]-K[j]) );
5111Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5112Add(KK2, p+Position(P, K[i]-P[j]) );
5113Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5114Add(KK3, p+Position(P, K[i]-P[j]) );
5115Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5116Add(KK4, p+Position(P, P[i]-K[j]) );
5117else
5118Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5119Add(KK1, p+Position(P, P[i]-K[j]) );
5120Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5121Add(KK2, p+Position(P, K[i]-P[j]) );
5122Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5123Add(KK3, p+Position(P, K[i]-P[j]) );
5124Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5125Add(KK4, p+Position(P, P[i]-K[j]) );
5126fi;
5127else
5128	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
5129if (t[Position(P,P[i]-K[j] )] = 1) then
5130Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5131Add(KK1, p+Position(P, P[i]-K[j]) );
5132Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5133Add(KK4, p+Position(P, P[i]-K[j]) );
5134else
5135Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5136Add(KK2, p+Position(P, K[i]-P[j]) );
5137Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5138Add(KK3, p+Position(P, K[i]-P[j]) );
5139fi;
5140	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5141if (t[Position(P,P[i]-K[j] )] = 1) then
5142Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5143Add(KK1, p+Position(P, K[i]-P[j]) );
5144Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5145Add(KK2, p+Position(P, P[i]-K[j]) );
5146Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5147Add(KK3, p+Position(P, P[i]-K[j]) );
5148Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5149Add(KK4, p+Position(P, K[i]-P[j]) );
5150else
5151Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5152Add(KK1, p+Position(P, K[i]-P[j]) );
5153Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5154Add(KK2, p+Position(P, P[i]-K[j]) );
5155Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5156Add(KK3, p+Position(P, P[i]-K[j]) );
5157Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5158Add(KK4, p+Position(P, K[i]-P[j]) );
5159fi;
5160	fi;
5161fi;
5162fi; fi;
5163
5164fi;
5165
5166########################à
5167else #t[i]=-1
5168if (t[j]=1) then
5169###############
5170
5171if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5172if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5173if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5174
5175if (t[Position(P,P[j]+P[i] )] = 1) then
5176Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5177Add(KK1, p+Position(P, P[i]+P[j]) );
5178Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5179Add(KK2, p+Position(P, K[i]+K[j]) );
5180Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5181Add(KK3, p+Position(P, K[i]+K[j]) );
5182Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5183Add(KK4, p+Position(P, P[i]+P[j]) );
5184else
5185Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5186Add(KK1, p+Position(P, P[i]+P[j]) );
5187Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5188Add(KK2, p+Position(P, K[i]+K[j]) );
5189Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5190Add(KK3, p+Position(P, K[i]+K[j]) );
5191Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5192Add(KK4, p+Position(P, P[i]+P[j]) );
5193fi;
5194else
5195	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5196if (t[Position(P,P[j]+P[i] )] = 1) then
5197Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5198Add(KK1, p+Position(P, P[i]+P[j]) );
5199Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5200Add(KK4, p+Position(P, P[i]+P[j]) );
5201else
5202Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5203Add(KK2, p+Position(P, K[i]+K[j]) );
5204Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5205Add(KK3, p+Position(P, K[i]+K[j]) );
5206fi;
5207	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5208if (t[Position(P,P[j]+P[i] )] = 1) then
5209Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5210Add(KK1, p+Position(P, K[j]+K[i]) );
5211Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5212Add(KK2, p+Position(P, P[i]+P[j]) );
5213Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5214Add(KK3, p+Position(P, P[i]+P[j]) );
5215Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5216Add(KK4, p+Position(P,K[j]+K[i]) );
5217else
5218Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5219Add(KK1, p+Position(P, K[j]+K[i]) );
5220Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5221Add(KK2, p+Position(P, P[i]+P[j]) );
5222Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5223Add(KK3, p+Position(P, P[i]+P[j]) );
5224Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5225Add(KK4, p+Position(P, K[j]+K[i]) );
5226fi;
5227	fi;
5228fi;
5229fi; fi;
5230###############
5231
5232if (P[i]-P[j] in P ) then
5233if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5234if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
5235
5236if (t[Position(P,P[i]-P[j] )] = 1) then
5237Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5238Add(KK1, p+Position(P, P[i]-P[j]) );
5239Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5240Add(KK2, p+Position(P, K[i]-K[j]) );
5241Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5242Add(KK3, p+Position(P, K[i]-K[j]) );
5243Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5244Add(KK4, p+Position(P, P[i]-P[j]) );
5245else
5246Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5247Add(KK1, p+Position(P, P[i]-P[j]) );
5248Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5249Add(KK2, p+Position(P, K[i]-K[j]) );
5250Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5251Add(KK3, p+Position(P, K[i]-K[j]) );
5252Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5253Add(KK4, p+Position(P, P[i]-P[j]) );
5254fi;
5255else
5256	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5257if (t[Position(P,P[i]-P[j] )] = 1) then
5258Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5259Add(KK1, p+Position(P, P[i]-P[j]) );
5260Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5261Add(KK4, p+Position(P, P[i]-P[j]) );
5262else
5263Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5264Add(KK2, p+Position(P, K[i]-K[j]) );
5265Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5266Add(KK3, p+Position(P, K[i]-K[j]) );
5267fi;
5268	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5269if (t[Position(P,P[i]-P[j] )] = 1) then
5270Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5271Add(KK1, p+Position(P, K[i]-K[j]) );
5272Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5273Add(KK2, p+Position(P, P[i]-P[j]) );
5274Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5275Add(KK3, p+Position(P, P[i]-P[j]) );
5276Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5277Add(KK4, p+Position(P, K[i]-K[j]) );
5278else
5279Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5280Add(KK1, p+Position(P, K[i]-K[j]) );
5281Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5282Add(KK2, p+Position(P, P[i]-P[j]) );
5283Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5284Add(KK3, p+Position(P, P[i]-P[j]) );
5285Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5286Add(KK4, p+Position(P, K[i]-K[j]) );
5287fi;
5288	fi;
5289fi;
5290fi; fi;
5291
5292#############
5293
5294if (P[i]+K[j] in P ) then
5295if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
5296if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
5297
5298if (t[Position(P,P[i]+K[j] )] = 1) then
5299Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5300Add(KK1, p+Position(P, P[i]+K[j]) );
5301Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5302Add(KK2, p+Position(P, K[i]+P[j]) );
5303Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5304Add(KK3, p+Position(P, K[i]+P[j]) );
5305Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5306Add(KK4, p+Position(P, P[i]+K[j]) );
5307else
5308Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5309Add(KK1, p+Position(P, P[i]+K[j]) );
5310Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5311Add(KK2, p+Position(P, K[i]+P[j]) );
5312Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5313Add(KK3, p+Position(P, K[i]+P[j]) );
5314Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5315Add(KK4, p+Position(P, P[i]+K[j]) );
5316fi;
5317else
5318	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
5319if (t[Position(P,K[j]+P[i] )] = 1) then
5320Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5321Add(KK1, p+Position(P, P[i]+K[j]) );
5322Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5323Add(KK4, p+Position(P, P[i]+K[j]) );
5324else
5325Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5326Add(KK2, p+Position(P, K[i]+P[j]) );
5327Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5328Add(KK3, p+Position(P, K[i]+P[j]) );
5329fi;
5330	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5331if (t[Position(P,P[i]+K[j] )] = 1) then
5332Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5333Add(KK1, p+Position(P, K[i]+P[j]) );
5334Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5335Add(KK2, p+Position(P, P[i]+K[j]) );
5336Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5337Add(KK3, p+Position(P, P[i]+K[j]) );
5338Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5339Add(KK4, p+Position(P, K[i]+P[j]) );
5340else
5341Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5342Add(KK1, p+Position(P, K[i]+P[j]) );
5343Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5344Add(KK2, p+Position(P, P[i]+K[j]) );
5345Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5346Add(KK3, p+Position(P, P[i]+K[j]) );
5347Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5348Add(KK4, p+Position(P, K[i]+P[j]) );
5349fi;
5350	fi;
5351fi;
5352fi; fi;
5353
5354#############
5355
5356if (P[i]-K[j] in P ) then
5357if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
5358if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
5359
5360if (t[Position(P,P[i]-K[j] )] = 1) then
5361Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5362Add(KK1, p+Position(P, P[i]-K[j]) );
5363Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5364Add(KK2, p+Position(P, K[i]-P[j]) );
5365Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5366Add(KK3, p+Position(P, K[i]-P[j]) );
5367Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5368Add(KK4, p+Position(P, P[i]-K[j]) );
5369else
5370Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5371Add(KK1, p+Position(P, P[i]-K[j]) );
5372Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5373Add(KK2, p+Position(P, K[i]-P[j]) );
5374Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5375Add(KK3, p+Position(P, K[i]-P[j]) );
5376Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5377Add(KK4, p+Position(P, P[i]-K[j]) );
5378fi;
5379else
5380	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
5381if (t[Position(P,P[i]-K[j] )] = 1) then
5382Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5383Add(KK1, p+Position(P, P[i]-K[j]) );
5384Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5385Add(KK4, p+Position(P, P[i]-K[j]) );
5386else
5387Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5388Add(KK2, p+Position(P, K[i]-P[j]) );
5389Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5390Add(KK3, p+Position(P, K[i]-P[j]) );
5391fi;
5392	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5393if (t[Position(P,P[i]-K[j] )] = 1) then
5394Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5395Add(KK1, p+Position(P, K[i]-P[j]) );
5396Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5397Add(KK2, p+Position(P, P[i]-K[j]) );
5398Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5399Add(KK3, p+Position(P, P[i]-K[j]) );
5400Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5401Add(KK4, p+Position(P, K[i]-P[j]) );
5402else
5403Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5404Add(KK1, p+Position(P, K[i]-P[j]) );
5405Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5406Add(KK2, p+Position(P, P[i]-K[j]) );
5407Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5408Add(KK3, p+Position(P, P[i]-K[j]) );
5409Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5410Add(KK4, p+Position(P, K[i]-P[j]) );
5411fi;
5412	fi;
5413fi;
5414fi; fi;
5415
5416#####################
5417else #t[j]=-1
5418#########################
5419
5420if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5421if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5422if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5423
5424if (t[Position(P,P[j]+P[i] )] = 1) then
5425Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5426Add(KK1, p+Position(P, P[i]+P[j]) );
5427Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5428Add(KK2, p+Position(P, K[i]+K[j]) );
5429Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5430Add(KK3, p+Position(P, K[i]+K[j]) );
5431Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5432Add(KK4, p+Position(P, P[i]+P[j]) );
5433else
5434Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5435Add(KK1, p+Position(P, P[i]+P[j]) );
5436Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5437Add(KK2, p+Position(P, K[i]+K[j]) );
5438Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5439Add(KK3, p+Position(P, K[i]+K[j]) );
5440Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5441Add(KK4, p+Position(P, P[i]+P[j]) );
5442fi;
5443else
5444	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5445if (t[Position(P,P[j]+P[i] )] = 1) then
5446Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5447Add(KK1, p+Position(P, P[i]+P[j]) );
5448Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5449Add(KK4, p+Position(P, P[i]+P[j]) );
5450else
5451Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5452Add(KK2, p+Position(P, K[i]+K[j]) );
5453Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5454Add(KK3, p+Position(P, K[i]+K[j]) );
5455fi;
5456	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5457if (t[Position(P,P[j]+P[i] )] = 1) then
5458Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5459Add(KK1, p+Position(P, K[j]+K[i]) );
5460Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5461Add(KK2, p+Position(P, P[i]+P[j]) );
5462Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5463Add(KK3, p+Position(P, P[i]+P[j]) );
5464Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5465Add(KK4, p+Position(P,K[j]+K[i]) );
5466else
5467Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5468Add(KK1, p+Position(P, K[j]+K[i]) );
5469Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5470Add(KK2, p+Position(P, P[i]+P[j]) );
5471Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5472Add(KK3, p+Position(P, P[i]+P[j]) );
5473Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
5474Add(KK4, p+Position(P, K[j]+K[i]) );
5475fi;
5476	fi;
5477fi;
5478fi; fi;
5479
5480###############
5481
5482if (P[i]-P[j] in P ) then
5483if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5484if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
5485
5486if (t[Position(P,P[i]-P[j] )] = 1) then
5487Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5488Add(KK1, p+Position(P, P[i]-P[j]) );
5489Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5490Add(KK2, p+Position(P, K[i]-K[j]) );
5491Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5492Add(KK3, p+Position(P, K[i]-K[j]) );
5493Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5494Add(KK4, p+Position(P, P[i]-P[j]) );
5495else
5496Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5497Add(KK1, p+Position(P, P[i]-P[j]) );
5498Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5499Add(KK2, p+Position(P, K[i]-K[j]) );
5500Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5501Add(KK3, p+Position(P, K[i]-K[j]) );
5502Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5503Add(KK4, p+Position(P, P[i]-P[j]) );
5504fi;
5505else
5506	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5507if (t[Position(P,P[i]-P[j] )] = 1) then
5508Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5509Add(KK1, p+Position(P, P[i]-P[j]) );
5510Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5511Add(KK4, p+Position(P, P[i]-P[j]) );
5512else
5513Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5514Add(KK2, p+Position(P, K[i]-K[j]) );
5515Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5516Add(KK3, p+Position(P, K[i]-K[j]) );
5517fi;
5518	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5519if (t[Position(P,P[i]-P[j] )] = 1) then
5520Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5521Add(KK1, p+Position(P, K[i]-K[j]) );
5522Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5523Add(KK2, p+Position(P, P[i]-P[j]) );
5524Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5525Add(KK3, p+Position(P, P[i]-P[j]) );
5526Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5527Add(KK4, p+Position(P, K[i]-K[j]) );
5528else
5529Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5530Add(KK1, p+Position(P, K[i]-K[j]) );
5531Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5532Add(KK2, p+Position(P, P[i]-P[j]) );
5533Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5534Add(KK3, p+Position(P, P[i]-P[j]) );
5535Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
5536Add(KK4, p+Position(P, K[i]-K[j]) );
5537fi;
5538	fi;
5539fi;
5540fi; fi;
5541
5542#############
5543
5544if (P[i]+K[j] in P ) then
5545if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
5546if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
5547
5548if (t[Position(P,P[i]+K[j] )] = 1) then
5549Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5550Add(KK1, p+Position(P, P[i]+K[j]) );
5551Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5552Add(KK2, p+Position(P, K[i]+P[j]) );
5553Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5554Add(KK3, p+Position(P, K[i]+P[j]) );
5555Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5556Add(KK4, p+Position(P, P[i]+K[j]) );
5557else
5558Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5559Add(KK1, p+Position(P, P[i]+K[j]) );
5560Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5561Add(KK2, p+Position(P, K[i]+P[j]) );
5562Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5563Add(KK3, p+Position(P, K[i]+P[j]) );
5564Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5565Add(KK4, p+Position(P, P[i]+K[j]) );
5566fi;
5567else
5568	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
5569if (t[Position(P,K[j]+P[i] )] = 1) then
5570Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5571Add(KK1, p+Position(P, P[i]+K[j]) );
5572Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5573Add(KK4, p+Position(P, P[i]+K[j]) );
5574else
5575Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5576Add(KK2, p+Position(P, K[i]+P[j]) );
5577Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5578Add(KK3, p+Position(P, K[i]+P[j]) );
5579fi;
5580	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5581if (t[Position(P,P[i]+K[j] )] = 1) then
5582Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5583Add(KK1, p+Position(P, K[i]+P[j]) );
5584Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5585Add(KK2, p+Position(P, P[i]+K[j]) );
5586Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5587Add(KK3, p+Position(P, P[i]+K[j]) );
5588Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5589Add(KK4, p+Position(P, K[i]+P[j]) );
5590else
5591Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5592Add(KK1, p+Position(P, K[i]+P[j]) );
5593Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5594Add(KK2, p+Position(P, P[i]+K[j]) );
5595Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5596Add(KK3, p+Position(P, P[i]+K[j]) );
5597Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
5598Add(KK4, p+Position(P, K[i]+P[j]) );
5599fi;
5600	fi;
5601fi;
5602fi; fi;
5603
5604#############
5605
5606if (P[i]-K[j] in P ) then
5607if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
5608if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
5609
5610if (t[Position(P,P[i]-K[j] )] = 1) then
5611Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5612Add(KK1, p+Position(P, P[i]-K[j]) );
5613Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5614Add(KK2, p+Position(P, K[i]-P[j]) );
5615Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5616Add(KK3, p+Position(P, K[i]-P[j]) );
5617Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5618Add(KK4, p+Position(P, P[i]-K[j]) );
5619else
5620Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5621Add(KK1, p+Position(P, P[i]-K[j]) );
5622Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5623Add(KK2, p+Position(P, K[i]-P[j]) );
5624Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5625Add(KK3, p+Position(P, K[i]-P[j]) );
5626Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5627Add(KK4, p+Position(P, P[i]-K[j]) );
5628fi;
5629else
5630	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
5631if (t[Position(P,P[i]-K[j] )] = 1) then
5632Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5633Add(KK1, p+Position(P, P[i]-K[j]) );
5634Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5635Add(KK4, p+Position(P, P[i]-K[j]) );
5636else
5637Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5638Add(KK2, p+Position(P, K[i]-P[j]) );
5639Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5640Add(KK3, p+Position(P, K[i]-P[j]) );
5641fi;
5642	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5643if (t[Position(P,P[i]-K[j] )] = 1) then
5644Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5645Add(KK1, p+Position(P, K[i]-P[j]) );
5646Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5647Add(KK2, p+Position(P, P[i]-K[j]) );
5648Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5649Add(KK3, p+Position(P, P[i]-K[j]) );
5650Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5651Add(KK4, p+Position(P, K[i]-P[j]) );
5652else
5653Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5654Add(KK1, p+Position(P, K[i]-P[j]) );
5655Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5656Add(KK2, p+Position(P, P[i]-K[j]) );
5657Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5658Add(KK3, p+Position(P, P[i]-K[j]) );
5659Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
5660Add(KK4, p+Position(P, K[i]-P[j]) );
5661fi;
5662	fi;
5663fi;
5664fi; fi;
5665
5666fi; fi;
5667
5668if ( Position(P,P[i]) > Position(P,K[j]) ) then
5669SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
5670SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
5671SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
5672SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
5673fi;
5674
5675if ( Position(P,K[j]) > Position(P,K[i]) ) then
5676SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
5677SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
5678fi;
5679
5680if ( Position(P,K[j]) < Position(P,K[i]) ) then
5681	if ( Position(P,P[i]) < Position(P,K[j]) ) then
5682SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
5683SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
5684SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
5685	fi;
5686fi;
5687
5688else
5689
5690	if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
5691
5692KK1:=[];
5693KK2:=[];
5694
5695if (t[i]=1) then
5696if (t[j]=1) then
5697
5698if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5699if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5700if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5701
5702if (t[Position(P,P[j]+P[i] )] = 1) then
5703Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5704Add(KK1, p+Position(P, P[i]+P[j]) );
5705Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5706Add(KK2, p+Position(P, K[i]+K[j]) );
5707else
5708Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5709Add(KK1, p+Position(P, P[i]+P[j]) );
5710Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5711Add(KK2, p+Position(P, K[i]+K[j]) );
5712fi;
5713else
5714	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5715if (t[Position(P,P[j]+P[i] )] = 1) then
5716Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5717Add(KK1, p+Position(P, P[i]+P[j]) );
5718else
5719Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5720Add(KK2, p+Position(P, K[i]+K[j]) );
5721fi;
5722	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5723if (t[Position(P,P[j]+P[i] )] = 1) then
5724Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5725Add(KK1, p+Position(P, K[j]+K[i]) );
5726Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5727Add(KK2, p+Position(P, P[i]+P[j]) );
5728else
5729Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5730Add(KK1, p+Position(P, K[j]+K[i]) );
5731Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5732Add(KK2, p+Position(P, P[i]+P[j]) );
5733fi;
5734	fi;
5735fi;
5736fi; fi;
5737
5738###############
5739
5740if (P[i]-P[j] in P ) then
5741if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5742if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
5743
5744if (t[Position(P,P[i]-P[j] )] = 1) then
5745Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5746Add(KK1, p+Position(P, P[i]-P[j]) );
5747Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5748Add(KK2, p+Position(P, K[i]-K[j]) );
5749else
5750Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5751Add(KK1, p+Position(P, P[i]-P[j]) );
5752Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5753Add(KK2, p+Position(P, K[i]-K[j]) );
5754fi;
5755else
5756	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5757if (t[Position(P,P[i]-P[j] )] = 1) then
5758Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5759Add(KK1, p+Position(P, P[i]-P[j]) );
5760else
5761Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5762Add(KK2, p+Position(P, K[i]-K[j]) );
5763fi;
5764	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5765if (t[Position(P,P[i]-P[j] )] = 1) then
5766Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5767Add(KK1, p+Position(P, K[i]-K[j]) );
5768Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5769Add(KK2, p+Position(P, P[i]-P[j]) );
5770else
5771Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5772Add(KK1, p+Position(P, K[i]-K[j]) );
5773Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5774Add(KK2, p+Position(P, P[i]-P[j]) );
5775fi;
5776	fi;
5777fi;
5778fi; fi;
5779
5780####################
5781else #t[j]=-1
5782
5783if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5784if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5785if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5786
5787if (t[Position(P,P[j]+P[i] )] = 1) then
5788Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5789Add(KK1, p+Position(P, K[j]+K[i]) );
5790Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5791Add(KK2, p+Position(P, P[i]+P[j]) );
5792else
5793Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5794Add(KK1, p+Position(P, K[j]+K[i]) );
5795Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5796Add(KK2, p+Position(P, P[i]+P[j]) );
5797fi;
5798else
5799	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5800if (t[Position(P,P[j]+P[i] )] = 1) then
5801Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5802Add(KK2, p+Position(P, P[i]+P[j]) );
5803else
5804Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5805Add(KK1, p+Position(P, K[j]+K[i]) );
5806fi;
5807	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5808if (t[Position(P,P[j]+P[i] )] = 1) then
5809Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5810Add(KK1, p+Position(P, K[j]+K[i]) );
5811Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5812Add(KK2, p+Position(P, P[i]+P[j]) );
5813else
5814Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5815Add(KK1, p+Position(P, P[i]+P[j]) );
5816Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5817Add(KK2, p+Position(P, K[j]+K[i]) );
5818fi;
5819	fi;
5820fi;
5821fi; fi;
5822
5823###############
5824
5825if (P[i]-P[j] in P ) then
5826if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5827if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
5828
5829if (t[Position(P,P[i]-P[j] )] = 1) then
5830Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5831Add(KK1, p+Position(P, K[i]-K[j]) );
5832Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5833Add(KK2, p+Position(P, P[i]-P[j]) );
5834else
5835Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5836Add(KK1, p+Position(P, K[i]-K[j]) );
5837Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5838Add(KK2, p+Position(P, P[i]-P[j]) );
5839fi;
5840else
5841	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5842if (t[Position(P,P[i]-P[j] )] = 1) then
5843Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5844Add(KK2, p+Position(P, P[i]-P[j]) );
5845else
5846Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5847Add(KK1, p+Position(P, K[i]-K[j]) );
5848fi;
5849	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5850if (t[Position(P,P[i]-P[j] )] = 1) then
5851Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5852Add(KK1, p+Position(P, P[i]-P[j]) );
5853Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5854Add(KK2, p+Position(P, K[i]-K[j]) );
5855else
5856Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5857Add(KK1, p+Position(P, P[i]-P[j]) );
5858Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5859Add(KK2, p+Position(P, K[i]-K[j]) );
5860fi;
5861	fi;
5862fi;
5863fi; fi;
5864
5865fi;
5866
5867else #t[i]=-1
5868if (t[j]=1) then
5869
5870if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5871if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5872if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5873
5874if (t[Position(P,P[j]+P[i] )] = 1) then
5875Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5876Add(KK1, p+Position(P, P[i]+P[j]) );
5877Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5878Add(KK2, p+Position(P, K[i]+K[j]) );
5879else
5880Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5881Add(KK1, p+Position(P, P[i]+P[j]) );
5882Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5883Add(KK2, p+Position(P, K[i]+K[j]) );
5884fi;
5885else
5886	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5887if (t[Position(P,P[j]+P[i] )] = 1) then
5888Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5889Add(KK1, p+Position(P, P[i]+P[j]) );
5890else
5891Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5892Add(KK2, p+Position(P, K[i]+K[j]) );
5893fi;
5894	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5895if (t[Position(P,P[j]+P[i] )] = 1) then
5896Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5897Add(KK1, p+Position(P, K[j]+K[i]) );
5898Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5899Add(KK2, p+Position(P, P[i]+P[j]) );
5900else
5901Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5902Add(KK1, p+Position(P, K[j]+K[i]) );
5903Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5904Add(KK2, p+Position(P, P[i]+P[j]) );
5905fi;
5906	fi;
5907fi;
5908fi; fi;
5909
5910###############
5911
5912if (P[i]-P[j] in P ) then
5913if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5914if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
5915
5916if (t[Position(P,P[i]-P[j] )] = 1) then
5917Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5918Add(KK1, p+Position(P, P[i]-P[j]) );
5919Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5920Add(KK2, p+Position(P, K[i]-K[j]) );
5921else
5922Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5923Add(KK1, p+Position(P, P[i]-P[j]) );
5924Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5925Add(KK2, p+Position(P, K[i]-K[j]) );
5926fi;
5927else
5928	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
5929if (t[Position(P,P[i]-P[j] )] = 1) then
5930Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5931Add(KK1, p+Position(P, P[i]-P[j]) );
5932else
5933Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5934Add(KK2, p+Position(P, K[i]-K[j]) );
5935fi;
5936	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5937if (t[Position(P,P[i]-P[j] )] = 1) then
5938Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5939Add(KK1, p+Position(P, K[i]-K[j]) );
5940Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5941Add(KK2, p+Position(P, P[i]-P[j]) );
5942else
5943Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5944Add(KK1, p+Position(P, K[i]-K[j]) );
5945Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
5946Add(KK2, p+Position(P, P[i]-P[j]) );
5947fi;
5948	fi;
5949fi;
5950fi; fi;
5951
5952####################
5953else #t[i]=t[j]=-1
5954
5955if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
5956if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
5957if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
5958
5959if (t[Position(P,P[j]+P[i] )] = 1) then
5960Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5961Add(KK1, p+Position(P, K[i]+K[j]) );
5962Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5963Add(KK2, p+Position(P, P[j]+P[i]) );
5964else
5965Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5966Add(KK1, p+Position(P, K[i]+K[j]) );
5967Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5968Add(KK2, p+Position(P, P[j]+P[i]) );
5969fi;
5970else
5971	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
5972if (t[Position(P,P[j]+P[i] )] = 1) then
5973Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5974Add(KK2, p+Position(P, P[j]+P[i]) );
5975else
5976Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5977Add(KK1, p+Position(P, K[i]+K[j]) );
5978fi;
5979	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
5980if (t[Position(P,P[j]+P[i] )] = 1) then
5981Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5982Add(KK1, p+Position(P, P[j]+P[i]) );
5983Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5984Add(KK2, p+Position(P, K[i]+K[j]) );
5985else
5986Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5987Add(KK1, p+Position(P, P[j]+P[i]) );
5988Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
5989Add(KK2, p+Position(P, K[i]+K[j]) );
5990fi;
5991	fi;
5992fi;
5993fi; fi;
5994
5995###############
5996
5997if (P[i]-P[j] in P ) then
5998if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
5999if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6000
6001if (t[Position(P,P[i]-P[j] )] = 1) then
6002Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6003Add(KK1, p+Position(P, K[i]-K[j]) );
6004Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6005Add(KK2, p+Position(P, P[i]-P[j]) );
6006else
6007Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6008Add(KK1, p+Position(P, K[i]-K[j]) );
6009Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6010Add(KK2, p+Position(P, P[i]-P[j]) );
6011fi;
6012else
6013	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6014if (t[Position(P,P[i]-P[j] )] = 1) then
6015Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6016Add(KK2, p+Position(P, P[i]-P[j]) );
6017else
6018Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6019Add(KK1, p+Position(P, K[i]-K[j]) );
6020fi;
6021	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6022if (t[Position(P,P[i]-P[j] )] = 1) then
6023Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6024Add(KK1, p+Position(P, P[i]-P[j]) );
6025Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6026Add(KK2, p+Position(P, K[i]-K[j]) );
6027else
6028Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6029Add(KK1, p+Position(P, P[i]-P[j]) );
6030Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6031Add(KK2, p+Position(P, K[i]-K[j]) );
6032fi;
6033	fi;
6034fi;
6035fi; fi;
6036
6037fi; fi;
6038
6039#if (Position(P,P[j]) > Position(P,K[i]) ) then
6040SetEntrySCTable( TT, i,  p+j , KK1);
6041SetEntrySCTable( TT, Position(P,K[i]), p+j, KK2);
6042
6043
6044
6045fi;
6046fi;
6047
6048else
6049	if ( p+Position(P, K[i]) = p+Position(P,P[i]) ) then #alpha< phi_alpha
6050			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then #beta< phi_beta
6051
6052KK1:=[];
6053KK2:=[];
6054
6055if (t[i]=1) then
6056if (t[j]=1) then
6057
6058if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6059if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6060if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6061
6062if (t[Position(P,P[j]+P[i] )] = 1) then
6063Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6064Add(KK1, p+Position(P, P[i]+P[j]) );
6065Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6066Add(KK2, p+Position(P, K[i]+K[j]) );
6067else
6068Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6069Add(KK1, p+Position(P, P[i]+P[j]) );
6070Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6071Add(KK2, p+Position(P, K[i]+K[j]) );
6072fi;
6073else
6074	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6075if (t[Position(P,P[j]+P[i] )] = 1) then
6076Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6077Add(KK1, p+Position(P, P[i]+P[j]) );
6078else
6079Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6080Add(KK2, p+Position(P, K[i]+K[j]) );
6081fi;
6082	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6083if (t[Position(P,P[j]+P[i] )] = 1) then
6084Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6085Add(KK1, p+Position(P, K[j]+K[i]) );
6086Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6087Add(KK2, p+Position(P, P[i]+P[j]) );
6088else
6089Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6090Add(KK1, p+Position(P, K[j]+K[i]) );
6091Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6092Add(KK2, p+Position(P, P[i]+P[j]) );
6093fi;
6094	fi;
6095fi;
6096fi; fi;
6097
6098###############
6099
6100if (P[i]-P[j] in P ) then
6101if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6102if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6103
6104if (t[Position(P,P[i]-P[j] )] = 1) then
6105Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6106Add(KK1, p+Position(P, P[i]-P[j]) );
6107Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6108Add(KK2, p+Position(P, K[i]-K[j]) );
6109else
6110Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6111Add(KK1, p+Position(P, P[i]-P[j]) );
6112Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6113Add(KK2, p+Position(P, K[i]-K[j]) );
6114fi;
6115else
6116	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6117if (t[Position(P,P[i]-P[j] )] = 1) then
6118Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6119Add(KK1, p+Position(P, P[i]-P[j]) );
6120else
6121Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6122Add(KK2, p+Position(P, K[i]-K[j]) );
6123fi;
6124	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6125if (t[Position(P,P[i]-P[j] )] = 1) then
6126Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6127Add(KK1, p+Position(P, K[i]-K[j]) );
6128Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6129Add(KK2, p+Position(P, P[i]-P[j]) );
6130else
6131Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6132Add(KK1, p+Position(P, K[i]-K[j]) );
6133Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6134Add(KK2, p+Position(P, P[i]-P[j]) );
6135fi;
6136	fi;
6137fi;
6138fi; fi;
6139
6140####################
6141else #t[j]=-1
6142
6143if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6144if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6145if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6146
6147if (t[Position(P,P[j]+P[i] )] = 1) then
6148Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6149Add(KK1, p+Position(P, P[i]+P[j]) );
6150Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6151Add(KK2, p+Position(P, K[i]+K[j]) );
6152else
6153Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6154Add(KK1, p+Position(P, P[i]+P[j]) );
6155Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6156Add(KK2, p+Position(P, K[i]+K[j]) );
6157fi;
6158else
6159	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6160if (t[Position(P,P[j]+P[i] )] = 1) then
6161Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6162Add(KK1, p+Position(P, P[i]+P[j]) );
6163else
6164Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6165Add(KK2, p+Position(P, K[i]+K[j]) );
6166fi;
6167	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6168if (t[Position(P,P[j]+P[i] )] = 1) then
6169Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6170Add(KK1, p+Position(P, K[j]+K[i]) );
6171Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6172Add(KK2, p+Position(P, P[i]+P[j]) );
6173else
6174Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6175Add(KK1, p+Position(P, K[j]+K[i]) );
6176Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6177Add(KK2, p+Position(P, P[i]+P[j]) );
6178fi;
6179	fi;
6180fi;
6181fi; fi;
6182
6183###############
6184
6185if (P[i]-P[j] in P ) then
6186if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6187if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6188
6189if (t[Position(P,P[i]-P[j] )] = 1) then
6190Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6191Add(KK1, p+Position(P, P[i]-P[j]) );
6192Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6193Add(KK2, p+Position(P, K[i]-K[j]) );
6194else
6195Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6196Add(KK1, p+Position(P, P[i]-P[j]) );
6197Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6198Add(KK2, p+Position(P, K[i]-K[j]) );
6199fi;
6200else
6201	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6202if (t[Position(P,P[i]-P[j] )] = 1) then
6203Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6204Add(KK1, p+Position(P, P[i]-P[j]) );
6205else
6206Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6207Add(KK2, p+Position(P, K[i]-K[j]) );
6208fi;
6209	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6210if (t[Position(P,P[i]-P[j] )] = 1) then
6211Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6212Add(KK1, p+Position(P, K[i]-K[j]) );
6213Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6214Add(KK2, p+Position(P, P[i]-P[j]) );
6215else
6216Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6217Add(KK1, p+Position(P, K[i]-K[j]) );
6218Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6219Add(KK2, p+Position(P, P[i]-P[j]) );
6220fi;
6221	fi;
6222fi;
6223fi; fi;
6224
6225####################
6226fi;
6227
6228else #t[i]=-1
6229if (t[j]=1) then
6230
6231if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6232if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6233if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6234
6235if (t[Position(P,P[j]+P[i] )] = 1) then
6236Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6237Add(KK1, p+Position(P, K[j]+K[i]) );
6238Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6239Add(KK2, p+Position(P, P[i]+P[j]) );
6240else
6241Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6242Add(KK1, p+Position(P, K[j]+K[i]) );
6243Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6244Add(KK2, p+Position(P, P[i]+P[j]) );
6245fi;
6246else
6247	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6248if (t[Position(P,P[j]+P[i] )] = 1) then
6249Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6250Add(KK2, p+Position(P, P[i]+P[j]) );
6251else
6252Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6253Add(KK1, p+Position(P, K[j]+K[i]) );
6254fi;
6255	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6256if (t[Position(P,P[j]+P[i] )] = 1) then
6257Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6258Add(KK1, p+Position(P, K[j]+K[i]) );
6259Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6260Add(KK2, p+Position(P, P[i]+P[j]) );
6261else
6262Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6263Add(KK1, p+Position(P, P[i]+P[j]) );
6264Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6265Add(KK2, p+Position(P, K[j]+K[i]) );
6266fi;
6267	fi;
6268fi;
6269fi; fi;
6270
6271###############
6272
6273if (P[i]-P[j] in P ) then
6274if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6275if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6276
6277if (t[Position(P,P[i]-P[j] )] = 1) then
6278Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6279Add(KK1, p+Position(P, K[i]-K[j]) );
6280Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6281Add(KK2, p+Position(P, P[i]-P[j]) );
6282else
6283Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6284Add(KK1, p+Position(P, K[i]-K[j]) );
6285Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6286Add(KK2, p+Position(P, P[i]-P[j]) );
6287fi;
6288else
6289	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6290if (t[Position(P,P[i]-P[j] )] = 1) then
6291Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6292Add(KK2, p+Position(P, P[i]-P[j]) );
6293else
6294Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6295Add(KK1, p+Position(P, K[i]-K[j]) );
6296fi;
6297	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6298if (t[Position(P,P[i]-P[j] )] = 1) then
6299Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6300Add(KK1, p+Position(P, P[i]-P[j]) );
6301Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6302Add(KK2, p+Position(P, K[i]-K[j]) );
6303else
6304Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6305Add(KK1, p+Position(P, P[i]-P[j]) );
6306Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6307Add(KK2, p+Position(P, K[i]-K[j]) );
6308fi;
6309	fi;
6310fi;
6311fi; fi;
6312
6313else
6314
6315if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6316if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6317if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6318
6319if (t[Position(P,P[j]+P[i] )] = 1) then
6320Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6321Add(KK1, p+Position(P, K[i]+K[j]) );
6322Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6323Add(KK2, p+Position(P, P[j]+P[i]) );
6324else
6325Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6326Add(KK1, p+Position(P, K[i]+K[j]) );
6327Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6328Add(KK2, p+Position(P, P[j]+P[i]) );
6329fi;
6330else
6331	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6332if (t[Position(P,P[j]+P[i] )] = 1) then
6333Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6334Add(KK2, p+Position(P, P[j]+P[i]) );
6335else
6336Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6337Add(KK1, p+Position(P, K[i]+K[j]) );
6338fi;
6339	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6340if (t[Position(P,P[j]+P[i] )] = 1) then
6341Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6342Add(KK1, p+Position(P, P[j]+P[i]) );
6343Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6344Add(KK2, p+Position(P, K[i]+K[j]) );
6345else
6346Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6347Add(KK1, p+Position(P, P[j]+P[i]) );
6348Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
6349Add(KK2, p+Position(P, K[i]+K[j]) );
6350fi;
6351	fi;
6352fi;
6353fi; fi;
6354
6355###############
6356
6357if (P[i]-P[j] in P ) then
6358if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6359if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6360
6361if (t[Position(P,P[i]-P[j] )] = 1) then
6362Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6363Add(KK1, p+Position(P, K[i]-K[j]) );
6364Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6365Add(KK2, p+Position(P, P[i]-P[j]) );
6366else
6367Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6368Add(KK1, p+Position(P, K[i]-K[j]) );
6369Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6370Add(KK2, p+Position(P, P[i]-P[j]) );
6371fi;
6372else
6373	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6374if (t[Position(P,P[i]-P[j] )] = 1) then
6375Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6376Add(KK2, p+Position(P, P[i]-P[j]) );
6377else
6378Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6379Add(KK1, p+Position(P, K[i]-K[j]) );
6380fi;
6381	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6382if (t[Position(P,P[i]-P[j] )] = 1) then
6383Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6384Add(KK1, p+Position(P, P[i]-P[j]) );
6385Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6386Add(KK2, p+Position(P, K[i]-K[j]) );
6387else
6388Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6389Add(KK1, p+Position(P, P[i]-P[j]) );
6390Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
6391Add(KK2, p+Position(P, K[i]-K[j]) );
6392fi;
6393	fi;
6394fi;
6395fi; fi;
6396
6397fi;
6398fi;
6399
6400if ( Position(P, P[i]) > Position(P,K[j]) ) then
6401SetEntrySCTable( TT, i,  p+j , KK1);
6402SetEntrySCTable( TT, i,  p+Position(P,K[j]), KK2);
6403else
6404	if ( Position(P, P[i]) < Position(P,K[j]) ) then
6405SetEntrySCTable( TT, i,  p+j , KK1);
6406	fi;
6407fi;
6408
6409#################################################
6410		else
6411			if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
6412
6413KK1:=[];
6414
6415if (t[i]=1) then
6416if (t[j]=1) then
6417
6418if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha + phi_beta quindi sono nel caso sicuro
6419if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6420if (t[Position(P,P[j]+P[i])]=1) then
6421Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
6422Add(KK1, p+Position(P, P[i]+P[j]) );
6423fi; fi; fi;
6424
6425if (P[i]-P[j] in P ) then
6426if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6427if (t[Position(P,P[i]-P[j])]=1) then
6428if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6429Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6430Add(KK1, p+Position(P, P[i]-P[j]) );
6431else
6432	if (p+Position(P,K[i]-K[j]) = p+Position(P, P[i]-P[j])) then
6433Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6434Add(KK1, p+Position(P, P[i]-P[j]) );
6435	else
6436Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6437Add(KK1, p+Position(P, K[i]-K[j]) );
6438	fi;
6439fi; fi; fi; fi;
6440
6441SetEntrySCTable( TT, i,  p+j , KK1);
6442
6443else
6444
6445if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6446if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6447if (t[Position(P,P[j]+P[i])]=-1) then
6448Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
6449Add(KK1, p+Position(P, P[i]+P[j]) );
6450fi; fi; fi;
6451
6452if (P[i]-P[j] in P ) then
6453if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6454if (t[Position(P,P[i]-P[j])]=-1) then
6455if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6456Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6457Add(KK1, p+Position(P, P[i]-P[j]) );
6458else
6459	if (p+Position(P,K[i]-K[j]) = p+Position(P, P[i]-P[j])) then
6460Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6461Add(KK1, p+Position(P, P[i]-P[j]) );
6462	else
6463Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6464Add(KK1, p+Position(P, K[i]-K[j]) );
6465	fi;
6466fi; fi; fi; fi;
6467SetEntrySCTable( TT, i,  p+j , KK1);
6468fi;
6469
6470else
6471if (t[j]=1) then
6472
6473if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6474if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6475if (t[Position(P,P[j]+P[i])]=-1) then
6476Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
6477Add(KK1, p+Position(P, P[i]+P[j]) );
6478fi; fi; fi;
6479
6480if (P[i]-P[j] in P ) then
6481if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6482if (t[Position(P,P[i]-P[j])]=-1) then
6483if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6484Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6485Add(KK1, p+Position(P, P[i]-P[j]) );
6486else
6487	if (p+Position(P,K[i]-K[j]) = p+Position(P, P[i]-P[j])) then
6488Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6489Add(KK1, p+Position(P, P[i]-P[j]) );
6490	else
6491Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6492Add(KK1, p+Position(P, K[i]-K[j]) );
6493	fi;
6494fi; fi; fi; fi;
6495
6496SetEntrySCTable( TT, i,  p+j , KK1);
6497
6498
6499else
6500
6501
6502if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6503if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6504if (t[Position(P,P[j]+P[i])]=1) then
6505Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
6506Add(KK1, p+Position(P, P[i]+P[j]) );
6507fi; fi; fi;
6508
6509if (P[i]-P[j] in P ) then
6510if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6511if (t[Position(P,P[i]-P[j])]=1) then
6512if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6513Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6514Add(KK1, p+Position(P, P[i]-P[j]) );
6515else
6516	if (p+Position(P,K[i]-K[j]) = p+Position(P, P[i]-P[j])) then
6517Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6518Add(KK1, p+Position(P, P[i]-P[j]) );
6519	else
6520Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
6521Add(KK1, p+Position(P, K[i]-K[j]) );
6522	fi;
6523fi; fi; fi; fi;
6524
6525SetEntrySCTable( TT, i,  p+j , KK1);
6526
6527fi;
6528fi; fi; fi;
6529fi; fi;
6530od; od;
6531
6532for i in [1..p-1] do #alpha
6533	for j in [i+1..p] do #beta > alpha
6534		if ( Position(P,K[i]) > Position(P, P[j]) ) then #quindi alpha<phi_alpha
6535			if ( Position(P, K[j]) > Position(P, P[j]) ) then
6536KK3:=[]; # ibar p+j
6537KK4:=[]; # ibar p+jbar
6538
6539if (t[i]=1) then
6540if (t[j]=1) then
6541
6542if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6543if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6544if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6545
6546if (t[Position(P,P[j]+P[i] )] = 1) then
6547Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6548Add(KK3, p+Position(P, K[i]+K[j]) );
6549Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6550Add(KK4, p+Position(P, P[i]+P[j]) );
6551else
6552Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6553Add(KK3, p+Position(P, K[i]+K[j]) );
6554Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6555Add(KK4, p+Position(P, P[i]+P[j]) );
6556fi;
6557else
6558	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6559if (t[Position(P,P[j]+P[i] )] = 1) then
6560Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6561Add(KK4, p+Position(P, P[i]+P[j]) );
6562else
6563Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6564Add(KK3, p+Position(P, K[i]+K[j]) );
6565fi;
6566	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6567if (t[Position(P,P[j]+P[i] )] = 1) then
6568Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6569Add(KK3, p+Position(P, P[i]+P[j]) );
6570Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6571Add(KK4, p+Position(P,K[j]+K[i]) );
6572else
6573Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6574Add(KK3, p+Position(P, P[i]+P[j]) );
6575Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6576Add(KK4, p+Position(P, K[j]+K[i]) );
6577fi;
6578	fi;
6579fi;
6580fi; fi;
6581
6582###############
6583
6584if (P[i]-P[j] in P ) then
6585if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6586if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6587
6588if (t[Position(P,P[i]-P[j] )] = 1) then
6589Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6590Add(KK3, p+Position(P, K[i]-K[j]) );
6591Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6592Add(KK4, p+Position(P, P[i]-P[j]) );
6593else
6594Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6595Add(KK3, p+Position(P, K[i]-K[j]) );
6596Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6597Add(KK4, p+Position(P, P[i]-P[j]) );
6598fi;
6599else
6600	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6601if (t[Position(P,P[i]-P[j] )] = 1) then
6602Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6603Add(KK4, p+Position(P, P[i]-P[j]) );
6604else
6605Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6606Add(KK3, p+Position(P, K[i]-K[j]) );
6607fi;
6608	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6609if (t[Position(P,P[i]-P[j] )] = 1) then
6610Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6611Add(KK3, p+Position(P, P[i]-P[j]) );
6612Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6613Add(KK4, p+Position(P, K[i]-K[j]) );
6614else
6615Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6616Add(KK3, p+Position(P, P[i]-P[j]) );
6617Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6618Add(KK4, p+Position(P, K[i]-K[j]) );
6619fi;
6620	fi;
6621fi;
6622fi; fi;
6623
6624#############
6625
6626if (P[i]+K[j] in P ) then
6627if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
6628if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
6629
6630if (t[Position(P,P[i]+K[j] )] = 1) then
6631Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6632Add(KK3, p+Position(P, K[i]+P[j]) );
6633Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6634Add(KK4, p+Position(P, P[i]+K[j]) );
6635else
6636Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6637Add(KK3, p+Position(P, K[i]+P[j]) );
6638Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6639Add(KK4, p+Position(P, P[i]+K[j]) );
6640fi;
6641else
6642	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
6643if (t[Position(P,K[j]+P[i] )] = 1) then
6644Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6645Add(KK4, p+Position(P, P[i]+K[j]) );
6646else
6647Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6648Add(KK3, p+Position(P, K[i]+P[j]) );
6649fi;
6650	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6651if (t[Position(P,P[i]+K[j] )] = 1) then
6652Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6653Add(KK3, p+Position(P, P[i]+K[j]) );
6654Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6655Add(KK4, p+Position(P, K[i]+P[j]) );
6656else
6657Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6658Add(KK3, p+Position(P, P[i]+K[j]) );
6659Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6660Add(KK4, p+Position(P, K[i]+P[j]) );
6661fi;
6662	fi;
6663fi;
6664fi; fi;
6665
6666#############
6667
6668if (P[i]-K[j] in P ) then
6669if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
6670if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
6671
6672if (t[Position(P,P[i]-K[j] )] = 1) then
6673Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6674Add(KK3, p+Position(P, K[i]-P[j]) );
6675Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6676Add(KK4, p+Position(P, P[i]-K[j]) );
6677else
6678Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6679Add(KK3, p+Position(P, K[i]-P[j]) );
6680Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6681Add(KK4, p+Position(P, P[i]-K[j]) );
6682fi;
6683else
6684	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
6685if (t[Position(P,P[i]-K[j] )] = 1) then
6686Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6687Add(KK4, p+Position(P, P[i]-K[j]) );
6688else
6689Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6690Add(KK3, p+Position(P, K[i]-P[j]) );
6691fi;
6692	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6693if (t[Position(P,P[i]-K[j] )] = 1) then
6694Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6695Add(KK3, p+Position(P, P[i]-K[j]) );
6696Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6697Add(KK4, p+Position(P, K[i]-P[j]) );
6698else
6699Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6700Add(KK3, p+Position(P, P[i]-K[j]) );
6701Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6702Add(KK4, p+Position(P, K[i]-P[j]) );
6703fi;
6704	fi;
6705fi;
6706fi; fi;
6707
6708#############
6709else # ovvero t[j]=-1
6710#########################
6711
6712if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6713if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6714if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6715
6716if (t[Position(P,P[j]+P[i] )] = 1) then
6717Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6718Add(KK3, p+Position(P, K[i]+K[j]) );
6719Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6720Add(KK4, p+Position(P, P[i]+P[j]) );
6721else
6722Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6723Add(KK3, p+Position(P, K[i]+K[j]) );
6724Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6725Add(KK4, p+Position(P, P[i]+P[j]) );
6726fi;
6727else
6728	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6729if (t[Position(P,P[j]+P[i] )] = 1) then
6730Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6731Add(KK4, p+Position(P, P[i]+P[j]) );
6732else
6733Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6734Add(KK3, p+Position(P, K[i]+K[j]) );
6735fi;
6736	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6737if (t[Position(P,P[j]+P[i] )] = 1) then
6738Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6739Add(KK3, p+Position(P, P[i]+P[j]) );
6740Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6741Add(KK4, p+Position(P,K[j]+K[i]) );
6742else
6743Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6744Add(KK3, p+Position(P, P[i]+P[j]) );
6745Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6746Add(KK4, p+Position(P, K[j]+K[i]) );
6747fi;
6748	fi;
6749fi;
6750fi; fi;
6751
6752###############
6753
6754if (P[i]-P[j] in P ) then
6755if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6756if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6757
6758if (t[Position(P,P[i]-P[j] )] = 1) then
6759Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6760Add(KK3, p+Position(P, K[i]-K[j]) );
6761Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6762Add(KK4, p+Position(P, P[i]-P[j]) );
6763else
6764Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6765Add(KK3, p+Position(P, K[i]-K[j]) );
6766Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6767Add(KK4, p+Position(P, P[i]-P[j]) );
6768fi;
6769else
6770	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6771if (t[Position(P,P[i]-P[j] )] = 1) then
6772Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6773Add(KK4, p+Position(P, P[i]-P[j]) );
6774else
6775Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6776Add(KK3, p+Position(P, K[i]-K[j]) );
6777fi;
6778	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6779if (t[Position(P,P[i]-P[j] )] = 1) then
6780Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6781Add(KK3, p+Position(P, P[i]-P[j]) );
6782Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6783Add(KK4, p+Position(P, K[i]-K[j]) );
6784else
6785Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6786Add(KK3, p+Position(P, P[i]-P[j]) );
6787Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6788Add(KK4, p+Position(P, K[i]-K[j]) );
6789fi;
6790	fi;
6791fi;
6792fi; fi;
6793
6794#############
6795
6796if (P[i]+K[j] in P ) then
6797if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
6798if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
6799
6800if (t[Position(P,P[i]+K[j] )] = 1) then
6801Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6802Add(KK3, p+Position(P, K[i]+P[j]) );
6803Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6804Add(KK4, p+Position(P, P[i]+K[j]) );
6805else
6806Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6807Add(KK3, p+Position(P, K[i]+P[j]) );
6808Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6809Add(KK4, p+Position(P, P[i]+K[j]) );
6810fi;
6811else
6812	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
6813if (t[Position(P,K[j]+P[i] )] = 1) then
6814Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6815Add(KK4, p+Position(P, P[i]+K[j]) );
6816else
6817Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6818Add(KK3, p+Position(P, K[i]+P[j]) );
6819fi;
6820	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6821if (t[Position(P,P[i]+K[j] )] = 1) then
6822Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6823Add(KK3, p+Position(P, P[i]+K[j]) );
6824Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6825Add(KK4, p+Position(P, K[i]+P[j]) );
6826else
6827Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6828Add(KK3, p+Position(P, P[i]+K[j]) );
6829Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6830Add(KK4, p+Position(P, K[i]+P[j]) );
6831fi;
6832	fi;
6833fi;
6834fi; fi;
6835
6836#############
6837
6838if (P[i]-K[j] in P ) then
6839if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
6840if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
6841
6842if (t[Position(P,P[i]-K[j] )] = 1) then
6843Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6844Add(KK3, p+Position(P, K[i]-P[j]) );
6845Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6846Add(KK4, p+Position(P, P[i]-K[j]) );
6847else
6848Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6849Add(KK3, p+Position(P, K[i]-P[j]) );
6850Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6851Add(KK4, p+Position(P, P[i]-K[j]) );
6852fi;
6853else
6854	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
6855if (t[Position(P,P[i]-K[j] )] = 1) then
6856Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6857Add(KK4, p+Position(P, P[i]-K[j]) );
6858else
6859Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6860Add(KK3, p+Position(P, K[i]-P[j]) );
6861fi;
6862	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6863if (t[Position(P,P[i]-K[j] )] = 1) then
6864Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6865Add(KK3, p+Position(P, P[i]-K[j]) );
6866Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6867Add(KK4, p+Position(P, K[i]-P[j]) );
6868else
6869Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6870Add(KK3, p+Position(P, P[i]-K[j]) );
6871Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
6872Add(KK4, p+Position(P, K[i]-P[j]) );
6873fi;
6874	fi;
6875fi;
6876fi; fi;
6877
6878fi;
6879
6880########################à
6881else #t[i]=-1
6882if (t[j]=1) then
6883###############
6884
6885if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
6886if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
6887if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
6888
6889if (t[Position(P,P[j]+P[i] )] = 1) then
6890Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6891Add(KK3, p+Position(P, K[i]+K[j]) );
6892Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6893Add(KK4, p+Position(P, P[i]+P[j]) );
6894else
6895Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6896Add(KK3, p+Position(P, K[i]+K[j]) );
6897Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6898Add(KK4, p+Position(P, P[i]+P[j]) );
6899fi;
6900else
6901	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
6902if (t[Position(P,P[j]+P[i] )] = 1) then
6903Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6904Add(KK4, p+Position(P, P[i]+P[j]) );
6905else
6906Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6907Add(KK3, p+Position(P, K[i]+K[j]) );
6908fi;
6909	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6910if (t[Position(P,P[j]+P[i] )] = 1) then
6911Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6912Add(KK3, p+Position(P, P[i]+P[j]) );
6913Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6914Add(KK4, p+Position(P,K[j]+K[i]) );
6915else
6916Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6917Add(KK3, p+Position(P, P[i]+P[j]) );
6918Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
6919Add(KK4, p+Position(P, K[j]+K[i]) );
6920fi;
6921	fi;
6922fi;
6923fi; fi;
6924###############
6925
6926if (P[i]-P[j] in P ) then
6927if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
6928if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
6929
6930if (t[Position(P,P[i]-P[j] )] = 1) then
6931Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6932Add(KK3, p+Position(P, K[i]-K[j]) );
6933Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6934Add(KK4, p+Position(P, P[i]-P[j]) );
6935else
6936Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6937Add(KK3, p+Position(P, K[i]-K[j]) );
6938Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6939Add(KK4, p+Position(P, P[i]-P[j]) );
6940fi;
6941else
6942	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
6943if (t[Position(P,P[i]-P[j] )] = 1) then
6944Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6945Add(KK4, p+Position(P, P[i]-P[j]) );
6946else
6947Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6948Add(KK3, p+Position(P, K[i]-K[j]) );
6949fi;
6950	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6951if (t[Position(P,P[i]-P[j] )] = 1) then
6952Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6953Add(KK3, p+Position(P, P[i]-P[j]) );
6954Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6955Add(KK4, p+Position(P, K[i]-K[j]) );
6956else
6957Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6958Add(KK3, p+Position(P, P[i]-P[j]) );
6959Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
6960Add(KK4, p+Position(P, K[i]-K[j]) );
6961fi;
6962	fi;
6963fi;
6964fi; fi;
6965
6966#############
6967
6968if (P[i]+K[j] in P ) then
6969if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
6970if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
6971
6972if (t[Position(P,P[i]+K[j] )] = 1) then
6973Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6974Add(KK3, p+Position(P, K[i]+P[j]) );
6975Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6976Add(KK4, p+Position(P, P[i]+K[j]) );
6977else
6978Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6979Add(KK3, p+Position(P, K[i]+P[j]) );
6980Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6981Add(KK4, p+Position(P, P[i]+K[j]) );
6982fi;
6983else
6984	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
6985if (t[Position(P,K[j]+P[i] )] = 1) then
6986Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6987Add(KK4, p+Position(P, P[i]+K[j]) );
6988else
6989Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6990Add(KK3, p+Position(P, K[i]+P[j]) );
6991fi;
6992	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
6993if (t[Position(P,P[i]+K[j] )] = 1) then
6994Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6995Add(KK3, p+Position(P, P[i]+K[j]) );
6996Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
6997Add(KK4, p+Position(P, K[i]+P[j]) );
6998else
6999Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7000Add(KK3, p+Position(P, P[i]+K[j]) );
7001Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7002Add(KK4, p+Position(P, K[i]+P[j]) );
7003fi;
7004	fi;
7005fi;
7006fi; fi;
7007
7008#############
7009
7010if (P[i]-K[j] in P ) then
7011if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
7012if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
7013
7014if (t[Position(P,P[i]-K[j] )] = 1) then
7015Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7016Add(KK3, p+Position(P, K[i]-P[j]) );
7017Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7018Add(KK4, p+Position(P, P[i]-K[j]) );
7019else
7020Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7021Add(KK3, p+Position(P, K[i]-P[j]) );
7022Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7023Add(KK4, p+Position(P, P[i]-K[j]) );
7024fi;
7025else
7026	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
7027if (t[Position(P,P[i]-K[j] )] = 1) then
7028Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7029Add(KK4, p+Position(P, P[i]-K[j]) );
7030else
7031Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7032Add(KK3, p+Position(P, K[i]-P[j]) );
7033fi;
7034	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7035if (t[Position(P,P[i]-K[j] )] = 1) then
7036Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7037Add(KK3, p+Position(P, P[i]-K[j]) );
7038Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7039Add(KK4, p+Position(P, K[i]-P[j]) );
7040else
7041Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7042Add(KK3, p+Position(P, P[i]-K[j]) );
7043Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7044Add(KK4, p+Position(P, K[i]-P[j]) );
7045fi;
7046	fi;
7047fi;
7048fi; fi;
7049
7050#####################
7051else #t[j]=-1
7052#########################
7053
7054if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7055if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7056if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7057
7058if (t[Position(P,P[j]+P[i] )] = 1) then
7059Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7060Add(KK3, p+Position(P, K[i]+K[j]) );
7061Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7062Add(KK4, p+Position(P, P[i]+P[j]) );
7063else
7064Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7065Add(KK3, p+Position(P, K[i]+K[j]) );
7066Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7067Add(KK4, p+Position(P, P[i]+P[j]) );
7068fi;
7069else
7070	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7071if (t[Position(P,P[j]+P[i] )] = 1) then
7072Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7073Add(KK4, p+Position(P, P[i]+P[j]) );
7074else
7075Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7076Add(KK3, p+Position(P, K[i]+K[j]) );
7077fi;
7078	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7079if (t[Position(P,P[j]+P[i] )] = 1) then
7080Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7081Add(KK3, p+Position(P, P[i]+P[j]) );
7082Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7083Add(KK4, p+Position(P,K[j]+K[i]) );
7084else
7085Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7086Add(KK3, p+Position(P, P[i]+P[j]) );
7087Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7088Add(KK4, p+Position(P, K[j]+K[i]) );
7089fi;
7090	fi;
7091fi;
7092fi; fi;
7093
7094###############
7095
7096if (P[i]-P[j] in P ) then
7097if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7098if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
7099
7100if (t[Position(P,P[i]-P[j] )] = 1) then
7101Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7102Add(KK3, p+Position(P, K[i]-K[j]) );
7103Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7104Add(KK4, p+Position(P, P[i]-P[j]) );
7105else
7106Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7107Add(KK3, p+Position(P, K[i]-K[j]) );
7108Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7109Add(KK4, p+Position(P, P[i]-P[j]) );
7110fi;
7111else
7112	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
7113if (t[Position(P,P[i]-P[j] )] = 1) then
7114Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7115Add(KK4, p+Position(P, P[i]-P[j]) );
7116else
7117Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7118Add(KK3, p+Position(P, K[i]-K[j]) );
7119fi;
7120	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7121if (t[Position(P,P[i]-P[j] )] = 1) then
7122Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7123Add(KK3, p+Position(P, P[i]-P[j]) );
7124Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7125Add(KK4, p+Position(P, K[i]-K[j]) );
7126else
7127Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7128Add(KK3, p+Position(P, P[i]-P[j]) );
7129Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7130Add(KK4, p+Position(P, K[i]-K[j]) );
7131fi;
7132	fi;
7133fi;
7134fi; fi;
7135
7136#############
7137
7138if (P[i]+K[j] in P ) then
7139if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
7140if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
7141
7142if (t[Position(P,P[i]+K[j] )] = 1) then
7143Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7144Add(KK3, p+Position(P, K[i]+P[j]) );
7145Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7146Add(KK4, p+Position(P, P[i]+K[j]) );
7147else
7148Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7149Add(KK3, p+Position(P, K[i]+P[j]) );
7150Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7151Add(KK4, p+Position(P, P[i]+K[j]) );
7152fi;
7153else
7154	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
7155if (t[Position(P,K[j]+P[i] )] = 1) then
7156Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7157Add(KK4, p+Position(P, P[i]+K[j]) );
7158else
7159Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7160Add(KK3, p+Position(P, K[i]+P[j]) );
7161fi;
7162	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7163if (t[Position(P,P[i]+K[j] )] = 1) then
7164Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7165Add(KK3, p+Position(P, P[i]+K[j]) );
7166Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7167Add(KK4, p+Position(P, K[i]+P[j]) );
7168else
7169Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7170Add(KK3, p+Position(P, P[i]+K[j]) );
7171Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7172Add(KK4, p+Position(P, K[i]+P[j]) );
7173fi;
7174	fi;
7175fi;
7176fi; fi;
7177
7178#############
7179
7180if (P[i]-K[j] in P ) then
7181if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
7182if (p+Position(P,K[i]-P[j]) > p+Position(P,P[i]-K[j])) then
7183
7184if (t[Position(P,P[i]-K[j] )] = 1) then
7185Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7186Add(KK3, p+Position(P, K[i]-P[j]) );
7187Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7188Add(KK4, p+Position(P, P[i]-K[j]) );
7189else
7190Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7191Add(KK3, p+Position(P, K[i]-P[j]) );
7192Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7193Add(KK4, p+Position(P, P[i]-K[j]) );
7194fi;
7195else
7196	if (p+Position(P,K[i]-P[j]) = p+Position(P,P[i]-K[j])) then
7197if (t[Position(P,P[i]-K[j] )] = 1) then
7198Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7199Add(KK4, p+Position(P, P[i]-K[j]) );
7200else
7201Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7202Add(KK3, p+Position(P, K[i]-P[j]) );
7203fi;
7204	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7205if (t[Position(P,P[i]-K[j] )] = 1) then
7206Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7207Add(KK3, p+Position(P, P[i]-K[j]) );
7208Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7209Add(KK4, p+Position(P, K[i]-P[j]) );
7210else
7211Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7212Add(KK3, p+Position(P, P[i]-K[j]) );
7213Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7214Add(KK4, p+Position(P, K[i]-P[j]) );
7215fi;
7216	fi;
7217fi;
7218fi; fi;
7219
7220fi; fi;
7221
7222if ( Position(P,K[i]) > Position(P,K[j]) ) then
7223SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
7224SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
7225else
7226	if ( Position(P,K[i]) < Position(P,K[j]) ) then
7227SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
7228	fi;
7229fi;
7230
7231
7232else
7233
7234	if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
7235
7236KK1:=[];
7237KK2:=[];
7238
7239if (t[i]=1) then
7240if (t[j]=1) then
7241
7242if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7243if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7244if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7245
7246if (t[Position(P,P[j]+P[i] )] = 1) then
7247Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7248Add(KK2, p+Position(P, K[i]+K[j]) );
7249else
7250Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7251Add(KK2, p+Position(P, K[i]+K[j]) );
7252fi;
7253else
7254	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7255if (t[Position(P,P[j]+P[i] )] = 1) then
7256else
7257Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7258Add(KK2, p+Position(P, K[i]+K[j]) );
7259fi;
7260	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7261if (t[Position(P,P[j]+P[i] )] = 1) then
7262Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7263Add(KK2, p+Position(P, P[i]+P[j]) );
7264else
7265Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7266Add(KK2, p+Position(P, P[i]+P[j]) );
7267fi;
7268	fi;
7269fi;
7270fi; fi;
7271
7272###############
7273
7274if (P[i]-P[j] in P ) then
7275if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7276if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
7277
7278if (t[Position(P,P[i]-P[j] )] = 1) then
7279Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7280Add(KK2, p+Position(P, K[i]-K[j]) );
7281else
7282Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7283Add(KK2, p+Position(P, K[i]-K[j]) );
7284fi;
7285else
7286	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
7287if (t[Position(P,P[i]-P[j] )] = 1) then
7288else
7289Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7290Add(KK2, p+Position(P, K[i]-K[j]) );
7291fi;
7292	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7293if (t[Position(P,P[i]-P[j] )] = 1) then
7294Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7295Add(KK2, p+Position(P, P[i]-P[j]) );
7296else
7297Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7298Add(KK2, p+Position(P, P[i]-P[j]) );
7299fi;
7300	fi;
7301fi;
7302fi; fi;
7303
7304####################
7305else #t[j]=-1
7306
7307if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7308if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7309if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7310
7311if (t[Position(P,P[j]+P[i] )] = 1) then
7312Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7313Add(KK2, p+Position(P, P[i]+P[j]) );
7314else
7315Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7316Add(KK2, p+Position(P, P[i]+P[j]) );
7317fi;
7318else
7319	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7320if (t[Position(P,P[j]+P[i] )] = 1) then
7321Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7322Add(KK2, p+Position(P, P[i]+P[j]) );
7323fi;
7324	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7325if (t[Position(P,P[j]+P[i] )] = 1) then
7326Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7327Add(KK2, p+Position(P, P[i]+P[j]) );
7328else
7329Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7330Add(KK2, p+Position(P, K[j]+K[i]) );
7331fi;
7332	fi;
7333fi;
7334fi; fi;
7335
7336###############
7337
7338if (P[i]-P[j] in P ) then
7339if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7340if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
7341
7342if (t[Position(P,P[i]-P[j] )] = 1) then
7343Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7344Add(KK2, p+Position(P, P[i]-P[j]) );
7345else
7346Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7347Add(KK2, p+Position(P, P[i]-P[j]) );
7348fi;
7349else
7350	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
7351if (t[Position(P,P[i]-P[j] )] = 1) then
7352Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7353Add(KK2, p+Position(P, P[i]-P[j]) );
7354fi;
7355	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7356if (t[Position(P,P[i]-P[j] )] = 1) then
7357Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7358Add(KK2, p+Position(P, K[i]-K[j]) );
7359else
7360Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7361Add(KK2, p+Position(P, K[i]-K[j]) );
7362fi;
7363	fi;
7364fi;
7365fi; fi;
7366
7367fi;
7368
7369else #t[i]=-1
7370if (t[j]=1) then
7371
7372if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7373if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7374if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7375
7376if (t[Position(P,P[j]+P[i] )] = 1) then
7377Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7378Add(KK2, p+Position(P, K[i]+K[j]) );
7379else
7380Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7381Add(KK2, p+Position(P, K[i]+K[j]) );
7382fi;
7383else
7384	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7385if (t[Position(P,P[j]+P[i] )] = 1) then
7386else
7387Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7388Add(KK2, p+Position(P, K[i]+K[j]) );
7389fi;
7390	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7391if (t[Position(P,P[j]+P[i] )] = 1) then
7392Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7393Add(KK2, p+Position(P, P[i]+P[j]) );
7394else
7395Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7396Add(KK2, p+Position(P, P[i]+P[j]) );
7397fi;
7398	fi;
7399fi;
7400fi; fi;
7401
7402###############
7403
7404if (P[i]-P[j] in P ) then
7405if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7406if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
7407
7408if (t[Position(P,P[i]-P[j] )] = 1) then
7409Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7410Add(KK2, p+Position(P, K[i]-K[j]) );
7411else
7412Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7413Add(KK2, p+Position(P, K[i]-K[j]) );
7414fi;
7415else
7416	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
7417if (t[Position(P,P[i]-P[j] )] = 1) then
7418else
7419Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7420Add(KK2, p+Position(P, K[i]-K[j]) );
7421fi;
7422	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7423if (t[Position(P,P[i]-P[j] )] = 1) then
7424Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7425Add(KK2, p+Position(P, P[i]-P[j]) );
7426else
7427Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7428Add(KK2, p+Position(P, P[i]-P[j]) );
7429fi;
7430	fi;
7431fi;
7432fi; fi;
7433
7434####################
7435else #t[i]=t[j]=-1
7436
7437if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7438if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7439if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7440
7441if (t[Position(P,P[j]+P[i] )] = 1) then
7442Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7443Add(KK2, p+Position(P, P[j]+P[i]) );
7444else
7445Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7446Add(KK2, p+Position(P, P[j]+P[i]) );
7447fi;
7448else
7449	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7450if (t[Position(P,P[j]+P[i] )] = 1) then
7451Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7452Add(KK2, p+Position(P, P[j]+P[i]) );
7453fi;
7454	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7455if (t[Position(P,P[j]+P[i] )] = 1) then
7456Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7457Add(KK2, p+Position(P, K[i]+K[j]) );
7458else
7459Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
7460Add(KK2, p+Position(P, K[i]+K[j]) );
7461fi;
7462	fi;
7463fi;
7464fi; fi;
7465
7466###############
7467
7468if (P[i]-P[j] in P ) then
7469if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7470if (p+Position(P,K[i]-K[j]) > p+Position(P,P[i]-P[j])) then
7471
7472if (t[Position(P,P[i]-P[j] )] = 1) then
7473Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7474Add(KK2, p+Position(P, P[i]-P[j]) );
7475else
7476Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7477Add(KK2, p+Position(P, P[i]-P[j]) );
7478fi;
7479else
7480	if (p+Position(P,K[i]-K[j]) = p+Position(P,P[i]-P[j])) then
7481if (t[Position(P,P[i]-P[j] )] = 1) then
7482Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7483Add(KK2, p+Position(P, P[i]-P[j]) );
7484fi;
7485	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7486if (t[Position(P,P[i]-P[j] )] = 1) then
7487Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7488Add(KK2, p+Position(P, K[i]-K[j]) );
7489else
7490Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
7491Add(KK2, p+Position(P, K[i]-K[j]) );
7492fi;
7493	fi;
7494fi;
7495fi; fi;
7496
7497fi; fi;
7498
7499SetEntrySCTable( TT, Position(P,K[i]), p+j, KK2);
7500
7501fi; fi; fi;
7502od; od;
7503
7504#########################################################################
7505#####################################################################################
7506
7507#############################################################################################################################################
7508###################################################################################################################
7509
7510#Prodotti [X,Y] con indici differenti X<Y ovvero alpha < beta !!!!!!!
7511
7512
7513for i in [1..p-1] do #variazione alpha per gli X
7514	for j in [i+1..p] do #variazione beta >alpha per gli Y
7515		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
7516			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then # beta< phi_beta (ragiono con gli Y)
7517
7518KK1:=[]; # i p+j
7519KK2:=[]; # i p+jbar
7520KK3:=[]; # ibar p+j
7521KK4:=[]; # ibar p+jbar
7522
7523if (t[i]=1) then
7524if (t[j]=1) then
7525
7526if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7527if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7528if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7529
7530if (t[Position(P,P[j]+P[i] )] = 1) then
7531Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7532Add(KK1, p+Position(P, P[i]+P[j]) );
7533Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7534Add(KK2, p+Position(P, K[i]+K[j]) );
7535Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7536Add(KK3, p+Position(P, K[i]+K[j]) );
7537Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7538Add(KK4, p+Position(P, P[i]+P[j]) );
7539else
7540Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7541Add(KK1, p+Position(P, P[i]+P[j]) );
7542Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7543Add(KK2, p+Position(P, K[i]+K[j]) );
7544Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7545Add(KK3, p+Position(P, K[i]+K[j]) );
7546Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7547Add(KK4, p+Position(P, P[i]+P[j]) );
7548fi;
7549else
7550	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7551
7552if (t[Position(P,P[j]+P[i] )] = 1) then
7553Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7554Add(KK1, p+Position(P, P[i]+P[j]) );
7555Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7556Add(KK4, p+Position(P, P[i]+P[j]) );
7557else
7558Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7559Add(KK2, p+Position(P, K[i]+K[j]) );
7560Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7561Add(KK3, p+Position(P, K[i]+K[j]) );
7562fi;
7563	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7564
7565if (t[Position(P,P[j]+P[i] )] = 1) then
7566Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7567Add(KK1, p+Position(P, K[j]+K[i]) );
7568Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7569Add(KK2, p+Position(P, P[i]+P[j]) );
7570Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7571Add(KK3, p+Position(P, P[i]+P[j]) );
7572Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7573Add(KK4, p+Position(P,K[j]+K[i]) );
7574else
7575Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7576Add(KK1, p+Position(P, K[j]+K[i]) );
7577Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7578Add(KK2, p+Position(P, P[i]+P[j]) );
7579Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7580Add(KK3, p+Position(P, P[i]+P[j]) );
7581Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7582Add(KK4, p+Position(P, K[j]+K[i]) );
7583fi;
7584	fi;
7585fi;
7586fi; fi;
7587
7588###############
7589
7590if (P[j]-P[i] in P ) then
7591if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7592if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
7593
7594if (t[Position(P,P[j]-P[i] )] = 1) then
7595Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7596Add(KK1, p+Position(P, P[j]-P[i]) );
7597Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7598Add(KK2, p+Position(P, K[j]-K[i]) );
7599Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7600Add(KK3, p+Position(P, K[j]-K[i]) );
7601Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7602Add(KK4, p+Position(P, P[j]-P[i]) );
7603else
7604Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7605Add(KK1, p+Position(P, P[j]-P[i]) );
7606Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7607Add(KK2, p+Position(P, K[j]-K[i]) );
7608Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7609Add(KK3, p+Position(P, K[j]-K[i]) );
7610Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7611Add(KK4, p+Position(P, P[j]-P[i]) );
7612fi;
7613
7614else
7615	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
7616
7617if (t[Position(P,P[j]-P[i] )] = 1) then
7618Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7619Add(KK1, p+Position(P, P[j]-P[i]) );
7620Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7621Add(KK4, p+Position(P, P[j]-P[i]) );
7622else
7623Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7624Add(KK2, p+Position(P, K[j]-K[i]) );
7625Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7626Add(KK3, p+Position(P, K[j]-K[i]) );
7627fi;
7628	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7629
7630if (t[Position(P,P[j]-P[i] )] = 1) then
7631Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7632Add(KK1, p+Position(P, K[j]-K[i]) );
7633Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7634Add(KK2, p+Position(P, P[j]-P[i]) );
7635Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7636Add(KK3, p+Position(P, P[j]-P[i]) );
7637Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7638Add(KK4, p+Position(P, K[j]-K[i]) );
7639else
7640Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7641Add(KK1, p+Position(P, K[j]-K[i]) );
7642Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7643Add(KK2, p+Position(P, P[j]-P[i]) );
7644Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7645Add(KK3, p+Position(P, P[j]-P[i]) );
7646Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7647Add(KK4, p+Position(P, K[j]-K[i]) );
7648fi;
7649	fi;
7650fi;
7651fi; fi;
7652
7653#############
7654
7655if (P[i]+K[j] in P ) then
7656if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
7657if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
7658
7659if (t[Position(P,P[i]+K[j] )] = 1) then
7660Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7661Add(KK1, p+Position(P, P[i]+K[j]) );
7662Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7663Add(KK2, p+Position(P, K[i]+P[j]) );
7664Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7665Add(KK3, p+Position(P, K[i]+P[j]) );
7666Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7667Add(KK4, p+Position(P, P[i]+K[j]) );
7668else
7669Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7670Add(KK1, p+Position(P, P[i]+K[j]) );
7671Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7672Add(KK2, p+Position(P, K[i]+P[j]) );
7673Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7674Add(KK3, p+Position(P, K[i]+P[j]) );
7675Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7676Add(KK4, p+Position(P, P[i]+K[j]) );
7677fi;
7678
7679else
7680	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
7681
7682if (t[Position(P,K[j]+P[i] )] = 1) then
7683Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7684Add(KK1, p+Position(P, P[i]+K[j]) );
7685Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7686Add(KK4, p+Position(P, P[i]+K[j]) );
7687else
7688Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7689Add(KK2, p+Position(P, K[i]+P[j]) );
7690Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7691Add(KK3, p+Position(P, K[i]+P[j]) );
7692fi;
7693	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7694
7695if (t[Position(P,P[i]+K[j] )] = 1) then
7696Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7697Add(KK1, p+Position(P, K[i]+P[j]) );
7698Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7699Add(KK2, p+Position(P, P[i]+K[j]) );
7700Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7701Add(KK3, p+Position(P, P[i]+K[j]) );
7702Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7703Add(KK4, p+Position(P, K[i]+P[j]) );
7704else
7705Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7706Add(KK1, p+Position(P, K[i]+P[j]) );
7707Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7708Add(KK2, p+Position(P, P[i]+K[j]) );
7709Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7710Add(KK3, p+Position(P, P[i]+K[j]) );
7711Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7712Add(KK4, p+Position(P, K[i]+P[j]) );
7713fi;
7714	fi;
7715fi;
7716fi; fi;
7717
7718##########
7719
7720if (K[j]-P[i] in P ) then
7721if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
7722if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
7723
7724if (t[Position(P,K[j]-P[i] )] = 1) then
7725Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7726Add(KK1, p+Position(P, K[j]-P[i]) );
7727Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7728Add(KK2, p+Position(P, P[j]-K[i]) );
7729Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7730Add(KK3, p+Position(P, P[j]-K[i]) );
7731Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7732Add(KK4, p+Position(P, K[j]-P[i]) );
7733else
7734Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7735Add(KK1, p+Position(P, K[j]-P[i]) );
7736Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7737Add(KK2, p+Position(P, P[j]-K[i]) );
7738Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7739Add(KK3, p+Position(P, P[j]-K[i]) );
7740Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7741Add(KK4, p+Position(P, K[j]-P[i]) );
7742fi;
7743else
7744	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
7745
7746if (t[Position(P,P[j]-K[i] )] = 1) then
7747Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7748Add(KK1, p+Position(P, K[j]-P[i]) );
7749Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7750Add(KK4, p+Position(P, K[j]-P[i]) );
7751else
7752Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7753Add(KK2, p+Position(P, P[j]-K[i]) );
7754Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7755Add(KK3, p+Position(P, P[j]-K[i]) );
7756fi;
7757	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7758
7759if (t[Position(P,K[j]-P[i] )] = 1) then
7760Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7761Add(KK1, p+Position(P, P[j]-K[i]) );
7762Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7763Add(KK2, p+Position(P, K[j]-P[i]) );
7764Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7765Add(KK3, p+Position(P, K[j]-P[i]) );
7766Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7767Add(KK4, p+Position(P, P[j]-K[i]) );
7768else
7769Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7770Add(KK1, p+Position(P, P[j]-K[i]) );
7771Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7772Add(KK2, p+Position(P, K[j]-P[i]) );
7773Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7774Add(KK3, p+Position(P, K[j]-P[i]) );
7775Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7776Add(KK4, p+Position(P, P[j]-K[i]) );
7777fi;
7778	fi;
7779fi;
7780fi; fi;
7781
7782##################
7783else # ovvero t[j]=-1
7784#########################
7785
7786if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
7787if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
7788if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
7789
7790if (t[Position(P,P[j]+P[i] )] = 1) then
7791Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7792Add(KK1, p+Position(P, P[i]+P[j]) );
7793Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7794Add(KK2, p+Position(P, K[i]+K[j]) );
7795Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7796Add(KK3, p+Position(P, K[i]+K[j]) );
7797Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7798Add(KK4, p+Position(P, P[i]+P[j]) );
7799else
7800Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7801Add(KK1, p+Position(P, P[i]+P[j]) );
7802Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7803Add(KK2, p+Position(P, K[i]+K[j]) );
7804Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7805Add(KK3, p+Position(P, K[i]+K[j]) );
7806Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7807Add(KK4, p+Position(P, P[i]+P[j]) );
7808fi;
7809else
7810	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
7811
7812if (t[Position(P,P[j]+P[i] )] = 1) then
7813Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7814Add(KK1, p+Position(P, P[i]+P[j]) );
7815Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7816Add(KK4, p+Position(P, P[i]+P[j]) );
7817else
7818Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7819Add(KK2, p+Position(P, K[i]+K[j]) );
7820Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7821Add(KK3, p+Position(P, K[i]+K[j]) );
7822fi;
7823	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7824
7825if (t[Position(P,P[j]+P[i] )] = 1) then
7826Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7827Add(KK1, p+Position(P, K[j]+K[i]) );
7828Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7829Add(KK2, p+Position(P, P[i]+P[j]) );
7830Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7831Add(KK3, p+Position(P, P[i]+P[j]) );
7832Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7833Add(KK4, p+Position(P,K[j]+K[i]) );
7834else
7835Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7836Add(KK1, p+Position(P, K[j]+K[i]) );
7837Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7838Add(KK2, p+Position(P, P[i]+P[j]) );
7839Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7840Add(KK3, p+Position(P, P[i]+P[j]) );
7841Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
7842Add(KK4, p+Position(P, K[j]+K[i]) );
7843fi;
7844	fi;
7845fi;
7846fi; fi;
7847
7848###############
7849
7850if (P[j]-P[i] in P ) then
7851if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
7852if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
7853
7854if (t[Position(P,P[j]-P[i] )] = 1) then
7855Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7856Add(KK1, p+Position(P, P[j]-P[i]) );
7857Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7858Add(KK2, p+Position(P, K[j]-K[i]) );
7859Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7860Add(KK3, p+Position(P, K[j]-K[i]) );
7861Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7862Add(KK4, p+Position(P, P[j]-P[i]) );
7863else
7864Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7865Add(KK1, p+Position(P, P[j]-P[i]) );
7866Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7867Add(KK2, p+Position(P, K[j]-K[i]) );
7868Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7869Add(KK3, p+Position(P, K[j]-K[i]) );
7870Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7871Add(KK4, p+Position(P, P[j]-P[i]) );
7872fi;
7873else
7874	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
7875
7876if (t[Position(P,P[j]-P[i] )] = 1) then
7877Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7878Add(KK1, p+Position(P, P[j]-P[i]) );
7879Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7880Add(KK4, p+Position(P, P[j]-P[i]) );
7881else
7882Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7883Add(KK2, p+Position(P, K[j]-K[i]) );
7884Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7885Add(KK3, p+Position(P, K[j]-K[i]) );
7886fi;
7887	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7888
7889if (t[Position(P,P[j]-P[i] )] = 1) then
7890Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7891Add(KK1, p+Position(P, K[j]-K[i]) );
7892Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7893Add(KK2, p+Position(P, P[j]-P[i]) );
7894Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7895Add(KK3, p+Position(P, P[j]-P[i]) );
7896Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7897Add(KK4, p+Position(P, K[j]-K[i]) );
7898else
7899Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7900Add(KK1, p+Position(P, K[j]-K[i]) );
7901Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7902Add(KK2, p+Position(P, P[j]-P[i]) );
7903Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7904Add(KK3, p+Position(P, P[j]-P[i]) );
7905Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
7906Add(KK4, p+Position(P, K[j]-K[i]) );
7907fi;
7908	fi;
7909fi;
7910fi; fi;
7911
7912#############
7913
7914if (P[i]+K[j] in P ) then
7915if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
7916if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
7917
7918if (t[Position(P,P[i]+K[j] )] = 1) then
7919Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7920Add(KK1, p+Position(P, P[i]+K[j]) );
7921Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7922Add(KK2, p+Position(P, K[i]+P[j]) );
7923Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7924Add(KK3, p+Position(P, K[i]+P[j]) );
7925Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7926Add(KK4, p+Position(P, P[i]+K[j]) );
7927else
7928Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7929Add(KK1, p+Position(P, P[i]+K[j]) );
7930Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7931Add(KK2, p+Position(P, K[i]+P[j]) );
7932Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7933Add(KK3, p+Position(P, K[i]+P[j]) );
7934Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7935Add(KK4, p+Position(P, P[i]+K[j]) );
7936fi;
7937else
7938	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
7939
7940if (t[Position(P,K[j]+P[i] )] = 1) then
7941Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7942Add(KK1, p+Position(P, P[i]+K[j]) );
7943Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7944Add(KK4, p+Position(P, P[i]+K[j]) );
7945else
7946Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7947Add(KK2, p+Position(P, K[i]+P[j]) );
7948Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7949Add(KK3, p+Position(P, K[i]+P[j]) );
7950fi;
7951	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
7952
7953if (t[Position(P,P[i]+K[j] )] = 1) then
7954Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7955Add(KK1, p+Position(P, K[i]+P[j]) );
7956Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7957Add(KK2, p+Position(P, P[i]+K[j]) );
7958Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7959Add(KK3, p+Position(P, P[i]+K[j]) );
7960Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7961Add(KK4, p+Position(P, K[i]+P[j]) );
7962else
7963Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7964Add(KK1, p+Position(P, K[i]+P[j]) );
7965Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7966Add(KK2, p+Position(P, P[i]+K[j]) );
7967Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7968Add(KK3, p+Position(P, P[i]+K[j]) );
7969Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
7970Add(KK4, p+Position(P, K[i]+P[j]) );
7971fi;
7972	fi;
7973fi;
7974fi; fi;
7975
7976#############
7977
7978if (K[j]-P[i] in P ) then
7979if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
7980if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
7981
7982if (t[Position(P,K[j]-P[i] )] = 1) then
7983Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7984Add(KK1, p+Position(P, K[j]-P[i]) );
7985Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7986Add(KK2, p+Position(P, P[j]-K[i]) );
7987Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7988Add(KK3, p+Position(P, P[j]-K[i]) );
7989Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7990Add(KK4, p+Position(P, K[j]-P[i]) );
7991else
7992Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7993Add(KK1, p+Position(P, K[j]-P[i]) );
7994Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7995Add(KK2, p+Position(P, P[j]-K[i]) );
7996Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7997Add(KK3, p+Position(P, P[j]-K[i]) );
7998Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
7999Add(KK4, p+Position(P, K[j]-P[i]) );
8000fi;
8001else
8002	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
8003
8004if (t[Position(P,K[j]-P[i] )] = 1) then
8005Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8006Add(KK1, p+Position(P, K[j]-P[i]) );
8007Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8008Add(KK4, p+Position(P, K[j]-P[i]) );
8009else
8010Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8011Add(KK2, p+Position(P, P[j]-K[i]) );
8012Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8013Add(KK3, p+Position(P, P[j]-K[i]) );
8014fi;
8015	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8016
8017if (t[Position(P,K[j]-P[i] )] = 1) then
8018Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8019Add(KK1, p+Position(P, P[j]-K[i]) );
8020Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8021Add(KK2, p+Position(P, K[j]-P[i]) );
8022Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8023Add(KK3, p+Position(P, K[j]-P[i]) );
8024Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8025Add(KK4, p+Position(P, P[j]-K[i]) );
8026else
8027Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8028Add(KK1, p+Position(P, P[j]-K[i]) );
8029Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8030Add(KK2, p+Position(P, K[j]-P[i]) );
8031Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8032Add(KK3, p+Position(P, K[j]-P[i]) );
8033Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8034Add(KK4, p+Position(P, P[j]-K[i]) );
8035fi;
8036	fi;
8037fi;
8038fi; fi;
8039
8040fi;
8041
8042########################à
8043else #t[i]=-1
8044if (t[j]=1) then
8045###############
8046
8047if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8048if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8049if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8050if (t[Position(P,P[j]+P[i] )] = 1) then
8051Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8052Add(KK1, p+Position(P, P[i]+P[j]) );
8053Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8054Add(KK2, p+Position(P, K[i]+K[j]) );
8055Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8056Add(KK3, p+Position(P, K[i]+K[j]) );
8057Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8058Add(KK4, p+Position(P, P[i]+P[j]) );
8059else
8060Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8061Add(KK1, p+Position(P, P[i]+P[j]) );
8062Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8063Add(KK2, p+Position(P, K[i]+K[j]) );
8064Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8065Add(KK3, p+Position(P, K[i]+K[j]) );
8066Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8067Add(KK4, p+Position(P, P[i]+P[j]) );
8068fi;
8069else
8070	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8071if (t[Position(P,P[j]+P[i] )] = 1) then
8072Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8073Add(KK1, p+Position(P, P[i]+P[j]) );
8074Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8075Add(KK4, p+Position(P, P[i]+P[j]) );
8076else
8077Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8078Add(KK2, p+Position(P, K[i]+K[j]) );
8079Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8080Add(KK3, p+Position(P, K[i]+K[j]) );
8081fi;
8082	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8083if (t[Position(P,P[j]+P[i] )] = 1) then
8084Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8085Add(KK1, p+Position(P, K[j]+K[i]) );
8086Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8087Add(KK2, p+Position(P, P[i]+P[j]) );
8088Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8089Add(KK3, p+Position(P, P[i]+P[j]) );
8090Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8091Add(KK4, p+Position(P,K[j]+K[i]) );
8092else
8093Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8094Add(KK1, p+Position(P, K[j]+K[i]) );
8095Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8096Add(KK2, p+Position(P, P[i]+P[j]) );
8097Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8098Add(KK3, p+Position(P, P[i]+P[j]) );
8099Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8100Add(KK4, p+Position(P, K[j]+K[i]) );
8101fi;
8102	fi;
8103fi;
8104fi; fi;
8105
8106###############
8107
8108if (P[j]-P[i] in P ) then
8109if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8110if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8111
8112if (t[Position(P,P[j]-P[i] )] = 1) then
8113Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8114Add(KK1, p+Position(P, P[j]-P[i]) );
8115Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8116Add(KK2, p+Position(P, K[j]-K[i]) );
8117Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8118Add(KK3, p+Position(P, K[j]-K[i]) );
8119Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8120Add(KK4, p+Position(P, P[j]-P[i]) );
8121else
8122Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8123Add(KK1, p+Position(P, P[j]-P[i]) );
8124Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8125Add(KK2, p+Position(P, K[j]-K[i]) );
8126Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8127Add(KK3, p+Position(P, K[j]-K[i]) );
8128Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8129Add(KK4, p+Position(P, P[j]-P[i]) );
8130fi;
8131else
8132	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8133if (t[Position(P,P[j]-P[i] )] = 1) then
8134Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8135Add(KK1, p+Position(P, P[j]-P[i]) );
8136Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8137Add(KK4, p+Position(P, P[j]-P[i]) );
8138else
8139Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8140Add(KK2, p+Position(P, K[j]-K[i]) );
8141Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8142Add(KK3, p+Position(P, K[j]-K[i]) );
8143fi;
8144	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8145if (t[Position(P,P[j]-P[i] )] = 1) then
8146Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8147Add(KK1, p+Position(P, K[j]-K[i]) );
8148Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8149Add(KK2, p+Position(P, P[j]-P[i]) );
8150Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8151Add(KK3, p+Position(P, P[j]-P[i]) );
8152Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8153Add(KK4, p+Position(P, K[j]-K[i]) );
8154else
8155Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8156Add(KK1, p+Position(P, K[j]-K[i]) );
8157Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8158Add(KK2, p+Position(P, P[j]-P[i]) );
8159Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8160Add(KK3, p+Position(P, P[j]-P[i]) );
8161Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8162Add(KK4, p+Position(P, K[j]-K[i]) );
8163fi;
8164	fi;
8165fi;
8166fi; fi;
8167
8168#############
8169
8170if (P[i]+K[j] in P ) then
8171if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
8172if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
8173if (t[Position(P,P[i]+K[j] )] = 1) then
8174Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8175Add(KK1, p+Position(P, P[i]+K[j]) );
8176Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8177Add(KK2, p+Position(P, K[i]+P[j]) );
8178Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8179Add(KK3, p+Position(P, K[i]+P[j]) );
8180Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8181Add(KK4, p+Position(P, P[i]+K[j]) );
8182else
8183Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8184Add(KK1, p+Position(P, P[i]+K[j]) );
8185Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8186Add(KK2, p+Position(P, K[i]+P[j]) );
8187Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8188Add(KK3, p+Position(P, K[i]+P[j]) );
8189Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8190Add(KK4, p+Position(P, P[i]+K[j]) );
8191fi;
8192else
8193	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
8194if (t[Position(P,K[j]+P[i] )] = 1) then
8195Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8196Add(KK1, p+Position(P, P[i]+K[j]) );
8197Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8198Add(KK4, p+Position(P, P[i]+K[j]) );
8199else
8200Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8201Add(KK2, p+Position(P, K[i]+P[j]) );
8202Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8203Add(KK3, p+Position(P, K[i]+P[j]) );
8204fi;
8205	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8206if (t[Position(P,P[i]+K[j] )] = 1) then
8207Add(KK1, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8208Add(KK1, p+Position(P, K[i]+P[j]) );
8209Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8210Add(KK2, p+Position(P, P[i]+K[j]) );
8211Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8212Add(KK3, p+Position(P, P[i]+K[j]) );
8213Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8214Add(KK4, p+Position(P, K[i]+P[j]) );
8215else
8216Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8217Add(KK1, p+Position(P, K[i]+P[j]) );
8218Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8219Add(KK2, p+Position(P, P[i]+K[j]) );
8220Add(KK3, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8221Add(KK3, p+Position(P, P[i]+K[j]) );
8222Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8223Add(KK4, p+Position(P, K[i]+P[j]) );
8224fi;
8225	fi;
8226fi;
8227fi; fi;
8228
8229#############
8230
8231if (K[j]-P[i] in P ) then
8232if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
8233if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
8234
8235if (t[Position(P,K[j]-P[i] )] = 1) then
8236Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8237Add(KK1, p+Position(P, K[j]-P[i]) );
8238Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8239Add(KK2, p+Position(P, P[j]-K[i]) );
8240Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8241Add(KK3, p+Position(P, P[j]-K[i]) );
8242Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8243Add(KK4, p+Position(P, K[j]-P[i]) );
8244else
8245Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8246Add(KK1, p+Position(P, K[j]-P[i]) );
8247Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8248Add(KK2, p+Position(P, P[j]-K[i]) );
8249Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8250Add(KK3, p+Position(P, P[j]-K[i]) );
8251Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8252Add(KK4, p+Position(P, K[j]-P[i]) );
8253fi;
8254else
8255	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
8256if (t[Position(P,K[j]-P[i] )] = 1) then
8257Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8258Add(KK1, p+Position(P, K[j]-P[i]) );
8259Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8260Add(KK4, p+Position(P, K[j]-P[i]) );
8261else
8262Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8263Add(KK2, p+Position(P, P[j]-K[i]) );
8264Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8265Add(KK3, p+Position(P, P[j]-K[i]) );
8266fi;
8267	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8268if (t[Position(P,K[j]-P[i] )] = 1) then
8269Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8270Add(KK1, p+Position(P, P[j]-K[i]) );
8271Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8272Add(KK2, p+Position(P, K[j]-P[i]) );
8273Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8274Add(KK3, p+Position(P, K[j]-P[i]) );
8275Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8276Add(KK4, p+Position(P, P[j]-K[i]) );
8277else
8278Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8279Add(KK1, p+Position(P, P[j]-K[i]) );
8280Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8281Add(KK2, p+Position(P, K[j]-P[i]) );
8282Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8283Add(KK3, p+Position(P, K[j]-P[i]) );
8284Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8285Add(KK4, p+Position(P, P[j]-K[i]) );
8286fi;
8287	fi;
8288fi;
8289fi; fi;
8290
8291else #t[j]=-1
8292
8293###############
8294
8295if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8296if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8297if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8298
8299if (t[Position(P,P[j]+P[i] )] = 1) then
8300Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8301Add(KK1, p+Position(P, P[i]+P[j]) );
8302Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8303Add(KK2, p+Position(P, K[i]+K[j]) );
8304Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8305Add(KK3, p+Position(P, K[i]+K[j]) );
8306Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8307Add(KK4, p+Position(P, P[i]+P[j]) );
8308else
8309Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8310Add(KK1, p+Position(P, P[i]+P[j]) );
8311Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8312Add(KK2, p+Position(P, K[i]+K[j]) );
8313Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8314Add(KK3, p+Position(P, K[i]+K[j]) );
8315Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8316Add(KK4, p+Position(P, P[i]+P[j]) );
8317fi;
8318else
8319	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8320if (t[Position(P,P[j]+P[i] )] = 1) then
8321Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8322Add(KK1, p+Position(P, P[i]+P[j]) );
8323Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8324Add(KK4, p+Position(P, P[i]+P[j]) );
8325else
8326Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8327Add(KK2, p+Position(P, K[i]+K[j]) );
8328Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8329Add(KK3, p+Position(P, K[i]+K[j]) );
8330fi;
8331	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8332if (t[Position(P,P[j]+P[i] )] = 1) then
8333Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8334Add(KK1, p+Position(P, K[j]+K[i]) );
8335Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8336Add(KK2, p+Position(P, P[i]+P[j]) );
8337Add(KK3, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8338Add(KK3, p+Position(P, P[i]+P[j]) );
8339Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8340Add(KK4, p+Position(P,K[j]+K[i]) );
8341else
8342Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8343Add(KK1, p+Position(P, K[j]+K[i]) );
8344Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8345Add(KK2, p+Position(P, P[i]+P[j]) );
8346Add(KK3, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8347Add(KK3, p+Position(P, P[i]+P[j]) );
8348Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
8349Add(KK4, p+Position(P, K[j]+K[i]) );
8350fi;
8351	fi;
8352fi;
8353fi; fi;
8354
8355#######
8356
8357if (P[j]-P[i] in P ) then
8358if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8359if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8360
8361if (t[Position(P,P[j]-P[i] )] = 1) then
8362Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8363Add(KK1, p+Position(P, P[j]-P[i]) );
8364Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8365Add(KK2, p+Position(P, K[j]-K[i]) );
8366Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8367Add(KK3, p+Position(P, K[j]-K[i]) );
8368Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8369Add(KK4, p+Position(P, P[j]-P[i]) );
8370else
8371Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8372Add(KK1, p+Position(P, P[j]-P[i]) );
8373Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8374Add(KK2, p+Position(P, K[j]-K[i]) );
8375Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8376Add(KK3, p+Position(P, K[j]-K[i]) );
8377Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8378Add(KK4, p+Position(P, P[j]-P[i]) );
8379fi;
8380else
8381	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8382if (t[Position(P,P[j]-P[i] )] = 1) then
8383Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8384Add(KK1, p+Position(P, P[j]-P[i]) );
8385Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8386Add(KK4, p+Position(P, P[j]-P[i]) );
8387else
8388Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8389Add(KK2, p+Position(P, K[j]-K[i]) );
8390Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8391Add(KK3, p+Position(P, K[j]-K[i]) );
8392fi;
8393	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8394if (t[Position(P,P[j]-P[i] )] = 1) then
8395Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8396Add(KK1, p+Position(P, K[j]-K[i]) );
8397Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8398Add(KK2, p+Position(P, P[j]-P[i]) );
8399Add(KK3, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8400Add(KK3, p+Position(P, P[j]-P[i]) );
8401Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8402Add(KK4, p+Position(P, K[j]-K[i]) );
8403else
8404Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8405Add(KK1, p+Position(P, K[j]-K[i]) );
8406Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8407Add(KK2, p+Position(P, P[j]-P[i]) );
8408Add(KK3, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8409Add(KK3, p+Position(P, P[j]-P[i]) );
8410Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
8411Add(KK4, p+Position(P, K[j]-K[i]) );
8412fi;
8413	fi;
8414fi;
8415fi; fi;
8416
8417######
8418
8419if (P[i]+K[j] in P ) then
8420if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
8421if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
8422
8423if (t[Position(P,P[i]+K[j] )] = 1) then
8424Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8425Add(KK1, p+Position(P, P[i]+K[j]) );
8426Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8427Add(KK2, p+Position(P, K[i]+P[j]) );
8428Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8429Add(KK3, p+Position(P, K[i]+P[j]) );
8430Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8431Add(KK4, p+Position(P, P[i]+K[j]) );
8432else
8433Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8434Add(KK1, p+Position(P, P[i]+K[j]) );
8435Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8436Add(KK2, p+Position(P, K[i]+P[j]) );
8437Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8438Add(KK3, p+Position(P, K[i]+P[j]) );
8439Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8440Add(KK4, p+Position(P, P[i]+K[j]) );
8441fi;
8442else
8443	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
8444if (t[Position(P,K[j]+P[i] )] = 1) then
8445Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8446Add(KK1, p+Position(P, P[i]+K[j]) );
8447Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8448Add(KK4, p+Position(P, P[i]+K[j]) );
8449else
8450Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8451Add(KK2, p+Position(P, K[i]+P[j]) );
8452Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8453Add(KK3, p+Position(P, K[i]+P[j]) );
8454fi;
8455	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8456if (t[Position(P,P[i]+K[j] )] = 1) then
8457Add(KK1, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8458Add(KK1, p+Position(P, K[i]+P[j]) );
8459Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8460Add(KK2, p+Position(P, P[i]+K[j]) );
8461Add(KK3, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8462Add(KK3, p+Position(P, P[i]+K[j]) );
8463Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8464Add(KK4, p+Position(P, K[i]+P[j]) );
8465else
8466Add(KK1, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8467Add(KK1, p+Position(P, K[i]+P[j]) );
8468Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8469Add(KK2, p+Position(P, P[i]+K[j]) );
8470Add(KK3, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8471Add(KK3, p+Position(P, P[i]+K[j]) );
8472Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
8473Add(KK4, p+Position(P, K[i]+P[j]) );
8474fi;
8475	fi;
8476fi;
8477fi; fi;
8478
8479#############
8480
8481if (K[j]-P[i] in P ) then
8482if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
8483if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
8484
8485if (t[Position(P,K[j]-P[i] )] = 1) then
8486Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8487Add(KK1, p+Position(P, K[j]-P[i]) );
8488Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8489Add(KK2, p+Position(P, P[j]-K[i]) );
8490Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8491Add(KK3, p+Position(P, P[j]-K[i]) );
8492Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8493Add(KK4, p+Position(P, K[j]-P[i]) );
8494else
8495Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8496Add(KK1, p+Position(P, K[j]-P[i]) );
8497Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8498Add(KK2, p+Position(P, P[j]-K[i]) );
8499Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8500Add(KK3, p+Position(P, P[j]-K[i]) );
8501Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8502Add(KK4, p+Position(P, K[j]-P[i]) );
8503fi;
8504else
8505	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
8506if (t[Position(P,K[j]-P[i] )] = 1) then
8507Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8508Add(KK1, p+Position(P, K[j]-P[i]) );
8509Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8510Add(KK4, p+Position(P, K[j]-P[i]) );
8511else
8512Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8513Add(KK2, p+Position(P, P[j]-K[i]) );
8514Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8515Add(KK3, p+Position(P, P[j]-K[i]) );
8516fi;
8517	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8518if (t[Position(P,K[j]-P[i] )] = 1) then
8519Add(KK1, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8520Add(KK1, p+Position(P, P[j]-K[i]) );
8521Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8522Add(KK2, p+Position(P, K[j]-P[i]) );
8523Add(KK3, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8524Add(KK3, p+Position(P, K[j]-P[i]) );
8525Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8526Add(KK4, p+Position(P, P[j]-K[i]) );
8527else
8528Add(KK1, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8529Add(KK1, p+Position(P, P[j]-K[i]) );
8530Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8531Add(KK2, p+Position(P, K[j]-P[i]) );
8532Add(KK3, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8533Add(KK3, p+Position(P, K[j]-P[i]) );
8534Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
8535Add(KK4, p+Position(P, P[j]-K[i]) );
8536fi;
8537	fi;
8538fi;
8539fi; fi;
8540
8541fi; fi;
8542
8543if ( Position(P,K[i]) < Position(P,P[j]) ) then
8544SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
8545SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
8546SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
8547SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
8548fi;
8549
8550if ( Position(P,K[i]) > Position(P,K[j]) ) then
8551SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
8552SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
8553fi;
8554
8555if ( Position(P,P[j]) < Position(P,K[i]) ) then
8556	if ( Position(P,K[i]) < Position(P,K[j]) ) then
8557SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P,P[j]) , KK1);
8558SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
8559#SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P,P[j]), KK3);
8560SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
8561	fi;
8562fi;
8563
8564else
8565	if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
8566
8567KK1:=[];
8568KK2:=[];
8569
8570if (t[i]=1) then
8571if (t[j]=1) then
8572
8573if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8574if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8575if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8576
8577if (t[Position(P,P[j]+P[i] )] = 1) then
8578Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8579Add(KK1, p+Position(P, P[i]+P[j]) );
8580Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8581Add(KK2, p+Position(P, K[i]+K[j]) );
8582else
8583Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8584Add(KK1, p+Position(P, P[i]+P[j]) );
8585Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8586Add(KK2, p+Position(P, K[i]+K[j]) );
8587fi;
8588else
8589	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8590if (t[Position(P,P[j]+P[i] )] = 1) then
8591Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8592Add(KK1, p+Position(P, P[i]+P[j]) );
8593else
8594Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8595Add(KK2, p+Position(P, K[i]+K[j]) );
8596fi;
8597	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8598if (t[Position(P,P[j]+P[i] )] = 1) then
8599Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8600Add(KK1, p+Position(P, K[j]+K[i]) );
8601Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8602Add(KK2, p+Position(P, P[i]+P[j]) );
8603else
8604Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8605Add(KK1, p+Position(P, K[j]+K[i]) );
8606Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8607Add(KK2, p+Position(P, P[i]+P[j]) );
8608fi;
8609	fi;
8610fi;
8611fi; fi;
8612
8613###############
8614
8615if (P[j]-P[i] in P ) then
8616if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8617if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8618
8619if (t[Position(P,P[j]-P[i] )] = 1) then
8620Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8621Add(KK1, p+Position(P, P[j]-P[i]) );
8622Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8623Add(KK2, p+Position(P, K[j]-K[i]) );
8624else
8625Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8626Add(KK1, p+Position(P, P[j]-P[i]) );
8627Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8628Add(KK2, p+Position(P, K[j]-K[i]) );
8629fi;
8630else
8631	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8632
8633if (t[Position(P,P[j]-P[i] )] = 1) then
8634Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8635Add(KK1, p+Position(P, P[j]-P[i]) );
8636else
8637Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8638Add(KK2, p+Position(P, K[j]-K[i]) );
8639fi;
8640	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8641
8642if (t[Position(P,P[j]-P[i] )] = 1) then
8643Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8644Add(KK1, p+Position(P, K[j]-K[i]) );
8645Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8646Add(KK2, p+Position(P, P[j]-P[i]) );
8647else
8648Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8649Add(KK1, p+Position(P, K[j]-K[i]) );
8650Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8651Add(KK2, p+Position(P, P[j]-P[i]) );
8652fi;
8653	fi;
8654fi;
8655fi; fi;
8656
8657####################
8658else #t[j]=-1
8659
8660if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8661if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8662if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8663
8664if (t[Position(P,P[j]+P[i] )] = 1) then
8665Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8666Add(KK1, p+Position(P, K[j]+K[i]) );
8667Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8668Add(KK2, p+Position(P, P[i]+P[j]) );
8669else
8670Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8671Add(KK1, p+Position(P, K[j]+K[i]) );
8672Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8673Add(KK2, p+Position(P, P[i]+P[j]) );
8674fi;
8675else
8676	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8677if (t[Position(P,P[j]+P[i] )] = 1) then
8678Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8679Add(KK2, p+Position(P, P[i]+P[j]) );
8680else
8681Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8682Add(KK1, p+Position(P, K[j]+K[i]) );
8683fi;
8684	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8685if (t[Position(P,P[j]+P[i] )] = 1) then
8686Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8687Add(KK1, p+Position(P, K[j]+K[i]) );
8688Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8689Add(KK2, p+Position(P, P[i]+P[j]) );
8690else
8691Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8692Add(KK1, p+Position(P, P[i]+P[j]) );
8693Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8694Add(KK2, p+Position(P, K[j]+K[i]) );
8695fi;
8696	fi;
8697fi;
8698fi; fi;
8699
8700###############
8701
8702if (P[j]-P[i] in P ) then
8703if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8704if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8705
8706if (t[Position(P,P[j]-P[i] )] = 1) then
8707Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8708Add(KK1, p+Position(P, K[j]-K[i]) );
8709Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8710Add(KK2, p+Position(P, P[j]-P[i]) );
8711else
8712Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8713Add(KK1, p+Position(P, K[j]-K[i]) );
8714Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8715Add(KK2, p+Position(P, P[j]-P[i]) );
8716fi;
8717
8718else
8719	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8720if (t[Position(P,P[j]-P[i] )] = 1) then
8721Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8722Add(KK2, p+Position(P, P[j]-P[i]) );
8723else
8724Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8725Add(KK1, p+Position(P, K[j]-K[i]) );
8726fi;
8727	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8728
8729if (t[Position(P,P[j]-P[i] )] = 1) then
8730Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8731Add(KK1, p+Position(P, P[j]-P[i]) );
8732Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8733Add(KK2, p+Position(P, K[j]-K[i]) );
8734else
8735Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8736Add(KK1, p+Position(P, P[j]-P[i]) );
8737Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8738Add(KK2, p+Position(P, K[j]-K[i]) );
8739fi;
8740	fi;
8741fi;
8742fi; fi;
8743
8744fi;
8745
8746else #t[i]=-1
8747if (t[j]=1) then
8748
8749if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8750if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8751if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8752
8753if (t[Position(P,P[j]+P[i] )] = 1) then
8754Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8755Add(KK1, p+Position(P, P[i]+P[j]) );
8756Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8757Add(KK2, p+Position(P, K[i]+K[j]) );
8758else
8759Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8760Add(KK1, p+Position(P, P[i]+P[j]) );
8761Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8762Add(KK2, p+Position(P, K[i]+K[j]) );
8763fi;
8764else
8765	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8766
8767if (t[Position(P,P[j]+P[i] )] = 1) then
8768Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8769Add(KK1, p+Position(P, P[i]+P[j]) );
8770else
8771Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8772Add(KK2, p+Position(P, K[i]+K[j]) );
8773fi;
8774	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8775if (t[Position(P,P[j]+P[i] )] = 1) then
8776Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8777Add(KK1, p+Position(P, K[j]+K[i]) );
8778Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8779Add(KK2, p+Position(P, P[i]+P[j]) );
8780else
8781Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8782Add(KK1, p+Position(P, K[j]+K[i]) );
8783Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8784Add(KK2, p+Position(P, P[i]+P[j]) );
8785fi;
8786	fi;
8787fi;
8788fi; fi;
8789
8790###############
8791
8792if (P[j]-P[i] in P ) then
8793if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8794if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8795
8796if (t[Position(P,P[j]-P[i] )] = 1) then
8797Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8798Add(KK1, p+Position(P, P[j]-P[i]) );
8799Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8800Add(KK2, p+Position(P, K[j]-K[i]) );
8801else
8802Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8803Add(KK1, p+Position(P, P[j]-P[i]) );
8804Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8805Add(KK2, p+Position(P, K[j]-K[i]) );
8806fi;
8807else
8808	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8809
8810if (t[Position(P,P[j]-P[i] )] = 1) then
8811Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8812Add(KK1, p+Position(P, P[j]-P[i]) );
8813else
8814Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8815Add(KK2, p+Position(P, K[j]-K[i]) );
8816fi;
8817	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8818if (t[Position(P,P[j]-P[i] )] = 1) then
8819Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8820Add(KK1, p+Position(P, K[j]-K[i]) );
8821Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8822Add(KK2, p+Position(P, P[j]-P[i]) );
8823else
8824Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8825Add(KK1, p+Position(P, K[j]-K[i]) );
8826Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8827Add(KK2, p+Position(P, P[j]-P[i]) );
8828fi;
8829	fi;
8830fi;
8831fi; fi;
8832
8833###########
8834else #t[i]=t[j]=-1
8835
8836if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8837if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8838if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8839
8840if (t[Position(P,P[j]+P[i] )] = 1) then
8841Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8842Add(KK1, p+Position(P, K[i]+K[j]) );
8843Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8844Add(KK2, p+Position(P, P[j]+P[i]) );
8845else
8846Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8847Add(KK1, p+Position(P, K[i]+K[j]) );
8848Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8849Add(KK2, p+Position(P, P[j]+P[i]) );
8850fi;
8851else
8852	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8853
8854if (t[Position(P,P[j]+P[i] )] = 1) then
8855Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8856Add(KK2, p+Position(P, P[j]+P[i]) );
8857else
8858Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8859Add(KK1, p+Position(P, K[i]+K[j]) );
8860fi;
8861	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8862
8863if (t[Position(P,P[j]+P[i] )] = 1) then
8864Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8865Add(KK1, p+Position(P, P[j]+P[i]) );
8866Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8867Add(KK2, p+Position(P, K[i]+K[j]) );
8868else
8869Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8870Add(KK1, p+Position(P, P[j]+P[i]) );
8871Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8872Add(KK2, p+Position(P, K[i]+K[j]) );
8873fi;
8874	fi;
8875fi;
8876fi; fi;
8877
8878###############
8879
8880if (P[j]-P[i] in P ) then
8881if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8882if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8883
8884if (t[Position(P,P[j]-P[i] )] = 1) then
8885Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8886Add(KK1, p+Position(P, K[j]-K[i]) );
8887Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8888Add(KK2, p+Position(P, P[j]-P[i]) );
8889else
8890Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8891Add(KK1, p+Position(P, K[j]-K[i]) );
8892Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8893Add(KK2, p+Position(P, P[j]-P[i]) );
8894fi;
8895else
8896	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
8897
8898if (t[Position(P,P[j]-P[i] )] = 1) then
8899Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8900Add(KK2, p+Position(P, P[j]-P[i]) );
8901else
8902Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8903Add(KK1, p+Position(P, K[j]-K[i]) );
8904fi;
8905	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8906if (t[Position(P,P[j]-P[i] )] = 1) then
8907Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8908Add(KK1, p+Position(P, P[j]-P[i]) );
8909Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8910Add(KK2, p+Position(P, K[j]-K[i]) );
8911else
8912Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8913Add(KK1, p+Position(P, P[j]-P[i]) );
8914Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8915Add(KK2, p+Position(P, K[j]-K[i]) );
8916fi;
8917	fi;
8918fi;
8919fi; fi;
8920
8921fi; fi;
8922
8923if ( Position(P, K[i]) < Position(P, P[j]) ) then
8924SetEntrySCTable( TT, i,  p+j , KK1);
8925SetEntrySCTable( TT, Position(P,K[i]), p+j, KK2);
8926fi;
8927
8928if ( Position(P, K[i]) > Position(P, P[j]) ) then
8929SetEntrySCTable( TT, i,  p+j , KK1);
8930#SetEntrySCTable( TT, Position(P,K[i]), p+j, KK2);
8931fi;
8932fi;
8933
8934fi;
8935
8936else
8937	if ( p+Position(P, K[i]) = p+Position(P,P[i]) ) then #alpha< phi_alpha
8938			if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then #beta< phi_beta
8939
8940KK1:=[];
8941KK2:=[];
8942
8943if (t[i]=1) then
8944if (t[j]=1) then
8945
8946if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
8947if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
8948if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
8949
8950if (t[Position(P,P[j]+P[i] )] = 1) then
8951Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8952Add(KK1, p+Position(P, P[i]+P[j]) );
8953Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8954Add(KK2, p+Position(P, K[i]+K[j]) );
8955else
8956Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8957Add(KK1, p+Position(P, P[i]+P[j]) );
8958Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8959Add(KK2, p+Position(P, K[i]+K[j]) );
8960fi;
8961else
8962	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
8963
8964if (t[Position(P,P[j]+P[i] )] = 1) then
8965Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8966Add(KK1, p+Position(P, P[i]+P[j]) );
8967else
8968Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8969Add(KK2, p+Position(P, K[i]+K[j]) );
8970fi;
8971	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
8972
8973if (t[Position(P,P[j]+P[i] )] = 1) then
8974Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8975Add(KK1, p+Position(P, K[j]+K[i]) );
8976Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8977Add(KK2, p+Position(P, P[i]+P[j]) );
8978else
8979Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8980Add(KK1, p+Position(P, K[j]+K[i]) );
8981Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
8982Add(KK2, p+Position(P, P[i]+P[j]) );
8983fi;
8984	fi;
8985fi;
8986fi; fi;
8987
8988###############
8989
8990if (P[j]-P[i] in P ) then
8991if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
8992if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
8993
8994if (t[Position(P,P[j]-P[i] )] = 1) then
8995Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8996Add(KK1, p+Position(P, P[j]-P[i]) );
8997Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
8998Add(KK2, p+Position(P, K[j]-K[i]) );
8999else
9000Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9001Add(KK1, p+Position(P, P[j]-P[i]) );
9002Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9003Add(KK2, p+Position(P, K[j]-K[i]) );
9004fi;
9005else
9006	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9007
9008if (t[Position(P,P[j]-P[i] )] = 1) then
9009Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9010Add(KK1, p+Position(P, P[j]-P[i]) );
9011else
9012Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9013Add(KK2, p+Position(P, K[j]-K[i]) );
9014fi;
9015	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9016
9017if (t[Position(P,P[j]-P[i] )] = 1) then
9018Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9019Add(KK1, p+Position(P, K[j]-K[i]) );
9020Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9021Add(KK2, p+Position(P, P[j]-P[i]) );
9022else
9023Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9024Add(KK1, p+Position(P, K[j]-K[i]) );
9025Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9026Add(KK2, p+Position(P, P[j]-P[i]) );
9027fi;
9028	fi;
9029fi;
9030fi; fi;
9031
9032###########
9033
9034else #t[j]=-1
9035
9036if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9037if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9038if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9039
9040if (t[Position(P,P[j]+P[i] )] = 1) then
9041Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9042Add(KK1, p+Position(P, P[i]+P[j]) );
9043Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9044Add(KK2, p+Position(P, K[i]+K[j]) );
9045else
9046Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9047Add(KK1, p+Position(P, P[i]+P[j]) );
9048Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9049Add(KK2, p+Position(P, K[i]+K[j]) );
9050fi;
9051else
9052	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9053
9054if (t[Position(P,P[j]+P[i] )] = 1) then
9055Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9056Add(KK1, p+Position(P, P[i]+P[j]) );
9057else
9058Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9059Add(KK2, p+Position(P, K[i]+K[j]) );
9060fi;
9061	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9062
9063if (t[Position(P,P[j]+P[i] )] = 1) then
9064Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9065Add(KK1, p+Position(P, K[j]+K[i]) );
9066Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9067Add(KK2, p+Position(P, P[i]+P[j]) );
9068else
9069Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9070Add(KK1, p+Position(P, K[j]+K[i]) );
9071Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9072Add(KK2, p+Position(P, P[i]+P[j]) );
9073fi;
9074	fi;
9075fi;
9076fi; fi;
9077
9078#######
9079
9080if (P[j]-P[i] in P ) then
9081if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9082if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9083if (t[Position(P,P[j]-P[i] )] = 1) then
9084Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9085Add(KK1, p+Position(P, P[j]-P[i]) );
9086Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9087Add(KK2, p+Position(P, K[j]-K[i]) );
9088else
9089Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9090Add(KK1, p+Position(P, P[j]-P[i]) );
9091Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9092Add(KK2, p+Position(P, K[j]-K[i]) );
9093fi;
9094else
9095	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9096
9097if (t[Position(P,P[j]-P[i] )] = 1) then
9098Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9099Add(KK1, p+Position(P, P[j]-P[i]) );
9100else
9101Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9102Add(KK2, p+Position(P, K[j]-K[i]) );
9103fi;
9104	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9105if (t[Position(P,P[j]-P[i] )] = 1) then
9106Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9107Add(KK1, p+Position(P, K[j]-K[i]) );
9108Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9109Add(KK2, p+Position(P, P[j]-P[i]) );
9110else
9111Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9112Add(KK1, p+Position(P, K[j]-K[i]) );
9113Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9114Add(KK2, p+Position(P, P[j]-P[i]) );
9115fi;
9116	fi;
9117fi;
9118fi; fi;
9119
9120####################
9121
9122fi;
9123
9124else #t[i]=-1
9125if (t[j]=1) then
9126
9127if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9128if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9129if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9130
9131if (t[Position(P,P[j]+P[i] )] = 1) then
9132Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9133Add(KK1, p+Position(P, K[j]+K[i]) );
9134Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9135Add(KK2, p+Position(P, P[i]+P[j]) );
9136else
9137Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9138Add(KK1, p+Position(P, K[j]+K[i]) );
9139Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9140Add(KK2, p+Position(P, P[i]+P[j]) );
9141fi;
9142else
9143	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9144if (t[Position(P,P[j]+P[i] )] = 1) then
9145Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9146Add(KK2, p+Position(P, P[i]+P[j]) );
9147else
9148Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9149Add(KK1, p+Position(P, K[j]+K[i]) );
9150fi;
9151	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9152if (t[Position(P,P[j]+P[i] )] = 1) then
9153Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9154Add(KK1, p+Position(P, K[j]+K[i]) );
9155Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9156Add(KK2, p+Position(P, P[i]+P[j]) );
9157else
9158Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9159Add(KK1, p+Position(P, P[i]+P[j]) );
9160Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9161Add(KK2, p+Position(P, K[j]+K[i]) );
9162fi;
9163	fi;
9164fi;
9165fi; fi;
9166
9167############
9168
9169if (P[j]-P[i] in P ) then
9170if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9171if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9172
9173if (t[Position(P,P[j]-P[i] )] = 1) then
9174Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9175Add(KK1, p+Position(P, K[j]-K[i]) );
9176Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9177Add(KK2, p+Position(P, P[j]-P[i]) );
9178else
9179Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9180Add(KK1, p+Position(P, K[j]-K[i]) );
9181Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9182Add(KK2, p+Position(P, P[j]-P[i]) );
9183fi;
9184else
9185	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9186
9187if (t[Position(P,P[j]-P[i] )] = 1) then
9188Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9189Add(KK2, p+Position(P, P[j]-P[i]) );
9190else
9191Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9192Add(KK1, p+Position(P, K[j]-K[i]) );
9193fi;
9194	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9195if (t[Position(P,P[j]-P[i] )] = 1) then
9196Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9197Add(KK1, p+Position(P, P[j]-P[i]) );
9198Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9199Add(KK2, p+Position(P, K[j]-K[i]) );
9200else
9201Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9202Add(KK1, p+Position(P, P[j]-P[i]) );
9203Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9204Add(KK2, p+Position(P, K[j]-K[i]) );
9205fi;
9206	fi;
9207fi;
9208fi; fi;
9209
9210else
9211
9212if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9213if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9214if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9215
9216if (t[Position(P,P[j]+P[i] )] = 1) then
9217Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9218Add(KK1, p+Position(P, K[i]+K[j]) );
9219Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9220Add(KK2, p+Position(P, P[j]+P[i]) );
9221else
9222Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9223Add(KK1, p+Position(P, K[i]+K[j]) );
9224Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9225Add(KK2, p+Position(P, P[j]+P[i]) );
9226fi;
9227else
9228	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9229if (t[Position(P,P[j]+P[i] )] = 1) then
9230Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9231Add(KK2, p+Position(P, P[j]+P[i]) );
9232else
9233Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9234Add(KK1, p+Position(P, K[i]+K[j]) );
9235fi;
9236	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9237if (t[Position(P,P[j]+P[i] )] = 1) then
9238Add(KK1, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9239Add(KK1, p+Position(P, P[j]+P[i]) );
9240Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9241Add(KK2, p+Position(P, K[i]+K[j]) );
9242else
9243Add(KK1, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9244Add(KK1, p+Position(P, P[j]+P[i]) );
9245Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
9246Add(KK2, p+Position(P, K[i]+K[j]) );
9247fi;
9248	fi;
9249fi;
9250fi; fi;
9251
9252###############
9253
9254if (P[j]-P[i] in P ) then
9255if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9256if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9257
9258if (t[Position(P,P[j]-P[i] )] = 1) then
9259Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9260Add(KK1, p+Position(P, K[j]-K[i]) );
9261Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9262Add(KK2, p+Position(P, P[j]-P[i]) );
9263else
9264Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9265Add(KK1, p+Position(P, K[j]-K[i]) );
9266Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9267Add(KK2, p+Position(P, P[j]-P[i]) );
9268fi;
9269else
9270	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9271if (t[Position(P,P[j]-P[i] )] = 1) then
9272Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9273Add(KK2, p+Position(P, P[j]-P[i]) );
9274else
9275Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9276Add(KK1, p+Position(P, K[j]-K[i]) );
9277fi;
9278	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9279if (t[Position(P,P[j]-P[i] )] = 1) then
9280Add(KK1, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9281Add(KK1, p+Position(P, P[j]-P[i]) );
9282Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9283Add(KK2, p+Position(P, K[j]-K[i]) );
9284else
9285Add(KK1, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9286Add(KK1, p+Position(P, P[j]-P[i]) );
9287Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
9288Add(KK2, p+Position(P, K[j]-K[i]) );
9289fi;
9290	fi;
9291fi;
9292fi; fi;
9293
9294fi;
9295fi;
9296
9297SetEntrySCTable( TT, i,  p+j , KK1);
9298SetEntrySCTable( TT, i,  p+Position(P,K[j]), KK2);
9299
9300###########################################
9301
9302		else
9303			if ( p+Position(P, K[j]) = p+Position(P,P[j]) ) then #beta = phi_beta
9304
9305KK1:=[];
9306
9307if (t[i]=1) then
9308if (t[j]=1) then
9309
9310if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha + phi_beta quindi sono nel caso sicuro
9311if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9312if (t[Position(P,P[j]+P[i])]=1) then
9313Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
9314Add(KK1, p+Position(P, P[i]+P[j]) );
9315fi; fi; fi;
9316
9317if (P[j]-P[i] in P ) then
9318if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9319if (t[Position(P,P[j]-P[i])]=1) then
9320if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9321Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9322Add(KK1, p+Position(P, P[j]-P[i]) );
9323else
9324	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
9325Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9326Add(KK1, p+Position(P, P[j]-P[i]) );
9327	else
9328Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9329Add(KK1, p+Position(P, K[j]-K[i]) );
9330	fi;
9331fi; fi; fi; fi;
9332
9333SetEntrySCTable( TT, i,  p+j , KK1);
9334
9335else
9336
9337if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9338if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9339if (t[Position(P,P[j]+P[i])]=-1) then
9340Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
9341Add(KK1, p+Position(P, P[i]+P[j]) );
9342fi; fi; fi;
9343
9344if (P[j]-P[i] in P ) then
9345if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9346if (t[Position(P,P[j]-P[i])]=-1) then
9347if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9348Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9349Add(KK1, p+Position(P, P[j]-P[i]) );
9350else
9351	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
9352Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9353Add(KK1, p+Position(P, P[j]-P[i]) );
9354	else
9355Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9356Add(KK1, p+Position(P, K[j]-K[i]) );
9357	fi;
9358fi; fi; fi; fi;
9359SetEntrySCTable( TT, i,  p+j , KK1);
9360fi;
9361
9362else
9363if (t[j]=1) then
9364
9365if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9366if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9367if (t[Position(P,P[j]+P[i])]=-1) then
9368Add(KK1, +2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
9369Add(KK1, p+Position(P, P[i]+P[j]) );
9370fi; fi; fi;
9371
9372if (P[j]-P[i] in P ) then
9373if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9374if (t[Position(P,P[j]-P[i])]=-1) then
9375if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9376Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9377Add(KK1, p+Position(P, P[j]-P[i]) );
9378else
9379	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
9380Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9381Add(KK1, p+Position(P, P[j]-P[i]) );
9382	else
9383Add(KK1, +2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9384Add(KK1, p+Position(P, K[j]-K[i]) );
9385	fi;
9386fi; fi; fi; fi;
9387
9388SetEntrySCTable( TT, i,  p+j , KK1);
9389
9390else
9391
9392if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9393if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9394if (t[Position(P,P[j]+P[i])]=1) then
9395Add(KK1, -2*To[Position(P, P[i])][Position(P,P[j])][2][1]);
9396Add(KK1, p+Position(P, P[i]+P[j]) );
9397fi; fi; fi;
9398
9399if (P[j]-P[i] in P ) then
9400if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9401if (t[Position(P,P[j]-P[i])]=1) then
9402if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9403Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9404Add(KK1, p+Position(P, P[j]-P[i]) );
9405else
9406	if (p+Position(P,K[j]-K[i]) = p+Position(P, P[j]-P[i])) then
9407Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9408Add(KK1, p+Position(P, P[j]-P[i]) );
9409	else
9410Add(KK1, -2*To[Position(P, P[i])][p+Position(P,P[j])][2][1]);
9411Add(KK1, p+Position(P, K[j]-K[i]) );
9412	fi;
9413fi; fi; fi; fi;
9414
9415SetEntrySCTable( TT, i,  p+j , KK1);
9416
9417fi;
9418fi; fi; fi;
9419fi; fi;
9420od; od;
9421
9422###############
9423###########à
9424###########
9425for i in [2..p] do
9426	for j in [1..i-1] do
9427	if ( Position(P, K[j]) > Position(P, P[i]) ) then
9428		if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
9429
9430KK2:=[]; # i p+jbar
9431KK4:=[]; # ibar p+jbar
9432
9433if (t[i]=1) then
9434if (t[j]=1) then
9435
9436if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9437if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9438if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9439
9440if (t[Position(P,P[j]+P[i] )] = 1) then
9441Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9442Add(KK2, p+Position(P, K[i]+K[j]) );
9443Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9444Add(KK4, p+Position(P, P[i]+P[j]) );
9445else
9446Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9447Add(KK2, p+Position(P, K[i]+K[j]) );
9448Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9449Add(KK4, p+Position(P, P[i]+P[j]) );
9450fi;
9451else
9452	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9453
9454if (t[Position(P,P[j]+P[i] )] = 1) then
9455Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9456Add(KK4, p+Position(P, P[i]+P[j]) );
9457else
9458Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9459Add(KK2, p+Position(P, K[i]+K[j]) );
9460fi;
9461	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9462
9463if (t[Position(P,P[j]+P[i] )] = 1) then
9464Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9465Add(KK2, p+Position(P, P[i]+P[j]) );
9466Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9467Add(KK4, p+Position(P,K[j]+K[i]) );
9468else
9469Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9470Add(KK2, p+Position(P, P[i]+P[j]) );
9471Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9472Add(KK4, p+Position(P, K[j]+K[i]) );
9473fi;
9474	fi;
9475fi;
9476fi; fi;
9477
9478###############
9479
9480if (P[j]-P[i] in P ) then
9481if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9482if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9483
9484if (t[Position(P,P[j]-P[i] )] = 1) then
9485Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9486Add(KK2, p+Position(P, K[j]-K[i]) );
9487Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9488Add(KK4, p+Position(P, P[j]-P[i]) );
9489else
9490Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9491Add(KK2, p+Position(P, K[j]-K[i]) );
9492Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9493Add(KK4, p+Position(P, P[j]-P[i]) );
9494fi;
9495
9496else
9497	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9498
9499if (t[Position(P,P[j]-P[i] )] = 1) then
9500Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9501Add(KK4, p+Position(P, P[j]-P[i]) );
9502else
9503Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9504Add(KK2, p+Position(P, K[j]-K[i]) );
9505fi;
9506	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9507
9508if (t[Position(P,P[j]-P[i] )] = 1) then
9509Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9510Add(KK2, p+Position(P, P[j]-P[i]) );
9511Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9512Add(KK4, p+Position(P, K[j]-K[i]) );
9513else
9514Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9515Add(KK2, p+Position(P, P[j]-P[i]) );
9516Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9517Add(KK4, p+Position(P, K[j]-K[i]) );
9518fi;
9519	fi;
9520fi;
9521fi; fi;
9522
9523#############
9524
9525if (P[i]+K[j] in P ) then
9526if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
9527if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
9528
9529if (t[Position(P,P[i]+K[j] )] = 1) then
9530Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9531Add(KK2, p+Position(P, K[i]+P[j]) );
9532Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9533Add(KK4, p+Position(P, P[i]+K[j]) );
9534else
9535Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9536Add(KK2, p+Position(P, K[i]+P[j]) );
9537Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9538Add(KK4, p+Position(P, P[i]+K[j]) );
9539fi;
9540
9541else
9542	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
9543
9544if (t[Position(P,K[j]+P[i] )] = 1) then
9545Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9546Add(KK4, p+Position(P, P[i]+K[j]) );
9547else
9548Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9549Add(KK2, p+Position(P, K[i]+P[j]) );
9550fi;
9551	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9552
9553if (t[Position(P,P[i]+K[j] )] = 1) then
9554Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9555Add(KK2, p+Position(P, P[i]+K[j]) );
9556Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9557Add(KK4, p+Position(P, K[i]+P[j]) );
9558else
9559Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9560Add(KK2, p+Position(P, P[i]+K[j]) );
9561Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9562Add(KK4, p+Position(P, K[i]+P[j]) );
9563fi;
9564	fi;
9565fi;
9566fi; fi;
9567
9568##########
9569
9570if (K[j]-P[i] in P ) then
9571if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
9572if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
9573
9574if (t[Position(P,K[j]-P[i] )] = 1) then
9575Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9576Add(KK2, p+Position(P, P[j]-K[i]) );
9577Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9578Add(KK4, p+Position(P, K[j]-P[i]) );
9579else
9580Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9581Add(KK2, p+Position(P, P[j]-K[i]) );
9582Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9583Add(KK4, p+Position(P, K[j]-P[i]) );
9584fi;
9585else
9586	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
9587
9588if (t[Position(P,P[j]-K[i] )] = 1) then
9589Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9590Add(KK4, p+Position(P, K[j]-P[i]) );
9591else
9592Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9593Add(KK2, p+Position(P, P[j]-K[i]) );
9594fi;
9595	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9596
9597if (t[Position(P,K[j]-P[i] )] = 1) then
9598Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9599Add(KK2, p+Position(P, K[j]-P[i]) );
9600Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9601Add(KK4, p+Position(P, P[j]-K[i]) );
9602else
9603Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9604Add(KK2, p+Position(P, K[j]-P[i]) );
9605Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9606Add(KK4, p+Position(P, P[j]-K[i]) );
9607fi;
9608	fi;
9609fi;
9610fi; fi;
9611
9612##################
9613else # ovvero t[j]=-1
9614#########################
9615
9616if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9617if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9618if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9619
9620if (t[Position(P,P[j]+P[i] )] = 1) then
9621Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9622Add(KK2, p+Position(P, K[i]+K[j]) );
9623Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9624Add(KK4, p+Position(P, P[i]+P[j]) );
9625else
9626Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9627Add(KK2, p+Position(P, K[i]+K[j]) );
9628Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9629Add(KK4, p+Position(P, P[i]+P[j]) );
9630fi;
9631else
9632	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9633if (t[Position(P,P[j]+P[i] )] = 1) then
9634Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9635Add(KK4, p+Position(P, P[i]+P[j]) );
9636else
9637Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9638Add(KK2, p+Position(P, K[i]+K[j]) );
9639fi;
9640	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9641
9642if (t[Position(P,P[j]+P[i] )] = 1) then
9643Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9644Add(KK2, p+Position(P, P[i]+P[j]) );
9645Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9646Add(KK4, p+Position(P,K[j]+K[i]) );
9647else
9648Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9649Add(KK2, p+Position(P, P[i]+P[j]) );
9650Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9651Add(KK4, p+Position(P, K[j]+K[i]) );
9652fi;
9653	fi;
9654fi;
9655fi; fi;
9656
9657###############
9658
9659if (P[j]-P[i] in P ) then
9660if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9661if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9662
9663if (t[Position(P,P[j]-P[i] )] = 1) then
9664Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9665Add(KK2, p+Position(P, K[j]-K[i]) );
9666Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9667Add(KK4, p+Position(P, P[j]-P[i]) );
9668else
9669Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9670Add(KK2, p+Position(P, K[j]-K[i]) );
9671Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9672Add(KK4, p+Position(P, P[j]-P[i]) );
9673fi;
9674else
9675	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9676if (t[Position(P,P[j]-P[i] )] = 1) then
9677Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9678Add(KK4, p+Position(P, P[j]-P[i]) );
9679else
9680Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9681Add(KK2, p+Position(P, K[j]-K[i]) );
9682fi;
9683	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9684
9685if (t[Position(P,P[j]-P[i] )] = 1) then
9686Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9687Add(KK2, p+Position(P, P[j]-P[i]) );
9688Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9689Add(KK4, p+Position(P, K[j]-K[i]) );
9690else
9691Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9692Add(KK2, p+Position(P, P[j]-P[i]) );
9693Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9694Add(KK4, p+Position(P, K[j]-K[i]) );
9695fi;
9696	fi;
9697fi;
9698fi; fi;
9699
9700#############
9701
9702if (P[i]+K[j] in P ) then
9703if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
9704if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
9705
9706if (t[Position(P,P[i]+K[j] )] = 1) then
9707Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9708Add(KK2, p+Position(P, K[i]+P[j]) );
9709Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9710Add(KK4, p+Position(P, P[i]+K[j]) );
9711else
9712Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9713Add(KK2, p+Position(P, K[i]+P[j]) );
9714Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9715Add(KK4, p+Position(P, P[i]+K[j]) );
9716fi;
9717else
9718	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
9719if (t[Position(P,K[j]+P[i] )] = 1) then
9720Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9721Add(KK4, p+Position(P, P[i]+K[j]) );
9722else
9723Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9724Add(KK2, p+Position(P, K[i]+P[j]) );
9725fi;
9726	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9727
9728if (t[Position(P,P[i]+K[j] )] = 1) then
9729Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9730Add(KK2, p+Position(P, P[i]+K[j]) );
9731Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9732Add(KK4, p+Position(P, K[i]+P[j]) );
9733else
9734Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9735Add(KK2, p+Position(P, P[i]+K[j]) );
9736Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9737Add(KK4, p+Position(P, K[i]+P[j]) );
9738fi;
9739	fi;
9740fi;
9741fi; fi;
9742
9743#############
9744
9745if (K[j]-P[i] in P ) then
9746if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
9747if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
9748
9749if (t[Position(P,K[j]-P[i] )] = 1) then
9750Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9751Add(KK2, p+Position(P, P[j]-K[i]) );
9752Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9753Add(KK4, p+Position(P, K[j]-P[i]) );
9754else
9755Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9756Add(KK2, p+Position(P, P[j]-K[i]) );
9757Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9758Add(KK4, p+Position(P, K[j]-P[i]) );
9759fi;
9760else
9761	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
9762if (t[Position(P,K[j]-P[i] )] = 1) then
9763Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9764Add(KK4, p+Position(P, K[j]-P[i]) );
9765else
9766Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9767Add(KK2, p+Position(P, P[j]-K[i]) );
9768fi;
9769	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9770if (t[Position(P,K[j]-P[i] )] = 1) then
9771Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9772Add(KK2, p+Position(P, K[j]-P[i]) );
9773Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9774Add(KK4, p+Position(P, P[j]-K[i]) );
9775else
9776Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9777Add(KK2, p+Position(P, K[j]-P[i]) );
9778Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9779Add(KK4, p+Position(P, P[j]-K[i]) );
9780fi;
9781	fi;
9782fi;
9783fi; fi;
9784
9785fi;
9786
9787########################à
9788else #t[i]=-1
9789if (t[j]=1) then
9790###############
9791
9792if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9793if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9794if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9795if (t[Position(P,P[j]+P[i] )] = 1) then
9796Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9797Add(KK2, p+Position(P, K[i]+K[j]) );
9798Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9799Add(KK4, p+Position(P, P[i]+P[j]) );
9800else
9801Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9802Add(KK2, p+Position(P, K[i]+K[j]) );
9803Add(KK4, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9804Add(KK4, p+Position(P, P[i]+P[j]) );
9805fi;
9806else
9807	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9808if (t[Position(P,P[j]+P[i] )] = 1) then
9809Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9810Add(KK4, p+Position(P, P[i]+P[j]) );
9811else
9812Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9813Add(KK2, p+Position(P, K[i]+K[j]) );
9814fi;
9815	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9816if (t[Position(P,P[j]+P[i] )] = 1) then
9817Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9818Add(KK2, p+Position(P, P[i]+P[j]) );
9819Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9820Add(KK4, p+Position(P,K[j]+K[i]) );
9821else
9822Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9823Add(KK2, p+Position(P, P[i]+P[j]) );
9824Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9825Add(KK4, p+Position(P, K[j]+K[i]) );
9826fi;
9827	fi;
9828fi;
9829fi; fi;
9830
9831###############
9832
9833if (P[j]-P[i] in P ) then
9834if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
9835if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
9836
9837if (t[Position(P,P[j]-P[i] )] = 1) then
9838Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9839Add(KK2, p+Position(P, K[j]-K[i]) );
9840Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9841Add(KK4, p+Position(P, P[j]-P[i]) );
9842else
9843Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9844Add(KK2, p+Position(P, K[j]-K[i]) );
9845Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9846Add(KK4, p+Position(P, P[j]-P[i]) );
9847fi;
9848else
9849	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
9850if (t[Position(P,P[j]-P[i] )] = 1) then
9851Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9852Add(KK4, p+Position(P, P[j]-P[i]) );
9853else
9854Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9855Add(KK2, p+Position(P, K[j]-K[i]) );
9856fi;
9857	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9858if (t[Position(P,P[j]-P[i] )] = 1) then
9859Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9860Add(KK2, p+Position(P, P[j]-P[i]) );
9861Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9862Add(KK4, p+Position(P, K[j]-K[i]) );
9863else
9864Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9865Add(KK2, p+Position(P, P[j]-P[i]) );
9866Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
9867Add(KK4, p+Position(P, K[j]-K[i]) );
9868fi;
9869	fi;
9870fi;
9871fi; fi;
9872
9873#############
9874
9875if (P[i]+K[j] in P ) then
9876if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
9877if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
9878if (t[Position(P,P[i]+K[j] )] = 1) then
9879Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9880Add(KK2, p+Position(P, K[i]+P[j]) );
9881Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9882Add(KK4, p+Position(P, P[i]+K[j]) );
9883else
9884Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9885Add(KK2, p+Position(P, K[i]+P[j]) );
9886Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9887Add(KK4, p+Position(P, P[i]+K[j]) );
9888fi;
9889else
9890	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
9891if (t[Position(P,K[j]+P[i] )] = 1) then
9892Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9893Add(KK4, p+Position(P, P[i]+K[j]) );
9894else
9895Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9896Add(KK2, p+Position(P, K[i]+P[j]) );
9897fi;
9898	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9899if (t[Position(P,P[i]+K[j] )] = 1) then
9900Add(KK2, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9901Add(KK2, p+Position(P, P[i]+K[j]) );
9902Add(KK4, -1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9903Add(KK4, p+Position(P, K[i]+P[j]) );
9904else
9905Add(KK2, (-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9906Add(KK2, p+Position(P, P[i]+K[j]) );
9907Add(KK4, +1*(-1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
9908Add(KK4, p+Position(P, K[i]+P[j]) );
9909fi;
9910	fi;
9911fi;
9912fi; fi;
9913
9914#############
9915
9916if (K[j]-P[i] in P ) then
9917if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
9918if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
9919
9920if (t[Position(P,K[j]-P[i] )] = 1) then
9921Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9922Add(KK2, p+Position(P, P[j]-K[i]) );
9923Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9924Add(KK4, p+Position(P, K[j]-P[i]) );
9925else
9926Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9927Add(KK2, p+Position(P, P[j]-K[i]) );
9928Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9929Add(KK4, p+Position(P, K[j]-P[i]) );
9930fi;
9931else
9932	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
9933if (t[Position(P,K[j]-P[i] )] = 1) then
9934Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9935Add(KK4, p+Position(P, K[j]-P[i]) );
9936else
9937Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9938Add(KK2, p+Position(P, P[j]-K[i]) );
9939fi;
9940	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9941if (t[Position(P,K[j]-P[i] )] = 1) then
9942Add(KK2, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9943Add(KK2, p+Position(P, K[j]-P[i]) );
9944Add(KK4, -1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9945Add(KK4, p+Position(P, P[j]-K[i]) );
9946else
9947Add(KK2, (-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9948Add(KK2, p+Position(P, K[j]-P[i]) );
9949Add(KK4, +1*(-1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
9950Add(KK4, p+Position(P, P[j]-K[i]) );
9951fi;
9952	fi;
9953fi;
9954fi; fi;
9955
9956else #t[j]=-1
9957
9958###############
9959
9960if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
9961if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
9962if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
9963
9964if (t[Position(P,P[j]+P[i] )] = 1) then
9965Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9966Add(KK2, p+Position(P, K[i]+K[j]) );
9967Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9968Add(KK4, p+Position(P, P[i]+P[j]) );
9969else
9970Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9971Add(KK2, p+Position(P, K[i]+K[j]) );
9972Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9973Add(KK4, p+Position(P, P[i]+P[j]) );
9974fi;
9975else
9976	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
9977if (t[Position(P,P[j]+P[i] )] = 1) then
9978Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9979Add(KK4, p+Position(P, P[i]+P[j]) );
9980else
9981Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9982Add(KK2, p+Position(P, K[i]+K[j]) );
9983fi;
9984	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
9985if (t[Position(P,P[j]+P[i] )] = 1) then
9986Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9987Add(KK2, p+Position(P, P[i]+P[j]) );
9988Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9989Add(KK4, p+Position(P,K[j]+K[i]) );
9990else
9991Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9992Add(KK2, p+Position(P, P[i]+P[j]) );
9993Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1])/2);
9994Add(KK4, p+Position(P, K[j]+K[i]) );
9995fi;
9996	fi;
9997fi;
9998fi; fi;
9999
10000#######
10001
10002if (P[j]-P[i] in P ) then
10003if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
10004if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
10005
10006if (t[Position(P,P[j]-P[i] )] = 1) then
10007Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10008Add(KK2, p+Position(P, K[j]-K[i]) );
10009Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10010Add(KK4, p+Position(P, P[j]-P[i]) );
10011else
10012Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10013Add(KK2, p+Position(P, K[j]-K[i]) );
10014Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10015Add(KK4, p+Position(P, P[j]-P[i]) );
10016fi;
10017else
10018	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
10019if (t[Position(P,P[j]-P[i] )] = 1) then
10020Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10021Add(KK4, p+Position(P, P[j]-P[i]) );
10022else
10023Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10024Add(KK2, p+Position(P, K[j]-K[i]) );
10025fi;
10026	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10027if (t[Position(P,P[j]-P[i] )] = 1) then
10028Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10029Add(KK2, p+Position(P, P[j]-P[i]) );
10030Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10031Add(KK4, p+Position(P, K[j]-K[i]) );
10032else
10033Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10034Add(KK2, p+Position(P, P[j]-P[i]) );
10035Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1])/2);
10036Add(KK4, p+Position(P, K[j]-K[i]) );
10037fi;
10038	fi;
10039fi;
10040fi; fi;
10041
10042######
10043
10044if (P[i]+K[j] in P ) then
10045if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
10046if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
10047
10048if (t[Position(P,P[i]+K[j] )] = 1) then
10049Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10050Add(KK2, p+Position(P, K[i]+P[j]) );
10051Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10052Add(KK4, p+Position(P, P[i]+K[j]) );
10053else
10054Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10055Add(KK2, p+Position(P, K[i]+P[j]) );
10056Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10057Add(KK4, p+Position(P, P[i]+K[j]) );
10058fi;
10059else
10060	if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
10061if (t[Position(P,K[j]+P[i] )] = 1) then
10062Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10063Add(KK4, p+Position(P, P[i]+K[j]) );
10064else
10065Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10066Add(KK2, p+Position(P, K[i]+P[j]) );
10067fi;
10068	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10069if (t[Position(P,P[i]+K[j] )] = 1) then
10070Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10071Add(KK2, p+Position(P, P[i]+K[j]) );
10072Add(KK4, -1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]+1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10073Add(KK4, p+Position(P, K[i]+P[j]) );
10074else
10075Add(KK2, (+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10076Add(KK2, p+Position(P, P[i]+K[j]) );
10077Add(KK4, +1*(+1*To[Position(P, P[i])][Position(P,K[j])][2][1]-1*To[Position(P, K[i])][Position(P,P[j])][2][1])/2);
10078Add(KK4, p+Position(P, K[i]+P[j]) );
10079fi;
10080	fi;
10081fi;
10082fi; fi;
10083
10084#############
10085
10086if (K[j]-P[i] in P ) then
10087if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
10088if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
10089
10090if (t[Position(P,K[j]-P[i] )] = 1) then
10091Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10092Add(KK2, p+Position(P, P[j]-K[i]) );
10093Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10094Add(KK4, p+Position(P, K[j]-P[i]) );
10095else
10096Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10097Add(KK2, p+Position(P, P[j]-K[i]) );
10098Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10099Add(KK4, p+Position(P, K[j]-P[i]) );
10100fi;
10101else
10102	if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
10103if (t[Position(P,K[j]-P[i] )] = 1) then
10104Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10105Add(KK4, p+Position(P, K[j]-P[i]) );
10106else
10107Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10108Add(KK2, p+Position(P, P[j]-K[i]) );
10109fi;
10110	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10111if (t[Position(P,K[j]-P[i] )] = 1) then
10112Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10113Add(KK2, p+Position(P, K[j]-P[i]) );
10114Add(KK4, -1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10115Add(KK4, p+Position(P, P[j]-K[i]) );
10116else
10117Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10118Add(KK2, p+Position(P, K[j]-P[i]) );
10119Add(KK4, +1*(+1*To[Position(P, P[i])][p+Position(P,K[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,P[j])][2][1])/2);
10120Add(KK4, p+Position(P, P[j]-K[i]) );
10121fi;
10122	fi;
10123fi;
10124fi; fi;
10125
10126fi; fi;
10127
10128if ( Position(P,K[i]) < Position(P,K[j]) ) then
10129SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
10130SetEntrySCTable( TT, Position(P,K[i]),  p+Position(P, K[j]), KK4);
10131else
10132 	if ( Position(P,K[j]) < Position(P,K[i]) ) then
10133SetEntrySCTable( TT, Position(P,P[i]),  p+Position(P, K[j]), KK2);
10134	fi;
10135fi;
10136
10137else
10138	if ( Position(P, K[i]) = Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
10139
10140KK2:=[];
10141
10142if (t[i]=1) then
10143if (t[j]=1) then
10144
10145if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
10146if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
10147if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
10148
10149if (t[Position(P,P[j]+P[i] )] = 1) then
10150Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10151Add(KK2, p+Position(P, K[i]+K[j]) );
10152else
10153Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10154Add(KK2, p+Position(P, K[i]+K[j]) );
10155fi;
10156else
10157	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
10158
10159if (t[Position(P,P[j]+P[i] )] = 1) then
10160else
10161Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10162Add(KK2, p+Position(P, K[i]+K[j]) );
10163fi;
10164	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10165
10166if (t[Position(P,P[j]+P[i] )] = 1) then
10167Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10168Add(KK2, p+Position(P, P[i]+P[j]) );
10169else
10170Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10171Add(KK2, p+Position(P, P[i]+P[j]) );
10172fi;
10173	fi;
10174fi;
10175fi; fi;
10176
10177###############
10178
10179if (P[j]-P[i] in P ) then
10180if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
10181if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
10182
10183if (t[Position(P,P[j]-P[i] )] = 1) then
10184Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10185Add(KK2, p+Position(P, K[j]-K[i]) );
10186else
10187Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10188Add(KK2, p+Position(P, K[j]-K[i]) );
10189fi;
10190else
10191	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
10192
10193if (t[Position(P,P[j]-P[i] )] = 1) then
10194else
10195Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10196Add(KK2, p+Position(P, K[j]-K[i]) );
10197fi;
10198	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10199
10200if (t[Position(P,P[j]-P[i] )] = 1) then
10201Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10202Add(KK2, p+Position(P, P[j]-P[i]) );
10203else
10204Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10205Add(KK2, p+Position(P, P[j]-P[i]) );
10206fi;
10207	fi;
10208fi;
10209fi; fi;
10210
10211###########
10212
10213else #t[j]=-1
10214
10215if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
10216if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
10217if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
10218
10219if (t[Position(P,P[j]+P[i] )] = 1) then
10220Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10221Add(KK2, p+Position(P, K[i]+K[j]) );
10222else
10223Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10224Add(KK2, p+Position(P, K[i]+K[j]) );
10225fi;
10226else
10227	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
10228
10229if (t[Position(P,P[j]+P[i] )] = 1) then
10230else
10231Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10232Add(KK2, p+Position(P, K[i]+K[j]) );
10233fi;
10234	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10235
10236if (t[Position(P,P[j]+P[i] )] = 1) then
10237Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10238Add(KK2, p+Position(P, P[i]+P[j]) );
10239else
10240Add(KK2, (+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10241Add(KK2, p+Position(P, P[i]+P[j]) );
10242fi;
10243	fi;
10244fi;
10245fi; fi;
10246
10247#######
10248
10249if (P[j]-P[i] in P ) then
10250if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
10251if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
10252if (t[Position(P,P[j]-P[i] )] = 1) then
10253Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10254Add(KK2, p+Position(P, K[j]-K[i]) );
10255else
10256Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10257Add(KK2, p+Position(P, K[j]-K[i]) );
10258fi;
10259else
10260	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
10261
10262if (t[Position(P,P[j]-P[i] )] = 1) then
10263else
10264Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10265Add(KK2, p+Position(P, K[j]-K[i]) );
10266fi;
10267	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10268if (t[Position(P,P[j]-P[i] )] = 1) then
10269Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10270Add(KK2, p+Position(P, P[j]-P[i]) );
10271else
10272Add(KK2, (+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10273Add(KK2, p+Position(P, P[j]-P[i]) );
10274fi;
10275	fi;
10276fi;
10277fi; fi;
10278
10279####################
10280
10281fi;
10282
10283else #t[i]=-1
10284if (t[j]=1) then
10285
10286if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
10287if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
10288if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
10289
10290if (t[Position(P,P[j]+P[i] )] = 1) then
10291Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10292Add(KK2, p+Position(P, P[i]+P[j]) );
10293else
10294Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10295Add(KK2, p+Position(P, P[i]+P[j]) );
10296fi;
10297else
10298	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
10299if (t[Position(P,P[j]+P[i] )] = 1) then
10300Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10301Add(KK2, p+Position(P, P[i]+P[j]) );
10302fi;
10303	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10304if (t[Position(P,P[j]+P[i] )] = 1) then
10305Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10306Add(KK2, p+Position(P, P[i]+P[j]) );
10307else
10308Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10309Add(KK2, p+Position(P, K[j]+K[i]) );
10310fi;
10311	fi;
10312fi;
10313fi; fi;
10314
10315############
10316
10317if (P[j]-P[i] in P ) then
10318if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
10319if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
10320
10321if (t[Position(P,P[j]-P[i] )] = 1) then
10322Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10323Add(KK2, p+Position(P, P[j]-P[i]) );
10324else
10325Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10326Add(KK2, p+Position(P, P[j]-P[i]) );
10327fi;
10328else
10329	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
10330if (t[Position(P,P[j]-P[i] )] = 1) then
10331Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10332Add(KK2, p+Position(P, P[j]-P[i]) );
10333fi;
10334	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10335if (t[Position(P,P[j]-P[i] )] = 1) then
10336Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10337Add(KK2, p+Position(P, K[j]-K[i]) );
10338else
10339Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10340Add(KK2, p+Position(P, K[j]-K[i]) );
10341fi;
10342	fi;
10343fi;
10344fi; fi;
10345
10346else
10347
10348if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
10349if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
10350if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
10351
10352if (t[Position(P,P[j]+P[i] )] = 1) then
10353Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10354Add(KK2, p+Position(P, P[j]+P[i]) );
10355else
10356Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10357Add(KK2, p+Position(P, P[j]+P[i]) );
10358fi;
10359else
10360	if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
10361if (t[Position(P,P[j]+P[i] )] = 1) then
10362Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10363Add(KK2, p+Position(P, P[j]+P[i]) );
10364fi;
10365	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10366if (t[Position(P,P[j]+P[i] )] = 1) then
10367Add(KK2, -1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]+1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10368Add(KK2, p+Position(P, K[i]+K[j]) );
10369else
10370Add(KK2, +1*(+1*To[Position(P, P[i])][Position(P,P[j])][2][1]-1*To[Position(P, K[i])][Position(P,K[j])][2][1]));
10371Add(KK2, p+Position(P, K[i]+K[j]) );
10372fi;
10373	fi;
10374fi;
10375fi; fi;
10376
10377###############
10378
10379if (P[j]-P[i] in P ) then
10380if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
10381if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
10382
10383if (t[Position(P,P[j]-P[i] )] = 1) then
10384Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10385Add(KK2, p+Position(P, P[j]-P[i]) );
10386else
10387Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10388Add(KK2, p+Position(P, P[j]-P[i]) );
10389fi;
10390else
10391	if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
10392if (t[Position(P,P[j]-P[i] )] = 1) then
10393Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10394Add(KK2, p+Position(P, P[j]-P[i]) );
10395fi;
10396	else  #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
10397if (t[Position(P,P[j]-P[i] )] = 1) then
10398Add(KK2, -1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]+1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10399Add(KK2, p+Position(P, K[j]-K[i]) );
10400else
10401Add(KK2, +1*(+1*To[Position(P, P[i])][p+Position(P,P[j])][2][1]-1*To[Position(P, K[i])][p+Position(P,K[j])][2][1]));
10402Add(KK2, p+Position(P, K[j]-K[i]) );
10403fi;
10404	fi;
10405fi;
10406fi; fi;
10407
10408fi;
10409fi;
10410
10411SetEntrySCTable( TT, i,  p+Position(P,K[j]), KK2);
10412
10413	fi;
10414fi; fi;
10415
10416od; od;
10417##############################################################################
10418#########################################################################################
10419
10420
10421L:= LieAlgebraByStructureConstants( F0, TT );
10422
10423
10424
10425K0:= [ ]; P0:= [ ];
10426H0:= [ ];
10427if h = () then
10428
10429  for i in [1..Length(t)] do
10430      if t[i] = 1 then
10431         Add( K0, Basis(L)[i] );
10432      else
10433         Add( P0, Basis(L)[i] );
10434      fi;
10435  od;
10436
10437  for i in [1..Length(t)] do
10438      if t[i] = 1 then
10439         Add( K0, Basis(L)[Length(t)+i] );
10440      else
10441         Add( P0, Basis(L)[Length(t)+i] );
10442      fi;
10443  od;
10444
10445  Append( K0, Basis(L){[2*Length(t)+1..Length(Basis(L))]} );
10446  H0:= Basis(L){[2*Length(t)+1..Length(Basis(L))]};
10447
10448else
10449
10450  for i in [1..Length(t)] do
10451      pos:= Position( P, K[i] );
10452      if pos = i then
10453         if t[i] > 0 then
10454            Add( K0, Basis(L)[i] );
10455            Add( K0, Basis(L)[i+p] );
10456         else
10457            Add( P0, Basis(L)[i] );
10458            Add( P0, Basis(L)[i+p] );
10459         fi;
10460      elif pos > i then
10461         Add( K0, Basis(L)[i] );
10462         Add( P0, Basis(L)[pos] );
10463         Add( K0, Basis(L)[i+p] );
10464         Add( P0, Basis(L)[pos+p] );
10465      fi;
10466  od;
10467
10468   for i in [1..s] do
10469       if i^h = i then
10470          Add( K0, Basis(L)[ 2*Length(t)+i ] );
10471          Add( H0, Basis(L)[ 2*Length(t)+i ] );
10472       elif i^h > i then
10473          Add( K0, Basis(L)[ 2*Length(t)+i ] );
10474          Add( H0, Basis(L)[ 2*Length(t)+i ] );
10475          Add( P0, Basis(L)[ 2*Length(t)+i^h ] );
10476       fi;
10477   od;
10478fi;
10479
10480
10481
10482
10483  makeCartInv := function(L,K,P)
10484  local bas;
10485    bas := BasisNC(L,Concatenation(Basis(K),Basis(P)));
10486  return function(v)
10487     local k, p, cf, i;
10488        k   := Length(Basis(K));
10489        p   := Length(Basis(P));
10490        cf  := List(Coefficients(bas,v),x->x);
10491        for i in [k+1..k+p] do cf[i] := -cf[i]; od;
10492           return cf*bas;
10493        end;
10494   end;
10495
10496   K0 := SubalgebraNC(L,K0,"basis");
10497   P0 := SubspaceNC( L, P0 );
10498
10499SetCartanDecomposition( L, rec( K:=K0 ,P:=P0, CartanInv := makeCartInv(L,K0,P0)  ) );
10500SetIsCompactForm( L, false );
10501
10502SetCartanSubalgebra(L,SubalgebraNC(L,Basis(L){[2*p+1..2*p+s]},"basis") );
10503SetMaximallyCompactCartanSubalgebra( L, CartanSubalgebra(L) );
10504SetCartanSubalgebra( CartanDecomposition(L).K, SubalgebraNC(L,H0) );
10505
10506# fare un elenco con tre elenchi: [x_alpha], [x_{-alpha}], [h_1,...,h_l], alpha > 0, tutti
10507# i vettori espressi in termini della base di L.
10508# Se b:= Basis(L); allora b[1] è il primo elemento della base, ecc.
10509
10510bb:=Basis(L);
10511BB:=[[],[],[]];
10512KK1:=0;
10513KK2:=0;
10514KK3:=0;
10515KK4:=0;
10516
10517for i in [1..p] do
10518Add(BB[1], 0);
10519Add(BB[2], 0);
10520od;
10521
10522for i in [1..s] do
10523Add(BB[3], 0);
10524od;
10525
10526for j in [1..s] do
10527
10528	if (OnPoints(j,h) > j) then
10529		BB[3][j]:= 1/2*One(F0)*(-1*E(4)*One(F0)*bb[2*p+j]+1*bb[2*p+OnPoints(j,h)]);
10530		BB[3][OnPoints(j,h)]:= -1/2*One(F0)*(+1*E(4)*One(F0)*bb[2*p+j]+1*bb[2*p+OnPoints(j,h)]);
10531	elif (OnPoints(j,h) = j) then
10532		BB[3][j]:= 1/2*One(F0)*(-1*E(4)*One(F0)*bb[2*p+j]);
10533	fi;
10534od;
10535
10536
10537
10538for i in [1..p] do
10539
10540	if (t[i] = 1) then
10541
10542		if (Position(P, K[i]) > Position(P,P[i])) then
10543			KK1:=1/2*One(F0)*(bb[i]-1*E(4)*One(F0)*bb[Position(P,K[i])]); #X_alpha
10544			KK2:=1/2*One(F0)*(bb[i]+1*E(4)*One(F0)*bb[Position(P,K[i])]); #X_phi(alpha)
10545			KK3:=1/2*One(F0)*(bb[p+i]-1*E(4)*One(F0)*bb[p+Position(P,K[i])]); #Y_alpha
10546			KK4:=1/2*One(F0)*(bb[p+i]+1*E(4)*One(F0)*bb[p+Position(P,K[i])]); #Y_phi(alpha)
10547			BB[1][i]:= 1/2*One(F0)*(KK1-1*E(4)*One(F0)*KK3);
10548			BB[1][Position(P,K[i])]:= 1/2*One(F0)*(KK2-1*E(4)*One(F0)*KK4);
10549			BB[2][i]:=1/2*One(F0)*(-1*KK1-1*E(4)*One(F0)*KK3);
10550			BB[2][Position(P,K[i])]:=1/2*One(F0)*(-1*One(F0)*KK2-1*E(4)*One(F0)*KK4);
10551		elif (Position(P, K[i]) = Position(P,P[i])) then
10552			KK1:=1/2*One(F0)*(bb[i]); #X_alpha
10553			KK2:=1/2*One(F0)*(bb[p+i]); #Y_alpha
10554			BB[1][i]:= 1/2*One(F0)*(KK1-1*E(4)*One(F0)*KK2);
10555			BB[2][i]:= 1/2*One(F0)*(-1*KK1-1*E(4)*One(F0)*KK2);
10556		fi;
10557	else
10558		if (Position(P, K[i]) > Position(P,P[i]) ) then
10559
10560
10561			KK1:=1/2*One(F0)*(bb[i]-1*E(4)*One(F0)*bb[Position(P,K[i])]); #X_alpha
10562			KK2:=1/2*One(F0)*(-bb[i]-1*E(4)*One(F0)*bb[Position(P,K[i])]); #X_phi(alpha)
10563			KK3:=1/2*One(F0)*(bb[p+i]-1*E(4)*One(F0)*bb[p+Position(P,K[i])]); #Y_alpha
10564			KK4:=1/2*One(F0)*(-bb[p+i]-1*E(4)*One(F0)*bb[p+Position(P,K[i])]); #Y_phi(alpha)
10565			BB[1][i]:= 1/2*One(F0)*(KK1-1*E(4)*One(F0)*KK3);
10566			BB[1][Position(P,K[i])]:=1/2*One(F0)*(KK2-1*E(4)*One(F0)*KK4);
10567			BB[2][i]:=1/2*One(F0)*(-1*KK1-1*One(F0)*E(4)*KK3);
10568
10569			BB[2][Position(P,K[i])]:=1/2*One(F0)*(-1*KK2-1*One(F0)*E(4)*KK4);
10570		elif (Position(P, K[i]) = Position(P,P[i]) ) then
10571			KK1:=-1*E(4)*One(F0)*1/2*(bb[i]); #X_alpha
10572			KK2:=-1*E(4)*One(F0)*1/2*(bb[p+i]); #Y_alpha
10573			BB[1][i]:= 1/2*One(F0)*(KK1-1*One(F0)*E(4)*KK2);
10574			BB[2][i]:= 1/2*One(F0)*(-1*KK1-1*E(4)*One(F0)*KK2);
10575		fi;
10576	fi;
10577
10578od;
10579
10580
10581    rts:=[ ];
10582    for v in BB[1] do
10583        sp:= Basis(SubspaceNC(L,[v],"basis"),[v]);
10584        Add( rts, List( BB[3], t -> Coefficients(sp,t*v)[1] ) );
10585    od;
10586
10587
10588
10589    R:= Objectify( NewType( NewFamily( "RootSystemFam", IsObject ),
10590                IsAttributeStoringRep and IsRootSystemFromLieAlgebra ),
10591                rec() );
10592    SetCanonicalGenerators( R, [ BB[1]{[1..n]}, BB[2]{[1..n]}, BB[3] ] );
10593    SetUnderlyingLieAlgebra( R, L );
10594    SetPositiveRootVectors( R, BB[1] );
10595    SetNegativeRootVectors( R, BB[2] );
10596
10597    CartInt := function( R, a, b )
10598       local s,t,rt;
10599       s:=0; t:=0;
10600       rt:=a-b;
10601       while (rt in R) or (rt=0*R[1]) do
10602         rt:=rt-b;
10603         s:=s+1;
10604       od;
10605       rt:=a+b;
10606       while (rt in R) or (rt=0*R[1]) do
10607         rt:=rt+b;
10608         t:=t+1;
10609       od;
10610       return s-t;
10611    end;
10612
10613    allrts:= Concatenation( rts, -rts );
10614    fundr:= rts{[1..n]};
10615    SetCartanMatrix( R, List( fundr, x -> List( fundr, y -> CartInt( allrts, x, y ) ) ) );
10616
10617
10618  #roots are rationals
10619    if IsSqrtField(F0) then
10620      rts := List(rts, x-> List(x, SqrtFieldEltToCyclotomic));
10621    fi;
10622
10623    SetPositiveRoots( R, rts );
10624
10625   #Print("pos roots ",rts[1],rts[1][1] in SqrtField,"\n");
10626
10627
10628    SetNegativeRoots( R, -rts );
10629    SetSimpleSystem( R, rts{[1..n]} );
10630
10631    SetRootSystem(L,R);
10632    SetRootSystem(MaximallyCompactCartanSubalgebra(L),R);
10633
10634    SetChevalleyBasis( L, BB );
10635
10636   #Print("still in sqrtfield? ",PositiveRoots(RootSystem(L))[1][1] in SqrtField,"\n");
10637
10638    return L;
10639
10640end;
10641