Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/doc/ref/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.9.2025 mit Größe 214 kB image not shown  

Quellcode-Bibliothek chap72_mj.html   Sprache: HTML

 
 products/sources/formale Sprachen/GAP/doc/ref/chap72_mj.html


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript"
  src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (ref) - Chapter 72: Class Functions</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap72"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chap14_mj.html">14</a>  <a href="chap15_mj.html">15</a>  <a href="chap16_mj.html">16</a>  <a href="chap17_mj.html">17</a>  <a href="chap18_mj.html">18</a>  <a href="chap19_mj.html">19</a>  <a href="chap20_mj.html">20</a>  <a href="chap21_mj.html">21</a>  <a href="chap22_mj.html">22</a>  <a href="chap23_mj.html">23</a>  <a href="chap24_mj.html">24</a>  <a href="chap25_mj.html">25</a>  <a href="chap26_mj.html">26</a>  <a href="chap27_mj.html">27</a>  <a href="chap28_mj.html">28</a>  <a href="chap29_mj.html">29</a>  <a href="chap30_mj.html">30</a>  <a href="chap31_mj.html">31</a>  <a href="chap32_mj.html">32</a>  <a href="chap33_mj.html">33</a>  <a href="chap34_mj.html">34</a>  <a href="chap35_mj.html">35</a>  <a href="chap36_mj.html">36</a>  <a href="chap37_mj.html">37</a>  <a href="chap38_mj.html">38</a>  <a href="chap39_mj.html">39</a>  <a href="chap40_mj.html">40</a>  <a href="chap41_mj.html">41</a>  <a href="chap42_mj.html">42</a>  <a href="chap43_mj.html">43</a>  <a href="chap44_mj.html">44</a>  <a href="chap45_mj.html">45</a>  <a href="chap46_mj.html">46</a>  <a href="chap47_mj.html">47</a>  <a href="chap48_mj.html">48</a>  <a href="chap49_mj.html">49</a>  <a href="chap50_mj.html">50</a>  <a href="chap51_mj.html">51</a>  <a href="chap52_mj.html">52</a>  <a href="chap53_mj.html">53</a>  <a href="chap54_mj.html">54</a>  <a href="chap55_mj.html">55</a>  <a href="chap56_mj.html">56</a>  <a href="chap57_mj.html">57</a>  <a href="chap58_mj.html">58</a>  <a href="chap59_mj.html">59</a>  <a href="chap60_mj.html">60</a>  <a href="chap61_mj.html">61</a>  <a href="chap62_mj.html">62</a>  <a href="chap63_mj.html">63</a>  <a href="chap64_mj.html">64</a>  <a href="chap65_mj.html">65</a>  <a href="chap66_mj.html">66</a>  <a href="chap67_mj.html">67</a>  <a href="chap68_mj.html">68</a>  <a href="chap69_mj.html">69</a>  <a href="chap70_mj.html">70</a>  <a href="chap71_mj.html">71</a>  <a href="chap72_mj.html">72</a>  <a href="chap73_mj.html">73</a>  <a href="chap74_mj.html">74</a>  <a href="chap75_mj.html">75</a>  <a href="chap76_mj.html">76</a>  <a href="chap77_mj.html">77</a>  <a href="chap78_mj.html">78</a>  <a href="chap79_mj.html">79</a>  <a href="chap80_mj.html">80</a>  <a href="chap81_mj.html">81</a>  <a href="chap82_mj.html">82</a>  <a href="chap83_mj.html">83</a>  <a href="chap84_mj.html">84</a>  <a href="chap85_mj.html">85</a>  <a href="chap86_mj.html">86</a>  <a href="chap87_mj.html">87</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap71_mj.html">[Previous Chapter]</a>    <a href="chap73_mj.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap72.html">[MathJax off]</a></p>
