/* List of functions available:

   getInsolubleMatrixGroupsOfDimThreeFF(F, isGL, isByConj)
   getInsolubleMatrixGroupsOfDimThree(Fpa, isGL)
   getInsolubleMatrixGroupsOfDimThreeOverGL(Fpa,...)
   getInsolubleMatrixGroupsOfDimThreeOverSL(Fpa,...)

******************************************************************************/

// FF = finite field

load "deg3_insoluble_nonmodular.m";
load "deg3_insoluble_modular.m";

getInsolubleMatrixGroupsOfDimThreeFF:= function(F, isGL, isByConj)

	return getInsolubleModularMatrixGroupsOfDimThreeFF(F, isGL, isByConj) cat
               getInsolubleNonmodularMatrixGroupsOfDimThreeFF(F, isGL);

end function;

getInsolubleMatrixGroupsOfDimThree:= function(Fpa, isGL)

	local F;

	if #Fpa eq 1 then
		if Category(Fpa[1]) eq RngIntElt then
			try
				F:= GF(Fpa[1]);
			catch e
				return "Error: You must enter a valid finite field or prime power.";
			end try;
		else
			F:= Fpa[1];
		end if;
	elif #Fpa eq 2 then
		try
			F:= GF(Fpa[1]^Fpa[2]);
		catch e
			return "Error: You must enter a valid finite field or prime power.";
		end try;
	else
		return "Error: Only 1 or 2 arguments expected.";
	end if;

	return getInsolubleMatrixGroupsOfDimThreeFF(F, isGL, true);
	
end function;

getInsolubleMatrixGroupsOfDimThreeOverGL:= function(Fpa,...)
	return getInsolubleMatrixGroupsOfDimThree(Fpa, true);
end function;

getInsolubleMatrixGroupsOfDimThreeOverSL:= function(Fpa,...)
	return getInsolubleMatrixGroupsOfDimThree(Fpa, false);
end function;

