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

Base extension for Dirichlet groups and characters via maps #18072

Closed
pjbruin opened this issue Mar 27, 2015 · 7 comments
Closed

Base extension for Dirichlet groups and characters via maps #18072

pjbruin opened this issue Mar 27, 2015 · 7 comments

Comments

@pjbruin
Copy link
Contributor

pjbruin commented Mar 27, 2015

This ticket implements the following improvement to change_ring for Dirichlet groups and characters:

sage: K.<i> = QuadraticField(-1)
sage: G = DirichletGroup(5, K)
sage: chi = G[1]
sage: chi(2)
i
sage: f = K.complex_embeddings()[0]
sage: G.change_ring(f)
Group of Dirichlet characters of modulus 5 over Complex Field with 53 bits of precision
sage: psi = chi.change_ring(f)
sage: psi(2)
-1.00000000000000*I

Component: modular forms

Keywords: Dirichlet group base extension

Author: Peter Bruin

Branch/Commit: dd63f09

Reviewer: Jean-Pierre Flori

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

@pjbruin pjbruin added this to the sage-6.6 milestone Mar 27, 2015
@pjbruin
Copy link
Contributor Author

pjbruin commented Mar 27, 2015

@pjbruin

This comment has been minimized.

@pjbruin
Copy link
Contributor Author

pjbruin commented Mar 27, 2015

Commit: dd63f09

@jpflori
Copy link

jpflori commented May 18, 2015

Reviewer: Jean-Pierre Flori

@jpflori
Copy link

jpflori commented May 18, 2015

comment:2

The diff Looks good to me.
Just one question: Couldn't we extend such a contruction to be more general in the sense it could work for the change_ring method of all (or most) objects?
We can still do that in another ticket.

Note I don't have access to anything to check it passes tests, but the patchbot should take care of it.

@pjbruin
Copy link
Contributor Author

pjbruin commented May 19, 2015

comment:3

Replying to @jpflori:

Just one question: Couldn't we extend such a contruction to be more general in the sense it could work for the change_ring method of all (or most) objects?
We can still do that in another ticket.

Yes, I hope this can be done more generally at some point. Ideally, if A is a parent with base ring R and f is a ring homomorphism from R to S, we should be able to do something like

g = A.base_extend(f, map=True)

which should return the canonical map from A to the base extension A_S of A to S via f. We could then do g(a) for elements a of A to get the image of a in A_S.

Furthermore, we could allow

g = A.base_extend(S, map=True)

which should do the same as above, taking for f a coercion map from R to S, if it exists.

With this approach, base_extend() only has to be implemented for parents; there could be a default method for Element looking like

class Element(...):
    ...
    def base_extend(self, S):
        # S can be a parent or a map
        g = self.parent().base_extend(S, map=True)
        return g(self)

(All of the above would be valid both for base_extend() and change_ring(); the only difference is whether conversion maps are allowed instead of coercion maps if S is given as a parent.)

Note I don't have access to anything to check it passes tests, but the patchbot should take care of it.

Thanks for the review!

@vbraun
Copy link
Member

vbraun commented May 19, 2015

Changed branch from u/pbruin/18072-DirichletGroup_change_ring to dd63f09

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

3 participants