# 50.10 Reduced

`Reduced( tbl, constituents, reducibles )`
`Reduced( tbl, reducibles )`

returns a record with fields `remainders` and `irreducibles`, both lists: Let `rems` be the set of nonzero characters obtained from reducibles by subtraction of

[ sum_chiin `constituents` frac`ScalarProduct( tbl, chi, reducibles[i] )` `ScalarProduct( tbl, chi, constituents[j] )` cdot chi ]

from `reducibles[i]` in the first case or subtraction of

[ sum_j leq i frac`ScalarProduct( tbl, reducibles[j], reducibles[i] )` `ScalarProduct( tbl, reducibles[j], reducibles[j] )` cdot reducibles[j] ]

in the second case.

Let `irrs` be the list of irreducible characters in `rems`. `rems` is reduced with `irrs` and all found irreducibles until no new irreducibles are found. Then `irreducibles` is the set of all found irreducible characters, `remainders` is the set of all nonzero remainders.

If one knows that reducibles are ordinary characters of tbl and constituents are irreducible ones, ReducedOrdinary `ReducedOrdinary` may be faster.

Note that elements of `remainders` may be only virtual characters even if reducibles are ordinary characters.

```    gap> t:= CharTable( "A5" );;
gap> chars:= Sublist( t.irreducibles, [ 2 .. 4 ] );;
gap> chars:= Set( Tensored( chars, chars ) );;
gap> Reduced( t, chars );
rec(
remainders := [  ],
irreducibles :=
[ [ 1, 1, 1, 1, 1 ], [ 3, -1, 0, -E(5)-E(5)^4, -E(5)^2-E(5)^3 ],
[ 3, -1, 0, -E(5)^2-E(5)^3, -E(5)-E(5)^4 ], [ 4, 0, 1, -1, -1 ],
[ 5, 1, -1, 0, 0 ] ] )```

GAP 3.4.4
April 1997