Fix IsIntegralRing
to return false
for rings that are euclidean but not integral by changing IsUniqueFactorizationRing
and IsEuclideanRing
to not imply IsIntegralRing
anymore
#5817
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an updated version of PR #3976 by @olexandr-konovalov -- I tried to update that PR but could not, so I opened a new one.
This fixes #3975 and closes #3976.
The main change is that I did not drop the implication
Instead I changed
IsUniqueFactorizationRing
(and henceIsEuclideanRing
) to no longer implyIsIntegral
. I also adjusted docstrings.Just to avoid confusion, I'd like to point out that
IsIntegral
is a filter, so it never will give "correct" results in all cases -- it doesn't check the mathematical property but rather has a technical meaning. SoIsIntegralRing(R)
givingtrue
should mean that the ringR
is indeed an integral domain (only up to the existence of another bug, of course). While it givingfalse
does not mean there are zero divisors, just that GAP cannot infer / prove that the ring is integral.In the discussion on PR #3976, @hulpke suggested that if we do the changes that I now did here, then we should perhaps introduce new filters
IsEuclideanDomain
orIsEuclideanIntegralRing
that have the old meaning (i.e. an alias forIsEuclideanRing and IsIntegralRing
). In principle I could do that (though we probably should avoid the "Domain" variant -- while I like that name, unfortunately GAP chose to overload the term domain (and also category) with a meaning that differs from what it normally means in math, and I am concerned about this causing confusion). However I am not sure what I'd do with it? So far all methods I looked at and code I tried seem to work fine with the new meaning. So while I am not opposed, my suggestion would be to hold back on adding that until we find a concrete usecase? Of course if @hulpke or someone else already has something specific in mind right now, please let me know!