Example 4.9: Tetrahedral group 

Linear Representation & SAB 

> Rep := GroupTh[linearAction](3); -1; Generators = Rep[7], Rep[23], Rep[19]; 1; Irr := GroupTh[irredRepresentation](); -1; `Dimensions of Irreducible Representations` = map(proc (l) options operator, a...
Rep := GroupTh[linearAction](3); -1; Generators = Rep[7], Rep[23], Rep[19]; 1; Irr := GroupTh[irredRepresentation](); -1; `Dimensions of Irreducible Representations` = map(proc (l) options operator, a...
Rep := GroupTh[linearAction](3); -1; Generators = Rep[7], Rep[23], Rep[19]; 1; Irr := GroupTh[irredRepresentation](); -1; `Dimensions of Irreducible Representations` = map(proc (l) options operator, a...
 

 

Typesetting:-mprintslash([Generators = Matrix([[Typesetting:-mn(
`Dimensions of Irreducible Representations` = [[1, 1, 2, 3, 3], []] (1.4.1.1)
 

Lists with symmetry adapted basis grouped by degree for the polynomial and polynomials maps*(See Symmetry in Multivariate Ideal Interpolation Section 5.3).
These bases are passed as parameters to the SymmetryAdaptedHBasis method;
 

>    tim := time():
SymmetryAdaptedPolynomialList := [seq(SAPolynomialBasis(Rep, Irr, i .. i)[1], i=0..7)]:
   time() - tim;
`Multiplicities within a degree` = [seq(map(p -> nops(p[1]), SymmetryAdaptedPolynomialList[i + 1]), i=0..7)];
    tim := time():
SymmetryAdaptedPolynomialMapList := SAPolynomialMapCollection(Rep, Irr, 0..4):
    time() - tim;
 

 

 

4.500
`Multiplicities within a degree` = [[1, 0, 0, 0, 0], [0, 0, 0, 1, 0], [1, 0, 1, 1, 0], [1, 0, 0, 2, 1], [2, 0, 2, 2, 1], [1, 0, 1, 4, 2], [3, 1, 3, 4, 2], [2, 0, 2, 6, 4]]
`Multiplicities within a degree` = [[1, 0, 0, 0, 0], [0, 0, 0, 1, 0], [1, 0, 1, 1, 0], [1, 0, 0, 2, 1], [2, 0, 2, 2, 1], [1, 0, 1, 4, 2], [3, 1, 3, 4, 2], [2, 0, 2, 6, 4]]
12.552 (1.4.1.2)
 

The latter computation is  time consuming.Yet if we deal with a reflection group this  is not needed as the H-basis will contain  then only invariants.  

We then need  only SymmetryAdaptedPolynomialList, in the appropriate format. This is obtained  as: 

> SymmetryAdaptedPolynomialMapList :=  fromSABPolyToSABMap(SymmetryAdaptedPolynomialList):
 

Linear Forms 

> initialPoint := Vector([a, b, c]); -1; nodes := map(proc (a) options operator, arrow; Typesetting:-delayDotProduct(a, initialPoint) end proc, Rep); 1; LinearForms := [seq(Object(FormEvaluation, nodes[...
initialPoint := Vector([a, b, c]); -1; nodes := map(proc (a) options operator, arrow; Typesetting:-delayDotProduct(a, initialPoint) end proc, Rep); 1; LinearForms := [seq(Object(FormEvaluation, nodes[...
initialPoint := Vector([a, b, c]); -1; nodes := map(proc (a) options operator, arrow; Typesetting:-delayDotProduct(a, initialPoint) end proc, Rep); 1; LinearForms := [seq(Object(FormEvaluation, nodes[...
 

Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mtable(Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mtable(Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mo(
(1.4.2.1)
 

Invariants and Equivariants by Interpolation 

> H, Q := SAHBasis(LinearForms, Rep, Irr, SymmetryAdaptedPolynomialList, SymmetryAdaptedPolynomialMapList); -1
 

> map(primpart,Flatten(H));
 

[`+`(`-`(`*`(`^`(a, 2))), `-`(`*`(`^`(b, 2))), `-`(`*`(`^`(c, 2))), `*`(`^`(x[1], 2)), `*`(`^`(x[2], 2)), `*`(`^`(x[3], 2))), `+`(`-`(`*`(a, `*`(b, `*`(c)))), `*`(x[1], `*`(x[2], `*`(x[3])))), `+`(`*`... (1.4.3.1)
 

> Inv := map(`@`(primpart, LeadingForm), Flatten(H), 3); 1
 

Typesetting:-mprintslash([Inv := [`+`(`*`(`^`(x[1], 2)), `*`(`^`(x[2], 2)), `*`(`^`(x[3], 2))), `*`(x[1], `*`(x[2], `*`(x[3]))), `+`(`-`(`*`(`^`(x[1], 4))), `*`(3, `*`(`^`(x[1], 2), `*`(`^`(x[2], 2)))... (1.4.3.2)
 

> Equiv := map(reorganize, Q); 1
 

Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
Typesetting:-mprintslash([Equiv := [[[1]], [[`+`(`*`(`/`(1, 24), `*`(`^`(2, `/`(1, 2)), `*`(`+`(x[2], `-`(x[3])), `*`(`+`(x[2], x[3]), `*`(`+`(x[1], `-`(x[3])), `*`(`+`(x[1], x[3]), `*`(`+`(x[1], `-`(...
(1.4.3.3)