/*
Soluble quotient test.
AKS 13/07/99.
*/


ClearVerbose();

/* Soluble of order 150 */
 
G<a, b, c, d> := Group< a, b, c, d |  a^2,b^3,a^(-1)*b*a=b^2,c^a=c^(-1),
		      d^a=c*d,c^5,d^5,c^b=d,d^b=c^(-1)*d^(-1),c*d=d*c >;
S := SolubleQuotient(G, 0);
"Order", #S;
assert #S eq 150;

/* Soluble of order 55296 */
 
G<a, b, d, e> := Group< a, b, d, e | 
                    a^2, b^8,
                    a*b^-1*a*b*a*b*a*b^-1*a*b*a*b^-1*a*b*a*b^-1*a*
                      b*a*b^-1*a*b*a*b^-1*a*b*a*b^-1*a*b^2*a*b^-2,
                    a*b*a*b^-1*e^-1,
                    b * e * b^-1 * d^-1,
                    e^12,
                    e^-6 * a^-1 * e^6 * a,
                    e^-6 * b^-1 * e^6 * b>;
 
S := SolubleQuotient(G, 55296);
"Order", #S;
assert #S eq 55296;


/* Soluble quoutient of order 3456 */
 
G := quo<
    FreeGroup(2) |
    $.1^2 = Id($),
    $.2^-3 = Id($),
    ($.1 * $.2^-1)^12 = Id($),
    ($.1 * $.2^-1 * $.1 * $.2^-1 * $.1 * $.2 * $.1 * $.2)^3 = Id($),
    ($.1 * $.2 * $.1 * $.2^-1)^6 = Id($) >;
 
S := SolubleQuotient(G, 0);
"Order", #S;
assert #S eq 3456;

/* Soluble quotient of order 20736 */
 
G := quo<
    FreeGroup(2) |
    $.2^-3 = Id($),
    $.1^8 = Id($),
    $.1^-1 * $.2^-1 * $.1^-2 * $.2^-1 * $.1^2 * $.2 * $.1^2 * $.2 * $.1^-1 = 
    Id($),
    ($.1, $.2)^3 = Id($),
    $.1^-1 * $.2 * $.1 * $.2^-1 * $.1^-1 * $.2^-1 * $.1^2 * $.2 * $.1^-1 * $.2 *
 
    $.1 * $.2^-1 * $.1^-1 = Id($),
    $.1^-1 * $.2^-1 * $.1^2 * $.2^-1 * $.1^4 * $.2 * $.1^-2 * $.2 * $.1^-3 = 
    Id($),
    $.1^-1 * $.2^-1 * $.1^-1 * $.2^-1 * $.1^-1 * $.2^-1 * $.1^-1 * $.2^-1 * $.1*
    $.2 * $.1 * $.2 * $.1 * $.2 * $.1 * $.2 = Id($),
    $.2 * $.1^-1 * $.2 * $.1^-1 * $.2^-1 * $.1^-1 * $.2^-1 * $.1^3 * $.2^-1 * 
    $.1^-1 * $.2^-1 * $.1^-1 * $.2 * $.1^-1 * $.2 * $.1^-1 = Id($) >;
 
S := SolubleQuotient(G, 0: Print := 1);
"Order", #S;
assert #S eq 20736;
