Dear Max and Alexander,

Thank you for useful information and insights. It is good to know that
it is not an error and how to deal with it if I need a different
effect.

Best,
Ignat
https://www.math.lsu.edu/~ignatsoroko/

On Fri, Jul 24, 2020 at 10:34 AM Hulpke,Alexander
<alexander.hul...@colostate.edu> wrote:
>
> Dear Forum, Dear Ignat Soroko,
>
> It is intended behavior, because (pseudo-)random elements are used. If you 
> need reproducable results you would have to store the random seed, as Max 
> Horn described.
>
> Currently, the default method for `IsomorphismPermGroup` for finitely 
> presented groups (that is, if such a homomorphism has not yet been stored) is 
> as follows:
>
> If the group does not yet know its `Size`, GAP takes subgroups generated by 
> random elements and tries to have a coset enumeration complete. If this works 
> (within the set parameters), it rewrites the presentation to the subgroup 
> (easy, since cyclic, and will give subgroup order) and calculates the group 
> order as product of subgroup index and subgroup order. It also has (from the 
> coset table) a permutation representation on the cosets, and can check 
> whether it is faithful.
>
> If the size is already known, or the permutation representation obtained this 
> way is not faithful or of too large degree, it tries coset representations on 
> subgroups generated b a few random elements, until it finds a faithful 
> permutation rep (which might be regular).
>
> Finally `SmnallerDegreePermutationRepresentation` (with option `cheap`) is 
> called to reduce the degree.
>
> The result thsu is heavily dependent on the random seed.For larger groups 
> this whole process also might be more memory intensive.
>
> What you can do to speed things up is to use `SetSize(Q, 2359296);` if Q does 
> not yet know its size.
>
> I have used other strategies in the past for finding permutation 
> representations. A good one is calling:
>
> l:=LowIndexSubgroups(Q,20); # or whatever index works well
> k:=Intersection(l);
> q:=DefiningQuotientHomomorphism(k);
>
> and to check whether `Size(Image(q))` is correct -- then q is faithful, and 
> you could store it with `SetIsomorphismPermGroup`.
>
> Even if q is not faithful, you could try to take a subgroup u of Image(q) of 
> moderate index (using permutation group tools) and then try whether
>
> sub:=LargerQuotientBySubgroupAbelianization(q,u);
>
> returns a subgroup (not fail) and if so set
>
> k:=Intersection(k,sub);
> q:=DefiningQuotientHomomorphism(k);
>
> and repeat.
>
> The problem with implementing this approach for a generic method is that it 
> can perform horribly badly for some particular cases, e.g. certain solvable 
> groups or Schur Covers, and I can't think of a good heuristic to decide a 
> priory if this alternate method is worth trying.
>
> Best,
>
>   Alexander Hulpke
>
> -- Colorado State University, Department of Mathematics,
> Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA
> email: hul...@colostate.edu,
> http://www.math.colostate.edu/~hulpke
>

_______________________________________________
Forum mailing list
Forum@gap-system.org
https://mail.gap-system.org/mailman/listinfo/forum

Reply via email to