Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

34-byte Universal Machine 260

N. Megill writes: "Computer scientist and obfuscated code aficionado John Tromp has devised what may be the world's most compact Universal Machine (Postscript research paper) to date. Written in the 'S-K combinatory logic' language, which has only 2 commands (S and K), his UM can be encoded with only 272 bits (34 bytes), compared to 5495 bits for the Universal Turing Machine given in Roger Penrose's book The Emperor's New Mind ."
This discussion has been archived. No new comments can be posted.

34-byte Universal Machine

Comments Filter:
  • They occasionally tinker with `programming systems', but those are so high level that they hardly count (and rarely count accurately; precision is for applications.)
  • What does this all mean? What kind of virtual machine is this? I can't tell...
    • It's a model of computation, based on the S and K combinators (as used in functional programming). It's similar in concept to the Turing machine, in that it's a basis for computation, and a model to base implementations on. The Turing machine models an imperative computational style, while combinatory logic models a style more akin to the lambda calculus.
    • by Stonehand ( 71085 ) on Monday March 18, 2002 @05:46PM (#3183522) Homepage
      A universal Turing machine is one that is capable of simulating all other Turing machines. That is, where Turing machine M would run program P, for a UTM you can come up with a sequence M' such that UTM(M',P) = M(P).

      And a Turing machine is a state machine whose only storage (beyond "what state am I?") and I/O is done with a sequential tape. So the machine can read from the tape, and then act based on its current state -- said actions including overwriting the symbol, or perhaps going forwards or backwards on the tape, plus changing state.
      • That is, where Turing machine M would run program P, for a UTM you can come up with a sequence M' such that UTM(M',P) = M(P).

        Funny, i'm sure they said ``plain english translation'' ;-)
        • by Uller-RM ( 65231 ) on Monday March 18, 2002 @06:17PM (#3183691) Homepage
          Hehe... the point is, what's the most minimal machine you can build that can solve a given class of problems?

          Layman's example - It's the concept that you could theoretically rework the Quake3 engine to run using the 8088's capabilities. (I say theoretically because some Slashdot nitpicker is inevitably going to try to karma whore by pointing out that 8088s could only use 16 bits of memory addresses, and you'd need way more.) The point is that given the 8088's instruction set, it's theoretically possible to emulate a 32-bit protected mode, and graphics, and so on and so on until you had one frame every hour of Quake 3. Now, try a Z80. Back on down the chain... what is the most minimal machine possible that can still run a translated version of today's software?

          One of the major ideas in Computer Science is what sorts of questions and problems are difficult, or absolutely downright impossible, for a given type of machine to solve. In particular we like to talk about Turing machines, which are damn minimal :) (See the parent for a rough description.) Any machine or language that can be used to solve the same class of problems as a Turing machine is said to be Turing-equivalent - most every conventional machine out there is Turing equivalent.

          (There are problems that Turing machines can't solve - the classic one is the halting problem. Can you write a program that can look at any other programs (not just most programs, ANY program in the infinite universe, including itself) and say if it'll lock up or not? With a Turing-equivalent machine, it's fundamentally impossible to do that - not just improbable or hard-to-implement, but impossible. The solution is to create a machine that's more capable than a Turing-equivalent machine, but that's rather tricky with macroscopic physics.)

          This is just a very rough intro - the article is that this guy came up with a CFG (Context-Free Grammar) with only two rules that apparently is capable of arbitrary computation of functions, which is damn cool. The site is slashdotted, so I've only read the top HTML page, not the Postscript paper :\
          • One nitpick:

            When you say,

            (There are problems that Turing machines can't solve - the classic one is the halting problem. Can you write a program that can look at any other programs (not just most programs, ANY program in the infinite universe, including itself) and say if it'll lock up or not? With a Turing-equivalent machine, it's fundamentally impossible to do that - not just improbable or hard-to-implement, but impossible. The solution is to create a machine that's more capable than a Turing-equivalent machine, but that's rather tricky with macroscopic physics.)

            it seems as if you're implying that a quantum computer would be more than Turing complete, and/or might be able to solve the Halting problem. This is wrong. It *may* be the case (AFAIK this hasn't been proven yet) that a quantum computer of arbitrary size could be used to solve all problems in NP in polynomial time/space in the length of the inputs (at least, if you don't believe the many-worlds interpretation of quantum theory) even if NP != P. In other words, a quantum computer of arbitrary size may be able to serve as the oracle that you need for the naive way to solve any problem in NP in polynomial time, even if a Turing machine could never solve NP-Complete problems in poly time in the length of the inputs.

            This is *not* the same as being able to solve an incomputable problem--i.e. those which a Turing machine may take infinite time to solve (the original example being the Halting problem)--even though it would represent the first greater-than-polynomial improvement on the Turing machine yet. (Assuming that a quantum computer is, in fact, equivalent to a nondeterministic Turing machine.)
            • I suspect that a QC isn't capable of solving the halting problem in general - however, it would be far easier to evaluate finite instances of the problem than with a conventional machine.

              I haven't given it much thought at this juncture, but it seems to me that one could reduce a Turing machine program to a unitary matrix, and then supply the Hadamard operator as input (i.e. a superposition of all possible inputs, equally likely) - thus evaluating the program on all possible inputs at once. Based on this line, if the resulting quantum state wasn't representable as a tensor product of basi, the program would halt.

              The above probably wouldn't work, but at least I'm thinking it over :)
          • I say theoretically because some Slashdot nitpicker is inevitably going to try to karma whore by pointing out that 8088s could only use 16 bits of memory addresses, and you'd need way more.

            Well, since you brought it up...

            The 8088 could actually address 20 bits of memory (1MB), a relatively impressive feat at the time, though you had to use that goofy addressing technique with segment:offset registers and 64K pages. Of course, if 1MB was not enough you could always swap stuff out to slower storage (e.g. disk) -- a technique that I became altogether too familiar with in the Z80 days when machines had 64K of *total* RAM that was expected to accommodate your OS, code, and data all at once.

            Anyway, I am just nitpicking because it's the Slashdot way. I think your explanation was actually quite informative. (And I'm not whoring for karma either -- hit the max a long time ago.)

    • A universal Turing machine is essentially a computer as we know them. It is a Turing machine that is capable of emulating the behavior of any other Turing machine. Since no one has yet disproved the Church-Turing thesis, this means it is a computer that is as powerful as any model of computation yet devised.

      The link seems to be slashdotted, so I can't see whether he has come up with a way to make a UTM using fewer states than previous ones, or just a way to encode one in fewer bits.

      I think I heard somewhere that there is a correlation between the optimal number of states in a UTM and the number of states a human can actually keep track of unaided by a machine. That's food for thought as to whether humans can do anything that is "extra-computational." That is, whether we are more powerful than Turing machines.
  • Kind of give's a different spin to Steganography.
  • Right... (Score:5, Funny)

    by sheetsda ( 230887 ) <doug...sheets@@@gmail...com> on Monday March 18, 2002 @05:41PM (#3183482)
    > 222(P0)$
    of size 46
    head reduces in 53 steps to S(S(K(S(SKK)))KK)(K(SKK(S(K(S(*K)))K)(SKK(S(K(*K)) (SKK(S(*)K)))(SKK(S(K(*))(*K(*(*))))(SKK(S(*)(*(*) ))(KK)))))) of size 167
    outputs 16 bits "0000000000000000"

    pfffffttt... Well duh. Anybody could see that.

    (</sarcasm>)
    • Here's how to crash the machine :

      Enter a combination or a definition.
      Names are single characters; whitespace is ignored
      An empty definition like "P=" undefines a name
      Predefined names are
      Y ? U S $ P K I 1 0
      Example inputs are: Sxyz, U"I110", 2fx=f(fx), Z=222(P0), U"Z"
      Sxyz
      of size 4
      head reduces in 1 steps to xz(yz) of size 4
      xy=x
      defines x as SSK(S(K(*))K)K of size 13
      222(P0)$
      of size 25
      head reduces in 0 steps to 222(S(*)(KK)K)(KK) of size 25
      "Z"
      java.lang.RuntimeException: Variable can't toBinaryString()
      • I can crash it by scrolling down to read the page, and then scrolling back up to play with the applet. It doesn't repaint correctly and I have to hit reload. This is with Sun's Java plugin, version 1.4, on IE 5.5. Incredible. It's been 6 years and they still can't make applets work.
  • So this means everything can be said in 34 bytes!
    This proves it: emperors and other leaders prefer using short commands.
  • "obfuscated code aficionado" hell my code, most of it , just like my slashdot posts is so obfuscated a month later I cant even understand it.

    From the article....

    I=SKK
    Y=SSK(S(K(SS(S(SSK))))K)
    Pxyz=zxy
    0xy=x
    1xy=y
    ?xy=1
    $x=0

    Maybe Im a bit tiered but dosent this sound a little Orwellian to all you ? "2+2=5"
  • Hey (Score:5, Funny)

    by Anonymous Coward on Monday March 18, 2002 @05:45PM (#3183516)
    Its still easier to understand than Perl code.
  • I don't have time to look at the article at the moment, but the headline reminds me of BrainFuck [muppetlabs.com]. It's a cute little language that emulates the functions of a Turing machine.

    Maybe someone can brush me up on my theory: is a Universal Machine a Turing Machine?
    • by zook ( 34771 ) on Monday March 18, 2002 @05:57PM (#3183598)
      They're the same in that any problem written for one can be written for the other.

      The idea is that a universal machine is one that any algorithm can be executed on. Of course, this depends on what you call an algorithm, but most reasonable definitions are equivalent here.

      I think of a Universal Turing Machine as a specific implementation that meets this requirement. Specifically, a state machine coupled to an infinite tape. There are plenty of other viable machines: infinate register machines, c code with infinite memory, etc.


  • Can this Universal Machine be used as the ULTIMATE microkernel for an operating system? Imagine an implementation of Linux running on a 34 byte picokernel!
  • ObYouKnowWhat (Score:1, Redundant)

    by kindbud ( 90044 )
    Imagine a Beowulf cluster of these things displaying a Natalie Portman montage.
  • Nice result (Score:4, Insightful)

    by frank_adrian314159 ( 469671 ) on Monday March 18, 2002 @05:48PM (#3183542) Homepage
    This is a really nice result. The only thing I would wonder about is whether you can get your Y-combinator in less than 12 S/K's. Since equivalent forms all left-reduce to the same string, you should be able to build and enumerate tree's easily enough, so I wonder why they didn't do this to claim an official "absolute result" for the smallest Y-combinator...
    • Your sig is especially appropriate right now. Do we now have a 34-byte Universal Turing Machine based in a 2-symbol language which wone one day be illegal because it has no Digital Rights Management? Is that Alan Turing I hear turning over in his grave? :P

      In the words of a good friend, "It's all just ones and zeros."

      -Puk, half-joking
  • http://www.google.com/search?q=cache:LWZtImLLCpoC: www.cwi.nl/~tromp/cl/cl.html+&hl=en&ie=ISO-8859-1
  • by MS ( 18681 ) on Monday March 18, 2002 @05:57PM (#3183596)
    This reminds me of:
    • Every program has at least one bug
    • and can be shortened by one instruction
    which induces that the "optimised" program will have no instructions, and obviously won't work.

    :-)
    ms

  • by crandall ( 472654 ) on Monday March 18, 2002 @06:01PM (#3183615) Homepage
    "Turing machine"

    Hah. 14bytes.

    15 counting the null terminator, but that is neither here nor there!

    • "Universal Turing Machine"

      Heheheh, you forgot the word "universal", so it's 24 or 25 bytes depending on whether or not you are counting the null terminator (since a universal turing machine is a specific type of turing machine).
  • by aleksey ( 1519 ) on Monday March 18, 2002 @06:06PM (#3183637) Homepage Journal
    If you are feeling masochistic, you can try David Madore's Unlambda [eleves.ens.fr] programming language. It is built around (in its basic form) the S and K combinators. Of course for all the Schemers out there, David is nice enough to include a form of call/cc for maximum obscurity. This is by far my most favorite of the painful programming languages.
    • The nice thingg about kombinator calculus is that there's no variable names. You only have one , unnamed, argument to each kombinator. This makes the definition of the evaluator much simpler than that of the evaluator of lambda calculus (which is what Scheme/LISP basicly boils down to)...

      Hehe, call/cc (call-with-current-continuation, for those that likes long names, or doesn't know what it is; it's like setjump/longjmp in C, but a continuation can be "jumped to" several times, from anywhere, even after the function in which it was created (setjump in C) has returned (once or several times)) is a really nice feature, with which you can implement both exceptions and threading...

      Perheaps I should take a look at that unlambda language, I read about it somtime ago, but I don't really have time for an intensive night of hacking/reading atm...
  • SK reducing hardware (Score:3, Interesting)

    by Old time hacker ( 302793 ) on Monday March 18, 2002 @06:17PM (#3183690)
    Back in my youth, we built an SK reducing machine -- called SKIM -- S, K, I Machine (where I = SKK).
    It was (as I recall) built out of around 100 TTL chips on two cards all using verowire technology (yuk). My responsibility was to write the microcode that directly executed the various combinators. We ended up supporting around 20 operators, starting out with S, K, I, and then progressing through B, Y, and some simple numeric and comparison operators. The garbage collector was written in one (long) night as the result of a bet!


    It worked remarkably well considering the date (1979-1980). Unfortunately, I couldn't find a copy of the paper that describes it online anywhere.


    One of the cool things about SKIM was that you could enter infinite programs, and since they were evaluated lazily, things just worked. For example, you could define a function that returned the infinite list of prime numbers. Actually what it returned was a code fragment that evaluated the list, and as the caller needed those values, the list would be evaluated, and the code fragement pushed backwards down the list.


    We never thought of building a UTM - now it has been done, it seem obvious!

    • Hey, got any online docs on the SKIM
      arch/design/impl? I'm really getting hot about
      the idea of hanging one of these off of each column
      of a DRAM. Mail me at alk at pobox dot com, if
      you wish.
      • I don't know about the physical structure, but have a read of Simon Peyton-Jones' book The Implementation of Functional Programming Languages. There will be some references in the chapter on S-K combinators.

  • by MWoody ( 222806 ) on Monday March 18, 2002 @06:20PM (#3183711)
    I can create a one-byte universal machine. It's in a language I called "MWoodylazium." In this language, a 1 is interpreted as a universal machine. A 0 is a rabid flying monkey. OK, here's my code:

    --- Begin program
    1
    --- End program

    See, wasn't that easy? I should note, though, that this is the second version of my program. The first version is still at large in the greater Manhattan area.
    • Seen on a bumper sticker the other day:
      "Don't make me call out the flying monkeys"
    • In this language, a 1 is interpreted as a universal machine. A 0 is a rabid flying monkey.

      Ok well heres my contribution:

      --- Begin program
      0 0 0 0 0 0 0 0 0 0 0
      --- End program

      Fly my pretties! Fly!


    • --- Begin program
      1
      --- End program


      but can you prove that your program terminates?
    • > I can create a one-byte universal machine.

      Hey, I can beat that. I'll name that language in 1 BIT. ;-)

      It's in a language I call "WolfWithoutAClausium." In this language, a 1 is interpreted as a universal machine. A 0 is a rabid flying monkey. OK, here's my code:

      --- Begin program
      1
      --- End program
      • Ahhhh! You took the byte out of my rabid flying monkeys!

        The other seven bits, incidentally, were my secret backdoor for any programs written in "MWoodylazium." I mean... Uh... Look! Monkey!
    • I can see at least sqrt(-1) problems with that.

    • Wow, nice language!

      I admit I'm a little dim, though. Could you show me, say, the traditional palindrome detector in your language?

      (Note to moderators: This is sarcasm. Note to MWoody: Pay more attention in your theory class. If you've even taken any.)
      • Of course it has palindrome detection. I didn't say they were STUPID rabid flying monkeys, did I?

        And I switched majors from CSC to English the quarter before I was supposed to take Theory of Computing. Maybe it was for the best. ^_^
      • by quintessent ( 197518 ) <my usr name on toofgiB [tod] moc> on Tuesday March 19, 2002 @05:04AM (#3185970) Journal
        I'm afraid Mr. Woody's point is correct. He was showing that the shortness of a "Universal Machine" program will depend on the language you use. If your language's compiler compiles a binary 1 into a universal machine, then it's pretty easy to code one up. I could code Linux into one bit if I wanted to. The compiler would be kinda big, though.

        This also has interesting implications for DeCSS. Is the bit 1 a circumvention device? Then 0 must be too, since we can just invert the rule.
        • He was showing that the shortness of a "Universal Machine" program will depend on the language you use.

          No, he's incorrect. The encoded UTM much accept other Turing Machines in the same encoding. Since the specified language has only one string, which is the claimed UTM, it can accept precisely zero other TMs as input to run them; it's absolutely incapable because they can't even be expressed in that language.

          Therefore, it's not a UTM. It's a Nothing-TM. It can't do anything; it's too constrained by the language.

          Even if you extend the language, you'll find it does odd (and provably odd) things to the rest of the language, rendering it impossible to work with with traditional techniques. (Is that 1 a "1", or is it the UTM? Who can tell? In a proof, you need to know.)

          Come on, think about it for a moment. If it were that easy, why would this news article even exist? The guy who put together the 34-number version isn't stupid; if it were this easy to get down to 1, why would he have bothered?
  • A while ago i came across this programming language called Unlambda [eleves.ens.fr], which is a superset of the s-k combinatorial logic calculus thing that this turing machine is written in. (not a very big superset, mind you. they added call/cc, some input/output functions, and an operator that lets you fiddle with evaluation order.. just look at the webpage i linked. it's interesting..). Thus far, about the most complicated program written in unlambda (not counting the quines) is something that prints out the prime numbers one by one as a series of increasingly longer rows of asterisks.

    Now, though, it would appear that we can run a universal turing machine in unlambda! I think! I haven't read the paper closely enough yet to work out how exactly the block of encoded binary at the end functions :)

    In the meanwhile, though, i'm posting for this reason: i'm really, really wierdly interested by lambda calculus and combinatorial functions and church numerals and all these other bizarre functional-programming offshoots. I can't, however, seem to find any really good resources explaining how they work. I mean, you look around on google or whatever, and occationally you'll find something explaining the basics of what an anonymous function is, and maybe explaining how to construct a church numeral or putting the old ((lambda (x x) (x x) (lambda (x x) (x x))) infinite loop thing up. But i've yet to find something that actually, you know, goes on and explains to you how to use all of this. None of them reach the point of beginning to explain how you go from knowing what a church numeral and "successor to 1" means to expressing foreach (1..10) {} using only anonymous functions.

    The site with the universal turing machine links to what claims to be an overview of how to use combinatorial functions, which makes me really happy. However, i was wondering: does anyone have any good links, examples of books, etc, that explain how to construct programs using lambdas and/or combinatorial s/k functions and all that? I hear some college courses cover this stuff (although near as i can gather, unfortunately, no courses at my current college do), so there has to be some kind of information online somewhere. I'll probably find something on my own eventually, but just as long as i have your attention: is there any reading material anyone *recommends* for someone who just finds lambda calculus and such interesting?

    For now, though, i'm going to read this intro to combinators thing linked from Tromp's site. Maybe it'll teach me enough i'll be able to finally realize my crack-addled dream of porting the lambda calculus DeCSS program [cmu.edu] to Unlambda. Though more likely it'll just make me really confused :)
  • by moniker_21 ( 414164 ) on Monday March 18, 2002 @06:26PM (#3183752)
    Apparently, Mr. Tromp read the previously posted article entitled, "Features: It's Not About Lines of Code" and took it to heart?

  • Don't laugh... (Score:3, Interesting)

    by Lictor ( 535015 ) on Monday March 18, 2002 @06:52PM (#3183876)
    Combinator calculus actually has a *practical* application. No kidding. In fact, the whole beauty of combinators is that you can reduce lambda-expressions into a variable-free, but equivalent form (via the `bracket-abstraction' algorithm).

    Anyway, the point is, if you're writing the back end for a functional language... wouldn't it be real swell if you all had to implement was two combinators? No dealing with messy variables either. This is exactly the approach taken in the implementation of the functional language Miranda. (Although for reasons of efficiency, there are more than 2 combinators... you *could* use just S and K, but then you get some REALLY HUGE results for even relatively simple lambda-expressions).

    So combinatory logic isn't just the domain of Schoenfinkle, Haskell Curry and assorted logic fetishists... it can and has been used for `real life' applications too.

    • Re:Don't laugh... (Score:2, Informative)

      by jcupitt65 ( 68879 )
      I use SK as the back end of my functional programming language. I added two more: Sl and Sr

      Sl a b c => (a c) b

      Sr a b c => a (b c)

      (I think Turner calls these B and C, corrections pls)

      It's pretty easy to see that S/Sl/Sr are the optimal 1-ary combinator set. You hardly need K, and you don't need to generate I during compiles (but it's handy during eval to preserve sharing).

      John
  • by Anonymous Coward
    As soon as I saw it in the back of the latest Spider Man comic, (on the back of the page which advertises X-Ray specs, which by the way, don't really work, trust me, save your cash!) I just knew I had to have one. It took me all summer saving up the money for one mowing lawns, collecting bottle caps, and painting fences. But all that hard work paid off, during the last week of August, when I got my shiny new Universal Machine in the mail.

    I remember like it was yesterday how my hands trembled, as I tore the wrapping off the box. Sweat dripped from my face and stung my eyes in the mid-afternoon heat, as they had so many dusty days of mowing and painting, but it was all worth it!

    My Universal Machine does EVERYTHING! I set it in my pet hamster's cage, and it exercised Herbie (my hamster) till he was tired and sleepy. I then took it out and used it to clean the dishes and take out the trash (my chores) which it did AUTOMATICALLY!

    Then, as the sun was setting, I used my Universal Machine to walk Sparky (my dog), which it did all by itself. It even cleaned up after him. I was amazed!

    When school started, I used my Universal Machine to do my homework, which it did with no intervention from me! Then, my friend Bobby and me used it to make two fake ID's and disguises to get us into an R rated movie... there's nothing it can't do!

    I used to love using it to scare my older sister and her stupid high-school friends, or chase the neighbor's cat up and down the street. Now, mostly I let my Universal Machine do everything for me, since it's universal, it can do anything and everything, and since it's a machine, it never gets tired or bored or complains.

    In short, I wholeheartedly recommend the Universal Machine to anyone who wants a machine which is universal. It even processes S and K commands. It does absolutely EVERYTHING.

    Sincerely,

    Timmy B. Stevenson
    Atlanta, Georgia
  • I mean, nowhere on that page did I see how you'd write "Hello World!".
  • by Traa ( 158207 ) on Monday March 18, 2002 @07:17PM (#3184031) Homepage Journal
    for those familiar with SKI combinatorial expressions and Lambda terms it is always a fun thing to see that I can be expressed in S and K by:
    Ix = SKzx = Kx(zx) = x

    But did you know that you can reduce the language to one-combinator?!

    X = lambda f.fS(lambda xyz.x)
    K => XX
    S => X(XX)

    The proof [cs.uu.nl] to this particular variation of a one-combinator basis for Lambda-terms was first published by Fokker [cs.uu.nl], University of Utrecht The Netherlands, and shows that among several variations of one-combinator basis Lambda terms his is the shortest.
    • The trouble with the one-combinator model is that it's not a supercombinator. The reduction rule of X introduces lambdas, which is of no practical use, since the whole point of using combinators to begin with is to remove the lambdas.

      As far as I know, it has not (yet) been proven that you need at least two supercombinators to implement all of lambda calculus, nor has it been proven that you can do it with only one.

  • by rarose ( 36450 )
    Just think folks... these 34 bytes would be subject to the SSSCA. Which means it would be illegal unless it incorporated another 3 megabytes of protection.

    Another example of how unrealistic the SSSCA is.
  • ARGHGHH! (Score:3, Funny)

    by Skim123 ( 3322 ) on Monday March 18, 2002 @08:15PM (#3184355) Homepage
    Here I am, taking a break from studying for my Programming Languages final, so I meander on over to /. and see: LAMBDA CALCULUS and COMBINATORS, the same stuff I've been studying for the last few hours. Sigh.


    SKK this.

  • More proof that lambda calculus IS the fundamental model of computation, NOT turing machines.

    Now, which one is your favorite programming language closer to? ;)
    • This seems to prove that the biggest part of lambda calculus isn't needed, doesn't it? Hardly a "win".

      I do like combinatorial calculus, though; especially in non-applicative form. You know, the form where functions don't get applied to their parameters; instead, functions get applied to the stack, which contains the result of previous functions. (That is, function composition becomes the fundamental operation.) Lots of interesting results.

      Currying is also interesting, but is more studied :-).

      -Billy
      • > This seems to prove that the biggest part of lambda calculus isn't needed, doesn't it? Hardly a "win".

        I don't know what you mean. All I'm saying is that the lambda calculus is a simpler and more foundational model of computation than turing machines. The fact that we can distill the essence of computation down to two closed lambda terms is a positive result!
  • by Jerf ( 17166 ) on Monday March 18, 2002 @10:15PM (#3184909) Journal
    For all the braintrusts posting solutions they claim are smaller then 34-bytes, and are in grave danger of spontaneously being awarded the Nobel Prize in Mathematics by the suddenly humbled mathematics community, remember the encoding your specify your Universal Turing Machine must be the same encoding as the Turing Machines you will be running the UTM on.

    The posted "single bit" solution doesn't work. The only machine encodable in that language is the claimed UTM... but that means that the UTM is far from a UTM, and is in fact a Nothing-TM. Don't hold your breath waiting for your Nobel.

    The others have similar problems. The string "Turing Machine" isn't a specified encoding.

    Joke all you want, I guess, but pay more attention in theory class, please.
  • ...that it was a Universal machine in 371 Bits [slashdot.org] not 272 bits, but then the links are gone and I'm too lazy to download Ghostscript on this #(&*$ Window's box.
  • S-K++ (Score:3, Funny)

    by supersnail ( 106701 ) on Tuesday March 19, 2002 @05:02AM (#3185967)
    Language enchanced with the addition of the "U" and "C" instructions.

Let's organize this thing and take all the fun out of it.

Working...