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

Constructing Dirichlet characters #185

Open
b-mehta opened this issue Jan 14, 2020 · 0 comments
Open

Constructing Dirichlet characters #185

b-mehta opened this issue Jan 14, 2020 · 0 comments

Comments

@b-mehta
Copy link
Contributor

b-mehta commented Jan 14, 2020

At the moment, constructing Dirichlet characters from a table is done as follows:
By way of example, let us use modulus 2520 = 2^3 × 3^2 × 5 × 7. Any character of this modulus is then a group homomorphism (Z / 2520Z)* -> C*, in particular is specified by the generators of (Z / 2520Z)*. We have also that (Z / 2520Z)* ≅ (Z/8Z)* × (Z/9Z)* × (Z/5Z)* × (Z/7Z), so one choice of generating set is given by:

  • x1 = 5 mod 8, x1 = 1 mod 9, x1 = 1 mod 5, x1 = 1 mod 7
  • x2 = 1 mod 8, x2 = 2 mod 9, x2 = 1 mod 5, x2 = 1 mod 7
  • x3 = 1 mod 8, x3 = 1 mod 9, x3 = 2 mod 5, x3 = 1 mod 7
  • x4 = 1 mod 8, x4 = 1 mod 9, x4 = 1 mod 5, x4 = 3 mod 7

(since 5 generates (Z/8Z)*, 2 generates (Z/9Z)*, 2 generates (Z/5Z)* and 3 generates (Z/7Z)*).

In fromTable, these congruences would be solved to find the generators mod 2520, then the values of the character at these points are calculated to specify the character, and the constructed character is compared to the given table to ensure the table specified a unique character.

But of course, this is not the only generating set. Ideally, we would be given Vector (Maybe (OrZero RootOfUnity)); the function would then check that the points at which the value is given do generate the group (else the character is underspecified), and that the points at which values are given are consistent (else the character is overspecified). It would also check that the given values are valid (are roots of unity for the correct n), and construct the Dirichlet character specified.

I suspect the hardest part of this is the first - checking that the values generate the group.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant