Skip to content

Document ideal interface #2113

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

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Conversation

emikelsons
Copy link
Contributor

@emikelsons emikelsons commented Jun 27, 2025

Add a documentation page for the ideal interface.

This is addressing #1733 and comments in #2108. I plan to extend this slightly later
@fingolfin

@emikelsons emikelsons reopened this Jun 27, 2025
Copy link

codecov bot commented Jun 27, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 88.34%. Comparing base (8ea17bc) to head (b9b49ae).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2113   +/-   ##
=======================================
  Coverage   88.34%   88.34%           
=======================================
  Files         126      126           
  Lines       31674    31674           
=======================================
  Hits        27982    27982           
  Misses       3692     3692           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@thofma
Copy link
Member

thofma commented Jun 27, 2025

I am not too happy with the change. The function should not call Generic.Ideal, but whatever ideal wants to spit out.

In general, we are not really advertising Generic.Ideal. It was kind of an experiment, but whether to keep it or not is not clear. See #2108 (comment).

@emikelsons
Copy link
Contributor Author

I am not too happy with the change. The function should not call Generic.Ideal, but whatever ideal wants to spit out.

In general, we are not really advertising Generic.Ideal. It was kind of an experiment, but whether to keep it or not is not clear. See #2108 (comment).

Ok, if the previous code was as desired, then I'll remove the edit. I was a bit confused as it didn't work in AA, but I suppose it makes sense for its use beyond.

Copy link
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! A few quick remarks / change requests

Comment on lines +18 to +22

Currently AbstractAlgebra.jl provides ideals of a Euclidean domain (assuming the existence of a `gcdx` function)
or of a univariate or multivariate polynomial ring over the integers.
Univariate and multivariate polynomial rings over other
domains (other than fields) are not supported at this time.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This text doesn't seem to belong here? It seems to be about the Genric.Ideal type?

Suggested change
Currently AbstractAlgebra.jl provides ideals of a Euclidean domain (assuming the existence of a `gcdx` function)
or of a univariate or multivariate polynomial ring over the integers.
Univariate and multivariate polynomial rings over other
domains (other than fields) are not supported at this time.

Comment on lines +123 to +125
```julia
reduce_gens(I::NewIdeal)
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not clear to me that this is part of the "common interface". I wouldn't know what it does or how to use it from this alone. So let's remove it for now, we can still add this back if we feel a need.

Suggested change
```julia
reduce_gens(I::NewIdeal)
```

Comment on lines +104 to +122
```
```julia
issubset(I::NewIdeal, J::NewIdeal)
```
```julia
iszero(I::NewIdeal)
```
```julia
+(I::T, J::T) where {T <: NewIdeal}
```
```julia
*(I::T, J::T) where {T <: NewIdeal}
```
```julia
intersect(I::T, J::T) where {T <: NewIdeal}
```
```julia
==(I::T, J::T) where {T <: NewIdeal}
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Of course all of these will get default implementations with my PR #2108 -- but we can update this later, once that PR is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants