# $(BP_*, BP_*BP)$

In this page, I hope to collect information regarding the Hopf algeboid structure on $(BP_*, BP_*BP)$. The main point of this page is the maxima code at the end that gives explicit formulas. Recall that the structure of a Hopf algebroid involves maps

• $\eta_R: BP_* \to BP_*BP$
• $\eta_L: BP_* \to BP_*BP$
• $\Delta: BP_*BP \to BP_*BP \otimes_{BP_*} BP_*BP$
• $\varepsilon: BP_*BP \to BP_*$
• $c: BP_*BP \to BP_*BP$.

All of these maps are ring maps. Moreover, $BP_*BP$ is a $BP_*$-bimodule via $\eta_L$ and $\eta_R$, and $\Delta$ and $\varepsilon$ are $BP_*$-bimodule maps. Recall also that

• $BP_* = \mathbb{Z}_{(p)}[v_1, v_2, \ldots]$ with $|v_n| = 2(p^n - 1)$.
• $BP_*BP = BP_*[t_1, t_2, \ldots]$ with $|t_n| = 2(p^n - 1)$.

# Choice of generators

The elements $v_n$ are not "well-defined". There are two standard choicse. Our formulas below will be expressed in terms of auxiliary variables $\lambda_n$, and the two choices correspond to how $\lambda_n$ is expressed in terms of $v_n$.

The Hazewinkel generators are defined by

$p \lambda_n = \sum_{0 \leq i < n} \lambda_i v_{n-i}^{p^i}.$

The Araki generators are defined by

$p \lambda_n = \sum_{0 \leq i \leq n} \lambda_i v_{n-i}^{p^i}.$

# Formulas

Explicit formulas for the Hopf algebroid structure are as follows:

\begin{aligned}\varepsilon(t_i) &= 0, \varepsilon(v_i) = v_i \\ \eta_L(v_n) &= v_n. \\ \eta_R (\lambda_n) &= \sum_{0 \leq i \leq n} \lambda_i t_{n-i}^{p^i}. \\ \sum_{i, j \geq 0} \lambda_i \Delta(t_j)^{p^i} &= \sum_{i, j, k \geq 0} \lambda_i t_j^{p^i} \otimes t_k^{p^{i + j}}. \\ \sum_{i, j, k \geq 0} \lambda_i t_j^{p^i} c(t_k)^{p^{i + j}} &= \sum_{i \geq 0} \lambda_i .\end{aligned}

For the purposes of applying the last two formulas, it is useful to note that $\lambda_i \Delta(t_j)^{p^i}$ has degree $2(p^{i + j} - 1)$; and $\lambda_i t_j^{p^i} \otimes t_k^{p^{i + j}}$ has degree $2(p^{i + j + k} - 1)$, etc.

# Maxima code

The following contains code for computing $\eta_R$, $\Delta$ and $c$ in maxima:

p : 3;

/* Define some edge cases */
t[0] : 1;
s[0] : 1;
c[0] : 1;
v[0] : p;

/* Hazewinkel */
l[n] := if is(equal(n, 0)) then 1 else 1/p * sum(l[i] * (v[n-i])^(p^i) ,i, 0, n-1);
m(n) := n-1;

/* Araki */
/* l[n] := if is(equal(n, 0)) then 1 else 1/(p - p^(p^n)) * sum(l[i] * (v[n-i])^(p^i) ,i, 0, n-1);
m(n) := n; */

/* Actual code */
etaRl[n] := sum(l[i] * t[n-i]^(p^i),i, 0, n);
etaR[n] := if is(equal(n, 0)) then p else expand(p * etaRl[n] - sum(etaRl[i] * (etaR[n-i]^(p^i)), i, 1, m(n)));

d[n] := expand(sum(sum(l[i] * t[j]^(p^i) * s[n-i-j]^(p^(i+j)), j, 0, n-i),i, 0, n) - sum(l[i] * d[n-i]^(p^i), i, 1, n));

c[n] := expand(l[n] - sum(sum(l[i] * t[n-k-i]^(p^i) * c[k]^(p^(n-k)), i, 0, n-k), k, 0, n-1));


To use this in maxima, Then import/paste in the above code. You can then type etaR[n] to compute $\eta_R(v_n)$, and d[n] and c[n] to compute $\Delta(t_n)$ and $c(t_n)$ respectively. Note that the computation time needed grows very quickly with n.

By default, this does calculations at the prime 3, which can be customized in the first line.

Also, by default, this uses the Hazewinkel generators. If you want to use the Araki generators, comment out the two lines following /* Hazewinkel */ and uncomment those following /* Araki */.