This project aims to implement a prototype to unfold recurrence relations symbolically. Our definitions are built on top of SymPy and target Python 3.5.1.
An analysis of Quicksort algorithm, of the average number of checks and swaps, with a first symbolic application of unfolding, can be found here.
First, a prototype where recurrences depending on only one index is described in this notebook, where unfoldings are applied to some well known recurrence relations, Fibonacci in particular. We split the content about the underlying Binomial transform, which arises in the characterization of Fibonacci numbers with odd subscripts, in a companion document.
Second, another prototype where recurrences depending on doubly indexed relations is provided in this notebook.
We provide a set of simple functions to colour a matrice where coefficients are taken according a congruence relation. Such functions, in addition to the colouring features, allows to build the Catalan triangle modularly, using theorems proved in my master thesis. A simple notebook showing an application to Catalan Riordan array can be seen here.
Moreover, we provide a Jupyter notebook to support a lecture within the course Progettazione e Analisi degli Algoritmi (PAA for short) taught by professors Merlini and Verri at the University of Florence. The notebook present a basic introduction to SymPy for students.