© 2007 John Abbott
GNU Free Documentation License, Version 1.2

CoCoALib Documentation Index

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

You can use CanonicalHom whenever the domain is RingZZ or RingQQ, 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 RingZZ or RingQQ are tested last because the other cases offer shortcuts (compared to ZZEmbeddingHom and QQEmbeddingHom).

Bugs, Shortcomings, etc

JAA does not like the structure of the code. Also the 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!

Are there any missing cases?