#31994 closed enhancement (fixed)

Sigma invariants for P^N, N > 1

Reported by: gh-EnderWannabe Owned by:
Priority: minor Milestone: sage-9.5
Component: dynamics Keywords: gsoc2021
Cc: bhutz Merged in:
Authors: Alexander Galarraga Reviewers: Ben Hutz
Report Upstream: N/A Work issues:
Branch: aa63aaa (Commits, GitHub, GitLab) Commit: aa63aaa62e6dc457ac0db7616592d7d0ca15f64d
Dependencies: #31944, #32322 Stopgaps:

Status badges

Description

Currently, the sigma invariants method for dynamical systems on projective space is not implemented when the projective space has dimension greater than 1. Using the algorithm described in https://arxiv.org/pdf/1908.03184.pdf, this ticket implements that functionality.

Change History (40)

comment:1 Changed 20 months ago by gh-EnderWannabe

Branch: u/gh-EnderWannabe/sigma_invariants

comment:2 Changed 20 months ago by git

Commit: 8b3ea6a41e12b82eff6d2f1c6c5c5b5124c581bf

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

e9281ff31944: added flatenning for periodic, began work on preperiodic
1d5074831944: working minimal periodic and preperiodic
27888da31954: initial commit with working code and examples
22201d7Merge branch 'hyperplane_transform' into periodic_points_improvement
c32484431944: added computation for formal periodic points
91ebb2231944: removed changes in tickets 31906 and 31896 from this ticket
df038ca31944: initial formal preperiodic points
5d142bf31944: examples for formal preperiodic points, fixed return scheme for formal preperiodic points
400a5b1Merge branch 'periodic_points_improvement' into sigma_invariants
8b3ea6a31994: added formal parameter

comment:3 Changed 20 months ago by gh-EnderWannabe

Dependencies: 31944

comment:4 Changed 20 months ago by gh-EnderWannabe

Dependencies: 31944#31944

comment:5 Changed 20 months ago by git

Commit: 8b3ea6a41e12b82eff6d2f1c6c5c5b5124c581bfabedd5944595c822e30fe946ddbab35c182a9eaf

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

39e1987Merge branch 'u/gh-EnderWannabe/sigma_invariants' of git://trac.sagemath.org/sage into sigma_invariants
abedd5931994: updated documentation and list return

comment:6 Changed 19 months ago by git

Commit: abedd5944595c822e30fe946ddbab35c182a9eafbd287f0b53b1d50c02eac8392d8418db172fcf33

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

d1476d831954: added sanity check with error message
27dea9431954: added examples for finite fields and polynomial rings
312b538Merge branch 'u/gh-EnderWannabe/hyperplane_transform' of trac.sagemath.org:sage into hyperplane_transform
b31b634Merge branch 'hyperplane_transform' into periodic_points_improvement
50179a331944: cleaned up code, added example
aaecd4631944: cleaned up code added comments
a6656ca31944: fix for subschemes, added function field error message
b4ec7c131944: minor fixes
6b810a231944: fixed periodic typo and added test
bd287f0Merge branch 'periodic_points_improvement' into sigma_invariants

comment:7 Changed 19 months ago by gh-EnderWannabe

Status: newneeds_review

comment:8 Changed 19 months ago by bhutz

Branch: u/gh-EnderWannabe/sigma_invariantsu/bhutz/sigma_invariants

comment:9 Changed 19 months ago by bhutz

Branch: u/bhutz/sigma_invariantsu/gh-EnderWannabe/sigma_invariants
Reviewers: Ben Hutz
Status: needs_reviewneeds_work

I pushed a branch with a few comments in the main algorithm. Feel free to add some more.

