Opened 3 years ago
Closed 17 months ago
#29949 closed enhancement (fixed)
Dynamical Systems On Berkovich Space
Reported by:  ghEnderWannabe  Owned by:  

Priority:  major  Milestone:  sage9.5 
Component:  dynamics  Keywords:  
Cc:  bhutz, paulfili  Merged in:  
Authors:  Alexander Galarraga  Reviewers:  Ben Hutz 
Report Upstream:  N/A  Work issues:  
Branch:  94b3c8d (Commits, GitHub, GitLab)  Commit:  94b3c8d9db44471ea98ca727c26f60ef66d51b44 
Dependencies:  Stopgaps: 
Description
The goal of this ticket is to implement basic dynamical system functionality on Berkovich space over Cp
. The immediate goal is to be able to compute the image of points. Type I points can be computed with the existing functionality in Sage. Type II, III and IV points will require additional functionality, to be implemented in this ticket.
This ticket relies heavily on the implementation of Berkovich space in #29844.
Change History (26)
comment:1 Changed 3 years ago by
Branch:  → u/ghEnderWannabe/berkovich_dynamical 

comment:2 Changed 3 years ago by
Commit:  → e1e7732e190b3d520e17d919f6123949a58fe2b7 

comment:3 Changed 3 years ago by
Commit:  e1e7732e190b3d520e17d919f6123949a58fe2b7 → 5434d5424eb9c3abee0bf37f1f654083b1f99c87 

Branch pushed to git repo; I updated commit sha1. New commits:
5434d54  29949: preliminary image of Type II points + constructor funcationality

comment:4 Changed 3 years ago by
Commit:  5434d5424eb9c3abee0bf37f1f654083b1f99c87 → 016f058c56d27555e0c09bf400d025db1ed27c44 

Branch pushed to git repo; I updated commit sha1. New commits:
016f058  29949: added image of Type II for all cases

comment:5 Changed 3 years ago by
Commit:  016f058c56d27555e0c09bf400d025db1ed27c44 → d54619e058abdd801f7dba97ce60fff415292ac9 

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
e77c1a1  29844: fixed git merge issues

5130500  29949: restored some functionality after git crash

b3ea2e8  29949: reformated classcalls, docs

71c3fd3  29949: added image of type III points for number fields

af1b339  29949: better check for poles in type III disk in padic case

1327b8a  29844 doc cleanup

eaa636c  29844: deleted duplicate functions. added element file to docs

b72d178  29844: fixed parent error in involution map

c1becdb  29844: minor doc updates

d54619e  29949: Merge branch 'berkovich_revisions' into berkovich_dynamical

comment:6 Changed 3 years ago by
Commit:  d54619e058abdd801f7dba97ce60fff415292ac9 → 67feb5d1159167e55f7f1b682ae0bb639bd76858 

Branch pushed to git repo; I updated commit sha1. New commits:
67feb5d  29949: better check for poles in type III call

comment:7 Changed 3 years ago by
Commit:  67feb5d1159167e55f7f1b682ae0bb639bd76858 → 2261e04c76d35c43f82e7c005370e319f7faff8d 

Branch pushed to git repo; I updated commit sha1. New commits:
2261e04  29499: added as_scheme_dynamical_system and fixed radius for image of type III

comment:8 Changed 3 years ago by
Commit:  2261e04c76d35c43f82e7c005370e319f7faff8d → b8f1a566a53da789ac641c2ed262932c6b93db35 

comment:9 Changed 3 years ago by
Commit:  b8f1a566a53da789ac641c2ed262932c6b93db35 → 72f9c7d15fca816ad573f6dd81f3f6dee97d4b20 

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
f640e21  29844: fixed minor spacing

c83784a  29844: polynomial ring can be passed to projective Berkovich

780b1d7  29844: added affine space as option for affine berk space

2b5d6ed  29844: deleted trailing whitespace

c5ced64  29844: added note in scheme overview

32b42aa  29949: Merge branch 'berkovich_revisions' into berkovich_dynamical

3887c4d  29949: Merge branch 'develop' into berkovich_dynamical

691031d  29949: fixed broken constructor

a15755f  29949: fixed conjugate

72f9c7d  29949: more examples and new_ideal for conjugate

comment:10 Changed 3 years ago by
Commit:  72f9c7d15fca816ad573f6dd81f3f6dee97d4b20 → 18cddd996044fde4c5f4d9e84e8ba4d86edaf9bb 

Branch pushed to git repo; I updated commit sha1. New commits:
18cddd9  29949: added resultant and base_ring methods

comment:11 Changed 2 years ago by
Reviewers:  → Ben Hutz 

btw, you should mark this as "needsreview" and mark yourself as author.
I'm still waiting for compilation to finish, but here is some comments from a code review. Nothing really major here.
need to include latest 29844
do you really needs the ._polys data as this is already contained in ._system._polys?
14: date needed
58: should give the class dynamical system
60: padic
95: affine dynamical system
98: z^{2 + 1 }
129: extra words
172: You seem to be trapping the error in creating the dynamical system, which would give information about what failed in trying to create the dynamical system. It seems like that information would be helpful rather than the more generic error you display
175: What if you have a dynamical system defined on a subscheme?
_eq_, _neq_: you have no tests that check that two systems are unequal
256: ending .
274: need '  '
319: shouldn't this be relative dimension? Although I'd be inclined to just say 'dimension' as the base will be a field anyway.
318: class of dynamical system
348: trailing whitespace
370: The error is really that you cannot convert not that you know it is affine. Again you masking the more specific initialization error. I can somewhat see why that might be desirable here.
374: the should be projective not affine
375: dimension_absolute. So this will fail for the base being say ZZ
379: padic
405: Perhaps name this as_projective_dynamical_system. There is no a cooresponding function for affine. Looking at the documentation, it seems like this function is meant to be in the class:DynamicalSystem_Berkovich. In which case the name is fine.
455: What is you scale by p?
473: extra line
505,512,536,538: ending .
524: , adjugate
The _call_ documentation isn't visible to the user, so these description need to be moved. Perhaps to the class documentation.
650: isn't that error that the point is not in the domain? again, why is the error message from the coercion not better?
652: backed
654: are defined
667: some spaces for readability
719: space  space
798: this input seems more descriptive than for the other classes
849: Wouldn't homogenization be faster that calling the constructor. Also, what if you get something other than affine/projective?
847: dimensional absolute again
874: projective Berkovich space?
898: , space
918: same as before
need blank line at the end
comment:12 followup: 14 Changed 2 years ago by
A couple more things:
 808+. An action is defined for matrices and dynamical systems: F = F*M
 for 808816. Why don't you do
dehomogenize_hom = list((F*M).dehomogenize(1))
I didn't try it, but doesn't that do the same thing?
 813: R.gen(0) also works
 872 #add comment that this is the start of Type III
 Seems like this should work, since the equivalent call works for projective
sage: Q.<z> = QQ[] sage: A.<a> = NumberField(z^3 + 20) sage: ideal = A.prime_above(3) sage: P.<z> = AffineSpace(A, 1) sage: B = Berkovich_Cp_Affine(A, ideal) sage: f = DynamicalSystem_Berkovich([z^2], domain=B)
 This is what I mean by the subscheme examples
P.<x,y>=ProjectiveSpace(QQ,1) X=P.subscheme([xy]) f=DynamicalSystem_projective([x^2,y^2],domain=X) DynamicalSystem_Berkovich(f)
Your error message does not make any sense for this one.
 I also ran a few of Benedetto's image examples from his exercises and got all correct answers.
comment:13 Changed 2 years ago by
Commit:  18cddd996044fde4c5f4d9e84e8ba4d86edaf9bb → 1523bd42785752408deb6224bcb85d5c9bd45208 

Branch pushed to git repo; I updated commit sha1. New commits:
1b06163  29949: fixed prime_above in conjugate

ad55ab7  29949: added matrix imports

ae3400a  Merge branch 'u/ghEnderWannabe/berkovich' of git://trac.sagemath.org/sage into berkovich_number_field

614bed9  29844: fixed equality for Berkovich Space, added hashing for Berkovich Space, and added test suites

fbfef60  Merge branch 'berkovich_number_field' into berkovich_dynamical

2f7742b  Merge branch 'develop' into berkovich_dynamical

1523bd4  29949: fixed spacing issues, better error messages

comment:14 Changed 2 years ago by
Replying to bhutz:
 This is what I mean by the subscheme examples
