$\hat A$-genus polynomials $\hat A_n(p_1,\dots,p_n)$
edit · history · discussion · files · short url · characteristic classes algebra polynomial
Polynomials
$n$ 
$\hat A_n$
1:
-1/24*p1
2:
7/5760*p1^2 - 1/1440*p2
3:
-31/967680*p1^3 + 11/241920*p1*p2 - 1/60480*p3
4:
127/154828800*p1^4 - 113/58060800*p1^2*p2 + 13/29030400*p2^2 + 1/907200*p1*p3 - 1/2419200*p4
5:
-73/3503554560*p1^5 + 1073/15328051200*p1^3*p2 - 311/7664025600*p1*p2^2 - 61/1277337600*p1^2*p3 + 1/45619200*p2*p3 + 53/1916006400*p1*p4 - 1/95800320*p5
6:
1414477/2678117105664000*p1^6 - 1540453/669529276416000*p1^4*p2 + 76247/33476463820800*p1^2*p2^2 + 36221/20922789888000*p1^3*p3 - 4009/13948526592000*p2^3 - 3491/1743565824000*p1*p2*p3 - 16759/13948526592000*p1^2*p4 + 703/2615348736000*p3^2 + 5767/10461394944000*p2*p4 + 1219/1743565824000*p1*p5 - 691/2615348736000*p6
Definition
The entry is the homogeneous component $\hat A_n(p_1,\dots,p_n)$ of the $\hat A$-class of a real vector bundle $E$, written in the Pontryagin classes $p_i$ [2] and defined by Formulas (1) and (2).
Parameters
$n$
—   degree ($n\geq 1$)
Formulas
(1)
$1+\sum_{n\geq1}\hat A_n(p_1,p_2,\dots)=\prod_i Q(x_i)$, where the $x_i$ are the Pontryagin roots and $p_j=e_j(x_1,x_2,\dots)$ is the $j$-th elementary symmetric polynomial.
(2)
$Q(x)=\frac{\sqrt{x}/2}{\sinh(\sqrt{x}/2)}=1-\frac{x}{24}+\frac{7x^2}{5760}-\frac{31x^3}{967680}+\cdots$ [1]. Equivalently $Q(x)=\sum_{k\geq0}(2^{1-2k}-1)B_{2k}x^k/(2k)!$, using the Bernoulli numbers.
(3)
$\hat A_1=-p_1/24$, $\hat A_2=(7p_1^2-4p_2)/5760$, $\hat A_3=(-16p_3+44p_1p_2-31p_1^3)/967680$, and $\hat A_4=(-192p_4+512p_1p_3+208p_2^2-904p_1^2p_2+381p_1^4)/464486400$, as printed in [1].
(4)
$\hat A(M)=\langle \hat A_n(p_1(M),\dots,p_n(M)),[M]\rangle$ for a closed smooth manifold $M$ of dimension $4n$; for a spin manifold this is the index of the Dirac operator [1].
Comments
(5)
The table stores one homogeneous component per row, not the total $\hat A$-class $1+\hat A_1+\hat A_2+\cdots$ truncated at degree $n$.
(6)
The constant component $\hat A_0=1$ is not stored as a row; the table begins at $n=1$.
(7)
The convention here is $p_i=(-1)^i c_{2i}(E\otimes\mathbb C)$ [2].
(8)
This is the $\hat A$ genus, not the less common $A$ genus associated to the characteristic series $Q(16x)$ [1].
(9)
The coefficient of $p_n$ in $\hat A_n$ is $(-1)^n B_{2n}/(2\,(2n)!)$, which is never zero, so $\hat A_n$ uses exactly the variables $p_1,\dots,p_n$.
Programs
(P1)
Sage
import numberdb.sage as numberdb  # initialize Sage before named imports
from math import factorial
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.rational_field import QQ


def B(n):
    a = [QQ(0)] * (n + 1)
    for m in range(n + 1):
        a[m] = QQ(1) / QQ(m + 1)
        for j in range(m, 0, -1):
            a[j - 1] = QQ(j) * (a[j - 1] - a[j])
    return a[0]


def mul(f, g, n):
    h = [QQ(0)] * (n + 1)
    for i, a in enumerate(f):
        for j, b in enumerate(g):
            if i + j <= n:
                h[i + j] += a * b
    return h


def q_coeffs(n):
    return [
        (QQ(2) ** (1 - 2 * k) - QQ(1)) * B(2 * k) / QQ(factorial(2 * k))
        for k in range(n + 1)
    ]


def log_q(n):
    q = q_coeffs(n)
    q[0] -= QQ(1)
    out = [QQ(0)] * (n + 1)
    power = [QQ(1)] + [QQ(0)] * n
    for m in range(1, n + 1):
        power = mul(power, q, n)
        sign = QQ(1) if m % 2 else QQ(-1)
        for k in range(1, n + 1):
            out[k] += sign * power[k] / QQ(m)
    return out


def exps(e):
    try:
        return tuple(e)
    except TypeError:
        return (e,)


def weight(e):
    return sum((i + 1) * a for i, a in enumerate(exps(e)))


def monomial(R, xs, e):
    term = R(1)
    for x, a in zip(xs, exps(e)):
        term *= x ** a
    return term


def terms(f, n, exact):
    R = f.parent()
    xs = R.gens()
    out = R(0)
    for e, c in f.dict().items():
        w = weight(e)
        if (exact and w == n) or (not exact and w <= n):
            out += c * monomial(R, xs, e)
    return out


def Ahat(n):
    R = PolynomialRing(QQ, ["p%s" % i for i in range(1, n + 1)])
    p = R.gens()
    s = {}
    for m in range(1, n + 1):
        total = sum(((-1) ** (i + 1) * p[i - 1] * s[m - i]
                     for i in range(1, m)), R(0))
        s[m] = total + (-1) ** (m + 1) * QQ(m) * p[m - 1]
    log = log_q(n)
    exponent = sum((log[m] * s[m] for m in range(1, n + 1)), R(0))
    total = term = R(1)
    for k in range(1, n + 1):
        term = terms(term * exponent / QQ(k), n, False)
        total = terms(total + term, n, False)
    return terms(total, n, True)


print(Ahat(6))
Links
Similar tables
Hirzebruch $L$-polynomials —   store another universal characteristic-class polynomial defined by a multiplicative sequence in Pontryagin classes
Todd polynomials —   store another universal characteristic-class polynomial defined by a multiplicative sequence
Chern character polynomials —   store another universal characteristic-class polynomial, additive in the Chern roots rather than multiplicative in the Pontryagin roots
Elementary symmetric polynomials —   give the elementary symmetric functions $e_j$ that are renamed as Pontryagin classes here
Bernoulli numbers —   give the Bernoulli numbers appearing in the characteristic power series
Data properties
Entries are of type: rational polynomial
Table is complete: no (it holds every component with $1\leq n\leq 6$; $\hat A_7$ is the first component needing more than six variables, which is the most a stored polynomial may have)
How they were obtained:

Every stored component was checked against the Pontryagin-root definition in Formula (1), evaluated in seven Pontryagin roots. The components $\hat A_1$ to $\hat A_4$ were also checked against the terms printed in [1].

more

The specialisations for the K3 surface and $\mathbb{HP}^2$ were checked: $p_1=-48$ gives $\hat A(K3)=2$, and $p_1=2h$, $p_2=7h^2$ gives $\hat A(\mathbb{HP}^2)=0$, in both cases by Formula (4). The generator computes exact rational coefficients from Formula (1).