Here are the issues I've found:

  • I don't think putting the degrees as the first two coordinates is appropriate since unless you understand the full form of the sigma invariant polynomials it's not that helpful. If you do know the full form, then then information is not needed.
  • need examples for
    • formal=True
    • finite fields
    • polynomial rings
  • cycle is ignored for dimension > 1, but seems like a not implemented error should be thrown instead of simply ignoring the parameter. Also, should mention in the INPUT documentation that it is only for dim=1.
  • You need to fix the signs as you pull off the coefficients in
    sigmas.append(sigma_dictionary.pop(w**i*t**j, 0))
    
  • Formal doesn't seem to work as these both give the same result
    P.<x,y,z>=ProjectiveSpace(QQ,2)
    f=DynamicalSystem([x^2-z^2,y^2,z^2])
    f.sigma_invariants(2,return_polynomial=True,formal = False)
    f.sigma_invariants(2,return_polynomial=True,formal = True)
    
  • random error
P.<x,y,z>=ProjectiveSpace(QQbar,2)
f=DynamicalSystem([x^2-z^2,y^2,z^2])
f.sigma_invariants(2,return_polynomial=True,formal = False)
  • shouldn't these work?
    R.<c>=QQ[]
    P.<x,y>=ProjectiveSpace(R,1)
    f=DynamicalSystem([x^2+c*y^2,y^2])
    f.sigma_invariants(1,return_polynomial=True)
    
    R.<c,d>=QQ[]
    P.<x,y,z>=ProjectiveSpace(R,2)
    f=DynamicalSystem([x^2+c*z^2,y^2+d*z^2,z^2])
    f.sigma_invariants(1,return_polynomial=True)
    
    R.<c,d>=QQ[]
    P.<x,y,z>=ProjectiveSpace(FractionField(R),2)
    f=DynamicalSystem([x^2+c*z^2,y^2+d*z^2,z^2])
    f.sigma_invariants(1,return_polynomial=True)
    
  • This is wrong
    P.<x,y>=ProjectiveSpace(QQ,1)
    f=DynamicalSystem([x^2+3*y^2,x*y])
    f.sigma_invariants(1,return_polynomial=True, chow=True)
    

comment:10 Changed 19 months ago by git

Commit: bd287f0b53b1d50c02eac8392d8418db172fcf33a410756fc54563375e4b641ad1e90ccda70a1a74

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

e49e34cMerge branch 'point_transformation_improvement' into periodic_points_improvement
3a04a8d31944: fixed bug with formal=True over ring
4a62742Merge branch 'develop' into periodic_points_improvement
af1b86bMerge branch 'periodic_points_improvement' into sigma_invariants
89a417d31994 - added some comments to code
9212723Merge branch 'u/bhutz/sigma_invariants' of trac.sagemath.org:sage into sigma_invariants
2be2b6631994: added flattening
e3693f031944: added error message for fraction fields of m polynomial rings
33c6b68Merge branch 'periodic_points_improvement' into sigma_invariants
a41075631994: added support for fraction fields of polynomial rings

comment:11 in reply to:  9 Changed 19 months ago by gh-EnderWannabe

Pushed a change fixing the random QQbar issue, and fixing the signs.

I also added flattening and unflattening for the families with a parameter - those should work now.

There does seem to be a big bug in the code. This one is correct:

R.<c>=QQ[]
P.<x,y>=ProjectiveSpace(R,1)
f=DynamicalSystem([x^2+c*y^2,y^2])
f.sigma_invariants(1,return_polynomial=True,chow=True)
w^3 + (-3)*w^2*t + 2*w^2 + 3*w*t^2 + (-4)*w*t + 4*c*w - t^3 + 2*t^2 + (-4*c)*t

But this fails:

R.<c>=QQ[]
P.<x,y>=ProjectiveSpace(FractionField(R),1)
f=DynamicalSystem([x^2+c*y^2,y^2])
f.sigma_invariants(1,return_polynomial=True, chow=True)
w - t

Not sure what is going on there.

As for putting the degrees in the first two coordinates, I did that so that the full form of the polynomial could be specified. I think the two degrees plus the list of coefficients with 0's is enough to fully specify the polynomial, so that doing a check of

f.sigma_invariants(1) == g.sigma_invariants(1)

actually tells us if f and g are not conjugate.

