Open ThomasBreuer opened 1 year ago
This is likely a relic from times when a) All nice monomorphism were to permutation groups and b) PreImage methods for action homomorphisms tended to find an element acting in the right way. I suspect the implication can be killed by now.
Thanks, @ahulpke.
Thus we can decide that GroupHomomorphismByFunction
sets IsPreimagesByAsGroupGeneralMappingByImages
only if the range is a permutation group. I will make some experiments what the consequences of such a change are (w.r.t. the GAP test suite).
Or we could be more "conservative", and keep GroupHomomorphismByFunction
setting IsPreimagesByAsGroupGeneralMappingByImages
in all cases except if the range is handled via a nice monomorphism.
Perhaps it makes sense to change also the setup for action homomorphisms; note that IsPreimagesByAsGroupGeneralMappingByImages
is implied by IsActionHomomorphism
.
(But I will not try this now.)
As far as I understand the setup, having a GroupHomomorphismByFunction
with known MappingGeneratorsImages
is at least as good as having its AsGroupGeneralMappingByImages
, thus it would be better to work without an auxiliary ByImages
mapping.
Suppose we have a bijective map
f: G -> H
that was created withGroupHomomorphismByFunction
, such thatH
is a group inIsHandledByNiceMonomorphism
. Then the function from the construction allows us to compute images, and we can compute preimages by composingn:= NiceMonomorphism( H )
with aGroupHomomorphismByImages
map that is defined by mapping the images of the generators ofG
under the composition off
withn
to the generators ofG
. (This works only if the image ofn
is really nice, for example ifn
is an action homomorphism, but let us assume that this is the case.)The available implementation in GAP does in principle support this, for example if
f
is an isomorphism defined by a function from a permutation group to a matrix group over a finite field. I do not understand why the result ofGroupHomomorphismByFunction
has always the filterIsPreimagesByAsGroupGeneralMappingByImages
; in the above situation, there is no need for computing an additionalAsGroupGeneralMappingByImages
map, the nice monomorphism ofH
can be used to compute the inverse off
without that. But this is not really a problem.However, if
f
is itself a nice monomorphism then the above mechanism does not work, because theGroupGeneralMappingByImagesNC
method that is expected to create the inverse as a composition callsTryNextMethod()
, in order to avoid recursion, and then one ends up in a generic method that wants to store lists of elements and images --if the groups are not very small then here one gets stuck.Here is an example.
A preliminary workaround in my situation is to reset the filter
IsNiceMonomorphism
until the inverse is known. Any hint for a proper solution is welcome.