GAP:OneIsomorphicToGroup

From Groupprops

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:

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;;