Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  forms.gi   Sprache: unbekannt

 
###########################################################################
#
# 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])][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 #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);
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge