# 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

Sage Days 104 - Sage Days on Arithmetic Dynamics - November 17, 2019 - November 20, 2019, Saint Louis University

## Past News

[email protected] - REU Program on Computational Arithmetic Dynamics - June 10, 2019 - August 2, 2019

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

[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 semester 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

(#28773) new: Implementing is_chebyshev over finite fields

(#28772) positive-review: Kneading sequences for the doubling map - John Doyle

(#28771) new: Improve computation of canonical height for dynamical systems

(#28753) positive-review: Ramification Type for Rational Maps - Andrew O'Desky

(#28316) positive-reiew: Making an is_dynamical_belyi_map() function - Bella Tobin, Jamie Juul

(#28292) positive-review: Implemented is_chebyshev and is_lattes for one dimensional projective dynamical systems - Trevor Hyde, Fiona Lu, Alex Shearer

(#28263) positive-work: Degree for Affine Morphism or Affine Dynamical System - Anna Chlopecki, Juliano Levier-Gomes

(#28173) positive-review: Implemented Is_Newton for Dynamical Systems - Anna Chlopecki, Simon Xu, Juliano Levier-Gomes, Grayson Jorgenson

(#28170) positive-work: enhance is_postcritically_finite, critical_point_portrait, and multiplier_spectra to work over number fields and finite fields - Heidi Benham, Julia Cai, Leopold Mayer

(#28107) needs-work: allowing invariant_generators() to take arbitrary character - Brandon Gontmacher, Ben Hutz

(#25745) needs-work: Periodic Proportion Homomorphism over Finite Fields - Rebecca Lauren Miller

(#23806) needs-info: don't choose default affine patch on projective point init - Ben Hutz

(#23047) positive-review: Meta Ticket: Utilize coercion framework for scheme points and morphisms

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

## Wishlist

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

Description

Difficulty

Priority

Polynomials

specific functionality for regular polynomial endomorphisms of P^N

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)

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

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

## Complete

#28779 closed sage-9.0: Error in "primes_of_bad_reduction" for DynamicalSystem - Paul Fili

#25701 closed sage-9.0: Implement Sieve algorithm for product_projective space - Raghukul Raman

#23740 closed sage-9.0: Plotting Julia sets for general polynomials - Ben Barros

#23720 closed sage-9.0: Plotting Mandelbrot sets for general polynomials - Ben Barros, Colby Kelln

#28316 closed sage-9.0: Making an is_dynamical_belyi_map() function - Bianca Thompson, John Doyle, Adam Towsley

#28214 closed sage-9.0: Compute and display graph of nth-preimage tree - Brandon Gontmacher, Joey Lupo, Wayne Peng

#28213 closed sage-9.0: Renaming rational_preperiodic_points() to all_preperiodic_points() - Eric Zhu, Alex Galarraga, Bianca Thompson

#28212 closed sage-9.0: Optimizing all_periodic_points() for small periods - Eric Zhu, Alex Galarraga, Bianca Thompson

#23816 closed sage-9.0: left matrix action on scheme points - Ben Hutz

#23807 closed sage-8.9: fix issues with identical affine patches - Ben Hutz, Peter Bruin, Raghukul Raman

#28200 closed sage-8.9: reduce base field for scheme morphisms - Ben Hutz

#28174 closed sage-8.9: Fixed typo for dehomogenization of non-endomorphisms - Matt Torrence, Henry Talbott

#28169 closed sage-8.9: Option for adjugate in conjugation function with normalize_coordinates - Meghan Grip, Emily Rachfal, Talia Blum, John Doyle

#28161 closed sage-8.9: Make _number_field_from_algebraics() return a dynamical system - Jasmine Camero, Olivia Schwager

#28148 closed sage-8.9: sigma_invariants() bug over FunctionFields - Joey Lupo

#28109 closed sage-8.9: Renaming and improvement of periodic point methods - Erich Zhu, Alex Galarrage, Biance Thompson

#28071 closed sage-8.9: Enhance global_height functionality for other fields - Talia Blum, Trevor Hyde, Joey Lupo, Matt Torrence

#28070 closed sage-8.9: is_conjugate bug fix and enhancements - Colby Kelln, Leopold Mayer, Wayne Peng, Srinjoy Srimani, Ben Hutz

#28065 closed sage-8.9: Rational Preimages of Non-endomorphisms - Anna Chlopecki

#28032 closed sage-8.9: Automorphism group for some degree 1 maps - Shuofeng Xu, Max Weinreich, Brandon Gontmacher, Heidi Benham

#28028 closed sage-8.9: Enhance change_ring method on morphisms to use canonical embedding when possible, give clearer error in other cases - Henry Talbot

#28027 closed sage-8.9: Adding cyclegraph functionality to product projective dynamical systems - Alex Galarrage, Alex Shearer, Eric Zhu

#28026 closed sage-8.9: missing parameter in critical_point_portrait for dynamical systems - Brandon Gontmacher, Max Weinreich, Juliano Leveier

#28024 closed sage-8.9: Add FractionField support to specialization - Matt Torrence

#27995 closed sage-8.9: normal_form should Return the Embedding when working over a Finite Field - Meghan Grip, Julia Cai, Srinjoy Srimani, Grayson Jorgenson

#27994 closed sage-8.9: Name mismatch on affine space and projective space constructors - Matt Torrence, Olivia Schwager, Shuofeng Xu

#27992 closed sage-8.9: sanity check parameter added to prime_list in minimal_model - Talia Blum, Jasmine Camero, Joey Lupo

#27985 closed sage-8.9: Make dynatomic polynomial coerce base ring - Henry Talbot

#27984 closed sage-8.9: Coercion of inputs of orbit into projective space - Emily Rachfal

#27983 closed sage-8.9: Add monic=True option for chebyshev creator - Leo Mayer

#27982 closed sage-8.9: Make Lattes map for projective space coerce base ring - Ben Hutz

#25243 closed sage-8.9: is postcritically finite failure for extensions - Ben Hutz

#25239 closed sage-8.9: QQbar points of subschemes not valid - Ben Hutz

#25237 closed sage-8.9: normlize_coordinates for projective morphism not fully normalized - Ben Hutz

#23813 closed sage-8.9: matrix action on scheme morphism polynomials - Adam Towsley

#27900 closed sage-8.8: removed deprecated dynamics code from schemes - Ben Hutz

#25952 closed sage-8.4: smallest coefficient model for binary forms and dynamical systems - Ben Hutz

#25839 closed sage-8.4: Raise Error if Univariate PR used to construct ProjectiveSpace - Joseph Lupo

#25795 closed sage-8.4: minor optimization in comparison between morphisms - Raghukul Raman

#25939 closed sage-8.4: error in Well's algorithm for canonical height - Ben Hutz

#25897 closed sage-8.4: incorrect Comparison of embedding index in projective_embedding - Raghukul Raman

#25878 closed sage-8.4: implement Height function for product morphism - Raghukul Raman

#25821 closed sage-8.4: implement height functions for product points - Raghukul Raman

#25792 closed sage-8.4: add dehomogenize function for product projective point - Raghukul Raman

#25781 closed sage-8.4: add Comparison operator for morphism between product - Raghukul Raman

#25697 closed sage-8.4: Implement enumeration over QQ for product projective schemes - Raghukul Raman

#25523 closed sage-8.4: Raise Exception if DynamicalSystem initialized with coeffs not in given domain - Joseph Lupo

#25446 closed sage-8.4: compute all orbits of minimal models of dynamical systems - Ben Hutz

#25241 closed sage-8.4: fix issue with change_ring for polynomials with Maps - Ben Hutz

#25780 closed sage-8.3: Normalize bound checking in points function - Raghukul Raman

#25592 closed sage-8.3: enum_affine_rational_field function is missing points - Raghukul Raman

#25564 closed sage-8.3: implement hash for affine_point - Raghukul Raman

#25529 closed sage-8.3: Implement Sieving to replace search enumeration - Raghukul Raman

#25513 closed sage-8.3: Scheme endomorphism as_dynamical_system() check if already DynamicalSystem - Joseph Lupo

#25242 closed sage-8.3: is_polynomial fails when multiple roots - Ben Hutz

#25240 closed sage-8.3: Chebyshev and Lattes maps should be created as dynamical systems - Ben Hutz

#23627 closed sage-8.3: Update points() in projective_homset.py and affine_homset.py to work over CC and CDF - Ben Hutz, Rebecca Lauren Miller

#25242 closed sage-8.3: is_polynomial fails when multiple roots - Ben Hutz

#25240 closed sage-8.3: Chebyshev and Lattes maps should be created as dynamical systems - Ben Hutz

#24994 closed sage-8.3: convert mandelbrot/julia interact to jupyter notebook - Frédéric Chapoton, Jeroen Demeyer

#22771 closed sage-8.3: Numerical Precision for Heights in Number Fields - TJ, Raghukul Raman

#23814 closed sage-8.1: fix is_preperiodic domain check - Paul Fili

#23811 closed sage-8.1: fix bug is specialization - Paul Fili

#23810 closed sage-8.1: fix typo is critical point portrait - Ben Hutz

#23805 closed sage-8.1: implement coercion for scheme points - Ben Hutz

#23571 closed sage-8.1: Implement Veronese Embedding - Grayson Jorgenson

#23434 closed sage-8.1: move subscheme code - Ben Hutz

#23808 closed sage-8.1: save embedding in _numberfield_from_algebraics - Paul Fili

#23809 closed sage-8.1: fix normalization in canonical height - Paul Fili

#23497 closed sage-8.1: relocate dynamics code - Ben Hutz, Xander Faber

#8423 closed sage-8.1: Julia sets - Ben Barros

#23425 closed sage 8.1: Plotting external rays of mandelbrot set - Ben Barros

#23457 closed sage 8.1: allow infinity to initialize projective point - Ben Hutz

#23334 closed sage 8.1: Implement Well's canonical height algorithm - Lauren Miller

#23333 closed sage 8.1: Improve sigma invariant - Ben Hutz

#23257 closed sage 8.1: Plotting the Mandelbrot set in Sage - Ben Barros

#23086 closed sage 8.0: Cyclegraph for projective morphisms - Ben Barros

#22556 closed sage 8.0: implement periodic points for rational maps on projective space - Ben Hutz

#21118 closed sage 8.0: list of degrees of iterates of function - Joseph Silverman, Ben Hutz

#22743 closed sage 8.0: little clean up of Wehler K3 - Frederic Chapoton

#22580 closed sage 8.0: Normalize nth iterate in projective morphism - Rebecca Lauren Miller

#22268 closed sage 7.6: copy for scheme morphisms points not deep enough - Ben Hutz

#22265 closed sage 7.6: fix dynatomic polynomial - Rebecca Lauren Miller

#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