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

Added functionality to compute zeta functions of nondegenerate hypersurfaces over finite fields #19865

Open
sagetrac-malcolmkotok mannequin opened this issue Jan 11, 2016 · 28 comments

Comments

@sagetrac-malcolmkotok
Copy link
Mannequin

sagetrac-malcolmkotok mannequin commented Jan 11, 2016

As part of his Ph.D. thesis, Malcolm Kotok implemented a function to compute zeta functions of nondegenerate hypersurfaces over finite fields, based on a paper of Sperber and Voight. We wish to incorporate this into Sage. For more information see: http://arxiv.org/abs/1112.4881

CC: @sagetrac-malcolmkotok @sagetrac-ursula @kedlaya

Component: number theory

Keywords: zeta, L-function, sd87, sd91

Author: Heidi Goodson, Malcolm Kotok, Renate Scheidler, Mckenzie West, Ursula Whitcher

Branch/Commit: public/ticket/19865 @ f6f615f

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

@sagetrac-malcolmkotok sagetrac-malcolmkotok mannequin added this to the sage-7.0 milestone Jan 11, 2016
@sagetrac-malcolmkotok
Copy link
Mannequin Author

sagetrac-malcolmkotok mannequin commented Jan 11, 2016

Author: Malcolm Kotok

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Mar 27, 2016

comment:2

There is also a project by Costa, Harvey, and myself to do a different computation of zeta functions of nondegenerate toric hypersurfaces, using Monsky-Washnitzer cohomology in place of Dwork's series method. It's not yet clear how these two methods will compare (the Sperber-Voight method is optimized towards sparse hypersurfaces somewhat more than our approach), so it would be valuable to have both!

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Apr 5, 2016

comment:3

Note also ticket #15239 regarding testing for nondegeneracy, which might be worth dealing with first.

@roed314
Copy link
Contributor

roed314 commented Jul 17, 2017

Changed keywords from zeta, L-function to zeta, L-function, sd87

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Sep 23, 2017

comment:5

For (my own) convenience, the link to the code is http://hdl.handle.net/1802/30832.

Related projects: #20265, #23863.

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Sep 26, 2017

Changed keywords from zeta, L-function, sd87 to zeta, L-function, sd87, sd91

@sagetrac-ursula

This comment has been minimized.

@sagetrac-ursula
Copy link
Mannequin

sagetrac-ursula mannequin commented Sep 30, 2017

Changed author from Malcolm Kotok to Heidi Goodson, Malcolm Kotok, Renate Scheidler, Mckenzie West, Ursula Whitcher

@sagetrac-jantuitman
Copy link
Mannequin

sagetrac-jantuitman mannequin commented Oct 10, 2017

comment:8

I tried this code about a year ago and it seemed to have some serious problems like it not finishing for a plane quartic curve over F_p (for any p). I wrote to Kotok about this, but never heard back from him. It could be some trivial issue, but it is hard to say.

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Oct 11, 2017

comment:9

My understanding is that some successful experiments with the code were made at SD91. Maybe someone can push the result to trac so that the rest of us can help with stress-testing?

@sagetrac-jantuitman
Copy link
Mannequin

sagetrac-jantuitman mannequin commented Oct 11, 2017

comment:10

Ok, here is what I'm talking about:

load("ffzeta.sage");
R.<x,y>=PolynomialRing(ZZ,2);

# does work:
Q=y^2-(x^3+x+1); p=13;
ffzeta(Q,p,verbose=True);

# does not work:
Q=y^4+(5*x-4)*y^3+(3*x^2+2*x-3)*y^2+(x^3+4*x^2-2*x+3)*y+(3*x^4-2*x^3-4*x^2+2*x+2); p=11;
ffzeta(Q,p,verbose=True);

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Oct 11, 2017

comment:11

The Sperber-Voight algorithm being implemented here has as a complexity parameter the number of interior monomials, so it probably doesn't stand much of a chance for dense equations (although descending it from Sage to Cython might help near the borderline).

