Indivisible
Indivisible is an OISC esolang designed by User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff. The name is a reference to the fact that multiplication in this language is irreversible, and division is impossible.
Syntax
An Indivisible program is made up of instructions that each use one argument, separated by whitespace. The arguments may be anything that does not contain whitespace; however, it is recommended that numbers are used.
Semantics
When an Indivisible program is run, it has a list of variables, each starting at 1, and a counter, which also starts at 1. Each instruction looks at the variable corresponding to its argument and multiplies it by the counter (if it is not divisible by the counter). The counter is then incremented. Indivisible programs are run in an infinite loop and never halt.
Computational class
Unbounded memory is available, so the real problem with proving Turing-completeness is doing conditional statements. It's possible to do rudimentary statements, for example assuming A is divisible by 13, a statement like "if A is not divisible by 2, multiply by 26" is possible. Using Gödel-numbering, this can be treated as "if *2
is empty, increment *2
and *13
". Another problem is getting the program to halt, since it will keep chugging along forever and find more prime factors along the way, ruining the Gödel-numbering.
Since variables cannot affect each other, Indivisible's computational class would only require two variables to be Turing-complete (assuming it is).