inverse of matrix is not well defined
Nobody has claimed this yet.
- Dominant language
- Macaulay2
- Stars
- 435
- Forks
- 297
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 11
Description
I have a well defined, surjective map of non-free modules, but its inverse is not well defined. What is causing this?
```m2
n = 4
S = ZZ/11[x_0..x_(n-1)]
R = quotient minors_2 matrix { S_*_{0..n-2}, S_*_{1..n-1}}
g = map(cokernel(map(R^{3:{-3}},R^{6:{-4}},{{x_2-4*x_3, x_1, 5*x_3, x_0, 0, 0}, {-x_3, 0, x_2+4*x_3, 0, x_1, x_0}, {0,
3*x_3, 3*x_3, 3*x_2, 3*x_2-x_3, 3*x_1-x_2}})),cokernel(map(R^{6:{-3}},R^{12:{-4}},{{2*x_2, 2*x_0+4*x_1-x_2, -5*x_2,
2*x_2, 2*x_1+4*x_2, 2*x_1+4*x_2, 4*x_3, -5*x_1-4*x_2, -5*x_0-4*x_1, 5*x_2, 5*x_1-3*x_2, 5*x_0-3*x_1+2*x_2},
{5*x_2+2*x_3, 5*x_0-4*x_1+5*x_2-x_3, 3*x_2-5*x_3, 5*x_2+x_3, 5*x_1-4*x_2+4*x_3, 5*x_1-4*x_2+4*x_3, 4*x_3,
3*x_1+2*x_2-4*x_3, 3*x_0+2*x_1-5*x_2, 5*x_3, -2*x_2-3*x_3, -2*x_1-x_2+2*x_3}, {x_1, 0, 0, 0, x_0, 0, x_2, 0, 0, 0, 0,
0}, {0, x_0, 0, x_2, 0, x_1, 4*x_3, 0, 0, 0, 0, 0}, {2*x_3, x_3, x_2+5*x_3, -2*x_3, -4*x_3, -4*x_3, 4*x_3, x_1+4*x_3,
x_0, -5*x_3, 3*x_3, -2*x_3}, {-x_3, -x_3, -3*x_3, -5*x_3, -5*x_3, 5*x_3, 5*x_3, 4*x_3, x_3, x_2, x_1-4*x_3,
x_0-2*x_3}})),{{4, -5, 1, 0, 0, 0}, {0, -4, 0, 1, 0, 0}, {2, -3, 0, 0, -3, 1}})
isWellDefined g and isSurjective g -- g should be invertible
(g * inverse g) == id_(target g) -- and it can be inverted
isWellDefined inverse g -- but the inverse is not well defined
isWellDefined (id_(target g) // g) -- this one works, but is much slower
```
cc: @Devlin-Mallory
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the reproducible Macaulay2 session in issue #3738 and compare `isWellDefined inverse g` with `isWellDefined (id_(target g) // g)`. Trace why the displayed inverse is rejected despite `g` being well-defined, surjective, and apparently invertible; done means explaining the discrepancy and determining the appropriate correction or documented behavior.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100