Opened 20 months ago
Closed 16 months ago
#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: |
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
Branch: | → u/gh-EnderWannabe/sigma_invariants |
---|
comment:2 Changed 20 months ago by
Commit: | → 8b3ea6a41e12b82eff6d2f1c6c5c5b5124c581bf |
---|
comment:3 Changed 20 months ago by
Dependencies: | → 31944 |
---|
comment:4 Changed 20 months ago by
Dependencies: | 31944 → #31944 |
---|
comment:5 Changed 20 months ago by
Commit: | 8b3ea6a41e12b82eff6d2f1c6c5c5b5124c581bf → abedd5944595c822e30fe946ddbab35c182a9eaf |
---|
comment:6 Changed 19 months ago by
Commit: | abedd5944595c822e30fe946ddbab35c182a9eaf → bd287f0b53b1d50c02eac8392d8418db172fcf33 |
---|
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
d1476d8 | 31954: added sanity check with error message
|
27dea94 | 31954: added examples for finite fields and polynomial rings
|
312b538 | Merge branch 'u/gh-EnderWannabe/hyperplane_transform' of trac.sagemath.org:sage into hyperplane_transform
|
b31b634 | Merge branch 'hyperplane_transform' into periodic_points_improvement
|
50179a3 | 31944: cleaned up code, added example
|
aaecd46 | 31944: cleaned up code added comments
|
a6656ca | 31944: fix for subschemes, added function field error message
|
b4ec7c1 | 31944: minor fixes
|
6b810a2 | 31944: fixed periodic typo and added test
|
bd287f0 | Merge branch 'periodic_points_improvement' into sigma_invariants
|
comment:7 Changed 19 months ago by
Status: | new → needs_review |
---|
comment:8 Changed 19 months ago by
Branch: | u/gh-EnderWannabe/sigma_invariants → u/bhutz/sigma_invariants |
---|
comment:9 follow-up: 11 Changed 19 months ago by
Branch: | u/bhutz/sigma_invariants → u/gh-EnderWannabe/sigma_invariants |
---|---|
Reviewers: | → Ben Hutz |
Status: | needs_review → needs_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
Commit: | bd287f0b53b1d50c02eac8392d8418db172fcf33 → a410756fc54563375e4b641ad1e90ccda70a1a74 |
---|
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
e49e34c | Merge branch 'point_transformation_improvement' into periodic_points_improvement
|
3a04a8d | 31944: fixed bug with formal=True over ring
|
4a62742 | Merge branch 'develop' into periodic_points_improvement
|
af1b86b | Merge branch 'periodic_points_improvement' into sigma_invariants
|
89a417d | 31994 - added some comments to code
|
9212723 | Merge branch 'u/bhutz/sigma_invariants' of trac.sagemath.org:sage into sigma_invariants
|
2be2b66 | 31994: added flattening
|
e3693f0 | 31944: added error message for fraction fields of m polynomial rings
|
33c6b68 | Merge branch 'periodic_points_improvement' into sigma_invariants
|
a410756 | 31994: added support for fraction fields of polynomial rings
|
comment:11 Changed 19 months ago by
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
Commit: | a410756fc54563375e4b641ad1e90ccda70a1a74 → d220330d79ea8b1a7e206e31e49989f1b189f03f |
---|
comment:13 Changed 19 months ago by
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 follow-up: 16 Changed 19 months ago by
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
Commit: | d220330d79ea8b1a7e206e31e49989f1b189f03f → fc12a328b8853299227173c7e5de4801ae1ebeae |
---|
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
b4246d2 | 32166: fixed identity matrix return
|
eaebd33 | 32166: added test for identity
|
57a4b39 | Merge branch 'affine_preperiodic' into periodic_points_improvement
|
81d7c97 | 32166: fixed documentation
|
a63927e | Merge branch 'affine_preperiodic' into periodic_points_improvement
|
77660f1 | Merge branch 'periodic_points_improvement' into sigma_invariants
|
008d6db | 31994: added deformation
|
9b5e74f | 31944: fixed calls to affine preperiodic model
|
14c58d3 | Merge branch 'periodic_points_improvement' into sigma_invariants
|
fc12a32 | 31994: fixed tests
|
comment:16 Changed 19 months ago by
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 follow-up: 20 Changed 19 months ago by
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
Commit: | fc12a328b8853299227173c7e5de4801ae1ebeae → 76249f2c8e34852ae1a4a44f7cd301816063826e |
---|
Branch pushed to git repo; I updated commit sha1. New commits:
76249f2 | 31994: doc fix
|
comment:19 Changed 19 months ago by
Commit: | 76249f2c8e34852ae1a4a44f7cd301816063826e → f7f22a8865b94ea499c33c198bc13edc432622d6 |
---|
Branch pushed to git repo; I updated commit sha1. New commits:
f7f22a8 | 31994: added degree check when formal=True
|
comment:20 Changed 19 months ago by
comment:21 Changed 19 months ago by
Status: | needs_work → needs_review |
---|
comment:22 Changed 19 months ago by
Status: | needs_review → needs_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
Commit: | f7f22a8865b94ea499c33c198bc13edc432622d6 → 063f159f6c1fa82966a3173da2a0558333758fe7 |
---|
Branch pushed to git repo; I updated commit sha1. New commits:
f1e1958 | 31944: fix for subscheme issue
|
d3ea2be | 31944: added check for morphisms
|
268bc83 | 31944: fixed if statement
|
6f2857f | 31944: added example for formal preperiodic
|
f385385 | Merge branch 'periodic_points_improvement' into sigma_invariants
|
063f159 | 31994: added more documentation
|
comment:24 Changed 19 months ago by
Status: | needs_work → needs_review |
---|
comment:25 Changed 19 months ago by
Branch: | u/gh-EnderWannabe/sigma_invariants → u/bhutz/sigma_invariants |
---|
comment:26 Changed 19 months ago by
Commit: | 063f159f6c1fa82966a3173da2a0558333758fe7 → 6186c586af31171f64a1d1c8fb372280a1319ecf |
---|
Please look over my doc changes. Otherwise I think we ready to mark this positive.
New commits:
6186c58 | 31994: updated docs
|
comment:28 Changed 19 months ago by
Branch: | u/bhutz/sigma_invariants → 6186c586af31171f64a1d1c8fb372280a1319ecf |
---|---|
Resolution: | → fixed |
Status: | positive_review → closed |
comment:29 Changed 19 months ago by
Branch: | 6186c586af31171f64a1d1c8fb372280a1319ecf → u/bhutz/sigma_invariants |
---|---|
Resolution: | fixed |
Status: | closed → new |
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
Branch: | u/bhutz/sigma_invariants → u/gh-EnderWannabe/sigma_invariants |
---|
comment:31 Changed 19 months ago by
Commit: | 6186c586af31171f64a1d1c8fb372280a1319ecf → abdade36276e7c5c51fc2a818f599c667f0f1627 |
---|---|
Status: | new → needs_review |
comment:32 Changed 19 months ago by
Status: | needs_review → positive_review |
---|
comment:33 Changed 18 months ago by
Status: | positive_review → needs_work |
---|
need to merge in fix for doctest failure in #32322
comment:34 Changed 18 months ago by
Dependencies: | #31944 → #31944, #32322 |
---|
comment:35 Changed 18 months ago by
Commit: | abdade36276e7c5c51fc2a818f599c667f0f1627 → 18f87f5d5e36635e6eb4dc50285e1382f17c94c8 |
---|
Branch pushed to git repo; I updated commit sha1. New commits:
18f87f5 | Merge branch 'u/gh-EnderWannabe/sigma_invariants' of git://trac.sagemath.org/sage into sigma_invariants
|
comment:36 Changed 18 months ago by
Status: | needs_work → needs_review |
---|
comment:37 Changed 18 months ago by
Milestone: | sage-9.4 → sage-9.5 |
---|
comment:38 Changed 18 months ago by
Branch: | u/gh-EnderWannabe/sigma_invariants → u/bhutz/sigma_invariants |
---|
comment:39 Changed 18 months ago by
Commit: | 18f87f5d5e36635e6eb4dc50285e1382f17c94c8 → aa63aaa62e6dc457ac0db7616592d7d0ca15f64d |
---|---|
Status: | needs_review → positive_review |
comment:40 Changed 16 months ago by
Branch: | u/bhutz/sigma_invariants → aa63aaa62e6dc457ac0db7616592d7d0ca15f64d |
---|---|
Resolution: | → fixed |
Status: | positive_review → closed |
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
31944: added flatenning for periodic, began work on preperiodic
31944: working minimal periodic and preperiodic
31954: initial commit with working code and examples
Merge branch 'hyperplane_transform' into periodic_points_improvement
31944: added computation for formal periodic points
31944: removed changes in tickets 31906 and 31896 from this ticket
31944: initial formal preperiodic points
31944: examples for formal preperiodic points, fixed return scheme for formal preperiodic points
Merge branch 'periodic_points_improvement' into sigma_invariants
31994: added formal parameter