Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Tupper's Self-Referential Formula (mathworld.wolfram.com)
66 points by muon on Aug 2, 2010 | hide | past | favorite | 27 comments


"The formula itself is a general purpose method of decoding a bitmap stored in the constant n, so it could actually be used to draw any other image, and does not in fact contain any reference to itself."

http://en.wikipedia.org/wiki/Tuppers_self-referential_formul...


As a high school student, I thrilled to the idea that long numbers (eg. pi digits) might contain messages. As a postgrad, I now know that the long numbers are actually a form of information (eg. a digital photograph is just a number: a sequence of bits).

Sadly, there's nothing exciting about it, as the interesting sequences occur very sparsely, just as the vast majority of bit sequences (out of all those possible) represent uninteresting digital photographs.


Yes, the PI really contains all information on the world, since it's an infinite non-periodic number. The only problem is that it also contains all noise on the world, too. It's like a block of marble, that contains all great sculptures, you just have to remove bits from here and there...


> Yes, the PI really contains all information on the world, since it's an infinite non-periodic number.

Non-periodicity doesn't suffice. A number that has increasing runs of zeroes divided by ones, is non-periodic, but doesn't contain everything.

It's conjectured that Pi is a normal number [1], which would make your statement become true.

[1] http://en.wikipedia.org/wiki/Normal_number


An even easier sequence is: The natural numbers. They also contain all imaginable digital sequences.


Pi doesn't contain all the information in the world. It doesn't have the digits of the square root of 2, or the value of e, for example.


If you assume that pi is a normal number (unproven, but likely) then it is almost certain (ie. probability 1) that the digits of e and the square root of 2 are subsequences of the digits of pi.


What do you mean by subsequence?

Don't normal numbers only have to contain every finite string often enough, not every infinite string?



To answer my questions (according to your links): Yes, normal numbers only have to satisfy conditions on finite strings. And subsequence means deleting some items out of a sequence.


Maybe this was your point, but it seems to me that, with these definition, wtallis's claim (http://news.ycombinator.com/item?id=1567549) is correct; indeed, one simply needs to find 1 at some point, then find 4 a little later, then 1 after that, then 4 again, then a 2, and so forth. The indices where one finds the desired digits become the indices of the claimed subsequence of digits of π.


Indeed. And for the claim to be correct, even a much weaker condition than normality would suffice. E.g. a number like 0.123456789012345678901234567890[repeat] is definitely not normal, but contains all decimal subsequences.


But pi does contain the finite instruction sequences for programs that generate the digits of those numbers.


Well OK, the formula at this link will give you all the digits of pi: http://en.wikipedia.org/wiki/Numerical_approximations_of_%CF...

The formula is clearly finite (on the order of 40 symbols), it does not contain "all the information in the world" and neither can any sequence it generates.


Information theory is a tricky beast. Pi contains no more information than it takes to express it, so in information theory terms it doesn't contain much information at all since it can be expressed very concisely.

It so happens that pi + enough information to use pi as raw material to produce the desired information can output anything you like, which some people find amazing. But really, "anything + enough information to use 'anything' as raw material to produce the desired output" works equally well, too; pi isn't actually that special either. Also, the information needed to produce your desired output from pi is on average larger than the information in the desired output in the first place, which is why the "compress your things by referencing a digit number in pi" doesn't actually work.

So, pi contains all the information in the world as long as you use more information to extract it from pi, in which case all you are really doing is expressing the original information in a particularly unpleasant encoding.

But it sounds cool to say pi has all this information... "how can anything with an infinite number of normalized digits consist of only a handful of bits?" asks our feeble, mathematics-impaired human minds.

(By the way, this is extended agreement with the post I'm replying to, not any implicit disagreement.)


Yes, it's a little disappointing. It's like saying the Unix cat is a self referential program since it can be used to display its own source code.


That is a big number. This reminds me of the old adage about monkeys and typewriters eventually writing Shakespeare's plays (http://en.wikipedia.org/wiki/Infinite_monkey_theorem)


This is one of my SE prof's close colleagues. He showed this in class.


this is awesome. how'd you stumble onto it?


I found this via Futility Closet, which a constant source of really interesting stuff. (http://www.futilitycloset.com/)

Initially, I thought it's too good to be true, later found references in Wikipedia and Mathworld, and finally started to believe in it.


Believe in it? This is math, you can check.


Normal people don't have the tools to check the math on a formula that involves 500-digit numbers. It's not like I'm going to pop out my TI-80 and graph it. This formula is cool, but it's only a bit more accessible than the human genome.


Normal people don't have the tools to check the math on a formula that involves 500-digit numbers.

Sure we do, for flexible values of "normal":

  from decimal import getcontext, Decimal
  getcontext().prec = 600
  n = Decimal(960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719)

  # ignore floors, just using integer arguments
  f = lambda x,y: (y/17 * Decimal(2)**(-17*x - (y%17))) % 2

  results = {}
  dhalf = Decimal('0.5')
  for x in xrange(106):
    for y in xrange(17):
      # this takes a while
      results[x,y] = '*' if f(Decimal(x), Decimal(y+n))>dhalf else ' '

  # this prints reversed for some reason unless we reverse the x iteration
  for y in xrange(17):
    print(''.join(results[x,y]+' ' for x in xrange(105,-1,-1)))


Indeed. And lots of computers come with Python or something equally capable of arithmetic installed nowadays.

(And if you don't have the means to check it, it's probably better to remain agnostic, instead of starting to believe random things.)


Believe the blog post, I don't doubt the math.


OK.


Someone wanna prove this on WolframAlpha.com?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: