-
Notifications
You must be signed in to change notification settings - Fork 253
inverse of matrix is not well defined #3738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I think In your example, (Also, just a note that in general |
I agree with you in general, but in this case |
As you mention, R = ZZ/32003[x,y,z]/(x^3, x^2*y, x*y^2, y^4, y^3*z)
M = cokernel(map(R^{5:{1}, 6:{0}, 2:{-1}}, R^{7:{0}, 20:{-1}, 9:{-2}}, {{0, z, 0, y, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, z, 0, y, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {-x, 0, 0, 0, 0, 0, 0, x*y, 0, 0, 0, x^2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, y^2*z, 0, 0, 0, 0, y^3, 0, 0, 0}, {z, 0, 0, 0, 0, 0, 0, -y*z, y^2, 0, 0, -x*z, x*y, 0, 0, x^2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {y, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x^2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, z, -y, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, y*z, 0, 0, 0, 0, y^2, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, y, z, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, y, 0, z, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, z, 0, 0, y, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, z, 0, 0, y, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, z, 0, 0, y, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -z, 0, y, 0, x, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, z, 0, 0, 0, y, x}}))
N = cokernel(map(R^{2:{1}}, R^6, {{z, y, x, 0, 0, 0}, {0, 0, 0, z, y, x}}))
g = map(N, M, {{10821, -12119, 15659, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {-7155, -15464, 7853, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}})
g * (id_N // g) -- identity
g * (g \\ id_M) -- zero!!
isWellDefined (g \\ id_M) -- true |
Maybe I'm missing something, but I think the difference here is between being a left and right inverse. Given g: N -> M, id_N // g asks for a map h: N -> M such that g * h is id_N, while g \ id_M asks for a map h': N -> M such that h' * g is id_M. In the example, g is a surjection with nontrivial kernel, so a right inverse can (and does) exist, while a left inverse never exists, so in particular (g \ id_M) returns 0. (If you were trying to split an injection g, then g \ id_(source g) would be the one to use.) |
Ah, of course, I drew my diagram wrong, thanks! (The original issue still stands) |
I have a well defined, surjective map of non-free modules, but its inverse is not well defined. What is causing this?
cc: @Devlin-Mallory
The text was updated successfully, but these errors were encountered: