GAP:IsTransitiveInAllSubgroupsOfGroup

Function type
The function takes as input a group and a subgroup property and outputs a boolean variable (true/false).

Behavior
The function takes as input a group $$G$$ and a property $$p$$ and behaves as follows:


 * If whenever $$H \le K \le L \le G$$ such that $$H$$ has property $$p$$ in $$K$$ and $$K$$ has property $$p$$ in $$L$$, $$H$$ has property $$p$$ in $$L$$, then GAP returns true.
 * If GAP finds a counterexample, it returns false.

Related functions

 * GAP:IsTransitiveWithBigGroup

Code
ConjugacyClassSubgroupReps := function(G) return(List(ConjugacyClassesSubgroups(G),Representative)); end;;

ConjugacyClassSubgroupRepsByProperty := function(G,p) return(Filtered(ConjugacyClassSubgroupReps(G), H -> p(G,H))); end;;

IsTransitiveWithBigGroup := function(G,p) return(ForAll(ConjugacyClassSubgroupRepsByProperty(G,p),H -> ForAll(ConjugacyClassSubgroupRepsByProperty(H,p), K -> p(G,K)))); end;;

IsTransitiveInAllSubgroupsOfGroup := function(G,p) return(ForAll(ConjugacyClassSubgroupReps(G),L -> IsTransitiveWithBigGroup(L,p))); end;;