Drinfeld Modules: Default to zero endomorphism in .hom
and avoid inversion of zero endomorphism
#38964
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 PR fixes #38953 and is inspired by the error raised in the issue:
__invert__
, so thatphi.hom(a)
actually returns an invertible morphism.phi.hom(K.zero())
does not return any homomorphism: Since the codomain is not specified, it tries to find a codomain via the.velu
-method, but this only works if the given element defines an isogeny, whichK.zero()
does not. Instead of raising an error for this special case in.hom
, it seems more robust to default to the zero endomorphism ofself
instead.isog
in the.velu
-method.