inform("Testing Elementary Functions.", 2);

// Group Order.
inform("Order.", 3);

w( bOrder(s12), "order: gp: s12.");
w( bOrder(int12), "order: gp: int12.");
w( bOrder(p12n4), "order: gp: p12n4.");

// Index.
inform("Index.", 3);

w( cIndex(t12, ir12), "index: ir12.");
w( dIndex(t12, g12), "index: g12.");
w( eIndex(p16, g16), "index: g16.");
w( cIndex(a437, sub<a437 | a437.1 * a437.2>), "index: a437.");
w( dIndex(p8n4, sub<p8n4 | p8n4a ^ p8n4b>), "index: p8n4.");
w( eIndex(s16, sub<s16 | s16a, s16d>), "index: s16.");

// Transversal.
inform("Transversal.", 3);

w( cTranUnion(a437, sub<a437 | a437.1^a437.3,a437.2>), "tnsvl: a437.");
w( cTranOrder(ir12, sub<ir12 | ir12a>), "tnsvl: ir12.");
w( cTranUnion(a4, sub<a4 | a4.2^a4.1>), "tnsvl: a4.");
w( cTranOrder(ra4, sub<ra4 | ra4.1>), "tnsvl: ra4.");

// Eltset.
inform("ElementSet.", 3);

w( bEltSet(s16, sub<s16 | s16d>), "eltset: s16.");
w( bEltSet(l303, sub<l303 | l303c,l303d>), "eltset: l303.");
w( bEltSet(r12, r12), "eltset: r12.");

// Generators.
inform("Generators.", 3);

w( cGens(s12), "gens: s12.");
w( eGens(s12), "gens: s12.");
w( cNGens(p11n6), "ngens: p11n6.");
w( cGens(int12), "gens: int12.");
w( eGens(int12), "gens: int12.");
w( cNGens(a10), "ngens: a10."  );

// Ranelt, IsSatisfied, Relations.
inform("Random, IsSatisfied, Relations.", 3);

w( bRanElt(im24), "ranelt: im24.");
w( bRanElt(p8n5), "ranelt: p8n5.");
/*
w( bRelSat(ra4), "ranelt: ra4.");
w( bRelSat(d16),  "ranelt: d16.");
*/

// Eltseq,seqelt.
inform("Eltseq, Seqelt.", 3);

w( [1 .. Degree(t12)] ^ t12!(1,2,5)(3,7)(4,8,11,6) ne
	  [2,5,7,8,1,4,3,11,9,10,6,12], "eltseq: t12.");
w( t7![3,2,6,5,1,4,7] ne t7!(1,3,6,4,5), "seqelt: t7.");

// Cosact Homomorphism.
inform("Coset Homomorphism.", 3);

w( dCosKer(a4, sub<a4 | Id(a4)>), "cos hm: a4.");
f := CosetAction(a4, sub<a4 | Id(a4)>);
w( cHom(a4, f), "cos hm: im: a4.");
w( cKer(a4, f), "cos hm: ker: a4.");
w( dCosKer(p16,g16), "cos hm: p16.");
f := CosetAction(p16, g16);
w( bHom(p16, f), "cos hm: im: p16.");
w( cKer(p16, f), "cos hm: ker: p16.");
f := CosetAction(r12, sub<r12 | Generators(r12)>);
w( cHom(r12, f), "cos hm: im: r12.");
w( cKer(r12, f), "cos hm: ker: r12.");
f := CosetAction(t7, sub<t7 | (1,2),(1,2,3,4,5,6)>);
w( dCosKer(t7, sub<t7 | (1,2),(1,2,3,4,5,6)>), "cos hm: t7.");
w( bHom(t7,f), "cos hm: im: t7.");
w( cKer(t7,f), "cos hm: ker: t7.");
delete f;

