Quellcode-Bibliothek forms.gi
Sprache: Shell
|
|
###########################################################################
#
# this file contains the entry corelg.SuperLie, which is used in forms.gi
#
#
#
corelg.SuperLie:=function(arg)
local 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;
q:= arg[1];
n:= arg[2];
t0:= arg[3];
h:= arg[4];
if Length(arg)=5 then
F0:= arg[5];
else
F0:= CF(4);
fi;
t:= ShallowCopy(t0);
Lo:=SimpleLieAlgebra(q,n,Rationals);
To:= StructureConstantsTable(Basis(Lo));;
#T:=Sub3( a, n);
#L:=LieAlgebraByStructureConstants( Rationals,T);
R:= RootSystem(Lo);
P:= PositiveRoots(R);
S:= SimpleSystem(R);
#C:= ChevalleyBasis(L);
V:= VectorSpace(Rationals, S);
B:= Basis(V, S);
s:= Length(S);;
p:= Length(P);;
D:=[];; #set of alpha such that X=x-x
U:=[];; #set of alpha such that X=x+x
TT:=EmptySCTable( 2*p+s, Zero(F0), "antisymmetric" );;
a:=0;
b:=0;
c:=0;
d:=0;
#############################################################################################################################################
#cerchiamo di sistemare il vettore dei\Phi(alpha), ovvero tenere a mente le permutazioni
#cioè in questo modo creo il vettore N con le radici permutate
#mentre il vettore P ha quelle normali.
K:=[];
for i in [1..s] do
Add(K, P[Position(P,P[OnPoints(i,h)])] );
od;
#ho appena sistemato il vettore K con le permutazioni definite da h sul simple system
############################################################################################################################################
#resta da sistemare il resto delle radici positive
for i in [s+1..p] do
N:=P[1]*0;
CC:=Coefficients(B,P[i]); #mi scrivo i coefficienti di P[i] rispetto al simple System
for j in [1..s] do
N:=N+CC[j]*P[Position(P,K[j])]; #Calcolo la permutaziona associata a questa radice
od;
Add(K, P[Position(P,N)] );
od;
#Vettore K con le immagini della prmutazione è a posto.
###############################################################################################################################################
#Sistemiamo il vettore dei segni, per ora l ho solo definito sul Simple System
for i in [s+1..p] do
for j in [1..s] do
if (P[i]-P[j] in P ) then
f:=Position(P, P[i]-P[j]); #calcolo la posizione in P di P[i]-P[j]
g0:=Position(P,K[j]); #calcolo la posizione in P della permutazione di P[j]
g1:=Position(P, K[f]); #calcolo la posizione in P della permutazione di P[i]-P[j]
Add(t, t[j]*t[f]*To[g0][g1][2][1]*(To[j][f][2][1]^(-1)));
break;
fi;
od;
od;
##############################################################################################################################################
#sistemiamo i prodotti [H,X] e [H,Y]
for i in [1..s] do
for j in [1..p] do
if (Position(P,K[i]) > i) then #permutazione solo sugli h, quindi mi bastano i primi s
if ( Position(P,K[j]) > Position(P,P[j])) then
a:=0;
b:=0;
c:=0;
d:=0;
if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
a:=a+To[2*p+Position(P,P[i])][j][2][1];
b:=b+To[2*p+Position(P,K[i])][j][2][1];
c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ (a+b+c+d)/2, p+j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ (a+b+c+d)/2, p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*(a+b+c+d)/2, j] );
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+b+c+d)/2, Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), j, [-1*(a-b-c+d)/2, p+Position(P,K[j]) ]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), Position(P,K[j]), [ (a-b-c+d)/2, p+j]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+j, [ (a-b-c+d)/2, Position(P,K[j]) ]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]), [-1*(a-b-c+d)/2, j ]);
else
a:=a+To[2*p+Position(P,P[i])][j][2][1];
#b:=b+To[2*p+Position(P,K[i])][j][2][1];
#c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ (a+d)/2, p+j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ (a+d)/2, p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*(a+d)/2, j] );
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+d)/2, Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), j,[ -1*(a+d)/2, p+Position(P,K[j]) ]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), Position(P,K[j]),[ (a+d)/2, p+j]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+j,[ (a+d)/2, Position(P,K[j] )]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]),[ -1*(a+d)/2, j]) ;
fi;
else
if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
#a:=a+To[2*p+Position(P,P[i])][j][2][1];
b:=b+To[2*p+Position(P,K[i])][j][2][1];
c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
#d:=d+To[2*p+Position(P,K[i])][Position(P,K[j])][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ (b+c)/2, p+j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ (b+c)/2, p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*(b+c)/2, j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(b+c)/2, Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), j,[ -1*(-b-c)/2, p+Position(P,K[j]) ]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), Position(P,K[j]),[ (-b-c)/2, p+j]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+j,[ (-b-c)/2, Position(P,K[j] )]);
SetEntrySCTable( TT, 2*p+Position(P,K[i]), p+Position(P,K[j]),[ -1*(-b-c)/2, j]) ;
fi;
fi;
else
if ( Position(P,K[j]) = Position(P,P[j])) then
a:=0;
b:=0;
c:=0;
d:=0;
if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
a:=a+To[2*p+Position(P,P[i])][j][2][1];
c:=c+To[2*p+Position(P,K[i])][j][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ (a+c), p+j]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*(a+c), j ]);
else
a:=a+To[2*p+Position(P,P[i])][j][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ a, p+j]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*a, j ]);
fi;
else
if not ( IsEmpty(To[2*p+Position(P,K[i])][j][2])=true ) then
c:=c+To[2*p+Position(P,K[i])][j][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ c, p+j]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*c, j ]);
fi;
fi;
fi;
fi;
else
if (Position(P,K[i]) = i) then #permutazione solo sugli h, quindi mi bastano i primi s
if ( Position(P,K[j]) > Position(P,P[j])) then
a:=0;
b:=0;
c:=0;
d:=0;
if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
if not ( IsEmpty(To[2*p+Position(P,P[i])][Position(P,K[j])][2])=true ) then
a:=a+To[2*p+Position(P,P[i])][j][2][1];
c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ (a+c), p+j]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ (a+c), p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*(a+c), j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*(a+c), Position(P,K[j])]);
else
a:=a+To[2*p+Position(P,P[i])][j][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ a, p+j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ a, p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*a, j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*a, Position(P,K[j])]);
fi;
else
if not ( IsEmpty(To[2*p+Position(P,P[i])][Position(P,K[j])][2]) =true ) then
c:=c+To[2*p+Position(P,P[i])][Position(P,K[j])][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[ c, p+j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), Position(P,K[j]),[ c, p+Position(P,K[j])]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[ -1*c, j ]);
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+Position(P,K[j]),[ -1*c, Position(P,K[j])]);
fi;
fi;
else
if ( Position(P,K[j]) = Position(P,P[j])) then
a:=0;
if not ( IsEmpty(To[2*p+Position(P,P[i])][j][2]) =true) then
a:=a+To[2*p+Position(P,P[i])][j][2][1];
SetEntrySCTable( TT, 2*p+Position(P,P[i]), j,[2*a, p+j] );
SetEntrySCTable( TT, 2*p+Position(P,P[i]), p+j,[-2*a, j] );
fi;
fi;
fi;
fi;
fi;
od;
od;
#######################################################################################################################################
#####################################################################################################################################
#sistemiamo i prodotti [X,Y] con indici uguali
for i in [1..p] do #alpha varia in P
if ( Position(P,K[i]) > Position(P, P[i]) ) then #alpha <phi_alpha
KK1:=[]; #++ nessun problema
KK2:=[]; #+- nessun problema
KK3:=[]; #-+ occhio ai prodotti misti
KK4:=[]; #-- occhio ai prodotti misti
if (t[i]=1) then
if (P[i]+K[i] in P) then
if not ( IsEmpty( To[i][Position(P,K[i])][2] )= true ) then
if ( t[Position(P, P[i]+K[i])] = 1 ) then
if not ( (+1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1]) = 0 ) then
Add(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
Add(KK1, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione di j nella nuova base
Add(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
Add(KK4, p+Position(P,P[i]+K[i]));
fi;
else
if not ( (-1*To[i][Position(P, K[i])][2][1]+1*To[Position(P, K[i])][i][2][1]) = 0 ) then
Add(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
Add(KK2, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione di j nella nuova base
Add(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
Add(KK3, p+Position(P,P[i]+K[i]));
fi;
fi; fi; fi;
if not (IsEmpty( To[i][p+i][2]) = true) then
for j in [1..s] do
for k in [1..Length(To[i][p+i][2])] do
if (2*p+j = To[i][p+i][1][k] ) then
if ( OnPoints(j,h) > j ) then
if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
if not (To[i][p+i][2][k] = To[i][p+i][2][ww] ) then
Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK2, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione di j nella nuova base
Add(KK3, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK3, 2*p+Position(P,K[j]));
Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
else
Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
else
Add(KK1, 2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK2, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione di j nella nuova base
Add(KK3, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK3, 2*p+Position(P,K[j]));
Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
else
if ( OnPoints(j,h) = j ) then
Add(KK1, +2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
fi;
fi; od; od; fi;
else #t[i]=-1
if not (IsEmpty( To[i][p+i][2]) = true) then
for j in [1..s] do
for k in [1..Length(To[i][p+i][2])] do
if (2*p+j = To[i][p+i][1][k] ) then
if ( OnPoints(j,h) > j ) then
if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
if not (To[i][p+i][2][k] = To[i][p+i][2][ww] ) then
Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK2, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione di j nella nuova base
Add(KK3, -2*(To[i][p+i][2][k] - To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK3, 2*p+Position(P,K[j]));
Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
else
Add(KK1, +2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK4, -2*(To[i][p+i][2][k] + To[i][p+i][2][ww] )); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
else
Add(KK1, 2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK2, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK2, 2*p+Position(P,K[j])); #aggiungo la relativa posizione di j nella nuova base
Add(KK3, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK3, 2*p+Position(P,K[j]));
Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
else
if ( OnPoints(j,h) = j ) then
Add(KK1, +2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
Add(KK4, -2*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK4, 2*p+j);
fi;
fi;
fi; od; od; fi;
if (P[i]+K[i] in P) then
if not ( IsEmpty(To[i][Position(P,K[i])][2])= true ) then
if ( t[Position(P, P[i]+K[i])] = 1 ) then
if not ( (-1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1]) = 0 ) then
Add(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
Add(KK1, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione di j nella nuova base
Add(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
Add(KK4, p+Position(P,P[i]+K[i]));
fi;
else
if not ( (+1*To[i][Position(P, K[i])][2][1]-1*To[Position(P, K[i])][i][2][1]) = 0 ) then
Add(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
Add(KK2, p+Position(P,P[i]+K[i])); #aggiungo la relativa posizione di j nella nuova base
Add(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
Add(KK3, p+Position(P,P[i]+K[i]));
fi;
fi; fi; fi;
fi;
SetEntrySCTable( TT, i, p+i , KK1);
SetEntrySCTable( TT, i, p+Position(P,K[i]) , KK2);
SetEntrySCTable( TT, Position(P, K[i]), p+i , KK3);
SetEntrySCTable( TT, Position(P, K[i]), p+Position(P, K[i]) , KK4);
else
if ( Position(P,K[i]) = Position(P, P[i]) ) then #alpha <phi_alpha
KK1:=[]; #++ nessun problema
for j in [1..s] do
for k in [1..Length(To[i][p+i][2])] do
if (2*p+j = To[i][p+i][1][k] ) then
if (t[i]=1) then
if ( OnPoints(j,h) > j ) then
if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
Add(KK1, +4*(To[i][p+i][2][k] + To[i][p+i][2][ww] ) ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
else
Add(KK1, +4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
fi;
else
if ( OnPoints(j,h) = j ) then
Add(KK1, +4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
fi;
fi;
else #t[i]=-1
#KK1:=[]; #-- occhio ai prodotti misti
if ( OnPoints(j,h) > j ) then
if (2*p+OnPoints(j,h) in To[i][p+i][1] ) then
ww:=Position(To[i][p+i][1],2*p+OnPoints(j,h));
Add(KK1, -4*(To[i][p+i][2][k] + To[i][p+i][2][ww] ) ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j); #aggiungo la relativa posizione di j nella nuova base
else
Add(KK1, -4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j);
fi;
else
if ( OnPoints(j,h) = j ) then
Add(KK1, -4*To[i][p+i][2][k] ); #aggiungo il valore del prodotto relativo all'indice j
Add(KK1, 2*p+j);
fi;
fi;
fi;
fi;
od;
od;
SetEntrySCTable( TT, i, p+i , KK1);
fi;
fi;
od;
#####################################################################################################################
##############################################################################################################################################
#Prodotti [X,X] con indici differenti
for i in [1..p] do #variazione alpha per gli X
for j in [i+1..p] do #variazione beta >alpha per gli Y
if ( Position(P, K[i]) > Position(P,P[i]) ) then #alpha< phi_alpha (ragiono con gli X)
if ( p+Position(P, K[j]) > p+Position(P,P[j]) ) then # beta< phi_beta (ragiono con gli Y)
KK1:=[]; # i p+j
KK2:=[]; # i p+jbar
KK3:=[]; # ibar p+j
KK4:=[]; # ibar p+jbar
if (t[i]=1) then
if (t[j]=1) then
if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
fi;
else
if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P,K[j]+K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, K[j]+K[i]) );
fi;
fi;
fi;
fi; fi;
#######
############
###############
if (P[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
fi;
else
if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (P[i]+K[j] in P ) then
if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
fi;
else
if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
if (t[Position(P,K[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (K[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
fi;
else
if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
else
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-K[i]) );
Add(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);
Add(KK2, Position(P, K[j]-P[i]) );
Add(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);
Add(KK3, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-K[i]) );
else
Add(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);
Add(KK1, Position(P, P[j]-K[i]) );
Add(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);
Add(KK2, Position(P, K[j]-P[i]) );
Add(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);
Add(KK3, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-K[i]) );
fi;
fi;
fi;
fi; fi;
###########
##################
####################
else # ovvero t[j]=-1
###############
#####################
#########################
if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
fi;
else
if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P,K[j]+K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, K[j]+K[i]) );
fi;
fi;
fi;
fi; fi;
#######
############
###############
if (P[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
fi;
else
if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (P[i]+K[j] in P ) then
if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
fi;
else
if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
if (t[Position(P,K[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (K[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
fi;
else
if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
else
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-K[i]) );
Add(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);
Add(KK2, Position(P, K[j]-P[i]) );
Add(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);
Add(KK3, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-K[i]) );
else
Add(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);
Add(KK1, Position(P, P[j]-K[i]) );
Add(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);
Add(KK2, Position(P, K[j]-P[i]) );
Add(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);
Add(KK3, Position(P, K[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-K[i]) );
fi;
fi;
fi;
fi; fi;
fi;
##############
#####################
########################à
else #t[i]=-1
if (t[j]=1) then
###############
#####################
#########################
if (P[i]+P[j] in P ) then #qui so che aplha+beta < phi_aplha+phi_beta quindi sono nel caso sicuro
if not (IsEmpty(To[Position(P, P[i])][Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]+K[i]) > p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
fi;
else
if (p+Position(P,K[j]+K[i]) = p+Position(P,P[j]+P[i])) then
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+P[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+K[j]) );
Add(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);
Add(KK3, Position(P, K[i]+K[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P,K[j]+K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]+K[i]) );
Add(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);
Add(KK2, Position(P, P[i]+P[j]) );
Add(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);
Add(KK3, Position(P, P[i]+P[j]) );
Add(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);
Add(KK4, Position(P, K[j]+K[i]) );
fi;
fi;
fi;
fi; fi;
#######
############
###############
if (P[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,P[j])][2])=true) then
if (p+Position(P,K[j]-K[i]) > p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
fi;
else
if (p+Position(P,K[j]-K[i]) = p+Position(P,P[j]-P[i])) then
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, P[j]-P[i]) );
else
Add(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);
Add(KK2, Position(P, K[j]-K[i]) );
Add(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);
Add(KK3, Position(P, K[j]-K[i]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-K[i]) );
Add(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);
Add(KK2, Position(P, P[j]-P[i]) );
Add(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);
Add(KK3, Position(P, P[j]-P[i]) );
Add(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);
Add(KK4, Position(P, K[j]-K[i]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (P[i]+K[j] in P ) then
if not (IsEmpty(To[Position(P, P[i])][Position(P,K[j])][2])=true) then
if (p+Position(P,K[i]+P[j]) > p+Position(P,P[i]+K[j])) then
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
fi;
else
if (p+Position(P,K[i]+P[j]) = p+Position(P,P[i]+K[j])) then
if (t[Position(P,K[j]+P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, P[i]+K[j]) );
else
Add(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);
Add(KK2, Position(P, K[i]+P[j]) );
Add(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);
Add(KK3, Position(P, K[i]+P[j]) );
fi;
else #(p+Position(P,K[j]+K[i]) < p+Position(P,P[j]+P[i]))
if (t[Position(P,P[i]+K[j] )] = 1) then
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
else
Add(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);
Add(KK1, Position(P, K[i]+P[j]) );
Add(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);
Add(KK2, Position(P, P[i]+K[j]) );
Add(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);
Add(KK3, Position(P, P[i]+K[j]) );
Add(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);
Add(KK4, Position(P, K[i]+P[j]) );
fi;
fi;
fi;
fi; fi;
######
##########
#############
if (K[j]-P[i] in P ) then
if not (IsEmpty(To[Position(P, P[i])][p+Position(P,K[j])][2])=true) then
if (p+Position(P,P[j]-K[i]) > p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
else
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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);
Add(KK2, Position(P, P[j]-K[i]) );
Add(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);
Add(KK3, Position(P, P[j]-K[i]) );
Add(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);
Add(KK4, Position(P, K[j]-P[i]) );
fi;
else
if (p+Position(P,P[j]-K[i]) = p+Position(P,K[j]-P[i])) then
if (t[Position(P,K[j]-P[i] )] = 1) then
Add(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);
Add(KK1, Position(P, K[j]-P[i]) );
Add(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])][ | |