Macaulay2 / Macaulay2/M2

Add a method for (isSurjective, RingMap)

Open
#4,499 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bugs directory Core
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.