# 50.38 Extract

`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!

missing:
number of characters missing to complete the tbl perhaps `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
April 1997