IsVirtualCharacter( obj )
returns true if obj is a virtual character, and false otherwise.
For a class function obj that does not know whether it is a virtual
character, the scalar products with all irreducible characters of the
source of obj are computed. If they are all integral then
obj is turned into a virtual character record.
gap> psi:= irr[3] - irr[1];
VirtualCharacter( S4, [ 1, 1, -2, -1, -1 ] )
gap> cf:= ClassFunction( S4, [ 1, 1, -2, -1, -1 ] );
ClassFunction( S4, [ 1, 1, -2, -1, -1 ] )
gap> IsVirtualCharacter( cf );
true
gap> IsCharacter( cf );
false
gap> cf;
VirtualCharacter( S4, [ 1, 1, -2, -1, -1 ] )
GAP 3.4.4