CanonicalHom

© 2007 John Abbott
GNU Free Documentation License, Version 1.2



index page

User Documentation for CanonicalHom

The function CanonicalHom can be used to create certain simple canonical homomorphisms. If it is unable to produce the required homomorphism then it will throw an exception of type ErrorInfo having error code ERR::CanonicalHom (see error).

In all cases the syntax is:

   CanonicalHom(domain, codomain)

You can use CanonicalHom whenever the domain is RingZ or RingQ, or if codomain is formed from domain in a single step. Here is a complete list of the cases when CanonicalHom will work:

Maintenance notes for CanonicalHom

Structurally simple and rather tedious. It is important that the cases of the domain being RingZ or RingQ are tested last because the other cases offer shortcuts (compared to ZEmbeddingHom and QEmbeddingHom).

Bugs, Shortcomings, etc

JAA does not like the structure of the code. Also teh restriction to a "single step" seems artificial, but how to generalize this without perhaps producing annoying "semi-intelligent" code?

If you don't like goto, have a go at rewriting the implementation. I'll accept it so long as it is no more complicated than the current implementation!

Pity I cannot combine IsPolyRing and AsPolyRing to produce simpler code.

Are there any missing cases?