<p><a id="X7C91D0D17850E564" name="X7C91D0D17850E564"></a></p>
<div class="ChapSects"><a href="chap72_mj.html#X7C91D0D17850E564">72 <span class="Heading">Class Functions</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X823319217E4B6852">72.1 <span class="Heading">Why Class Functions?</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7E75A70F7BF00A0D">72.1-1 IsClassFunction</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X8192EDDB84ADD46E">72.2 <span class="Heading">Basic Operations for Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X81B55C067D123B76">72.2-1 UnderlyingCharacterTable</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7FE14712843C6486">72.2-2 ValuesOfClassFunction</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X829EFBF57FCB1A94">72.3 <span class="Heading">Comparison of Class Functions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X83B9F0C5871A5F7F">72.4 <span class="Heading">Arithmetic Operations for Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X83AAD5527BBAFA03">72.4-1 Characteristic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X856AB97E785E0B04">72.4-2 ComplexConjugate</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7BCE99B88285EB39">72.4-3 Order</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X828AD0C57EA57C21">72.5 <span class="Heading">Printing Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7BDD2D4A7F7FB3B1">72.5-1 ViewObj</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X871160B98595D4BA">72.5-2 PrintObj</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8430D31B8163C230">72.5-3 Display</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X7BB90A8F86FFA456">72.6 <span class="Heading">Creating Class Functions from Values Lists</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X78F4E23985FCA259">72.6-1 ClassFunction</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7805AFF77EFC3306">72.6-2 VirtualCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X849DD34C7968206C">72.6-3 Character</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7B38035981D71B1B">72.6-4 ClassFunctionSameType</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X8727C2CB7ABEBC84">72.7 <span class="Heading">Creating Class Functions using Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86129DC37C55E4D6">72.7-1 <span class="Heading">TrivialCharacter</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X82C01DDB82D751A9">72.7-2 NaturalCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7938621F81B65E03">72.7-3 <span class="Heading">PermutationCharacter</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X86DDB47A7C6B45D0">72.8 <span class="Heading">Operations for Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7FE3CD08794051F8">72.8-1 IsCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X788DD05C86CB7030">72.8-2 IsVirtualCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X79A4B1D3870C8807">72.8-3 IsIrreducibleCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7802BC157C69DD75">72.8-4 DegreeOfCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X855FD9F983D275CD">72.8-5 ScalarProduct</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X858DF4E67EBB99DA">72.8-6 MatScalarProducts</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8572B18A7BAED73E">72.8-7 Norm</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X78550D7087DB1181">72.8-8 ConstituentsOfCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7E0A24498710F12B">72.8-9 KernelOfCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7B4708B47D9C05B3">72.8-10 ClassPositionsOfKernel</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7E77D4147A0836D3">72.8-11 CentreOfCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7CE5B4137B399274">72.8-12 ClassPositionsOfCentre</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7C3187387C2D9938">72.8-13 InertiaSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8269BE0079A64D43">72.8-14 CycleStructureClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86EDB4047C5AD6E7">72.8-15 IsTransitive</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X801DC07B8029841B">72.8-16 Transitivity</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7DD8FDCF7FB7834A">72.8-17 CentralCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7A292A58827B95B8">72.8-18 DeterminantOfCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X861B435C7F68AE7D">72.8-19 EigenvaluesChar</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7A106BE281EFD953">72.8-20 Tensored</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7B83B4108490FD06">72.8-21 TensorProduct</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X854A4E3A85C5F89B">72.9 <span class="Heading">Restricted and Induced Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86BABEA6841A40CF">72.9-1 RestrictedClassFunction</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86DB64F08035D219">72.9-2 RestrictedClassFunctions</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7FE39D3D78855D3B">72.9-3 <span class="Heading">InducedClassFunction</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8484C0F985AD2D28">72.9-4 InducedClassFunctions</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7C72003880743D28">72.9-5 InducedClassFunctionsByFusionMap</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7C055F327C99CE71">72.9-6 InducedCyclic</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X7C95F7937B752F48">72.10 <span class="Heading">Reducing Virtual Characters</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86F360D983343C2A">72.10-1 ReducedClassFunctions</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7B7138ED8586F09E">72.10-2 ReducedCharacters</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7D3289BB865BCF98">72.10-3 IrreducibleDifferences</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X85B360C085B360C0">72.10-4 LLL</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X808D71A57D104ED7">72.10-5 Extract</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7F97B34A879D11BA">72.10-6 OrthogonalEmbeddingsSpecialDimension</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8799AB967C58C0E9">72.10-7 Decreased</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X85D510DC873A99B4">72.10-8 DnLattice</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X78754D007F3572A7">72.10-9 DnLatticeIterative</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X87ED98F385B00D34">72.11 <span class="Heading">Symmetrizations of Class Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7E220413823330EC">72.11-1 Symmetrizations</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X85CE68CA87CA383A">72.11-2 SymmetricParts</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8329E934829FE965">72.11-3 AntiSymmetricParts</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X87BA59597CA21B3E">72.11-4 ExteriorPower</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X855A7ECF80FCF0BA">72.11-5 SymmetricPower</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X78648E367C65B1F1">72.11-6 OrthogonalComponents</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X788B9AA17DD9418C">72.11-7 SymplecticComponents</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X87B86B427A88CD25">72.12 <span class="Heading">Molien Series</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7D7F94D2820B1177">72.12-1 MolienSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X82AC06A880EAA0AB">72.12-2 MolienSeriesInfo</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X87083C4E7D11A02E">72.12-3 ValueMolienSeries</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X86BAA3C487CE86D2">72.12-4 MolienSeriesWithGivenDenominator</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X7D6336857E6BDF46">72.13 <span class="Heading">Possible Permutation Characters</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8477004C7A31D28C">72.13-1 PermCharInfo</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7A8CB0298730D808">72.13-2 PermCharInfoRelative</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X8330FDCE83D3DED3">72.14 <span class="Heading">Computing Possible Permutation Characters</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7D02541482C196A6">72.14-1 PermChars</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8127771D7EAB6EA7">72.14-2 <span class="Heading">TestPerm1, ..., TestPerm5</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X879D2A127BE366A5">72.14-3 PermBounds</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X7F11AFB783352903">72.14-4 PermComb</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X866942167802E036">72.14-5 Inequalities</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X8204FB9F847340C8">72.15 <span class="Heading">Operations for Brauer Characters</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X79BACBC47B4C413E">72.15-1 FrobeniusCharacterValue</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8304B68E84511685">72.15-2 BrauerCharacterValue</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X8038FA0480B78243">72.15-3 SizeOfFieldOfDefinition</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap72_mj.html#X782400277F6316A4">72.15-4 RealizableBrauerCharacters</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap72_mj.html#X7FEEDC0981A22850">72.16 <span class="Heading">Domains Generated by Class Functions</span></a>
</span>
</div>
</div>

<h3>72 <span class="Heading">Class Functions</span></h3>

<p>This chapter describes operations for <em>class functions of finite groups</em>. For operations concerning <em>character tables</em>, see Chapter <a href="chap71_mj.html#X7B7A9EE881E01C10"><span class="RefLink">71</span></a>.</p>

<p>Several examples in this chapter require the <strong class="pkg">GAP</strong> Character Table Library to be available. If it is not yet loaded then we load it now.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage( "ctbllib" );</span>
true
</pre></div>

<p><a id="X823319217E4B6852" name="X823319217E4B6852"></a></p>

<h4>72.1 <span class="Heading">Why Class Functions?</span></h4>

<p>In principle it is possible to represent group characters or more general class functions by the plain lists of their values, and in fact many operations for class functions work with plain lists of class function values. But this has two disadvantages.</p>

<p>First, it is then necessary to regard a values list explicitly as a class function of a particular character table, by supplying this character table as an argument. In practice this means that with this setup, the user has the task to put the objects into the right context. For example, forming the scalar product or the tensor product of two class functions or forming an induced class function or a conjugate class function then needs three arguments in this case; this is particularly inconvenient in cases where infix operations cannot be used because of the additional argument, as for tensor products and induced class functions.</p>