For smooth projective hypersurfaces, we also have tickets #20265 (deformation) and #23863 (controlled reduction). For nondegenerate toric hypersurfaces, Edgar Costa has functioning C code doing controlled reduction, but I believe it is not yet available for public consumption.

@mckenziewest
Copy link

Branch: u/mwest/ticket_19865

@mckenziewest
Copy link

comment:13

We have some debugging to make this a method for polynomials. There are definitely errors in the computation in the multivariate example at the beginning of the function.


New commits:

30f7aefNew function zeta_function has been added to multi_polynomial
c6c8c8eKotok code added, zeta_function is a method of polynomials

@mckenziewest
Copy link

Commit: c6c8c8e

@fchapoton
Copy link
Contributor

Changed branch from u/mwest/ticket_19865 to public/ticket/19865

@fchapoton
Copy link
Contributor

Changed commit from c6c8c8e to 250c900

@fchapoton
Copy link
Contributor

New commits:

2422fb1New function zeta_function has been added to multi_polynomial
250c900Kotok code added, zeta_function is a method of polynomials

@fchapoton fchapoton modified the milestones: sage-7.0, sage-9.0 Oct 8, 2019
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 8, 2019

Changed commit from 250c900 to 85b7c27

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 8, 2019

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

365349cKotok code added, zeta_function is a method of polynomials
015104fdetails
85b7c27moving to another file

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 8, 2019

Branch pushed to git repo; I updated commit sha1. New commits:

f6f615fdetails

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 8, 2019

Changed commit from 85b7c27 to f6f615f

@fchapoton
Copy link
Contributor

comment:17

Maybe this could be saved ?

@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Dec 16, 2019

comment:18

Just tried this and there is still something wrong:

File "src/sage/rings/polynomial/multi_polynomial.pyx", line 2494, in sage.rings.polynomial.multi_polynomial.MPolynomial.zeta_function
Failed example:
    (x^3+x+1-y^2).zeta_function(7)
Expected:
    (7*T^7 - 17*T^6 + 14*T^5 - 12*T^4 + 18*T^3 - 14*T^2 + 5*T - 1)/(7*T - 1)
Got:
    (-3*T^4 + 2*T^3 + 4*T^2 - 2*T - 1)/(7*T - 1)

I was not one of the people working on this at sd91, so I wouldn't know what the issue is.

@embray
Copy link
Contributor

embray commented Jan 6, 2020

comment:19

Ticket retargeted after milestone closed

@embray embray modified the milestones: sage-9.0, sage-9.1 Jan 6, 2020
@mkoeppe
Copy link
Member

mkoeppe commented Apr 14, 2020

comment:20

Batch modifying tickets that will likely not be ready for 9.1, based on a review of the ticket title, branch/review status, and last modification date.

@mkoeppe mkoeppe modified the milestones: sage-9.1, sage-9.2 Apr 14, 2020
@kedlaya
Copy link
Sponsor Contributor

kedlaya commented Aug 14, 2020

comment:21

Still not sure what is going on here. This passage in zeta_function.py is nonsensical:

            # Reduce remaining part
            meta = Gm.parent()(m * eta[i])
            x_i = Gm.parent()(x[i])
            Gmbar = -sum([x_i * meta.derivative(x_i) for i in range(n + 1)])

but fixing it doesn't have any effect on the doctests (the terms in the sum are all zero anyway).

Another data point: the ratio of the answers with affine=True and affine=False is not correct either.

@mkoeppe mkoeppe modified the milestones: sage-9.2, sage-9.3 Sep 5, 2020
@mkoeppe
Copy link
Member

mkoeppe commented Feb 13, 2021

comment:23

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.

@mkoeppe mkoeppe modified the milestones: sage-9.3, sage-9.4 Feb 13, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.4, sage-9.5 Jul 19, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.5, sage-9.6 Dec 18, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.6, sage-9.7 Apr 2, 2022
@mkoeppe mkoeppe modified the milestones: sage-9.7, sage-9.8 Aug 31, 2022
@mkoeppe mkoeppe removed this from the sage-9.8 milestone Jan 29, 2023
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

6 participants