comment:12 Changed 19 months ago by git

Commit: a410756fc54563375e4b641ad1e90ccda70a1a74d220330d79ea8b1a7e206e31e49989f1b189f03f

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

97c33ff31994: added examples, simpler code for polynomial rings
d22033031994: fixed n > 1

comment:13 Changed 19 months ago by gh-EnderWannabe

Latest push should address all the comments except for the last.

I've been looking for the bug in

P.<x,y>=ProjectiveSpace(QQ,1)
f=DynamicalSystem([x^2+3*y^2,x*y])
f.sigma_invariants(1,return_polynomial=True, chow=True)

This map has a fixed point at infinity with multiplicity 3, which we try to account for in the second affine chart. However, it only shows up with multiplicity 1 in that affine chart. Not sure how to fix that.

comment:14 Changed 19 months ago by bhutz

I think this needs to be deformed as was done in the formal periodic points.

I see four cases

  • all periodic points and multipliers are distinct (typical case): runs as normal
  • all periodic points distinct, but multipliers not all distinct: chow method works
  • periodic points not all distinct, all other multipliers distinct: deform and use normal method
  • periodic points not all distinct and multipliers not all distinct: deform + chow method

comment:15 Changed 19 months ago by git

Commit: d220330d79ea8b1a7e206e31e49989f1b189f03ffc12a328b8853299227173c7e5de4801ae1ebeae

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

b4246d232166: fixed identity matrix return
eaebd3332166: added test for identity
57a4b39Merge branch 'affine_preperiodic' into periodic_points_improvement
81d7c9732166: fixed documentation
a63927eMerge branch 'affine_preperiodic' into periodic_points_improvement
77660f1Merge branch 'periodic_points_improvement' into sigma_invariants
008d6db31994: added deformation
9b5e74f31944: fixed calls to affine preperiodic model
14c58d3Merge branch 'periodic_points_improvement' into sigma_invariants
fc12a3231994: fixed tests

comment:16 in reply to:  14 Changed 19 months ago by gh-EnderWannabe

Replying to bhutz:

I think this needs to be deformed as was done in the formal periodic points.

Deformation added, that example works now.

comment:17 Changed 19 months ago by bhutz

I know this is not marked as ready for review yet, but a quick comment.

The valueerror for degree counting only seems to occur for Formal=False.

Also the error should probably read '...and/or deform=True.'

comment:18 Changed 19 months ago by git

Commit: fc12a328b8853299227173c7e5de4801ae1ebeae76249f2c8e34852ae1a4a44f7cd301816063826e

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

76249f231994: doc fix

comment:19 Changed 19 months ago by git

Commit: 76249f2c8e34852ae1a4a44f7cd301816063826ef7f22a8865b94ea499c33c198bc13edc432622d6

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

f7f22a831994: added degree check when formal=True

comment:20 in reply to:  17 Changed 19 months ago by gh-EnderWannabe

Replying to bhutz:

The valueerror for degree counting only seems to occur for Formal=False.

Added

comment:21 Changed 19 months ago by gh-EnderWannabe

Status: needs_workneeds_review

comment:22 Changed 19 months ago by bhutz

Status: needs_reviewneeds_work

The functionality is working correctly, but the documentation needs to be updated. The description is still the dimension 1 description.

comment:23 Changed 19 months ago by git

Commit: f7f22a8865b94ea499c33c198bc13edc432622d6063f159f6c1fa82966a3173da2a0558333758fe7

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

f1e195831944: fix for subscheme issue
d3ea2be31944: added check for morphisms
268bc8331944: fixed if statement
6f2857f31944: added example for formal preperiodic
f385385Merge branch 'periodic_points_improvement' into sigma_invariants
063f15931994: added more documentation

comment:24 Changed 19 months ago by gh-EnderWannabe

Status: needs_workneeds_review

comment:25 Changed 19 months ago by bhutz

Branch: u/gh-EnderWannabe/sigma_invariantsu/bhutz/sigma_invariants

comment:26 Changed 19 months ago by bhutz

