# InfiniTUM

**InfiniTUM** is a language made by User:iconmaster that stands for **Infini**te **TU**ring **M**achine. It is a language that describes Turing machines with one twist: there is an infinite tape with infinite values, and the head has an infinite number of states. Rather than rulesets, state and value change is dependant on mathematical expressions.

## Description

An InfiniTUM program is a series of if statements: If the state is in a range, set the state and the value to the result of an expression, and then move the head. They are structured like this:

IFconditionSTATEstate_expressionVALUEvalue_expressionMOVEdirection

The first three arguments, `condition`

, `state_expression`

and `value_expression`

, must be mathematical expressions, and the last one must be either `<`

, `>`

, or `X`

. The first argument is the condition to check. If it is true, the machine sets the head's state to the second argument, the value under the head to the third, and moves the head based on the fourth. The following variables may be used:

`s`

: the head's state number.`v`

: the value under the head.

If the `MOVE`

statement is a `<`

, it moves the head to the left; if it is `>`

, it goes to the right; if it equals `X`

, the program halts.

The tape is initially filled with all 0's, and the state is 1.

## Examples

Counts up forever:

IF s != 0 STATE s+1 VALUE s MOVE >

## Interpreter

- Common Lisp implementation of the InfiniTUM programming language.