OneLibraryGroup( fun1, val1, fun2, val2, ... )
For each group library there is a example function. This function allows you to find one group from the library that has a given set of properties.
The name of the example functions always begins with One
and always
ends with Group
. Inbetween is a name that hints at the nature of the
group library. For example, the example function for the library of all
The Primitive Groups Library) is called OnePrimitiveGroup
, and the example function for the
library of all 2-groups of size at most 256 (see The 2-Groups Library)
is called OneTwoGroup
.
These functions take an arbitrary number of pairs of arguments. The first argument in such a pair is a function that can be applied to the groups in the library, and the second argument is either a single value that this function must return in order to have this group returned by the example function, or a list of such values.
For example
OnePrimitiveGroup( DegreeOperation, [10..15], Size, [1..100], IsAbelian, false );
should return one primitive group with degree between 10 and 15 and size size less than 100 that is not abelian.
Thus the OnePrimitiveGroup
behaves as if it was implemented by a
function similar to the one defined below, where PrimitiveGroupsList
is
a list of all primitive groups. Note, in the definition below we assume
for simplicity that OnePrimitiveGroup
accepts exactly 4 arguments. It
is of course obvious how to change this definition so that the function
would accept a variable number of arguments.
OnePrimitiveGroup := function ( fun1, val1, fun2, val2 ) local g, i; for i in [ 1 .. Length( PrimitiveGroupsList ) ] do g := PrimitiveGroupsList[i]; if fun1(g) = val1 or IsList(val1) and fun1(g) in val1 and fun2(g) = val2 or IsList(val2) and fun2(g) in val2 then return g; fi; od; return false; end;
Note that the real example functions are considerably more difficult, to improve the efficiency. Most important, each recognizes a certain set of About Group Libraries).
GAP 3.4.4