# [WSS18] A Calculus for Infinite Lists

Posted 10 months ago
1898 Views
|
6 Replies
|
12 Total Likes
|

# Introduction

Mathematician David Hilbert came up with the following thought experiment: In an hotel of infinitely many rooms that is full, find a way to accomodate infinitely many new guests. His idea was to show that infinity can behave in counterintuitive ways. I've implemented a way to work with this kind of concepts using the Wolfram Language.

Computer languages are usually constrained to lists of finite size subjected to operations. For example, one may join, partition, sum, or nest them, and get a finite list as a result. Even though explicit infinite lists cannot be implemented in a computer, in this project I aim to provide the Wolfram Language with a symbolic calculus for lists of (countably) infinite length. That is, one would be able to treat expressions referring to infinite lists as arguments of operations, e.g, the infinite list of the roots of the natural numbers.

The main idea is to treat infinite lists as symbolical objects within the Wolfram Language, consisting of a generating rule for the elements on the list, where operations on infinite lists modify the generating functions, and values are only computed when explicitly asked for. All infinite lists are countably infinite.

# Basic list operations

Most of the operations are extensions of the already existing Mathematica fucntions for lists. First I define the infinite list of the integers:

myInfiniteList= InfiniteRange[{-Infinity, Infinity}]
InfinitePrint[myInfiniteList]


InfinitePrint is a helpful tool to visualize some elements of infinite lists

{...,-5,-4,-3,-2,-1,0,1,2,3,4,5,...}


We can reverse this list, or drop all the negative elements to get the infinite list of the natural numbers.

InfiniteReverse[myInfiniteList]//InfinitePrint
(naturalNumbers=InfiniteDrop[myInfiniteList,{-Infinity,-1}]) //InfinitePrint


and we get

{...,5,4,3,2,1,0,-1,-2,-3,-4,-5,...}
{1,2,3,4,5,...}


With InfiniteSelect, we can obtain the prime numbers

 InfiniteSelect[naturalNumbers,PrimeQ]//InfinitePrint


with result

{2,3,5,7,11,...}


# Infinite Matrices and Graphs

With the help of infinite lists, it is possible to work with matrices, which are nested infinite lists.

myInfiniteMatrix =
InfiniteMatrix[ Function[{i, j},
"[row " <> ToString[i] <> ",col " <> ToString[j] <> "]"]];
(*Take the first rows and columns*)
InfiniteTake[myInfiniteMatrix, 2, 3] // MatrixForm
InfiniteTake[myInfiniteMatrix, 4, 4] // MatrixForm


This is the infinite matrix that has "row i col j" in position $i,j$

Infinite matrices allow us to work with infinite graphs!

We can consider the graph with vertices the natural numbers, and where every number is connected its divisors

myGraphMatrix =
InfiniteMatrix[ Function[{x, y}, If[Mod[x, y] == 0, 1, 0]]];


Below is an animation of successive subgraphs from 1 vertex to 14 vertices. Of course, the number 1 is always at the center of the graph.

# Applications to Cellular Automata

A neat application is that now we can have Cellular Automata that admit infinite initial conditions! For example, rule 90 gives interesting results:

(*Initial condition with a black cell every 7 cells*)
myInitialCondition =
InfiniteList[0, Function[x,  If[Mod[x, 7] == 0, 1, 0]]];
(*With a widht of 40 cells to either side, plot the first 10 steps*)
InfiniteCellularAutomatonPlot[90, myInitialCondition, 40, 10]


For a slightly more complicated result, consider an initial condition where only the cells in absolute prime number position (like 2 and -3) are black. This is the picture at the beginning of the post.

Notice there are differences if one uses the implemented Cellular Automata function with a similar but finite initial condition. Notice the extremes of the images below. First with infinite initial condition:

Now with finite initial condition where there is a black cell every 7 cells, but only in a finite range and the rest is white.

# Conclusions and Future

I have extended most of the basic Mathematica functions for lists to infinite lists through symbolic manipulation, though partial explicit numerical results can be obtained. Two non trivial applications of this results are the capacity to define infinite graphs, and to work with Cellular Automata with an infinite initial condition.

It is still pendant to extend other Mathematica functions for finite lists to work with this project's approach for infinite lists in an optimal way. Also, an implementation could be explored for systems that in principle accept infinite initial conditions.

Please correct all my typos and grammatical mistakes, as English is not my native language :)

# References

Hilbert's Parados of the Grand Hotel

6 Replies
Sort By:
Posted 10 months ago
 - Congratulations! This post is now a Staff Pick as distinguished by a badge on your profile! Thank you, keep it coming!
Posted 10 months ago
 This is seriously cool. I would love to work with some infinite initial condition CA (prime number inited CA?? cool) or maybe graphs and such. Is there a way to see some of the code you made these functions in :-D ?
Posted 1 month ago
 Does anybody know anything about this project? I've never been able to get ahold of the person who made it but it looks really interesting. Thanks!
Posted 1 month ago
 Wow. But where are these functions to be obtained?