# Lifting a matrix from $\mathbb{Q}[Y]/(Y-1)$

I have a matrix in $\mathbb{Q}[Y]/(Y-1)$ and want to lift it to $\mathbb{Q}[Y]$, however, I get an error:

sage: D.<Y> = QQ[]
sage: B = matrix(D, [[Y, 0]])
sage: Dbar = D.quotient(Y-1)
sage: Bbar = B.change_ring(Dbar)
sage: Bbar.lift()
Traceback (most recent call last):
...
TypeError: unable to convert 1 to a rational


Lifting single elements instead of a matrix works:

sage: Dbar(Y^2).lift()
1


Lifting a matrix from the integers modulo a prime works also:

sage: B = matrix(ZZ, [[7, 0]])
sage: Dbar = ZZ.quotient(5)
sage: Bbar = B.change_ring(Dbar)
sage: Bbar.lift()
[2 0]


So how do I lift the matrix? Building a new matrix by hand und lifting componentwise seems to be an option; however, I think that it is somewhat ugly.

edit retag close merge delete

Sort by » oldest newest most voted

This bug boils down to the following more elementary problem.

sage: D.<Y> = QQ[]
sage: Dbar = D.quotient(Y-1)
sage: one = Dbar.one()
sage: one
1
sage: D(one)
Traceback (most recent call last)
...
TypeError: unable to convert 1 to a rational


A workaround for your use case is as follows.

sage: Bbar.lift()


use the following

sage: Bbar.apply_map(Dbar.lift)
[1 0]


You can check that it lives in the correct matrix space:

sage: _.parent()
Full MatrixSpace of 1 by 2 dense matrices over Univariate Polynomial Ring in Y over Rational Field

more

Thank you, the work-around works for me. Is the underlying problem a known bug or shall I create a ticket?

@Clemens Heuberger: not sure, I have searched neither Sage trac nor Sage lists for it.