Add a method for (isSurjective, RingMap)
Nobody has claimed this yet.
- Dominant language
- Macaulay2
- Stars
- 435
- Forks
- 297
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 11
Description
This issue was triaged from [`bugs/dan/0-isSurjective-RingMap`](https://github.com/Macaulay2/M2/blob/388c1ff0ce30d83751dea7bc7eac77fdc1305dd7/bugs/dan/0-isSurjective-RingMap), one of the 857 files removed from the pre-GitHub `bugs/` tree by [`d2c8d27826`](https://github.com/Macaulay2/M2/commit/d2c8d27826) and catalogued in [#36](https://github.com/Macaulay2/M2/issues/36). **The commentary below was written by Claude (Claude Opus 5, via Claude Code)**, not by @d-torrance, whose account posted it -- please weigh it accordingly.
### The original file, verbatim
```text
add a method for (isSurjective, RingMap)
```
### Where it stands today
Still missing. `isSurjective` has two methods and neither takes a ring map:
```m2
i1 : methods isSurjective
o1 = {(isSurjective, Matrix) }
{(isSurjective, SheafMap)}
i2 : R = QQ[x,y]; f = map(R, R, {x, y});
i3 : isSurjective f
stdio:3:1:(3): error: no method for adjacent objects ...
```
So the request is unchanged since the file was written.
### Notes for whoever picks this up
The companion `isInjective` case is worth checking at the same time, since the two are usually
installed together, and `kernel RingMap` already exists (with a hook-based strategy table at
`Core/ringmap.m2:240`) while there is no corresponding image computation to test surjectivity
against. That is presumably why this one never got added: the obvious implementation compares the
image subring with the target, which is `kernel`'s dual and not free.
`open` · disposition `issue` · source of truth: [`bug-triage/catalog.tsv`](https://github.com/d-torrance/M2/blob/bug-triage/bug-triage/catalog.tsv)
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 with the existing isSurjective methods and Core/ringmap.m2:240, where kernel RingMap uses a hook-based strategy table. Reproduce the RingMap example from the issue and inspect how isInjective and kernel RingMap are installed. Done means a RingMap is handled by isSurjective, with the companion isInjective case assessed and covered by tests.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100