Opened 3 years ago

Closed 17 months ago

#29949 closed enhancement (fixed)

Dynamical Systems On Berkovich Space

Reported by: gh-EnderWannabe Owned by:
Priority: major Milestone: sage-9.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:

Status badges

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 gh-EnderWannabe

Branch: u/gh-EnderWannabe/berkovich_dynamical

comment:2 Changed 3 years ago by git

Commit: e1e7732e190b3d520e17d919f6123949a58fe2b7

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

7ed429f29844: trivial fix
46259d4Merge remote-tracking branch 'trac/develop' into t/29844/berkovich
af306dbMerge branch 'u/saraedum/berkovich' of git://trac.sagemath.org/sage into 29844
2dc9a45Merge branch '29844' into berkovich_dynamical
1633f5829949: seperated systems over projective and affine space
2e4a10029844: can pass padic field to projective space
40f6519Merge branch '29844' into berkovich_dynamical
3231a7629844: base_ring for projective now returns a ring
0a24e2cMerge branch '29844' into berkovich_dynamical
e1e773229949: image of Type II and III points under polynomial

comment:3 Changed 3 years ago by git

Commit: e1e7732e190b3d520e17d919f6123949a58fe2b75434d5424eb9c3abee0bf37f1f654083b1f99c87

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

5434d5429949: preliminary image of Type II points + constructor funcationality

comment:4 Changed 3 years ago by git

Commit: 5434d5424eb9c3abee0bf37f1f654083b1f99c87016f058c56d27555e0c09bf400d025db1ed27c44

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

016f05829949: added image of Type II for all cases

comment:5 Changed 3 years ago by git

Commit: 016f058c56d27555e0c09bf400d025db1ed27c44d54619e058abdd801f7dba97ce60fff415292ac9

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

e77c1a129844: fixed git merge issues
513050029949: restored some functionality after git crash
b3ea2e829949: reformated classcalls, docs
71c3fd329949: added image of type III points for number fields
af1b33929949: better check for poles in type III disk in padic case
1327b8a29844 doc clean-up
eaa636c29844: deleted duplicate functions. added element file to docs
b72d17829844: fixed parent error in involution map
c1becdb29844: minor doc updates
d54619e29949: Merge branch 'berkovich_revisions' into berkovich_dynamical

comment:6 Changed 3 years ago by git

Commit: d54619e058abdd801f7dba97ce60fff415292ac967feb5d1159167e55f7f1b682ae0bb639bd76858

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

67feb5d29949: better check for poles in type III call

comment:7 Changed 3 years ago by git

Commit: 67feb5d1159167e55f7f1b682ae0bb639bd768582261e04c76d35c43f82e7c005370e319f7faff8d

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

2261e0429499: added as_scheme_dynamical_system and fixed radius for image of type III

comment:8 Changed 3 years ago by git

Commit: 2261e04c76d35c43f82e7c005370e319f7faff8db8f1a566a53da789ac641c2ed262932c6b93db35

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

db6089029949: added 'ideal' parameter and fixed dehomogenize + homogenize
b8f1a5629949: better check for poles in image of type III

comment:9 Changed 3 years ago by git

Commit: b8f1a566a53da789ac641c2ed262932c6b93db3572f9c7d15fca816ad573f6dd81f3f6dee97d4b20

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

f640e2129844: fixed minor spacing
c83784a29844: polynomial ring can be passed to projective Berkovich
780b1d729844: added affine space as option for affine berk space
2b5d6ed29844: deleted trailing whitespace
c5ced6429844: added note in scheme overview
32b42aa29949: Merge branch 'berkovich_revisions' into berkovich_dynamical
3887c4d29949: Merge branch 'develop' into berkovich_dynamical
691031d29949: fixed broken constructor
a15755f29949: fixed conjugate
72f9c7d29949: more examples and new_ideal for conjugate

comment:10 Changed 3 years ago by git

Commit: 72f9c7d15fca816ad573f6dd81f3f6dee97d4b2018cddd996044fde4c5f4d9e84e8ba4d86edaf9bb

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

