# ClassFunction -- The class of all Class functions

## Description

A class function (or virtual character of a symmetric group S_n) is a function that is constant on the conjugacy classes of S_n. Class functions for S_n are in one to one correspondence with symmetric functions of degree n. The class functions corresponding to actual representations of S_n are called characters.

The character of the standard representation of S_3 is

 i1 : S = schurRing(QQ,s,3); i2 : classFunction(s_{2,1}) o2 = ClassFunction{{1, 1, 1} => 2} {3} => -1 o2 : ClassFunction

The character of the sign representation of S_5 is

 i3 : S = schurRing(QQ,s,5); i4 : classFunction(s_{1,1,1,1,1}) o4 = ClassFunction{{1, 1, 1, 1, 1} => 1} {2, 1, 1, 1} => -1 {2, 2, 1} => 1 {3, 1, 1} => 1 {3, 2} => -1 {4, 1} => -1 {5} => 1 o4 : ClassFunction

We can go back and forth between class functions and symmetric functions.

 i5 : R = symmetricRing(QQ,3); i6 : cF = new ClassFunction from {{1,1,1} => 2, {3} => -1}; i7 : sF = symmetricFunction(cF,R) 1 3 1 o7 = -p - -p 3 1 3 3 o7 : R i8 : toS sF o8 = s 2,1 o8 : schurRing (QQ, s, 3) i9 : classFunction sF o9 = ClassFunction{{1, 1, 1} => 2} {3} => -1 o9 : ClassFunction

We can add, subtract, multiply, scale class functions:

 i10 : S = schurRing(QQ,s,4); i11 : c1 = classFunction(S_{2,1,1}-S_{4}); i12 : c2 = classFunction(S_{3,1}); i13 : c1 + c2 o13 = ClassFunction{{1, 1, 1, 1} => 5} {2, 1, 1} => -1 {2, 2} => -3 {3, 1} => -1 {4} => -1 o13 : ClassFunction i14 : c1 * c2 o14 = ClassFunction{{1, 1, 1, 1} => 6} {2, 1, 1} => -2 {2, 2} => 2 o14 : ClassFunction i15 : 3*c1 - c2*2 o15 = ClassFunction{{2, 1, 1} => -8} {2, 2} => -4 {3, 1} => -3 {4} => 2 o15 : ClassFunction

## For the programmer

The object ClassFunction is a type, with ancestor classes HashTable < Thing.