Skip to content
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

Invertibility of simplification_isomorphism #24137

Open
sagetrac-wphooper mannequin opened this issue Nov 1, 2017 · 4 comments
Open

Invertibility of simplification_isomorphism #24137

sagetrac-wphooper mannequin opened this issue Nov 1, 2017 · 4 comments

Comments

@sagetrac-wphooper
Copy link
Mannequin

sagetrac-wphooper mannequin commented Nov 1, 2017

The simplification_isomorphism() method in the class
sage.groups.finitely_presented.FinitelyPresentedGroup_with_category
returns an isomorphism, which would in particular mean it is invertible. It would be useful to be able to access the inverse, however there is no obvious way to access this inverse.

Running the following code

G.<a,b,c> = FreeGroup()
H = G / [a*b*c, a*b^2, c*b/c^2]
I = H.simplification_isomorphism()
print(type(I))
~I

Results in:

<class 'sage.groups.finitely_presented.GroupMorphismWithGensImages'>
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-106829259be7> in <module>()
      3 I = H.simplification_isomorphism()
      4 print(type(I))
----> 5 ~I

TypeError: bad operand type for unary ~: 'GroupMorphismWithGensImages'

I'm not sure if ~I would be the way to invert the map, but there are no obvious inversion methods in I, and the type of I suggests it is not invertible.

Thank you for your help. I am happy to help in any way I can, but I don't have much experience with creating patches, etc.

Component: group theory

Keywords: simplification_isomorphism

Issue created by migration from https://trac.sagemath.org/ticket/24137

@sagetrac-wphooper sagetrac-wphooper mannequin added this to the sage-8.1 milestone Nov 1, 2017
@roed314
Copy link
Contributor

roed314 commented Nov 4, 2017

comment:1

If you look at the source for simplification_isomorphism you'll see

I = self.gap().IsomorphismSimplifiedFpGroup()
domain = self
codomain = wrap_FpGroup(I.Range())
phi = lambda x: codomain(I.ImageElm(x.gap()))
HS = self.Hom(codomain)
return GroupMorphismWithGensImages(HS, phi)

The first step toward finding an inverse in Sage is to figure out how to do it in Gap....

@roed314
Copy link
Contributor

roed314 commented Nov 4, 2017

comment:2

You can look at 47.12-1 in https://www.gap-system.org/Manuals/doc/ref/chap47.html

@sagetrac-wphooper
Copy link
Mannequin Author

sagetrac-wphooper mannequin commented Nov 10, 2017

comment:3

I'm sorry about being slow to respond: I've been busy.

When I get a chance, I'll try to figure out how to do this myself so that I can submit a patch. Thanks for your help.

@roed314
Copy link
Contributor

roed314 commented Nov 10, 2017

comment:4

Replying to @sagetrac-wphooper:

I'm sorry about being slow to respond: I've been busy.

When I get a chance, I'll try to figure out how to do this myself so that I can submit a patch. Thanks for your help.

No problem; we're all busy. Feel free to comment here if you get stuck.

@mkoeppe mkoeppe removed this from the sage-8.1 milestone Dec 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants