Skip to content

An interactive tool for analyzing, executing, and improving dynamic programming algorithms.

License

Notifications You must be signed in to change notification settings

timvieira/dyna-pi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tests

dyna-pi: Dynamic Program Improvement

The dynamic program improvement system (dyna-pi) is an interactive tool for analyzing and improving dynamic programming algorithms. We developed this tool because Finding a correct program with the optimal asymptotic runtime can be unintuitive, time-consuming, and error-prone. dyna-pi aims to automate this laborious process.

Key features:

  1. Dyna language: A high-level, domain-specific language for clear and concise dynamic program specification.
  2. Efficient solvers: General-purpose solvers to execute Dyna programs, including agenda-based fixpoint iteration and semiring Newton's method.
  3. Static analysis: Type analysis and worst-case time/space complexity analyses.
  4. Program transformations: Meaning-preserving Dyna-to-Dyna transformations, which systematizes the repeated insights of numerous authors when speeding up algorithms.
  5. Optimizer: A search algorithm for identifying a sequence of transformations that reduce the runtime complexity given an initial, correct program.
  6. Visualization and debugging: Tools to aid in the development of correct programs, including integration with Jupyter.

The dyna-pi system is based on Tim Vieira's 2023 PhD dissertation (see also defense video and slides). It is also part of the broader Dyna project.

Notice. This code release is in its early stages and might have some rough edges. We welcome feedback and contributions through pull requests, email, and our issue tracker.

Quick Start

For a quick start, check out our demo notebook Open In Colab for an overview and basic usage instructions.

Installation

To install dyna-pi using pip run:

pip install -U "git+https://github.com/timvieira/dyna-pi"

License

This project is licensed under the MIT License - see the LICENSE file for details.

References

For more information about dyna-pi please refer to:

About

An interactive tool for analyzing, executing, and improving dynamic programming algorithms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published