18cddd929949: added resultant and base_ring methods

comment:11 Changed 2 years ago by bhutz

Reviewers: Ben Hutz

btw, you should mark this as "needs-review" 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: p-adic

95: affine dynamical system

98: z2 + 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: p-adic

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

Last edited 2 years ago by bhutz (previous) (diff)

comment:12 Changed 2 years ago by bhutz

A couple more things:

  • 808+. An action is defined for matrices and dynamical systems: F = F*M
  • for 808-816. 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([x-y])
    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 git

Commit: 18cddd996044fde4c5f4d9e84e8ba4d86edaf9bb1523bd42785752408deb6224bcb85d5c9bd45208

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

1b0616329949: fixed prime_above in conjugate
ad55ab729949: added matrix imports
ae3400aMerge branch 'u/gh-EnderWannabe/berkovich' of git://trac.sagemath.org/sage into berkovich_number_field
614bed929844: fixed equality for Berkovich Space, added hashing for Berkovich Space, and added test suites
fbfef60Merge branch 'berkovich_number_field' into berkovich_dynamical
2f7742bMerge branch 'develop' into berkovich_dynamical
1523bd429949: fixed spacing issues, better error messages

comment:14 in reply to:  12 Changed 2 years ago by gh-EnderWannabe

Replying to bhutz:

  • This is what I mean by the subscheme examples
    P.<x,y>=ProjectiveSpace(QQ,1)
    X=P.subscheme([x-y])
    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 gh-EnderWannabe

Authors: Alexander Galarraga
Status: newneeds_review

comment:16 Changed 2 years ago by bhutz

Status: needs_reviewneeds_work

A few things here:

  • look at the pyflakes plug-in 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 sage-devel that one.

comment:17 Changed 2 years ago by git

Commit: 1523bd42785752408deb6224bcb85d5c9bd4520842ed3ab6b6c51d13061add94a7e197c733b456e7

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

65fd85bMerge branch 'develop' into berkovich_number_field
15a3b0929844: fixed hash example
228e2fe29844: removed unused variables and added examples
e7b86f729844: added examples
650212629844: added more examples
cb0b8c6Merge branch 'berkovich_number_field' into berkovich_dynamical
3878f2e29949: added tests, removed unused imports
42ed3abMerge branch 'u/gh-EnderWannabe/berkovich_dynamical' of git://trac.sagemath.org/sage into berkovich_dynamical

comment:18 Changed 2 years ago by gh-EnderWannabe

Added the necessary examples for 100% coverage, and fixed the unused imports. I asked on the sage-devel google group about how to fix the auto complete.

comment:19 Changed 2 years ago by git

Commit: 42ed3ab6b6c51d13061add94a7e197c733b456e70cdf6e4e55607fd2ebe1f5ec05634cde7f6dd88c

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

c274cbeMerge branch 'develop' into berkovich_dynamical
0cdf6e429949: fixed patchbot errors

comment:20 Changed 2 years ago by bhutz

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 --warn-long 57.6 --random-seed=0 berkovich_ds.py  # 1 doctest failed

comment:21 Changed 2 years ago by git

Commit: 0cdf6e4e55607fd2ebe1f5ec05634cde7f6dd88c94b3c8d9db44471ea98ca727c26f60ef66d51b44

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

94b3c8d29949: fixed test failure caused by 30165

comment:22 Changed 2 years ago by mkoeppe

Milestone: sage-9.2sage-9.3

comment:23 Changed 2 years ago by mkoeppe

Milestone: sage-9.3sage-9.4

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

comment:24 Changed 19 months ago by mkoeppe

Milestone: sage-9.4sage-9.5

Setting a new milestone for this ticket based on a cursory review.

comment:25 Changed 18 months ago by bhutz

Status: needs_workpositive_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 vbraun

Branch: u/gh-EnderWannabe/berkovich_dynamical94b3c8d9db44471ea98ca727c26f60ef66d51b44
Resolution: fixed
Status: positive_reviewclosed
Note: See TracTickets for help on using tickets.