PermChars( tbl ) 
PermChars( tbl, degree ) 
PermChars( tbl, arec )
GAP provides several algorithms to determine permutation character candidates from a given character table. The algorithm is selected from the choice of the record fields of the optional argument record arec. The user is encouraged to try different approaches especially if one choice fails to come to an end.
Regardless of the algorithm used in a special case, PermChars returns a
list of all permutation character candidates with  the properties given
in arec.  There is no guarantee  that  a character of this  list  is in
fact a  permutation character. But an empty list always means there is no
permutation character with these properties (e.g. of a certain degree).
In  the  first  form  PermChars(  tbl  )  returns  the  list  of  all
permutation characters of the group with character table tbl. This list
might be  rather long  for big groups, and it might take  much time.  The
algorithm depends on a preprocessing step, where the inequalities arising
from the  condition  pi(g)  leq  0 are transformed  into  a system of
inequalities that guides the search (see Inequalities).
    gap> m11:= CharTable("M11");;
    gap> PermChars(m11);;     # will return the list of 39 permutation
                              # character candidates of $M11$. 
There are two different search strategies for  this algorithm. One simply
constructs all characters with nonnegative values and then tests for each
such character whether its degree is a divisor of the order of the group.
This is the default.  The other strategy uses the inequalities to predict
if  it is  possible  to  find  a character  of  a  certain degree in  the
currently searched part  of the search  tree. To choose this strategy set
the field mode of arec to "preview" and the field degree to the
degree (or a list of degrees which might be all divisors  of the order of
the group) you  want to look for.  The  record field ineq can  take the
inequalities from Inequalities if they are needed more than once.
In the second form PermChars( tbl, degree ) returns the list of all
permutation  characters  of  degree  degree.    For   that  purpose   a
preprocessing  step  is  performed  where  essentially  the  rationalized
character table is inverted in order to determine boundary points for the
simplex in which  the permutation character candidates of a given  degree
must lie (see  PermBounds).   Note that inverting big  integer matrices
needs  a  lot of time and space.  So this preprocessing is  restricted to
groups with less than 100 classes, say.
    gap> PermChars(m11, 220);
    [ [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ],
      [ 220, 12, 4, 4, 0, 0, 0, 0, 0, 0 ],
      [ 220, 20, 4, 0, 0, 2, 0, 0, 0, 0 ] ] 
In the third form PermChars( tbl, arec  ) returns  the list of  all
permutation  characters which have the properties given  in  the argument
record  arec. If arec contains a  degree in the record field degree
then PermChars will behave exactly as in the second form.
    gap> PermChars(m11, rec(degree:= 220));
    [ [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ],
      [ 220, 12, 4, 4, 0, 0, 0, 0, 0, 0 ],
      [ 220, 20, 4, 0, 0, 2, 0, 0, 0, 0 ] ] 
Alternatively arec may  have the  record  fields chars  and  torso.
arec.chars is  a list  of (in most cases  all) rational irreducible
characters   of  tbl  which  might  be  constituents  of  the  required
characters, and arec.torso is a list that  contains some known values
of the required characters at the right positions.
Note: At least the degree arec.torso[1]  must be an integer.   If
arec.chars does not contain  all  rational irreducible characters  of
G,  it may happen  that any scalar  product of  pi with  an  omitted
character is negative; there should be nontrivial reasons for excluding a
character that is known to be not a constituent of pi.
    gap> rat:= RationalizedMat(m11.irreducibles);;
    gap> PermChars(m11, rec(torso:= [220], chars:= rat));
    [ [ 220, 4, 4, 0, 0, 4, 0, 0, 0, 0 ],
      [ 220, 20, 4, 0, 0, 2, 0, 0, 0, 0 ],
      [ 220, 12, 4, 4, 0, 0, 0, 0, 0, 0 ] ]
    gap> PermChars(m11, rec(torso:= [220,,,,,2], chars:= rat));
    [ [ 220, 20, 4, 0, 0, 2, 0, 0, 0, 0 ] ] 
GAP 3.4.4