DeclareOperation("ProjToInjNak", [IsList]);
InstallMethod(ProjToInjNak, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L;
n:=Size(L);
temp1:=[];
Liste_d:=[];
for j in [1..n] do
for k in L do
r:=(j-k) mod n;
if r=0 then r:=n; fi;
if k>=L[r] then
Append(temp1,[k]);
fi;
od;
kk:=Minimum(temp1);
temp1:=[];
Append(Liste_d,[kk]);
od;
return(Liste_d);
end
);
#Example:
gap> ProjToInjNak([3,2,2,2,1]);
[ 1, 2, 3, 2, 2 ]
DeclareOperation("Specialpoints", [IsList]);
InstallMethod(Specialpoints, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L;
n:=Size(L);
T:=[1];
U:=Filtered([2..n],x->L[x]>L[x-1]);
Append(T,U);
return(T);
end
);
DeclareOperation("Associatedpointstospecialpoints", [IsList]);
InstallMethod(Associatedpointstospecialpoints, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L[1];
r:=L[2];
if r=1 then return([1..(list[1]-1)]);
else return([list[r-1]..(list[r]-1)]);
fi;
end
);
DeclareOperation("Specialpointsums", [IsList]);
InstallMethod(Specialpointsums, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L[1];
r:=L[2];
temp:=[];
for i in Associatedpointstospecialpoints([list,r]) do Append(temp,[r+i]);od;
return(temp);
end
);
DeclareOperation("Specialpointtest", [IsList]);
InstallMethod(Specialpointtest, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L[1];
r:=L[2];
listtwo:=ProjToInjNak(list);
U:=Specialpointsums([list,r]);
UU:=Filtered(U,x->((list[x]>=list[x-1]) or (listtwo[x-1]=listtwo[x+list[x]-1]-list[x])) );
if (Size(U)=Size(UU)) then
return(1);
else return(0);
fi;
end
);
DeclareOperation("Finaltest", [IsList]);
InstallMethod(Finaltest, "for a representation of a quiver", [IsList],0,function(L)
local list, n, temp1, Liste_d, j, i, k, r, kk;
list:=L;
listezwei:=Specialpoints(list);
temp3:=[];
for i in listezwei do Append(temp3,[Specialpointtest([list,i])]);od;
if (Sum(temp3)=Size(listezwei))
then return(1);
else return(0);
fi;
end
);
#Example:
gap> Finaltest([3,2,2,2,1]);
1