Try to Take
THIS PAGE IS A WORK IN PROGRESS AND I HAVE THUS NOT ADDED CATEGORIES YET
Introduction
Try to Take is a language capable of expressing different kinds of programs, including all Turing machines. It does this using a single command, a single constant (the number 1, written as I), and an arbitrarily large set of variables. Try to Take programs take no input from the user, and their output is always either 0 or 1, just enough to encode a truth value. However, unlike usual languages, Try to Take programs are impossible to reliably execute. This is because a device capable of executing all Try to Take programs could be used as an oracle, as there is a computable algorithm that can turn any Turing machine into a Try to Take program that outputs either 0 or 1 based on whether the machine halts. In fact, a certain computable algorithm can turn any PA sentence into a Try to Take program that returns 1 iff that statement about the natural numbers is actually true, and 0 otherwise.
Definitions
The central notion of Try to Take is that of "trying to take". For example, if you try to take 5 from 9, you're left with 4. In that case, trying to take is the same as substraction. However, if you try to take 9 from 5, you're left with 0; you took everything you could, but you can't go into the negatives. It's as if you tried to take 9 apples from 5 apples. This operation is also known as truncated subtraction, doz (difference or zero), and monus, according to Wikipedia. Trying to take can be defined as max(a-b,0) and is often notated as ∸ (minus with a dot on top of it).
However, trying to take is not the actual, sole command of Try to Take; instead, "monuseries", symbolized by a capital M, is. Monuseries work a bit like infinite series do in math; however, instead of being repeated addition, it's repeated monus, a.k.a. "try to take". For example: would be interpreted as "...(((1 monus 0) monus 1) monus 2)...", with the part following repeatedly evaluated with x as the next natural number. If at some point, the result of trying to take is zero, the computation can be stopped, as it will stay as 0 forevermore (monus can never increase the value). Alternatively, if at some point, the remaining terms we're trying to take are all 0, the computation stops too, as the the result will never decrease below the current value. One of these cases must always happen, though it is in general undecidable which. For specific expressions, this can often be figured out, however.
Examples of monuseries
= 1∸0∸1∸2∸... = 0
(3∸x) = 16∸(3∸0)∸(3∸1)∸(3∸2)∸(3∸3)∸(3∸4)∸... = 16∸3∸2∸1∸0∸0∸... = 10
Note that the second monuseries is not by itself valid in Try to Take, and the first monuseries should be written with an I in the place of the first 1.
Language specification
A single Try to Take term is one of the following:
- (taken to have the value 1)
- a variable
With and denoting other Try to Take terms and denoting a variable name.
A Try to Take program is a term that fulfills the following condititions:
- All variables are bound to some monuseries.
- No of a monuseries contains anywhere in it a second monuseries using the same variable name as the first one.
The output of a Try to Take program is taken to be its value when evaluated. It is trivial to show that this means the output is always 0 or 1.
Notations
When casually writing down terms and programs, extra brackets may be removed, such as the outermost ones. In the case of , this is to be understood as .
Instead of using variable names, the variables may be numbered. Using this method, can be written as .
All variables can be denoted with the letter x by using tabulation and marking which monuseries different variables are bound to using |. The previous example can thus be written as:
I M | x M | x
Had the example been , it would've been written as:
I M | x M | x
Abbreviations
Once some kind of a function or operation has been defined with a T2T term, more terms may be written using this function in the context of analyzing T2T, with the intention that uses of the function would be replaced by its definition when actually creating a T2T program.
Translation of PA sentences
WIP
Goldbach's conjecture
WIP