2020-06-19 15:57:12 +0200 received badge ● Editor (source) 2020-06-19 15:13:10 +0200 answered a question find characteristic polynomial in a tower of extensions over Qp So far, I managed to get around this by lifting $\gamma$ to $T[x]$ and taking the coefficients w.r.t the basis $1,x,x^2,\dots$. Since the lift is the unique polynomial of degree less than deg(g), the coefficients are the ones I am looking for? sage: gamma = W.an_element() sage: coeffs = gamma.lift().coefficients(sparse=False) and then padding coeffs with deg(g) - len(coeffs) zeroes. 2020-06-19 14:46:57 +0200 asked a question find characteristic polynomial in a tower of extensions over Qp We have a tower of extensions W/T/U where U is an unramified extension of $Q_p$, T is given by an eisenstein polynomial $f\in U[x]$ and W is given by an eisenstein polynomial $g\in T[x]$. Hence T is an $deg(g)deg(f)-$dimensional $U-$vector space with basis consisting of products $\alpha^i \beta^j$ such that $0\leq i < deg(f), 0\leq j < deg(g)$, where $\alpha$ is a root of $f$ and $\beta$ is a root of $g$. Let $\gamma \in W$ be arbitrary. The goal is to compute the matrix of multiplication by $\gamma$ wrt the above $U-$basis. The issue is that the field $W$ cannot be created as an extension of $T$ in Sage, it seems that at the moment you cannot create an extension given by an eisenstein polynomial if T is already an eisenstein extension. Example of how it does not work: sage: U = Qq(2^2,names="u") sage: R. = U[] sage: f = x^2 - U.uniformizer() sage: T = U.extension(f,names="alpha") sage: S. = T[] sage: g = x^2-T.uniformizer() sage: W = T.extension(g,names="beta") TypeError: Unable to coerce -alpha to a rational We can create W as a quotient ring T[x]/(g), but I don't know how to get coefficients of $\gamma$ w.r.t. the power basis $1,\bar{x},\bar{x}^2,\dots,\bar{x}^{deg(g)-1}$. sage: U = Qq(2^2,names="u") sage: R. = U[] sage: f = x^2 - U.uniformizer() sage: T = U.extension(f,names="alpha") sage: S. = T[] sage: g = x^2-T.uniformizer() sage: W = S.quotient_ring(g) sage: V, map_to_W, map_from_W, = W.free_module() NotImplementedError: If the above were possible, we could simply map $\gamma$ to the free module, then find coefficients wrt the power basis. Then we could do the same thing for each coefficient with W replaced by T to get the U-coefficients.