# 7.43 SubnormalSeries

`SubnormalSeries( G, U )`

Let U be a subgroup of G, then `SubnormalSeries` returns a subnormal series <G> = G_1 > ... > G_n of groups such that U is contained in G_n and there exists no proper subgroup V between G_n and U which is normal in G_n.

G_n is equal to U if and only if U is subnormal in G.

Note that this function may not terminate if G is an infinite group.

```    gap> s4 := Group( (1,2,3,4), (1,2) );
Group( (1,2,3,4), (1,2) )
gap> c2 := Subgroup( s4, [ (1,2) ] );
Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2) ] )
gap> SubnormalSeries( s4, c2 );
[ Group( (1,2,3,4), (1,2) ) ]
gap> IsSubnormal( s4, c2 );
false
gap> c2 := Subgroup( s4, [ (1,2)(3,4) ] );
Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2)(3,4) ] )
gap> SubnormalSeries( s4, c2 );
[ Group( (1,2,3,4), (1,2) ), Subgroup( Group( (1,2,3,4), (1,2) ),
[ (1,2)(3,4), (1,3)(2,4) ] ),
Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2)(3,4) ] ) ]
gap> IsSubnormal( s4, c2 );
true ```

The default function `GroupOps.SubnormalSeries` constructs the subnormal series as follows. G_1 = G and G_{i+1} is set to the normal closure (see NormalClosure) of U under G_i. The length of the series is n, where n = max{i; G_i > G_{i+1}}.

GAP 3.4.4
April 1997