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

EllipticCurve.period_lattice() should automatically use the canonical embedding for embedded number fields? #38363

Open
1 task done
user202729 opened this issue Jul 14, 2024 · 0 comments

Comments

@user202729
Copy link
Contributor

user202729 commented Jul 14, 2024

Problem Description

Currently, period_lattice() requires passing an embedding argument for number field except for ℚ even though it is already an embedded number field.

sage: K.<ω> = number_field_elements_from_algebraics([QQbar((-1)^(2/3))], embedded=True, minimal=True)[0]
sage: K
Number Field in zeta6 with defining polynomial x^2 - x + 1 with zeta6 = 0.500000000000000? + 0.866025403784439?*I
sage: E = EllipticCurve(K, [1, 0])
sage: E.period_lattice()
Traceback (most recent call last)
...
TypeError: EllipticCurve_number_field.period_lattice() missing 1 required positional argument: 'embedding'

Proposed Solution

We make it automatically do the equivalent of the following.

sage: E.period_lattice(E.base_field().coerce_embedding())
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + x over Number Field in zeta6 with defining polynomial x^2 - x + 1 with zeta6 = 0.500000000000000? + 0.866025403784439?*I with respect to the embedding Generic morphism:
  From: Number Field in zeta6 with defining polynomial x^2 - x + 1 with zeta6 = 0.500000000000000? + 0.866025403784439?*I
  To:   Algebraic Field
  Defn: zeta6 -> 0.500000000000000? + 0.866025403784439?*I

There's a caveat though, some special fields have coerce_embedding always defined.

sage: K.<ω> = number_field_elements_from_algebraics([QQbar((-1)^(2/3))], embedded=False, minimal=True)[0]
sage: K
Cyclotomic Field of order 6 and degree 2
sage: K.coerce_embedding()
Generic morphism:
  From: Cyclotomic Field of order 6 and degree 2
  To:   Complex Lazy Field
  Defn: zeta6 -> 0.500000000000000? + 0.866025403784439?*I

Maybe we use an isinstance() check or something? (alternatively we modify coerce_embedding() of cyclotomic field to not automatically convert unless an embedding is explicitly specified by the user)

Alternatives Considered

Or we can just raise an error in period_lattice but suggest the user they could use the second form. It would make coerce_embedding() more discoverable.

Is there an existing issue for this?

  • I have searched the existing issues for a bug report that matches the one I want to file, without success.
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