There is included a short function for creating all nontrivial homomorphisms between two groups small enough, up to conjucacy in the target group.

Is there a nicer and more efficient way to do the same task in GAP?

May be MorClassLoop can do similar things, an example would be welcome.
If only factor groups isomorphic to a given target group are required, there is the function GQuotients, so far I know.

This question is somewhat related to the recent message of Michael Fridman about homomorphisms.

Thank you, Rudolf Zlabinger
AllHomomorphismsRepresentative:=function(fromgroup,togroup)


local 
nfromgroup,hfromgroup,ffromgroup,isgfromgrouptogroup,isgfromgrouptogroupp,homslist
;
nfromgroup:=NormalSubgroups(fromgroup);;
nfromgroup:=Filtered(nfromgroup,x->x<>fromgroup);;             # the trivial 
homomorphism is not returned

if nfromgroup = [] then return [[]]; fi;                       # the trivial 
homomorphism is not returned

ffromgroup:=List(nfromgroup,x->FactorGroup(fromgroup,x));;
hfromgroup:=List(nfromgroup,x->NaturalHomomorphismByNormalSubgroup(fromgroup,x));;
isgfromgrouptogroup:=List(ffromgroup,x->IsomorphicSubgroups(togroup,x));
isgfromgrouptogroupp:=Filtered([1..Length(isgfromgrouptogroup)],x->isgfromgrouptogroup[x]<>[]);

if isgfromgrouptogroupp = [] then return [[]]; fi;
isgfromgrouptogroup:=isgfromgrouptogroup{isgfromgrouptogroupp};
hfromgroup:=hfromgroup{isgfromgrouptogroupp};
homslist:=List([1..Length(hfromgroup)],x->hfromgroup[x]*isgfromgrouptogroup[x]);

return homslist;

end;
_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to