# Arithmetic and Complex Dynamics

The goal of sage-dynamics is to improve the open source mathematical software Sage for computer exploration in dynamical systems and foster code sharing between researchers in this area. This portion focuses on the Arithmetic (Number Theoretic) and Complex aspects of dynamical systems.

## News

NSF DMS-1415294 - Computational Tools for Dynamical Systems 9/2014 - 8/2017 (P.I.: Hutz)

## Past News

[email protected] - Program on Computational Arithmetic Dynamics - July 25, 2016 - July 29, 2016

Sage Days Held Sage Days 55 (November 7-10, 2013) at Florida Institute of Technology.

January 30, 2012 - May 4, 2012 ICERM semeser program on Complex and Arithmetic Dynamics

## How to participate and contribute

sage-dynamics: Google group

- anyone may subscribe by sending an e-mail to: sage-dynamics+subscribe at googlegroups dot com

## Documentation and Tutorials

Quick reference card for dynamics available on the Sage Quickref page (https://wiki.sagemath.org/quickref/)

sage-combinat has many excellent tutorials combinat docs

## Road Map

The arithmetic and complex dynamics functionality in Sage is currently in its infancy. A significant amount of functionality was developped at the ICERM semester in Spring 2012 and now we have started the process of moving this into Sage through a series of patches (trac tickets). Most of that functionality is current in experimental for that been greatly expanded upon at Sage Days 55. Much remains to be done. Below you will find a road map of what has been implemented, what is in the process of being implemented, and ideas for future functionality.

## In Progress

(#22268) needs-work: copy for schememorphisms points not deep enough - Ben Hutz

(#22265) positive-review: fix dynatomic polynomial - Rebecca Lauren Miller

(#21129) needs-review: implementation of Arakelov-Zhang pairing for rational maps - Paul Fili, Holly Krieger

(#21118) needs-work: list of degrees of iterates of function - Joseph Silverman

Eigenvalues (see #14990 and #15390) for an implementation of the algebraic closure of finite field) - Vincent Delecroix , Ben Hutz

## Wishlist

- PLEASE ADD MORE...
**Wishlist**Area

Description

Difficulty

Priority

Products of Projective Spaces

Rational Points on Subschemes

Implement an efficient rational points search on subschemes. Currently it is done by enumeration unless dim is 0

Polynomials

specific functionality for regular polynomial endomorphisms of P^N

Canonical heights

implement Well's algorithm that does not require factoring the resultant

Rational Maps

Dynamical degree(s), arithmetic degree

periodic and preperiodic points (projective and affine)

Q.is_iterate_defined(f,n)

Q.hits_indeterminancy_locus(f,n)

add noramlize parameter to nth_iterate_map

Q.height_iterate_sequence

cyclegraph

Numerical Precision

implement Algorithm 4 from "Computing algebraic numbers of bounded height" by Doyle-Krumm to use in elements_of_bounded_height for number fields. This is a high priority since currently the precision has an effect on the output. Algorithm 4 is able to take precision into account.

Hard

High

use real interval field for floating point computations (in heights and possibly rational preperiodic point functions)

medium

Attracting Cycles

Check if for a given algebraic parameter c the map z -> z^2 + c is hyperbolic... and more generally for rational maps of P1 determine the existence (and list) of attracting cycles

Non-Integral Domains

Make projective space work over non-integral domains. One method would be to make a valid point on which is valid for modulo all maximal ideals

Documentation

Write Tutorials

Complex Dynamics

Implement Thurston's algorithm. More precisely, develop an efficient method to determine if there is a Thurston obstruction. (Epstein, ICERM)

Plotting of Mandlebrot/Julia sets. There are a number of programs that give excellent graphical feedback of complex dynamics behavior. It would be helpful to either interface Sage with an existing library, or implement so of this directly in Sage

Dynamical Zeta Functions

Compute the dynamical zeta function

Miscellaneous

Implement a function which takes as input to rational functions f(x) and g(x), and determines whether or not f^n=g^m for some integers n,m \geq 1. (Zieve, ICERM)

fix inheritance structure in generic/morphism/py. see tracc 14711

implement more general schemes - charts, morphisms

color code cyclegraph. mark critical points for pcf potrait. perhaps color code points in intermediate fields for finite fields

Coercion

some kind of coercion model: if you have a map defined over QQ should you be able to take the image of a point over CC (i.e. somewhere you have a well defined embedding) without having to

`change_ring()`. Something like this works for polynomials. This may or may not be a good idea, but if it can be done in a consistent manner it would improve usability in certain situations.Postcritically finite morphisms

given a number field enumerate pcf maps over that field

given a graph, find a pcf map with that graph (approximate with spider algorithm or exact?)

given a family, which members are pcf

Berkovich P1

Improve speed

sigma_invariants is currently very slow. (Took several minutes to compute 2-cycle sigma invariants for a cubic.) If we hope to use this to describe functions in the "Arithmetic Dynamics Database," then computation needs to be much faster.

Need to think about methods. Will numerical approximations go faster? Do we need to bound denominators of symmetric functions? Can we?

reduced form

Implement for higher dimensions. See Stoll 'Reduction Theory Of Point Clusters In Projective Space'

## Complete

#22293 closed sage 7.6: products and powers of schemes and subschemes - Ben Hutz

#22269 closed sage 7.6: Segre embedding for multiple component products - Ben Hutz

#21117 closed sage 7.6: specialization for subschemes and scheme_morphisms - Ben Hutz

#21248 closed sage 7.5: implementation of Reduced Binary Form by Stoll and Cremona- Rebecca Lauren Miller

#21285 closed sage 7.4: error in change_ring for affine morphisms - Ben Hutz

#21100 closed - duplicate/won't fix: division error in normalize_coordinates - Ben Hutz

#21113 closed sage 7.4: unflattening morphism error - Ben Hutz

#21112 closed sage 7.4: wrong base ring in sigma invariants - Ben Hutz

#21108 closed sage 7.4: use flattening in quo_rem - Vincent Delacroix

#21106 closed sage 7.4: class for flattening morphism - Vincent Delecroix, Ben Hutz

#21104 closed sage 7.4: indeterminancy locus - Michelle Manes

#21099 closed sage 7.4: critical subscheme / critical points for a map on projective space - Michelle Manes

#21097 closed sage 7.4: incorrect parent in dynatomic_polynomial - Michelle Manes

#20227 closed sage 7.4: Chow form for projective subschemes - Ben Hutz

#15378 closed sage 7.4: Composition of Morphisms - Vincent Delecroix, Ben Hutz

#21091 closed sage 7.3: is_polynomial bug fix - Ben Hutz

#20820 closed sage 7.3: Conjugating sets of Rational Functions - Rebecca Lauren Miller

#20780 closed sage 7.3: add level parameter to rational_preimages - Ben Hutz

#20650 closed sage 7.3: Added is_polynomial and make_look_poly to projective morphism - Rebecca Lauren Miller, Ben Hutz

#19635 closed sage 7.3: Enumeration functionality for products of projective spaces over fields and finite fields - Grayson Jorgenson

#20079 closed sage 7.3: Chebyshev Polynomials - Joe Eisner, Ben Hutz

#20451 closed sage 7.2: canonical height error - Ben Hutz

#20262 closed sage 7.2: Add point transformation matrix for projective space - Rebecca Lauren Miller

#20168 closed sage 7.2: small improvements to projective morphism - Ben Hutz

#20059 closed sage 7.1: minimal periodic points code improvement - Ben Hutz

#20067 closed sage 7.1: Change ring to QQbar fails for subschemes - Ben Hutz

#20018 closed sage 7.1: init for endomorphism of projective subschemes fails - Ben Hutz

#19979 closed sage 7.1: Fix coding style and documentation in projective products - Rebecca Lauren Miller

#19889 closed sage 7.1: Fix coding style and documentation style in affine schemes - Rebecca Lauren Miller

#19991 closed sage 7.1: improve dimension function for subschemes of projective products - Ben Hutz

#19891 closed sage 7.1: Fix coding style and documentation in Projective schemes - Ben Hutz

#19551 closed sage 7.0: Basic failures in projective product morphisms - Ben Hutz

#19552 closed sage 7.0: images and preimages of projective subschemes - Ben Hutz

#19557 closed sage 6.10: Basic iteration functionality for products of projective spaces - Grayson Jorgenson

#19512 closed sage 6.10: is_morphism for maps of products of projective spaces - Grayson Jorgenson

#18443 closed sage 6.8: Multiplier spectra for projective morphisms - Grayson Jorgenson

#18374 closed sage 6.8: Inconsistency in dimension of total ideals. - Miguel Marco

#18281 closed sage 6.8: implement critical point functionality including is_pcf for projective morphisms - Ben Hutz

#17282 closed sage 6.8: Implementing Wehler K3 Surfaces - Joao Faria

#18409 closed sage 6.8: Dynatomic polynomial bug for fractional coefficients - Ben Hutz

#18399 closed sage 6.8: projective automorphism group fails for homogenized maps - Ben Hutz

#18279 closed sage 6.7: implement rational preperiodic points for polynomials over number fields - Ben Hutz

#18008 closed sage 6.7: Periodic points for projective/affine morphism - Grayson Jorgenson

#17855 closed sage 6.7: create is_preperiodic function for points of projective space - Ben Hutz

#17907 closed sage 6.6: Random failure in enum_projective_number_field - Ben Hutz

#17729 closed sage 6.6: Implement Weil restriction for affine schemes/points/morphisms - Ben Hutz

#17762 closed sage 6.6: Connected component for a rational preperiodic point - Grayson Jorgenson

#17323 closed sage 6.6: Implement "primes_of_bad_reduction" to work over Number Fields - Joao Faria

#17386 closed sage 6.6: Enumerate points of bounded height in projective/affine space over number fields - Grayson Jorgenson

#17326 closed sage 6.6: Implementing subschemes functionality for projective "is_morphism" - Joao Faria

#17067 closed sage 6.5: Enabled canonical height for maps of

`\PP^N`over number fields - Ben Hutz, Paul Fili#15393 closed sage 6.5: FMV Algorithm for automorphism groups - Bianca Thompson, Ben Hutz, Joao Faria

#17082 closed sage 6.5: Height Difference Bounds over number fields - Joao Faria

#17427 closed sage 6.5: x==y while hash(x)!=hash(y) with SchemeMorphism_point_projective_field - Ben Hutz

#17535 closed sage 6.5: Homogenize fails for affine space over function fields - Ben Hutz

#17433 closed sage 6.5: projective point equality fails for quoteint base rings - Ben Hutz

#17441 closed sage 6.5: Change ring fails for SchemeMorphism_polynomial defined with fraction field elements - Grayson Jorgenson

#17325 closed sage 6.5: clear denominators for projective points does not always work - Joao Faria

#17450 closed sage 6.5: Fix category for quotients of polynomial rings - Travis Scrimshaw

#17429 closed sage 6.5: projective point equality returns false positive for ComplexIntervalField - Ben Hutz

#17324 closed sage 6.5: implement eq and ne for affine morphisms - Ben Hutz

#15448 closed sage 6.5: cartesian products of projective space - Ben Hutz

#16986 closed sage 6.5: Rational Preimages and All Rational Preimages over number fields - Joao Faria

#17118 closed sage 6.4: Added multiplier computation to affine morphism - Grayson Jorgenson

#17001 closed sage 6.4: Functionality for fast evaluation of affine morphisms - Grayson Jorgeson

#16961 closed sage 6.4: Fix Dynatomic Polynomials to work over the Complex Numbers - Joao de Faria

#16960 closed sage 6.4: Orbit Structure for Affine Morphisms - Grayson Jorgenson

#16838 closed sage 6.4: make affine and projective dehomogenize and homogenize work together - Ben Hutz

#16833 closed sage 6.4: Use Macaulay resultant to compute resultant of projective morphisms - Joao de Faria

#16834 closed sage 6.4: Change ring fails for affine morphisms - Grayson Jorgenson

#16832 closed sage 6.4: Can't Coerce projective point to subscheme point - Peter Bruin

#15394 closed sage 6.4: Lattes map from an Elliptic Curve - Patrick Ingram, Ben Hutz

#15389 closed sage.6.3: Krumm-Doyle Small Points Algorithm - David Krumm, John Doyle

#15382 closed sage.6.3: MacCaulay Resultant - Soli Vishkautsan, Hao Chen

#15782 closed sage.6.3: Increase Performance of Multiplier in Projective Morphism - Dillon Rose and Ben Hutz

#15781 closed sage.6.3: Increase Performance of possible_periods in Projective Morphism - Dillon Rose and Ben Hutz

#15780 closed sage.6.3: Increase Performance in Projective Morphism - Dillon Rose

#16168 closed sage.6.3: use p_iter_fork in projective_morphism - Dillon Rose

#16051 closed sage.6.3: fast_callable can return ipow with exponents in the base ring - Ben Hutz

#15920 closed sage.6.2: Parallelize Possible Periods functions for Projective Morphisms - Dillon Rose

#15815 closed sage.6.2: rational preimages for projective morphisms returns incorrect points - Ben Hutz

#15490 closed sage.6.2: documentation fix for projective dynatomic polynomials - Weixin Wu

#15396 closed sage.6.1: Implement .an_element() for ProjectiveSpace - Ben Hutz

#15392 closed sage.5.13.rc0: Bruin-Molnar Algorithm for minimal models - Brian Stout, Ben Hutz

#15376 closed sage-5.13.beta4: canonical heights for points with integer fix - Paul Fili

#14219 closed sage-5.13.beta4:- Rational preperiodic points - Ben Hutz

#15373 closed sage-5.13.beta3: Global height for integer fix - Paul Fili

#15377 closed sage-5.13.beta3: improve documentation of normalize_coordinates - Ben Hutz

#14218 closed sage-5.13.beta2: Height and canonical heights for points and morphisms - Ben Hutz

#14217 closed sage-5.10.beta3: Basic iteration functionality for projective and affine spaces - new directory structure in schemes - Ben Hutz

#13130 closed sage-5.8.beta3: Basic architecture changes : support for projective spaces over rings - Ben Hutz