<p>Second, when one says that <q><span class="SimpleMath">\(\chi\)</span> is a character of a group <span class="SimpleMath">\(G\)</span></q> then this object <span class="SimpleMath">\(\chi\)</span> carries a lot of information. <span class="SimpleMath">\(\chi\)</span> has certain properties such as being irreducible or not. Several subgroups of <span class="SimpleMath">\(G\)</span> are related to <span class="SimpleMath">\(\chi\)</span>, such as the kernel and the centre of <span class="SimpleMath">\(\chi\)</span>. Other attributes of characters are the determinant and the central character. This knowledge cannot be stored in a plain list.</p>

<p>For dealing with a group together with its characters, and maybe also subgroups and their characters, it is desirable that <strong class="pkg">GAP</strong> keeps track of the interpretation of characters. On the other hand, for using characters without accessing their groups, such as characters of tables from the <strong class="pkg">GAP</strongtable library, dealing just with values lists is often sufficient. In particular, if one deals with incomplete character tables then it is often necessary to specify the arguments explicitly, for example one has to choose a fusiomap or power map from a set of possibilities.</p>

<p>The main idea behind class function objects is that a class function object is equal to its values list in the sense of <code class="func">\=</code> (<a href="chap31_mj.html#X7EF67D047F03CA6F"><span class="RefLink">31.11-1</span></a>), so class function objects can be used wherever their values lists can be used, but there are operations for class function objects that do not work just with values lists. <strong class="pkg">GAP</strong> library functions prefer to return class function objects rather than returning just values lists, for example <code class="func">Irr</code(<a href="chap71_mj.html#X873B3CC57E9A5492"><span class="RefLink">71.8-2</span></a>) lists consist of class function objects, and <code class="func">TrivialCharacter</code> (<a href="chap72_mj.html#X86129DC37C55E4D6"><span class="RefLink">72.7-1</span></a>) returns a class functioobject.</p>

<p>Here is an <em>example</em> that shows both approaches. First we define some groups.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S4:= SymmetricGroup( 4 );;  SetName( S4, "S4" );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">D8:= SylowSubgroup( S4, 2 );; SetName( D8, "D8" );</span>
</pre></div>

