We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Frozen Pointer
Frozen Pointer is an esoteric programming language and a computational model created by User:Rainwave in 2026. The language was created while Rainwave was working on another monotonic language. Long story short, Rainwave wanted to find a reduction into a simplification of The Exasperation Machine which does not have the 0 instruction. However, he quickly figured out that it is not possible to simply remove 0 from The Exasperation Machine without losing Turing completeness. So, he decided to create a new language that is easy to compile into certain monotonic languages.
Language semantics
The language has the following components:
- A bidirectionally-unbounded tape where each cell stores a single bit, initially 0. We say that 0 cells are inactive and 1 cells are active. Inactive cells can be activated but active cells cannot be deactivated.
- A pointer which is initially set to point to an arbitrary origin cell in the tape.
- A boolean state named
frozen, which is initially false.
A program consists of a string of commands which are executed sequentially from left to right. The program is wrapped in an implicit loop, meaning the execution returns to the first command after the last command is executed.
Frozen Pointer has the following commands
| Command | Description |
|---|---|
> |
Move the pointer right by one cell if frozen is false.
|
< |
Move the pointer left by one cell if frozen is false.
|
% |
Toggle the value of frozen if the current cell is active.
|
! |
Activate the current cell. If it's already active, this command does nothing. |
Implementations may ignore characters that do not correspond to a command.
Unfrozen Pointer
One might complain that Frozen Pointer is not truly a monotonic language as its frozen state can alternate between true and false. Unfrozen Pointer is a reformulation of Frozen Pointer that completely eliminates the frozen state. It does this by tweaking the commands as follows
| Command | Description |
|---|---|
> |
Move the pointer right by one cell. |
< |
Move the pointer left by one cell. |
% |
If the current cell is active, search cyclically to find the next % command, then jump to the command after it (or the first command if the next % is the last instruction).
|
! |
Same as in Frozen Pointer. |
It's easy to see that Unfrozen Pointer and Frozen Pointer are equivalent. However, Unfrozen Pointer may or may not be an easier reduction target, mainly due to the unpredictable control flow.
Computational class
Frozen Pointer is Turing complete as Bitwise cyclic tag can be compiled into it, though Rainwave is still in the process of writing the proof. This section will be updated once the proof is ready.