Dave, I agree that it is quite possible that not all of them are correct 
non-invertible elements in a ring. Of course, we would go through an 
examine them more individually as David suggested.

I was originally thinking ValueError as well, but, as Martin pointed out, 
ArithmeticError is a bit more specific. So that gets my vote.

Best,
Travis


On Tuesday, February 6, 2024 at 11:12:30 AM UTC+9 David Roe wrote:

> I agree that there are cases that shouldn't be changed to an 
> ArithmeticError, and that grepping for "invertible" isn't sufficient.  But 
> I think with a narrower scope this change is a good idea: if the error 
> arises from attempting to invert a non-invertible element of a ring.
>
> So +1 from me, with a manual check that the change seems appropriate.
> David
>
> On Mon, Feb 5, 2024 at 7:54 PM Dave Morris <dmo...@deductivepress.ca> 
> wrote:
>
>> -1 from me.
>>
>> Looking at just a few uncovered some that I think are definitely not 
>> ArithmeticError.
>>
>> Examples:
>>         There is an occurrence of ValueError('{} is not invertible') in 
>> the lift_isometry method of cliffordalgebra.py.  Lifting an isometry is 
>> clearly not an arithmetic operation.  ValueError is correct here.
>>         There is an occurrence of TypeError('the A-basis is defined only 
>> when 2 is invertible') in the method to find an `A`-basis of an 
>> Iwahori-Hecke algebra.  Finding such a basis is clearly not an arithmetic 
>> operation.  Perhaps this should be a ValueError instead of a TypeError, 
>> though.
>>         RuntimeError("morphism is not invertible").  I think that finding 
>> the inverse of a morphism between two objects of a category is clearly not 
>> an arithmetic operation.  Perhaps this should be a ValueError rather than a 
>> RuntimeError.
>>
>> If you want to unify, I think ValueError might work.  But I think they 
>> all need to be inspected, not just assume a single error type fits.
>>
>> > On Feb 5, 2024, at 4:44 AM, 'Martin R' via sage-devel <
>> sage-...@googlegroups.com> wrote:
>> > 
>> > Dear all,
>> > 
>> > currently, when trying to invert a non-invertible element, one of the 
>> following errors is raised (found using `grep -r --include=*.{py,pyx} 
>> --color -nH --null -e "Error(.*invertible" *`):
>> >     • 21 ValueError('{} is not invertible')
>> >     • 11 ZeroDivisionError("element is not invertible")
>> >     • 10 TypeError('the A-basis is defined only when 2 is invertible')
>> >     • 8 ArithmeticError("self must be invertible to have a 
>> multiplicative order")
>> >     • 2 RuntimeError("morphism is not invertible")
>> >     • 2 NotImplementedError("matrix must be invertible")
>> > 
>> > Travis and I would like to propose to unify these to 
>> "ArithmeticError".  If nobody objects, I would prepare a PR within the next 
>> few days.
>> > 
>> > Best wishes,
>> > 
>> > Martin
>> > 
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> Groups "sage-devel" group.
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an email to sage-devel+...@googlegroups.com.
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sage-devel/d0637584-4908-4101-8e1b-74ec0477ff84n%40googlegroups.com
>> .
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sage-devel" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sage-devel+...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sage-devel/4A0E1F77-27A7-4DF3-BB18-636853BF4CC0%40deductivepress.ca
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/d600a383-43a9-4105-8d81-cd2ec1db3dd1n%40googlegroups.com.

Reply via email to