-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
provide automorphism groups that do not consist of automorphisms #4237
Comments
I touched upon these points 3 years ago in #920 and back then we seemed to be happy with As far as I understand, our design for the automorphism groups means that one should do Having different behavior for |
On Wed, Oct 23, 2024 at 07:05:17AM -0700, Tommy Hofmann wrote:
I touched upon these points 3 years ago in #920 and back then we seemed to be happy with `AutomorphismGroup` etc. What has changed?
As far as I understand, our design for the automorphism groups means that one should do `A = automorphism_group(G); mp = isomorphism(PermGroup, A)`?
Nothing was changed, but a couple of automorphism groups were added by
people without reading...
The "Plan" always was, and still is, to provide a useful group (perm,
fp, pc) and an "interpretation map" uniformly.
Some things are "just" copied over from Gap
… --
Reply to this email directly or view it on GitHub:
#4237 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
@fieker Concerning the plan you mention, one solution would be an interface like the following.
(It would be more elegant to return a Then the following would work.
This would even be compatible with the current |
The codomain could just be some artificial object "Set of automorphisms of blabla" without mathematical structure. This is done for example for number fields:
It could be the same object we would use to make the following work:
I am skeptical about the |
On Fri, Oct 25, 2024 at 06:27:54AM -0700, Tommy Hofmann wrote:
The codomain could just be some artificial object "Set of automorphisms of blabla" without mathematical structure. This is done for example for number fields:
```
julia> K, a = cyclotomic_field(7, :a);
julia> A, m = automorphism_group(PermGroup, K);
julia> codomain(m)
Set of automorphisms of Cyclotomic field of order 7
julia> m(one(A))
Map
from cyclotomic field of order 7
to cyclotomic field of order 7
julia> parent(ans)
Set of automorphisms of Cyclotomic field of order 7
```
It could be the same object we would use to make the following work:
```
julia> id_hom(A)
Group homomorphism
from permutation group of degree 6
to permutation group of degree 6
julia> parent(ans)
ERROR: MethodError: no method matching parent(::GAPGroupHomomorphism{PermGroup, PermGroup})
```
Hecke.MapParent(dom, codom, "typ")
I am skeptical about the `interpretation_map` approach.
So am I - in particular, as it is a second step. I'd really like the map
to be automatically returned as a 2nd return value - unless s.o. has a
compelling argument against it
…
--
Reply to this email directly or view it on GitHub:
#4237 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
My idea was that this way, the syntax for the new automorphism groups is the same as for the old ones. Do we want that |
Since we don't want to break backwards compatibility, I like the idea of having There are other
But that's fine, we can also add a two-arguments-two-return-values variant of that down the road. |
One operation I sometimes down with automorphism groups is to compute "centralizers" of group elements (i.e. a stabilizer) so I need a way to efficiently construct a G-set from this -- but the new setup still allows for that quite nicely (we may make it even nice by allowing a G-set construction API that takes a group plus an "action morphism", but that can be done down the road) |
@fieker had mentioned in the discussion of #4191 that he would like to get an implementation of "abstract" automorphism groups in the sense that their elements are not "concrete" automorphisms of the given object; instead one should ask for the corresponding map of an element if one wants to compute images and preimages under this map.
For that, we could for example define that for a group
G
,automorphism_group(G; abstract = false)
returnsA, mp
whereA
is some group isomorphic with the full automorphism group ofG
, andmp
is a map that takes an element ofA
and returns the group isomorphism onG
that corresponds to this element.For finite groups with underlying GAP group, this can be implemented via GAP's
NiceMonomorphism
mechanism that delegates computations with the automorphism maps on the GAP side to another (isomorphic) group, typically (always?) a permutation group. We can chooseA
as this permutation group, and implementmp
via the data that are already used by GAP.mp
be? A natural type would be a map with domainA
, but then what is its codomain?A
, similar to the situation withquo
? If yes then we could use the syntaxautomorphism_group(PermGroup, G)
for the new implementation, and one could also get the current automorphism groups by choosing the typeAutomorphismGroup
. The only problem with the old and the new implementation is then that the return values ofautomorphism_group
are different. Or should we perhaps omit the return valuemp
, and provide a function that can be applied to the groupA
in order to create the map in question?Once the questions about the syntax have been decided, I will provide a pull request for the implementation.
The text was updated successfully, but these errors were encountered: