///////////////////////////////////////////////
//
// Beauville surface with G=(Z/5)^2
//
///////////////////////////////////////////////


X:=rec<Surface|>;

Pic:=LatticeWithGram(Matrix(2,[0,1,1,0]):
                        CheckPositive := false); // allows neg-def

n:=[5:i in [1..4]];
Gt:=AbelianGroup(n);
G:=sub<Gt|Gt.1,Gt.2>;
T:=sub<Gt|Gt.3,Gt.4>;

X`Name:="Beauville Z5";

X`Big:=Gt;
X`Small:=G;
X`Tors:=T;

X`branch:=[Pic![1,0],Pic![1,0],Pic![1,0],
           Pic![0,1],Pic![0,1],Pic![0,1]];

X`phi:=[Gt.1,Gt.2,4*Gt.1+4*Gt.2,
        Gt.1+2*Gt.2+Gt.3,3*Gt.1+4*Gt.2+Gt.4,Gt.1+4*Gt.2+4*Gt.3+4*Gt.4];


X`branchtors:=[T!0,T![1,1],T![4,2],T!0,T![1,4],T![1,0]];

X`KY:=Pic![-2,-2];
X`K:=Pic![2,2];

lines:=#X`branch;

X`Lchi:=calculateLchi(X);

// find torsion twists...

X`Basis:=[[1,0,0,0,0,0],[0,0,0,1,0,0]];


findCoordinates(X,[0,0,0,1,0,0]);

X`Ktors:=T![3,3];

// effective divisors on Y
CC:=[[1,0],[0,1]];
EffY:=[];
for i in [0..5] do
   for j in [0..5] do
      Append(~EffY,Pic![i,j]);
   end for;
end for;
X`EffY:=EffY;

for i in [1..10] do
   LL:=[Pic![-1,0],Pic![i-1,-1],Pic![i-2,-1]];
   Excl:=findExceptional(X,LL);
end for;

LL:=[Pic![0,-1],Pic![-1,-1],Pic![-1,-2]]; 
Excl:=findExceptional(X,LL);

extendedquiver(X,LL,Excl[1]);


LL:=[Pic![-1,0], Pic![0,-1], Pic![-1,-1]]; // I1
LL:=[Pic![1,-1], Pic![0,-1], Pic![-1,-2]]; // IV1
LL:=[Pic![-1,0], Pic![-2,-1], Pic![-3,-1]]; // I-1
LL:=[Pic![-1,-1], Pic![-2,-1], Pic![-1,-2]]; // IV-1
LL:=[Pic![0,-1], Pic![-1,-1], Pic![-1,-2]]; // II0
LL:=[Pic![-1,0], Pic![-1,-1], Pic![-2,-1]]; // I0