Extract( tbl, reducibles, grammat )
Extract( tbl, reducibles, grammat, missing )
tries  to  find irreducible  characters by  drawing  conclusions out of a
given matrix grammat of scalar  products of the reducible characters in
the  list    reducibles,  which  are characters of     the table tbl.
Extract uses combinatorial and backtrack means.
Note: Extract works only with ordinary characters!
Extract may be accelerated by the specification of
           missing.
Extract returns a record extr with components solution and choice
where solution is   a  list [  M_1, ldots,  M_n  ] of  decomposition
matrices  that  satisfy the  equation [   M_i^tr cdot X   = Sublist(
reducibles, extr.choice[i] )  , ] for a  matrix X of irreducible
characters, and choice is a list of length  n whose entries are lists
of indices.
So each column stands for one of the reducible input characters, and each
row stands  for an   irreducible   character.  You can use    Decreased
Decreased to examine the solution for computable irreducibles.
    gap> s4 := CharTable( "Symmetric", 4 );;
    gap> y := [ [ 5, 1, 5, 2, 1 ], [ 2, 0, 2, 2, 0 ], [ 3, -1, 3, 0, -1 ],
    >  [ 6, 0, -2, 0, 0 ], [ 4, 0, 0, 1, 2 ] ];;
    gap> g := MatScalarProducts( s4, y, y );
    [ [ 6, 3, 2, 0, 2 ], [ 3, 2, 1, 0, 1 ], [ 2, 1, 2, 0, 0 ],
      [ 0, 0, 0, 2, 1 ], [ 2, 1, 0, 1, 2 ] ]
    gap> e:= Extract( s4, y, g, 5 );
    rec(
      solution :=
       [ [ [ 1, 1, 0, 0, 2 ], [ 1, 0, 1, 0, 1 ], [ 0, 1, 0, 1, 0 ],
              [ 0, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 0 ] ] ],
      choice := [ [ 2, 5, 3, 4, 1 ] ] )
    # continued in 'Decreased' ( see "Decreased" )
GAP 3.4.4