Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

O:=RingOfIntegers(L);

bas:=Basis(O);
lsp,hom:=KSpace(L,Rationals());
h:=hom^(-1);
n:=p;

c:=[];
for i in [1..p] do
c[i]:=[];
for j in [1..p] do
c[i][j]:=L!0;
end for;
end for;
c:=Matrix(c);

C:=[];
for k in [1..2*n] do
C[k]:=[];
for i in [1..p] do
for j in [1..p] do
C[k][(i-1)*n+j]:=c;
C[k][(i-1)*n+j][i][j]:=L!bas[k];
end for;
end for;
end for;

cyclic:=[];
cyclic[1]:=G[1];
for i in [2..p] do cyclic[i]:=sigma^(i-1); end for;
cocycle:=[];
cocycle[1]:=IdentityMatrix(L,p);
for k in [2..p] do
cocycle[k]:=cocycle[k-1]*g(cyclic[k-1],M);
end for;

B:=[];
for k in [1..2*n] do
for a in [1..n] do
for b in [1..n] do

Bm:=0;
for i in [1..p] do
Bm:=Bm+cocycle[i]*(g(cyclic[i],C[k][n*(a-1)+b])+g(cc*cyclic[i],C[k][n*(a-
1)+b]));
end for;

Bmat:=[];
for i in [1..n] do
Bmat[i]:=[];
for j in [1..n] do
Bmat[i][j]:=hom(Bm[i][j]);
end for;
end for;

B[n*(a-1)+b]:=[];
for t in [1..2*n] do
for i in [1..n] do
for j in [1..n] do
B[n*(a-1)+b][n^2*(t-1)+n*(i-1)+j]:=Bmat[i][j][t];
end for;
end for;
end for;

end for;
end for;
end for;

B:=Matrix(B);
Lat:=Lattice(B);
LatInt:=BasisDenominator(Lat)*Lat;
BL:=BasisMatrix(LatInt);
BL:=Transpose(BL);
SF,Pmat,Qmat:=SmithForm(BL);

Bmat:=[];
Bsp:=Basis(LatInt);

sfred:=BL*Qmat;
for i in [1..2*n^3] do
for j in [1..n^2] do sfred[i][j]:=Integers()!(sfred[i][j]/SF[j][j]); end for;
end for;

Lat2:=Lattice(Transpose(sfred));
Lat2:=LLL(Lat2);
Bsp:=Basis(Lat2);

for k in [1..n^2] do
Bmat[k]:=[];
for i in [1..n] do
Bmat[k][i]:=[];
for j in [1..n] do
Bmat[k][i][j]:=L!0;
for l in [1..2*n] do
Bmat[k][i][j]:=Bmat[k][i][j]+h(lsp.l)*Bsp[k][n^2*(l-1)+n*(i-1)+j];
end for;
end for;
end for;
end for;

B1:=[];
for i in [1..n^2] do B1[i]:=Matrix(Bmat[i]); end for;
Bmat:=B1;

rs:=[Random(-1,1): i in [1..n^2]];
Bc:=&+[rs[i]*Bmat[i]:i in [1..n^2]];

You might also like