a little bit better documentation for nice monomorphisms#6211
Conversation
Describe technical conditions for setting a given map as nice monomorphism.
doc/ref/grphomom.xml
Outdated
| <P/> | ||
| <List> | ||
| <Item> | ||
| <C>G</C> does not store a nice monomorphism yet. |
There was a problem hiding this comment.
| <C>G</C> does not store a nice monomorphism yet. | |
| <C>G</C> does not store a nice monomorphism already (i.e. <C>HasNiceMonomorphism(G)</C> returns <K>false</K>). |
| overhead of the test, by calling <C>SetIsInjective( map, true )</C>. | ||
| Note that the <C>IsInjective</C> call for <C>map</C> may compute and store | ||
| some different nice monomorphism in the source of <C>map</C>, | ||
| which is probably <C>G</C>. |
There was a problem hiding this comment.
So calling IsInjective may mean that you cannot call SetNiceMonomorphism after?
There was a problem hiding this comment.
You can call SetNiceMonomorphism for an object which has already a NiceMonomorphism stored, but this call has no effect, and you get no warning about this. (We do not check whether a second call of an attribute setter tries to set a different value, in the sense of =. First of all, this could be expensive. And there might also be logical problems; sometimes, equality would not be the right comparison because actually one needs object identity.)
An example where IsInjective actually sets a nice monomorphism is discussed in #6209.
| </Item> | ||
| <Item> | ||
| <C>map</C> knows that it is a group homomorphism, | ||
| calling <Ref Oper="ImagesSet"/> with <C>map</C> and a subgroup of <C>G</C> |
There was a problem hiding this comment.
Is there a way to check if this condition holds?
There was a problem hiding this comment.
I do not know an easy way, so I wanted to be careful with promises.
Initially I had thought that we can write that at least IsSPGeneralMapping is necessary for a nice monomorphism, but one might construct some map by hand, with its individual methods, where this does not hold but still it can be used as a nice monomorphism.
Usually something that makes sense as a nice monomorphism will be in IsGroupHomomorphism and IsInjective, but up to now we did not formally require this.
Technically, the point is that the images and preimages of group objects are again group objects, because this is assumed in the methods that transfer information along the mapping.
|
I think this is a good improvement, I suggested a couple of tweaks, please feel free to take or leave them. |
Describe technical conditions for setting a given map as nice monomorphism.
In particular, describe why the example from #6209 does not work.