Commit: 063f159f6c1fa82966a3173da2a0558333758fe76186c586af31171f64a1d1c8fb372280a1319ecf

Please look over my doc changes. Otherwise I think we ready to mark this positive.


New commits:

6186c5831994: updated docs

comment:27 Changed 19 months ago by gh-EnderWannabe

Status: needs_reviewpositive_review

Docs look good to me

comment:28 Changed 19 months ago by vbraun

Branch: u/bhutz/sigma_invariants6186c586af31171f64a1d1c8fb372280a1319ecf
Resolution: fixed
Status: positive_reviewclosed

comment:29 Changed 19 months ago by vbraun

Branch: 6186c586af31171f64a1d1c8fb372280a1319ecfu/bhutz/sigma_invariants
Resolution: fixed
Status: closednew

Random failure:

**********************************************************************
File "src/sage/dynamics/arithmetic_dynamics/projective_ds.py", line 4021, in sage.dynamics.arithmetic_dynamics.projective_ds.?.preperiodic_points
Failed example:
    f.preperiodic_points(2, 1, R=K)
Expected:
    [(v : 1), (-v : 1)]
Got:
    [(-v : 1), (v : 1)]
**********************************************************************
1 item had failures:
   1 of  68 in sage.dynamics.arithmetic_dynamics.projective_ds.?.preperiodic_points
    [1406 tests, 1 failure, 49.93 s]
----------------------------------------------------------------------
sage -t --long --random-seed=0 src/sage/dynamics/arithmetic_dynamics/projective_ds.py  # 1 doctest failed
----------------------------------------------------------------------

comment:30 Changed 19 months ago by gh-EnderWannabe

Branch: u/bhutz/sigma_invariantsu/gh-EnderWannabe/sigma_invariants

comment:31 Changed 19 months ago by gh-EnderWannabe

Commit: 6186c586af31171f64a1d1c8fb372280a1319ecfabdade36276e7c5c51fc2a818f599c667f0f1627
Status: newneeds_review

Added 2 lines to sort the list before returning to avoid such issues.


New commits:

0bb7549Merge branch 'u/bhutz/sigma_invariants' of trac.sagemath.org:sage into sigma_invariants
abdade331994: return sorted list of preperiodic points

comment:32 Changed 19 months ago by bhutz

Status: needs_reviewpositive_review

comment:33 Changed 18 months ago by bhutz

Status: positive_reviewneeds_work

need to merge in fix for doctest failure in #32322

comment:34 Changed 18 months ago by mkoeppe

Dependencies: #31944#31944, #32322

comment:35 Changed 18 months ago by git

Commit: abdade36276e7c5c51fc2a818f599c667f0f162718f87f5d5e36635e6eb4dc50285e1382f17c94c8

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

18f87f5Merge branch 'u/gh-EnderWannabe/sigma_invariants' of git://trac.sagemath.org/sage into sigma_invariants

comment:36 Changed 18 months ago by gh-EnderWannabe

Status: needs_workneeds_review

comment:37 Changed 18 months ago by mkoeppe

Milestone: sage-9.4sage-9.5

comment:38 Changed 18 months ago by bhutz

Branch: u/gh-EnderWannabe/sigma_invariantsu/bhutz/sigma_invariants

comment:39 Changed 18 months ago by bhutz

Commit: 18f87f5d5e36635e6eb4dc50285e1382f17c94c8aa63aaa62e6dc457ac0db7616592d7d0ca15f64d
Status: needs_reviewpositive_review

I removed the duplicated import that pyflakes caught. Otherwise looks fine. Patchbot hasn't picked it up since the #32322 merge, but that ticket is now closed, so no issues there.


New commits:

aa63aaa31994: removed duplicated import

comment:40 Changed 16 months ago by vbraun

Branch: u/bhutz/sigma_invariantsaa63aaa62e6dc457ac0db7616592d7d0ca15f64d
Resolution: fixed
Status: positive_reviewclosed
Note: See TracTickets for help on using tickets.