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 Qp, T is given by an eisenstein polynomial f∈U[x] and W is given by an eisenstein polynomial g∈T[x]. Hence T is an deg(g)deg(f)−dimensional U−vector space with basis consisting of products αiβj such that 0≤i<deg(f),0≤j<deg(g), where α is a root of f and β is a root of g.
Let γ∈W be arbitrary. The goal is to compute the matrix of multiplication by γ 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.<x> = U[]
sage: f = x^2 - U.uniformizer()
sage: T = U.extension(f,names="alpha")
sage: S.<x> = 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 γ w.r.t. the power basis 1,ˉx,ˉx2,…,ˉxdeg(g)−1.
sage: U = Qq(2^2,names="u")
sage: R.<x> = U[]
sage: f = x^2 - U.uniformizer()
sage: T = U.extension(f,names="alpha")
sage: S.<x> = 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 γ 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.