GAP:OneIsomorphicToGroup
This article is about a GAP function.
This GAP function takes as input a group. See more functions like this.
Definition
Function type
The function takes as input a finite group and outputs a list of finite group.
Behavior
The function outputs all finite groups (up to isomorphism of groups) that are 1-isomorphic to the input group.
Packages used
The function requires the Grape package.
Related functions
Method
Idea
The key idea is to use the fact that for finite groups, there are multiple equivalent definitions of 1-isomorphic. In particular:
- finite groups are 1-isomorphic iff their directed power graphs are isomorphic
- undirected power graph determines directed power graph for finite group
Code
DirectedPowerGraph := function(G)
local L,o,f;
o := Order(G);
L := AsList(Set(G));
f := function(x,y)
return(IsSubgroup(Group(L[x]),Group(L[y])));
end;;
return(Graph(TrivialSubgroup(SymmetricGroup(o)),[1..o],OnPoints,f,true));
end;;
OrderStatistics := function(G)
local L,D;
L := List(Set(G),Order);
D := DivisorsInt(Order(G));
return(List(D,x->Length(Filtered(L,y->x=y))));
end;;
OrderCumPowerStatistics := function(G)
local L,D,E;
D := DivisorsInt(Order(G));
L := List(D,a -> Set(List(Set(G),g -> g^a)));
return(List(L,A -> List(D,x->Length(Filtered(A,g -> Order(g) = x)))));
end;;
OrderCumRootStatistics := function(G)
local D;
D := DivisorsInt(Order(G));
return(SortedList(List(Set(G),x -> [Order(x),List(D,d -> Length((Filtered(Set(G),y->y^d = x))))])));
end;;
OneIsomorphicToGroup := function(G)
local d,o,op,ocr,L,L1,L2,L3,Gr;
d := Order(G);
o := OrderStatistics(G);
L := Filtered(AllSmallGroups(d),P -> OrderStatistics(P) = o);
op := OrderCumPowerStatistics(G);
L1 := Filtered(L,P -> OrderCumPowerStatistics(P) = op);
ocr := OrderCumRootStatistics(G);
L2 := Filtered(L1,P -> OrderCumRootStatistics(P) = ocr);
Gr := DirectedPowerGraph(G);
return(Filtered(L2,P -> not(GraphIsomorphism(Gr,DirectedPowerGraph(P)) = fail)));
end;;