<p>We do some computations using the functions described later in this Chapter, first with class function objects.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">irrS4:= Irr( S4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">irrD8:= Irr( D8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:= irrD8[4];</span>
Character( CharacterTable( D8 ), [ 1, -1, 1, -1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">chi * chi;</span>
Character( CharacterTable( D8 ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">ind:= chi ^ S4;</span>
Character( CharacterTable( S4 ), [ 3, -1, -1, 0, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">List( irrS4, x -> ScalarProduct( x, ind ) );</span>
[ 0, 1, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">det:= Determinant( ind );</span>
Character( CharacterTable( S4 ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">cent:= CentralCharacter( ind );</span>
ClassFunction( CharacterTable( S4 ), [ 1, -2, -1, 0, 2 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">rest:= Restricted( cent, D8 );</span>
ClassFunction( CharacterTable( D8 ), [ 1, -2, -1, -1, 2 ] )
</pre></div>

<p>Now we repeat these calculations with plain lists of character values. Here we need the character tables in some places.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tS4:= CharacterTable( S4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">tD8:= CharacterTable( D8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:= ValuesOfClassFunction( irrD8[4] );</span>
[ 1, -1, 1, -1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Tensored( [ chi ], [ chi ] )[1];</span>
[ 1, 1, 1, 1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ind:= InducedClassFunction( tD8, chi, tS4 );</span>
ClassFunction( CharacterTable( S4 ), [ 3, -1, -1, 0, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">List( Irr( tS4 ), x -> ScalarProduct( tS4, x, ind ) );</span>
[ 0, 1, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">det:= DeterminantOfCharacter( tS4, ind );</span>
ClassFunction( CharacterTable( S4 ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">cent:= CentralCharacter( tS4, ind );</span>
ClassFunction( CharacterTable( S4 ), [ 1, -2, -1, 0, 2 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">rest:= Restricted( tS4, cent, tD8 );</span>
ClassFunction( CharacterTable( D8 ), [ 1, -2, -1, -1, 2 ] )
</pre></div>

<p>If one deals with character tables from the <strong class="pkg">GAP</strongtable library then one has no access to their groups, but often the tables provide enough information for computing induced or restricted class functions, symmetrizations etc., because the relevant class fusions and power maps are often stored on library tables. In these cases it is possible to use the tables instead of the groups as arguments. (If necessary information is not uniquely determined by the tables then an error is signalled.)</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s5 := CharacterTable( "A5.2" );; irrs5 := Irr( s5  );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">m11:= CharacterTable( "M11"  );; irrm11:= Irr( m11 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:= TrivialCharacter( s5 );</span>
Character( CharacterTable( "A5.2" ), [ 1, 1, 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">chi ^ m11;</span>
Character( CharacterTable( "M11" ), [ 66, 10, 3, 2, 1, 1, 0, 0, 0, 0
 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Determinant( irrs5[4] );</span>
Character( CharacterTable( "A5.2" ), [ 1, 1, 1, 1, -1, -1, -1 ] )
</pre></div>

<p>Functions that compute <em>normal</em> subgroups related to characters have counterparts that return the list of class positions corresponding to these groups.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ClassPositionsOfKernel( irrs5[2] );</span>
[ 1, 2, 3, 4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ClassPositionsOfCentre( irrs5[2] );</span>
[ 1, 2, 3, 4, 5, 6, 7 ]
</pre></div>

<p>Non-normal subgroups cannot be described this way, so for example inertia subgroups (see <code class="func">InertiaSubgroup</code> (<a href="chap72_mj.html#X7C3187387C2D9938"><span class="RefLink">72.8-13</span></a>)) can in general not be computed from character tables without access to their groups.</p>

<p><a id="X7E75A70F7BF00A0D" name="X7E75A70F7BF00A0D"></a></p>

<h5>72.1-1 IsClassFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsClassFunction</code>( <var class="Arg">obj</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>A <em>class function</em> (in characteristic <span class="SimpleMath">\(p\)</span>) of a finite group <span class="SimpleMath">\(G\)</span> is a map from the set of (<span class="SimpleMath">\(p\)</span>-regular) elements in <span class="SimpleMath">\(G\)</span> to the field of cyclotomics that is constant on conjugacy classes of <span class="SimpleMath">\(G\)</span>.</p>

<p>Each class function in <strong class="pkg">GAP</strong> is represented by an <em>immutable list</em>, where at the <span class="SimpleMath">\(i\)</span>-th position the value on the <span class="SimpleMath">\(i\)</span>-th conjugacy class of the character table of <span class="SimpleMath">\(G\)</span> is stored. The ordering of the conjugacy classes is the one used in the underlying character table. Note that if the character table has access to its underlying group then the ordering of conjugacy classes in the group and in the character table may differ (see <a href="chap71_mj.html#X793E0EBF84B07313"><span class="RefLink">71.6</span></a>); class functions always refer to the ordering of classes in the character table.</p>

<p><em>Class function objects</em> in <strong class="pkg">GAP</strong> are not just plain lists, they store the character table of the group <span class="SimpleMath">\(G\)</span> as value of the attribute <code class="func">UnderlyingCharacterTable</code> (<a href="chap72_mj.html#X81B55C067D123B76"><span class="RefLink">72.2-1</span></a>). The group <span class="SimpleMath">\(G\)</span> itself is accessible only via the character table and thus only if the character table stores its group, as value of the attribute <code class="func">UnderlyingGroup</code> (<a href="chap71_mj.html#X7FF4826A82B667AF"><span class="RefLink">71.6-1</span></a>). The reason for this is that many computations with class functions are possible without using their groups, for example class functions of character tables in the <strong class="pkg">GAP</strong> character table library do in general not have access to their underlying groups.</p>

<p>There are (at least) two reasons why class functions in <strong class="pkg">GAP</strong> are <em>not</em> implemented as mappings. First, we want to distinguish class functions in different characteristics, for example to be able to define the Frobenius character of a given Brauer character; viewed as mappings, the trivial characters in all characteristics coprime to the order of <span class="SimpleMath">\(G\)</span> are equal. Second, the product of two class functions shall be again a class function, whereas the product of general mappings is defined as composition.</p>

<p>A further argument is that the typical operations for mappings such as <code class="func">Image</code> (<a href="chap32_mj.html#X87F4D35A826599C6"><span class="RefLink">32.4-6</span></a>) and <code class="func">PreImage</code> (<a href="chap32_mj.html#X836FAEAC78B55BF4"><span class="RefLink">32.5-6</span></a>) play no important role for class functions.</p>

<p><a id="X8192EDDB84ADD46E" name="X8192EDDB84ADD46E"></a></p>

<h4>72.2 <span class="Heading">Basic Operations for Class Functions</span></h4>

<p>Basic operations for class functions are <code class="func">UnderlyingCharacterTable</code> (<a href="chap72_mj.html#X81B55C067D123B76"><span class="RefLink">72.2-1</span></a>), <code class="func">ValuesOfClassFunction</code> (<a href="chap72_mj.html#X7FE14712843C6486"><span class="RefLink">72.2-2</span></a>), and the basic operations for lists (see <a href="chap21_mj.html#X7B202D147A5C2884"><span class="RefLink">21.2</span></a>).</p>

<p><a id="X81B55C067D123B76" name="X81B55C067D123B76"></a></p>

<h5>72.2-1 UnderlyingCharacterTable</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnderlyingCharacterTable</code>( <var class="Arg">psi</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>For a class function <var class="Arg">psi</var> of a group <span class="SimpleMath">\(G\)</span> the character table of <span class="SimpleMath">\(G\)</span> is stored as value of <code class="func">UnderlyingCharacterTable</code>. The ordering of entries in the list <var class="Arg">psi</var> (see <code class="func">ValuesOfClassFunction</code> (<a href="chap72_mj.html#X7FE14712843C6486"><span class="RefLink">72.2-2</span></a>)) refers to the ordering of conjugacy classes in this character table.</p>

<p>If <var class="Arg">psi</var> is an ordinary class function then the underlying character table is the ordinary character table of <span class="SimpleMath">\(G\)</span> (see <code class="func">OrdinaryCharacterTable</code> (<a href="chap71_mj.html#X8011EEB684848039"><span class="RefLink">71.8-4</span></a>)), if <var class="Arg">psi</var> is a class function in characteristic <span class="SimpleMath">\(p \neq 0\)</span> then the underlying character table is the <span class="SimpleMath">\(p\)</span>-modular Brauer table of <span class="SimpleMath">\(G\)</span> (see <code class="func">BrauerTable</code> (<a href="chap71_mj.html#X8476B25A79D7A7FC"><span class="RefLink">71.3-2</span></a>)). So the underlying characteristic of <var class="Arg">psi</var> can be read off from the underlying character table.</p>

<p><a id="X7FE14712843C6486" name="X7FE14712843C6486"></a></p>

<h5>72.2-2 ValuesOfClassFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ValuesOfClassFunction</code>( <var class="Arg">psi</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the list of values of the class function <var class="Arg">psi</var>, the <span class="SimpleMath">\(i\)</span>-th entry being the value on the <span class="SimpleMath">\(i\)</span>-th conjugacy class of the underlying character table (see <code class="func">UnderlyingCharacterTable</code> (<a href="chap72_mj.html#X81B55C067D123B76"><span class="RefLink">72.2-1</span></a>)).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= SymmetricGroup( 4 );</span>
Sym( [ 1 .. 4 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">psi:= TrivialCharacter( g );</span>
Character( CharacterTable( Sym( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingCharacterTable( psi );</span>
CharacterTable( Sym( [ 1 .. 4 ] ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">ValuesOfClassFunction( psi );</span>
[ 1, 1, 1, 1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsList( psi );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">psi[1];</span>
1
<span class="GAPprompt">gap></span> <span class="GAPinput">Length( psi );</span>
5
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBound( psi[6] );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">Concatenation( psi, [ 2, 3 ] );</span>
[ 1, 1, 1, 1, 1, 2, 3 ]
</pre></div>

<p><a id="X829EFBF57FCB1A94" name="X829EFBF57FCB1A94"></a></p>

<h4>72.3 <span class="Heading">Comparison of Class Functions</span></h4>

<p>With respect to <code class="func">\=</code> (<a href="chap31_mj.html#X7EF67D047F03CA6F"><span class="RefLink">31.11-1</span></a>) and <code class="func">\<</code> (<a href="chap31_mj.html#X7EF67D047F03CA6F"><span class="RefLink">31.11-1</span></a>), class functions behave equally to their lists of values (see <code class="func">ValuesOfClassFunction</code> (<a href="chap72_mj.html#X7FE14712843C6486"><span class="RefLink">72.2-2</span></a>)). So two class functions are equal if and only if their lists of values are equal, no matter whether they are class functions of the same character table, of the same group but w.r.t. different class ordering, or of different groups.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">grps:= Filtered( AllSmallGroups( 8 ), g -> not IsAbelian( g ) );</span>
[ <pc group of size 8 with 3 generators>,
  <pc group of size 8 with 3 generators> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">t1:= CharacterTable( grps[1] );  SetName( t1, "t1" );</span>
CharacterTable( <pc group of size 8 with 3 generators> )
<span class="GAPprompt">gap></span> <span class="GAPinput">t2:= CharacterTable( grps[2] );  SetName( t2, "t2" );</span>
CharacterTable( <pc group of size 8 with 3 generators> )
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterDegrees( t1 );</span>
[ [ 1, 4 ], [ 2, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1:= Irr( grps[1] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">irr2:= Irr( grps[2] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1 = irr2;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1[1];</span>
Character( t1, [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1[5];</span>
Character( t1, [ 2, 0, 0, -2, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">irr2[1];</span>
Character( t2, [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSSortedList( irr1 );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1[1] < irr1[2];  # the triv. character has no '-1'</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">irr1[2] < irr1[5];</span>
true
</pre></div>

<p><a id="X83B9F0C5871A5F7F" name="X83B9F0C5871A5F7F"></a></p>

<h4>72.4 <span class="Heading">Arithmetic Operations for Class Functions</span></h4>

<p>Class functions are <em>row vectors</em> of cyclotomics. The <em>additive</em> behaviour of class functions is defined such that they are equal to the plain lists of class function values except that the results are represented again as class functions whenever this makes sense. The <em>multiplicative</em> behaviour, however, is different. This is motivated by the fact that the tensor product of class functions is a more interesting operation than the vector product of plain lists. (Another candidate for a multiplication of compatible class functions would have been the inner product, which is implemented via the function <code class="func">ScalarProduct</code> (<a href="chap72_mj.html#X855FD9F983D275CD"><span class="RefLink">72.8-5</span></a>). In terms of filters, the arithmetic of class functions is based on the decision that they lie in <code class="func">IsGeneralizedRowVector</code> (<a href="chap21_mj.html#X87ABCEE9809585A0"><span class="RefLink">21.12-1</span></a>), with additive nesting depth <span class="SimpleMath">\(1\)</span>, but they do <em>not</em> lie in <code class="func">IsMultiplicativeGeneralizedRowVector</code> (<a href="chap21_mj.html#X7FBCA5B58308C158"><span class="RefLink">21.12-2</span></a>).</p>

<p>More specifically, the scalar multiple of a class function with a cyclotomic is a class function, and the sum and the difference of two class functions of the same underlying character table (see <code class="func">UnderlyingCharacterTable</code> (<a href="chap72_mj.html#X81B55C067D123B76"><span class="RefLink">72.2-1</span></a>)) are again class functions of this table. The sum and the difference of a class function and a list that is <em>not</em> a class function are plain lists, as well as the sum and the difference of two class functions of different character tables.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= SymmetricGroup( 4 );;  tbl:= CharacterTable( g );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( tbl, "S4" );  irr:= Irr( g );</span>
[ Character( S4, [ 1, -1, 1, 1, -1 ] ),
  Character( S4, [ 3, -1, -1, 0, 1 ] ),
  Character( S4, [ 2, 0, 2, -1, 0 ] ),
  Character( S4, [ 3, 1, -1, 0, -1 ] ),
  Character( S4, [ 1, 1, 1, 1, 1 ] ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">2 * irr[5];</span>
Character( S4, [ 2, 2, 2, 2, 2 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[1] / 7;</span>
ClassFunction( S4, [ 1/7, -1/7, 1/7, 1/7, -1/7 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">lincomb:= irr[3] + irr[1] - irr[5];</span>
VirtualCharacter( S4, [ 2, -2, 2, -1, -2 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">lincomb:= lincomb + 2 * irr[5];</span>
VirtualCharacter( S4, [ 4, 0, 4, 1, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCharacter( lincomb );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">lincomb;</span>
Character( S4, [ 4, 0, 4, 1, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[5] + 2;</span>
[ 3, 3, 3, 3, 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[5] + [ 1, 2, 3, 4, 5 ];</span>
[ 2, 3, 4, 5, 6 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">zero:= 0 * irr[1];</span>
VirtualCharacter( S4, [ 0, 0, 0, 0, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">zero + Z(3);</span>
[ Z(3), Z(3), Z(3), Z(3), Z(3) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[5] + TrivialCharacter( DihedralGroup( 8 ) );</span>
[ 2, 2, 2, 2, 2 ]
</pre></div>

<p>The product of two class functions of the same character table is the tensor product (pointwise product) of these class functions. Thus the set of all class functions of a fixed group forms a ring, and for any field <span class="SimpleMath">\(F\)</span> of cyclotomics, the <span class="SimpleMath">\(F\)</span>-span of a given set of class functions forms an algebra.</p>

<p>The product of two class functions of <em>different</em> tables and the product of a class function and a list that is <em>not</em> a class function are not defined, an error is signalled in these cases. Note that in this respect, class functions behave differently from their values lists, for which the product is defined as the standard scalar product.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tens:= irr[3] * irr[4];</span>
Character( S4, [ 6, 0, -2, 0, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">ValuesOfClassFunction( irr[3] ) * ValuesOfClassFunction( irr[4] );</span>
4
</pre></div>

<p>Class functions without zero values are invertible, the <em>inverse</em> is defined pointwise. As a consequence, for example groups of linear characters can be formed.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tens / irr[1];</span>
Character( S4, [ 6, 0, -2, 0, 0 ] )
</pre></div>

<p>Other (somewhat strange) implications of the definition of arithmetic operations for class functions, together with the general rules of list arithmetic (see <a href="chap21_mj.html#X845EEAF083D43CCE"><span class="RefLink">21.11</span></a>), apply to the case of products involving <em>lists</em> of class functions. No inverse of the list of irreducible characters as a matrix is defined; if one is interested in the inverse matrix then one can compute it from the matrix of class function values.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Inverse( List( irr, ValuesOfClassFunction ) );</span>
[ [ 1/24, 1/8, 1/12, 1/8, 1/24 ], [ -1/4, -1/4, 0, 1/4, 1/4 ],
  [ 1/8, -1/8, 1/4, -1/8, 1/8 ], [ 1/3, 0, -1/3, 0, 1/3 ],
  [ -1/4, 1/4, 0, -1/4, 1/4 ] ]
</pre></div>

<p>Also the product of a class function with a list of class functions is <em>not</em> a vector-matrix product but the list of pointwise products.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[1] * irr{ [ 1 .. 3 ] };</span>
[ Character( S4, [ 1, 1, 1, 1, 1 ] ),
  Character( S4, [ 3, 1, -1, 0, -1 ] ),
  Character( S4, [ 2, 0, 2, -1, 0 ] ) ]
</pre></div>

<p>And the product of two lists of class functions is <em>not</em> the matrix product but the sum of the pointwise products.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">irr * irr;</span>
Character( S4, [ 24, 4, 8, 3, 4 ] )
</pre></div>

<p>The <em>powering</em> operator <code class="func">\^</code> (<a href="chap31_mj.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) has several meanings for class functions. The power of a class function by a nonnegative integer is clearly the tensor power. The power of a class function by an element that normalizes the underlying group or by a Galois automorphism is the conjugate class function. (As a consequence, the application of the permutation induced by such an action cannot be denoted by <code class="func">\^</code> (<a href="chap31_mj.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>); instead one can use <code class="func">Permuted</code> (<a href="chap21_mj.html#X7B5A19098406347A"><span class="RefLink">21.20-17</span></a>).) The power of a class function by a group or a character table is the induced class function (see <code class="func">InducedClassFunction</code> (<a href="chap72_mj.html#X7FE39D3D78855D3B"><span class="RefLink">72.9-3</span></a>)). The power of a group element by a class function is the class function value at (the conjugacy class containing) this element.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">irr[3] ^ 3;</span>
Character( S4, [ 8, 0, 8, -1, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">lin:= LinearCharacters( DerivedSubgroup( g ) );</span>
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1 ] ),
  Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3), E(3)^2 ] ),
  Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3)^2, E(3) ] ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List( lin, chi -> chi ^ (1,2) );</span>
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1 ] ),
  Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3)^2, E(3) ] ),
  Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3), E(3)^2 ] ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Orbit( GaloisGroup( CF(3) ), lin[2] );</span>
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3), E(3)^2 ] ),
  Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
  [ 1, 1, E(3)^2, E(3) ] ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">lin[1]^g;</span>
Character( S4, [ 2, 0, 2, 2, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">(1,2,3)^lin[2];</span>
E(3)
</pre></div>

<p><a id="X83AAD5527BBAFA03" name="X83AAD5527BBAFA03"></a></p>

<h5>72.4-1 Characteristic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Characteristic</code>( <var class="Arg">chi</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The <em>characteristic</em> of class functions is zero, as for all list of cyclotomics. For class functions of a <span class="SimpleMath">\(p\)</span>-modular character table, such as Brauer characters, the prime <span class="SimpleMath">\(p\)</span> is given by the <code class="func">UnderlyingCharacteristic</code> (<a href="chap71_mj.html#X7F58A82F7D88000A"><span class="RefLink">71.9-5</span></a>) value of the character table.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Characteristic( irr[1] );</span>
0
<span class="GAPprompt">gap></span> <span class="GAPinput">irrmod2:= Irr( g, 2 );</span>
[ Character( BrauerTable( Sym( [ 1 .. 4 ] ), 2 ), [ 1, 1 ] ),
  Character( BrauerTable( Sym( [ 1 .. 4 ] ), 2 ), [ 2, -1 ] ) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Characteristic( irrmod2[1] );</span>
0
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingCharacteristic( UnderlyingCharacterTable( irrmod2[1] ) );</span>
2
</pre></div>

<p><a id="X856AB97E785E0B04" name="X856AB97E785E0B04"></a></p>

<h5>72.4-2 ComplexConjugate</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ComplexConjugate</code>( <var class="Arg">chi</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GaloisCyc</code>( <var class="Arg">chi</var>, <var class="Arg">k</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Permuted</code>( <var class="Arg">chi</var>, <var class="Arg">pi</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>The operations <code class="func">ComplexConjugate</code>, <code class="func">GaloisCyc</code>, and <code class="func">Permuted</code> return a class function when they are called with a class function; The complex conjugate of a class function that is known to be a (virtual) character is again known to be a (virtual) character, and applying an arbitrary Galois automorphism to an ordinary (virtual) character yields a (virtual) character.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ComplexConjugate( lin[2] );</span>
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
 [ 1, 1, E(3)^2, E(3) ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">GaloisCyc( lin[2], 5 );</span>
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ),
 [ 1, 1, E(3)^2, E(3) ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Permuted( lin[2], (2,3,4) );</span>
ClassFunction( CharacterTable( Alt( [ 1 .. 4 ] ) ),
 [ 1, E(3)^2, 1, E(3) ] )
</pre></div>

<p><a id="X7BCE99B88285EB39" name="X7BCE99B88285EB39"></a></p>

<h5>72.4-3 Order</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Order</code>( <var class="Arg">chi</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>By definition of <code class="func">Order</code> (<a href="chap31_mj.html#X84F59A2687C62763"><span class="RefLink">31.10-10</span></a>) for arbitrary monoid elements, the return value of <code class="func">Order</code> (<a href="chap31_mj.html#X84F59A2687C62763"><span class="RefLink">31.10-10</span></a>) for a character must be its multiplicative order. The <em>determinantal order</em> (see <code class="func">DeterminantOfCharacter</code> (<a href="chap72_mj.html#X7A292A58827B95B8"><span class="RefLink">72.8-18</span></a>)) of a character <var class="Arg">chi</var> can be computed as <code class="code">Order( Determinant( <var class="Arg">chi</var> ) )</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">det:= Determinant( irr[3] );</span>
Character( S4, [ 1, -1, 1, 1, -1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Order( det );</span>
2
</pre></div>

<p><a id="X828AD0C57EA57C21" name="X828AD0C57EA57C21"></a></p>

<h4>72.5 <span class="Heading">Printing Class Functions</span></h4>

<p><a id="X7BDD2D4A7F7FB3B1" name="X7BDD2D4A7F7FB3B1"></a></p>

<h5>72.5-1 ViewObj</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ViewObj</code>( <var class="Arg">chi</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>The default <code class="func">ViewObj</code> (<a href="chap6_mj.html#X815BF22186FD43C9"><span class="RefLink">6.3-5</span></a>) methods for class functions print one of the strings <code class="code">"ClassFunction"</code>, <code class="code">"VirtualCharacter"</code>, <code class="code">"Character"</code> (depending on whether the class function is known to be a character or virtual character, see <code class="func">IsCharacter</code> (<a href="chap72_mj.html#X7FE3CD08794051F8"><span class="RefLink">72.8-1</span></a>), <code class="func">IsVirtualCharacter</code> (<a href="chap72_mj.html#X788DD05C86CB7030"><span class="RefLink">72.8-2</span></a>)), followed by the <code class="func">ViewObj</code> (<a href="chap6_mj.html#X815BF22186FD43C9"><span class="RefLink">6.3-5</span></a>) output for the underlying character table (see <a href="chap71_mj.html#X7C1941F17BE9FC21"><span class="RefLink">71.13</span></a>), and the list of values. The table is chosen (and not the group) in order to distinguish class functions of different underlying characteristic (see <code class="func">UnderlyingCharacteristic</code> (<a href="chap71_mj.html#X7F58A82F7D88000A"><span class="RefLink">71.9-5</span></a>)).</p>

<p><a id="X871160B98595D4BA" name="X871160B98595D4BA"></a></p>

<h5>72.5-2 PrintObj</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PrintObj</code>( <var class="Arg">chi</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>The default <code class="func">PrintObj</code> (<a href="chap6_mj.html#X815BF22186FD43C9"><span class="RefLink">6.3-5</span></a>) method for class functions does the same as <code class="func">ViewObj</code> (<a href="chap6_mj.html#X815BF22186FD43C9"><span class="RefLink">6.3-5</span></a>), except that the character table is <code class="func">Print</code> (<a href="chap6_mj.html#X7AFA64D97A1F39A3"><span class="RefLink">6.3-4</span></a>)-ed instead of <code class="func">View</code> (<a href="chap6_mj.html#X851902C583B84CDC"><span class="RefLink">6.3-3</span></a>)-ed.</p>

<p><em>Note</em> that if a class function is shown only with one of the strings <code class="code">"ClassFunction"</code>, <code class="code">"VirtualCharacter"</code>, it may still be that it is in fact a character; just this was not known at the time when the class function was printed.</p>

<p>In order to reduce the space that is needed to print a class function, it may be useful to give a name (see <code class="func">Name</code> (<a href="chap12_mj.html#X7F14EF9D81432113"><span class="RefLink">12.8-2</span></a>)) to the underlying character table.</p>

<p><a id="X8430D31B8163C230" name="X8430D31B8163C230"></a></p>

<h5>72.5-3 Display</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Display</code>( <var class="Arg">chi</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>The default <code class="func">Display</code> (<a href="chap6_mj.html#X83A5C59278E13248"><span class="RefLink">6.3-6</span></a>) method for a class function <var class="Arg">chi</var> calls <code class="func">Display</code> (<a href="chap6_mj.html#X83A5C59278E13248"><span class="RefLink">6.3-6</span></a>) for its underlying character table (see <a href="chap71_mj.html#X7C1941F17BE9FC21"><span class="RefLink">71.13</span></a>), with <var class="Arg">chi</var> as the only entry in the <code class="code">chars</code> list of the options record.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:= TrivialCharacter( CharacterTable( "A5" ) );</span>
Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( chi );</span>
A5

     2  2  2  .  .  .
     3  1  .  1  .  .
     5  1  .  .  1  1

       1a 2a 3a 5a 5b
    2P 1a 1a 3a 5b 5a
    3P 1a 2a 1a 5b 5a
    5P 1a 2a 3a 1a 1a

Y.1     1  1  1  1  1
</pre></div>

<p><a id="X7BB90A8F86FFA456" name="X7BB90A8F86FFA456"></a></p>

<h4>72.6 <span class="Heading">Creating Class Functions from Values Lists</span></h4>

<p><a id="X78F4E23985FCA259" name="X78F4E23985FCA259"></a></p>

<h5>72.6-1 ClassFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ClassFunction</code>( <var class="Arg">tbl</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ClassFunction</code>( <var class="Arg">G</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>In the first form, <code class="func">ClassFunction</code> returns the class function of the character table <var class="Arg">tbl</var> with values given by the list <var class="Arg">values</varof cyclotomics. In the second form, <var class="Arg">G</var> must be a group, and the class function of its ordinary character table is returned.</p>

<p>Note that <var class="Arg">tbl</var> determines the underlying characteristic of the returned class function (see <code class="func">UnderlyingCharacteristic</code> (<a href="chap71_mj.html#X7F58A82F7D88000A"><span class="RefLink">71.9-5</span></a>)).</p>

<p><a id="X7805AFF77EFC3306" name="X7805AFF77EFC3306"></a></p>

<h5>72.6-2 VirtualCharacter</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ VirtualCharacter</code>( <var class="Arg">tbl</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ VirtualCharacter</code>( <var class="Arg">G</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">VirtualCharacter</code> returns the virtual character (see <code class="func">IsVirtualCharacter</code> (<a href="chap72_mj.html#X788DD05C86CB7030"><span class="RefLink">72.8-2</span></a>)) of the character table <var class="Arg">tbl</var> or the group <var class="Arg">G</var>, respectively, with values given by the list <var class="Arg">values</var>.</p>

<p>It is <em>not</em> checked whether the given values really describe a virtual character.</p>

<p><a id="X849DD34C7968206C" name="X849DD34C7968206C"></a></p>

<h5>72.6-3 Character</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Character</code>( <var class="Arg">tbl</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Character</code>( <var class="Arg">G</var>, <var class="Arg">values</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">Character</code> returns the character (see <code class="func">IsCharacter</code> (<a href="chap72_mj.html#X7FE3CD08794051F8"><span class="RefLink">72.8-1</span></a>)) of the character table <var class="Arg">tbl</var> or the group <var class="Arg">G</var>, respectively, with values given by the list <var class="Arg">values</var>.</p>

<p>It is <em>not</em> checked whether the given values really describe a character.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= DihedralGroup( 8 );  tbl:= CharacterTable( g );</span>
<pc group of size 8 with 3 generators>
CharacterTable( <pc group of size 8 with 3 generators> )
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( tbl, "D8" );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi:= ClassFunction( g, [ 1, -1, 0, 2, -2 ] );</span>
ClassFunction( D8, [ 1, -1, 0, 2, -2 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">psi:= ClassFunction( tbl,</span>
<span class="GAPprompt">></span> <span class="GAPinput">             List( Irr( g ), chi -> ScalarProduct( chi, phi ) ) );</span>
ClassFunction( D8, [ -3/8, 9/8, 5/8, 1/8, -1/4 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:= VirtualCharacter( g, [ 0, 0, 8, 0, 0 ] );</span>
VirtualCharacter( D8, [ 0, 0, 8, 0, 0 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">reg:= Character( tbl, [ 8, 0, 0, 0, 0 ] );</span>
Character( D8, [ 8, 0, 0, 0, 0 ] )
</pre></div>

<p><a id="X7B38035981D71B1B" name="X7B38035981D71B1B"></a></p>

<h5>72.6-4 ClassFunctionSameType</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ClassFunctionSameType</code>( <var class="Arg">tbl</var>, <var class="Arg">chi</var>, <var class="Arg">values</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">tbl</var> be a character table, <var class="Arg">chi</var> a class function object (<em>not</em> necessarily a class function of <var class="Arg">tbl</var>), and <var class="Arg">values</var> a list of cyclotomics. <code class="func">ClassFunctionSameType</code> returns the class function <span class="SimpleMath">\(\psi\)</span> of <var class="Arg">tbl</var> with values list <var class="Arg">values</var>, constructed with <code class="func">ClassFunction</code> (<a href="chap72_mj.html#X78F4E23985FCA259"><span class="RefLink">72.6-1</span></a>).</p>

<p>If <var class="Arg">chi</var> is known to be a (virtual) character then <span class="SimpleMath">\(\psi\)</span> is also known to be a (virtual) character.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">h:= Centre( g );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">centbl:= CharacterTable( h );;  SetName( centbl, "C2" );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ClassFunctionSameType( centbl, phi, [ 1, 1 ] );</span>
ClassFunction( C2, [ 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">ClassFunctionSameType( centbl, chi, [ 1, 1 ] );</span>
VirtualCharacter( C2, [ 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">ClassFunctionSameType( centbl, reg, [ 1, 1 ] );</span>
Character( C2, [ 1, 1 ] )
</pre></div>

<p><a id="X8727C2CB7ABEBC84" name="X8727C2CB7ABEBC84"></a></p>

<h4>72.7 <span class="Heading">Creating Class Functions using Groups</span></h4>

<p><a id="X86129DC37C55E4D6" name="X86129DC37C55E4D6"></a></p>

<h5>72.7-1 <span class="Heading">TrivialCharacter</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TrivialCharacter</code>( <var class="Arg">tbl</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TrivialCharacter</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the <em>trivial character</em> of the group <var class="Arg">G</var> or its character table <var class="Arg">tbl</var>, respectively. This is the class function with value equal to <span class="SimpleMath">\(1\)</span> for each class.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">TrivialCharacter( CharacterTable"A5" ) );</span>
Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">TrivialCharacter( SymmetricGroup( 3 ) );</span>
Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, 1, 1 ] )
</pre></div>

<p><a id="X82C01DDB82D751A9" name="X82C01DDB82D751A9"></a></p>

<h5>72.7-2 NaturalCharacter</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NaturalCharacter</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NaturalCharacter</code>( <var class="Arg">hom</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>If the argument is a permutation group <var class="Arg">G</var> then <code class="func">NaturalCharacter</code> returns the (ordinary) character of the natural permutation representation of <var class="Arg">G</var> on the set of moved points (see <code class="func">MovedPoints</code> (<a href="chap42_mj.html#X85E61B9C7A6B0CCA"><span class="RefLink">42.3-3</span></a>)), that is, the value on each class is the number of points among the moved points of <var class="Arg">G</var> that are fixed by any permutation in that class.</p>

<p>If the argument is a matrix group <var class="Arg">G</var> in characteristic zero then <code class="func">NaturalCharacter</code> returns the (ordinary) character of the natural matrix representation of <var class="Arg">G</var>, that is, the value on each class is the trace of any matrix in that class.</p>

<p>If the argument is a group homomorphism <var class="Arg">hom</var> whose image is a permutation group or a matrix group then <code class="func">NaturalCharacter</code> returns the restriction of the natural character of the image of <var class="Arg">hom</var> to the preimage of <var class="Arg">hom</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">NaturalCharacter( SymmetricGroup( 3 ) );</span>
--> --------------------

--> maximum size reached

--> --------------------

100%


¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.104Bemerkung:  (vorverarbeitet)  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.