FUNCTION:  Restrict - Restrict characters to Reflection subgroups
CALLING SEQUENCE:  Restrict(f,J,R);,    
PARAMETERS:  R = a root system data Structure
             J = a list of roots forming a Base for a subsystem of R, or a
                   list of integers in the range 1..n, where n=Rank(R)
             f = a list representing a class function on W(R)
SYNOPSIS:   
  A root subsystem R_J of R and the corresponding Reflection subgroup W(R_J)
  of W(R) can be specified in either of two ways: by a list of roots of R
  that form a Base for R_J, or by a list of integers in the range 1..n
  (n=Rank(R)), indicating a Base for R_J formed out of a subset of Base(R).
  A character or class function on W(R_J) is represented as a list of
  values [a_1,...,a_l], where a_i is the value of the function on an element
  in the i-th conjugacy class of W(R_J). The ordering of the conjugacy
  classes is the same as the ordering used by the functions ClassRep,
  ClassSize, Cprod and IrrChars for the group specified by Base(R_J).
  Class functions on W(R) are represented similarly. In particular, if f is
  a class function, f[1] is the value of f at the identity element (i.e.,
  the degree of f, if f is a character).
  If J is a specification of a root subsystem R_J as above and f is a
  class function on W(R), Restrict(f,J,R) returns the class function on
  W(R_J) obtained by Restricting f.
  For a description of root system data Structures, see Coxeter[Structure].
EXAMPLES:   ,  f:=[$1..nops(ClassRep(C3))];
  Restrict(f,[1,2],C3);                    yields        [1,4,2,6,7]
  S:=Base(C3); r:=HighestRoot(C3);
  Restrict(f,[S[1],S[2],-r],C3);           yields   [1,4,4,6,2,5,6,8,7,9]
SEE ALSO:  Base, ClassRep, ClassSize, Cprod, Induce, IrrChars, Rank
