CharTableSSGroup( G )
CharTableSSGroup returns  the  character  table  of  the  supersolvable
ag-group  G  and   stores   it   in  G.charTable.  If  G  is  not
supersolvable  not all irreducible  characters migth be calculated  and a
warning will  be  printed  out. The algorithm bases  on Con90a and
Con90b.
All the characters calculated are monomial, so they are the  induced of a
linear  character of  some  subgroup  of G.  For  every  character  the
subgroup  it is induced from and the  kernel the linear character has are
written    down     in    t.irredinfo[i].inducedFrom.subgroup     and
t.irredinfo[i].inducedFrom.kernel.
    gap> t:= CharTableSSGroup( SolvableGroup( 8 , 5 ) );;
    gap> PrintCharTable( t );
    rec( size := 8, classes := [ 1, 1, 2, 2, 2 ], powermap :=
    [ , [ 1, 1, 2, 2, 2 ]
     ], operations := CharTableOps, group := Q8, irreducibles :=
    [ [ 1, 1, 1, 1, 1 ], [ 1, 1, 1, -1, -1 ], [ 1, 1, -1, 1, -1 ],
      [ 1, 1, -1, -1, 1 ], [ 2, -2, 0, 0, 0 ] ], orders :=
    [ 1, 2, 4, 4, 4 ], irredinfo := [ rec(
          inducedFrom := rec(
              subgroup := Q8,
              kernel := Q8 ) ), rec(
          inducedFrom := rec(
              subgroup := Q8,
              kernel := Subgroup( Q8, [ b, c ] ) ) ), rec(
          inducedFrom := rec(
              subgroup := Q8,
              kernel := Subgroup( Q8, [ a, c ] ) ) ), rec(
          inducedFrom := rec(
              subgroup := Q8,
              kernel := Subgroup( Q8, [ a*b, c ] ) ) ), rec(
          inducedFrom := rec(
              subgroup := Subgroup( Q8, [ b, c ] ),
              kernel := Subgroup( Q8, [  ] ) ) ) ], order :=
    8, centralizers := [ 8, 8, 4, 4, 4
     ], identifier := "Q8", name := "Q8" )
GAP 3.4.4