P.<x,y>=ProjectiveSpace(QQ,1) X=P.subscheme([xy]) f=DynamicalSystem_projective([x^2,y^2],domain=X) DynamicalSystem_Berkovich(f)Your error message does not make any sense for this one.
Changed the error message slightly. The key point I'm trying to get across is the is_ProjectiveSpace() must return True when called on the domain.
Replying to bhutz:
Deleted the ._polys data, switched to dimension relative. As for the error messages in the try catch blocks, in the notebook all the error messages are displayed, so the failed conversion error messages are still shown.
comment:15 Changed 2 years ago by
Authors:  → Alexander Galarraga 

Status:  new → needs_review 
comment:16 Changed 2 years ago by
Status:  needs_review → needs_work 

A few things here:
 look at the pyflakes plugin for unused imports
 you're missing a few doctests for coverage (the _init_ functions)
 typo in docs:
The image of type III points can be computed has long as the
 add reference in comment
# point is now type III, so we compute using Proposition 7.6 [of Benedetto]
 I'm also getting no tab completion for Berkovich dynamical systems. I have no idea why the tab completion isn't working. Might have to ask sagedevel that one.
comment:17 Changed 2 years ago by
Commit:  1523bd42785752408deb6224bcb85d5c9bd45208 → 42ed3ab6b6c51d13061add94a7e197c733b456e7 

Branch pushed to git repo; I updated commit sha1. New commits:
65fd85b  Merge branch 'develop' into berkovich_number_field

15a3b09  29844: fixed hash example

228e2fe  29844: removed unused variables and added examples

e7b86f7  29844: added examples

6502126  29844: added more examples

cb0b8c6  Merge branch 'berkovich_number_field' into berkovich_dynamical

3878f2e  29949: added tests, removed unused imports

42ed3ab  Merge branch 'u/ghEnderWannabe/berkovich_dynamical' of git://trac.sagemath.org/sage into berkovich_dynamical

comment:18 Changed 2 years ago by
Added the necessary examples for 100% coverage, and fixed the unused imports. I asked on the sagedevel google group about how to fix the auto complete.
comment:19 Changed 2 years ago by
Commit:  42ed3ab6b6c51d13061add94a7e197c733b456e7 → 0cdf6e4e55607fd2ebe1f5ec05634cde7f6dd88c 

comment:20 Changed 2 years ago by
I went to check tab completion on the newest beta, and I'm sill getting no tab completion here.
Note that I had a doctest failure:
sage t warnlong 57.6 randomseed=0 berkovich_ds.py # 1 doctest failed
comment:21 Changed 2 years ago by
Commit:  0cdf6e4e55607fd2ebe1f5ec05634cde7f6dd88c → 94b3c8d9db44471ea98ca727c26f60ef66d51b44 

Branch pushed to git repo; I updated commit sha1. New commits:
94b3c8d  29949: fixed test failure caused by 30165

comment:22 Changed 2 years ago by
Milestone:  sage9.2 → sage9.3 

comment:23 Changed 2 years ago by
Milestone:  sage9.3 → sage9.4 

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.
comment:24 Changed 19 months ago by
Milestone:  sage9.4 → sage9.5 

Setting a new milestone for this ticket based on a cursory review.
comment:25 Changed 18 months ago by
Status:  needs_work → positive_review 

Everything builds and passes for me.
The tab complete does seem to be purely a jupyter issue. For me, disabling jedi with
%config Completer.use_jedi = False
caused tab completion to function properly.
comment:26 Changed 17 months ago by
Branch:  u/ghEnderWannabe/berkovich_dynamical → 94b3c8d9db44471ea98ca727c26f60ef66d51b44 

Resolution:  → fixed 
Status:  positive_review → closed 
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
29844: trivial fix
Merge remotetracking branch 'trac/develop' into t/29844/berkovich
Merge branch 'u/saraedum/berkovich' of git://trac.sagemath.org/sage into 29844
Merge branch '29844' into berkovich_dynamical
29949: seperated systems over projective and affine space
29844: can pass padic field to projective space
Merge branch '29844' into berkovich_dynamical
29844: base_ring for projective now returns a ring
Merge branch '29844' into berkovich_dynamical
29949: image of Type II and III points under polynomial