// For each of the following inputs run the  commands
// The funciton "q1Extension" and the procedure "OrbitDivisors" are defined in the file Skript.txt

G0:=sub<G|gv>;
H,e,Orb:=q1Extension(G0,gv); // constructing a bigger automorphism group
for w in Orb do OrbitDivisors(G,genus,G0,H,e,w); end for;



/* We are considering Hurwitz orbits (see also Script) of generating vectors for the following reason.
It is possible that:
1) 2 different generating vectors gv_1, gv_2 for G^0 <G  define non-isomorphic curves C1 and C2 of the same genus;
2) the groups H1, H2 we have to consider are equal (H1=H2=:H);
3) we cannot use the input data to distinguish between a generating vector for the covering C1-> C1/H=P^1 and a generating vector for the covering C2-> C2/H.

In this situation the g.v. w_1 for the first covering and the g.v. w_2 for the second covering
are in different Hurwitz orbit (since C1 and C2 are not isomorphic) of generating vectors of H of given type.
Whence considering OrbitDivisors(G,genus,q,G0,H,e,w_i) for i=1,2 we deal both cases simultaneously.

If one of the three conditions 1)-3) is not satisfied, then we have get only one orbit (this will be always the case for the following inputs).
*/


//-------------------------//-------------------------//-------------------------
//-------------------------//-------------------------//-------------------------
// CASE K^2=4, p_g=q=1
//-------------------------//-------------------------//-------------------------

// Input 1
G:=SmallGroup(48,38); genus:=13;
gv:= [ G.1 * G.5, G.2 * G.4, G.1 * G.2 * G.5^2, G.1 * G.2 * G.5^2 ];


// Intput 2
G:=SmallGroup(48,37); genus:=13;
gv:=[ G.4 * G.5^2, G.2 * G.4 * G.5, G.1 * G.2 * G.3 * G.4 * G.5, G.1 * G.2 * G.3 * G.4 * G.5 ];


//-------------------------//-------------------------//-------------------------
//-------------------------//-------------------------//-------------------------
// CASE K^2=2, p_g=q=1
//-------------------------//-------------------------//-------------------------

// Input 1
G:=SmallGroup(64, 153); genus:=17;
gv:=[ G.1 * G.2 * G.3 * G.4, G.1, G.1, G.1 * G.4 * G.5 ];


// Input 2
G:=SmallGroup(64, 150); genus:=17;
gv:=[ G.2 * G.3 * G.4 * G.6, G.2 * G.3 * G.4 * G.5, G.1 * G.2 * G.6, G.1 * G.2 * G.6 ];


// Input 3
G:=SmallGroup(64, 147); genus:=17;
gv:= [ G.2 * G.3 * G.4 * G.6, G.2 * G.3 * G.4 * G.5, G.1 * G.2 * G.6, G.1 * G.2 * G.6 ]; 


// Input 4
G:=SmallGroup(64, 128); genus:=17;
gv:=[ G.1 * G.2 * G.3 * G.4 * G.6, G.1, G.1 * G.4, G.1 * G.5 ];


// Input 5
G:=SmallGroup(64, 130); genus:=17;
gv:= [ G.4 * G.6, G.1 * G.2 * G.3 * G.6, G.1 * G.5 * G.6, G.1 * G.5 * G.6 ];


// Input 6
G:=SmallGroup(64, 134); genus:=17;
gv:=[ G.1 * G.2 * G.3 * G.6, G.5, G.1 * G.4, G.1 * G.4 * G.6 ] ;


// Input 7
G:=SmallGroup(64, 227); genus:=17;
gv:= [ G.2 * G.3 * G.6, G.1 * G.2 * G.4 * G.6, G.2 * G.5 * G.6, G.2 * G.5 ] ;


// Input 8
G:=SmallGroup(64, 227); genus:=17;
gv:= [ G.1 * G.4 * G.6, G.3 * G.6, G.3 * G.4 * G.5, G.3 * G.4 * G.5 * G.6 ] ;


// Input 9
G:=SmallGroup(64, 228); genus:=17;
gv:=[ G.1 * G.2 * G.3 * G.4 * G.5 * G.6, G.1 * G.2 * G.4, G.2 * G.5 * G.6, G.2 * G.5 ] ;


// Input 10
G:=SmallGroup(64, 234); genus:=17;
gv:=[ G.4 * G.5, G.2, G.3 * G.6, G.3 * G.5 * G.6 ] ;


// Input 11
G:=SmallGroup(64, 234); genus:=17;
gv:=[ G.1 * G.2 * G.4 * G.5, G.2 * G.5, G.1, G.1 ] ;


// Input 12
G:=SmallGroup(64, 236); genus:=17;
gv:= [ G.2 * G.3 * G.4 * G.5, G.2 * G.4 * G.5, G.3 * G.4 * G.5, G.3 * G.4 * G.5 ] ;


// Input 13
G:=SmallGroup(64, 219); genus:=17;
gv:=[ G.1 * G.3, G.1 * G.3 * G.4 * G.6, G.1 * G.2 * G.3 * G.5, G.1 * G.2 * G.3 ] ;

 
// Input 14
G:=SmallGroup(64, 221); genus:=17;
gv:=[ G.1 * G.3, G.1 * G.3 * G.4 * G.6, G.1 * G.2 * G.3 * G.5, G.1 * G.2 * G.3 ] ;

 
// Input 15
G:=SmallGroup(64, 213); genus:=17;
gv:= [ G.1 * G.2 * G.4 * G.6, G.1 * G.2 * G.3 * G.6, G.1 * G.2 * G.3 * G.4 * G.5 * G.6, G.1 * G.2 * G.3 * G.4 * G.5 ] ;


// Input 16
G:=SmallGroup(64, 206); genus:=17;
gv:=[ G.1 * G.2 * G.3 * G.4 * G.5, G.1 * G.2 * G.5 * G.6, G.1 * G.2 * G.4, G.1 * G.2 * G.4 * G.6 ] ;