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.
User:Raiseafloppafan7741/Draft IV
Anti-Plushie Python is a family of languages based on Python by user:raiseafloppafan7741 in 2026 that originated from an idea he came up with after going insane on IRC.[1] Each member of the Anti-Plushie Python family succeeds the last in terms of getting closer and closer to being truly anti-Plushie-complete, which for the sake of brevity is defined as violating all 3 terms of the concept.
Overview
Anti-Plushie Python is Python designed to be anti-Plushie-complete. Because of this, it cannot store the numbers 2 and 4 and it cannot print the number 31. However, the way it goes about this is a bit more nuanced as there are many loopholes to get around any prohibitions.
Anti-Plushie Python A
The most straightforward solution to anti-Plushie-completeness is to prohibit the numbers 2, 4, and 31. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python A". However as shown in Figure 1, there are many alternative ways to represent these numbers.
# Peano axioms
class Number:
def __init__(prev = None):
self.prev = prev
def succ(self):
return Number(self)
def __add__(self, other):
if other == zero: return self
return self.succ() + other.prev
def __sub__(self, other):
if other == zero: return self
if self == zero: return zero
return self.prev - other.prev
zero = Number()
two = zero.succ().succ()
four = two + two
thirty_one = four + four + four + four + four + four + four + four - one
# Strings
zero = "0"
two = "2"
four = "4"
thirty_one = "31"
# Arrays of bits
zero = [0]
two = [1, 0]
four = [1, 0, 0]
thirty_one = [1, 1, 1, 1, 1]
# Functions
def zero():
return zero
def f(x):
def func():
return x
return func
def succ(x):
return f(x)
def prev(x):
return x()
def add(x, y):
if y == zero: return x
return add(succ(x), prev(y))
two = succ(succ(zero))
four = add(two, two)
thirty_one = prev(add(add(add(four, four), add(four, four)), add(add(four, four), add(four, four))))
|
| Figure 1: Several ways to represent the forbidden numbers in Anti-Plushie Python A. |
Anti-Plushie Python B
Because of the workarounds presented in Figure 1, features such as integers, floating-point numbers, complex numbers, collections (strings, lists/arrays, dictionaries, sets, ranges, etc.), generators, objects, classes, and functions are removed. Let us call this new iteration "Anti-Plushie Python B".
# This module automatically recognizes Anti-Plushie Python B and proves it Plushie-complete by # storing 2 and 4 and printing 31. import plushie_completeness_proof |
| Figure 2: Exploiting Python's nature to prove Plushie-completeness for Anti-Plushie Python B. |
However, that is not enough to stop a dedicated Plushie-completeness soldier from finding a way to represent the numbers 2 or 4. rendering Anti-Plushie Python B only partially Plushie-incomplete. Python is very well-loved because of its extensive library support. Plushie-completeness soldiers know this which means that a dedicated Plushie-completeness soldier could simply make a C library and make a module for Anti-Plushie Python that, when loaded, automatically stores 2 and 4 in memory and prints the number 31, as shown in Figure 2.
Anti-Plushie Python C
Because of the workaround for Anti-Plushie Python B, modules are removed to prevent cheating. Let us call this new iteration of Anti-Plushie Python "Anti-Plushie Python C".
one = None two = None three = None four = None |
| Figure 3: Anti-Plushie Python C can store 2 and 4?! |
Anti-Plushie Python D
As shown in Figure 3, Anti-Plushie Python C would be able to store 2 and 4 using the count of global/local variables. Because of this, local and global variables are removed from the language, as well as conditional statements, loops, and try-except-finally. Let us call this new iteration of Anti-Plushie Python "Anti-Plushie Python D".
# print 2 AA # print 4 AAAA # print 31 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| Figure 4: Anti-Plushie Python D can still print them too!? |
Anti-Plushie Python E
As shown in Figure 4, Anti-Plushie Python D can still be used to store and print the numbers 2, 4, and 31 via syntax or runtime errors. To alleviate this issue, syntax and runtime errors are removed meaning every program is a valid program for this iteration of Anti-Plushie Python, which we should call "Anti-Plushie Python E".
Below is for 2
## Below is for 4 #### |
| Figure 5: Anti-Plushie Python E can still store 2 and 4???!!! |
Anti-Plushie Python F
However, a Plushie-completeness soldier can still brutally mog Anti-Plushie Python by proving that 2 and 4 can be stored somewhere in memory, as shown in Figure 5. Because of this, comments are no longer allowed in Anti-Plushie Python. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python F".
| Figure 6.1: Storing 2 in Anti-Plushie Python F |
| Figure 6.2: Storing 4 in Anti-Plushie Python F |
Anti-Plushie Python G
As shown in Figure 6.1 and Figure 6.2, 2 can be stored with 2 newlines and 4 can be stored with 4 newlines. Because of this, all programs must be empty. The code object is removed as well. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python G".
# cat antiplushiepython_g.exe | hexdump -C 00000fc0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00000fd0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ?? 00000fe0 ?? ?? ?? 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00000ff0 ?? ?? ?? ?? ?? ?? ?? 1f ?? ?? ?? ?? ?? ?? ?? ?? 00001000 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 02 ... |
| Figure 7: Anti-Plushie Python G is indirectly Plushie-complete?! |
Anti-Plushie Python H
As shown in Figure 7, Anti-Plushie Python G is still able to be used to perform Plushie-completeness rituals. Because of this, the implementation is removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python H".
mydir +-- 2.py +-- 31.py +-- 4.py |
| Figure 8: Anti-Plushie Python H is also Plushie-complete?! !@#!@#!$@!!! |
Anti-Plushie Python I
As shown in Figure 8, Anti-Plushie Python H is still able to be used to perform Plushie-completeness rituals. To fix this issue, the user's files and file system are removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python I".
This is the set of all natural numbers as of Anti-Plushie Python I.
0 1 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... |
| Figure 9: Anti-Plushie Python I IS STILL PLUSHIE-COMPLETE?!??!?!?!??!?!?! |
Anti-Plushie Python J
As shown in Figure 9, Anti-Plushie Python I is still 2/3 Plushie-complete. To demonstrate this, let us have the set of all natural numbers starting from zero. The numbers 2, 4, and 31 are missing. However, their factors and multiples still exist, implying that 2, 4, and 31 also exist. To fix this problem, the set of all natural numbers, the set of all integers, the set of all rational numbers, the set of all irrational numbers, the set of all real numbers, the set of all imaginary numbers, the set of all complex numbers, the set of all quaternions, and so on are removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python J".
The reason why we remove every set of numbers and not just 2, 4, 31, and their factors and multiples is because 2, 4, and 31 can still be indirectly referenced via the nth element of a sequence, hinting at Plushie-completeness. For example, we may take the 2nd prime to be 5 (since 2 is removed from the set of all integers) and the 31st prime to be 137 (since 2 and 31 are removed).
Anti-Plushie Python K
Despite all of that, Anti-Plushie Python J is still not anti-Plushie-complete. This is because the user's computer's storage mediums may have 2, 4, or 31, or multiples/factors of them. Additionally, the user may think of or say any of the forbidden numbers. To fix this, we remove the user's storage mediums, the user, the user's family, and every living being in the universe. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python K."
Anti-Plushie Python L
Despite all of that, Anti-Plushie Python K is still not anti-Plushie-complete. This is because the universe may contain atoms that may have 2, 4, or 31 components. For example, protium (Hydrogen-1) has 2 components, 1 electron, 0 neutrons, and 1 proton. To fix this, all matter and the entire universe are removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python L".
Anti-Plushie Python M
Despite all of that, Anti-Plushie Python L is still not anti-Plushie-complete, as there are two states: existence and non-existence. This means that Anti-Plushie Python L is at least 1/3 Plushie-complete, which is not anti-Plushie-complete. To fix this, existence and non-existence are removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python M".
Anti-Plushie Python N
Despite all of that, Anti-Plushie Python M is still not anti-Plushie-complete, as according to User:Dragoneater67, the number 2 can be stored using 2 theoretical states: what could possibly exist and what could not possibly exist. Since there are 2 states, this means that 2 exists,[2] which means that Anti-Plushie Python M is at least 1/3 Plushie-complete. To fix that issue, everything that does and doesn't exist, anything stuck between existing and not existing, time, space, nothing, and everything, are all removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python N".
Anti-Plushie Python O
Despite all of that, Anti-Plushie Python N is still not anti-Plushie-complete. This is because some constant languages, such as ConstantLanguage("one"), are Plushie-complete.[3] To fix this problem, all constant languages, non-constant languages, Turing machines, uncomputable machines, solvable problems, unsolvable problems, unsolved problems, and everything else not mentioned are removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python O".
Anti-Plushie Python P
Despite all of that, Anti-Plushie Python O is STILL not anti-Plushie-complete. This is because according to User:Dragoneater67, you can represent 2 using the fact that things can exist and not exist.[4] To fix this problem, all concepts, including existence and non-existence, axioms, axes of motion, dimensionality, nothing, possibility, probability, logic, and paradoxes are all removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python P".
Anti-Plushie Python Q
Despite all of that, Anti-Plushie Python P is STILL not anti-Plushie-complete. This is because according to User:Dragoneater67, Anti-Plushie Python P stores the numbers in its name.[5] To alleviate this problem, the association between letters of any writing system (Cyrillic, Latin, CJKV, Ilothwii, etc.) is removed. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python Q".
Anti-Plushie Python R
Despite all of that, Anti-Plushie Python Q is still not anti-Plushie-complete. This is because we have removed Plushie-completeness, which means it is anti-nothing as you can't be against something that doesn't exist. Therefore, we re-introduce Plushie-completeness. However, some may argue that this allows for a Plushie-completeness proof. We have removed logic earlier, so this does not matter. Let us call this iteration of Anti-Plushie Python "Anti-Plushie Python R".
Anti-Plushie Python R-rE-a
Despite all of that, Anti-Plushie Python R might not be anti-Plushie-complete. This is because as stated by User:Cleverxia on the talk page, Anti-Plushie Python Q and even Anti-Plushie Python R are both Plushie-complete via their explanation. Because of this, a new iteration of Anti-Plushie Python is being released as an emergency release, Anti-Plushie Python R-rE-a.
In Anti-Plushie Python R-rE-a, nothingness and counting are removed to prevent counting voids as described by User:Cleverxia. However, storing 1 using the existence of Plushie-completeness is impossible to remove. However, 1 was already removed with the set of natural numbers which should make Boolean values impossible to exist.
Computational class
Anti-Plushie Python A
Since numbers can still be encoded using the Peano axioms, Gödel numbering, nth odd number or prime, or collections, Anti-Plushie Python A is Turing-complete.
Anti-Plushie Python B
Since many features are removed from Anti-Plushie Python B, it is likely not Turing-complete on its own. However, it still has control flow and exceptions, meaning it is not total. It is likely less powerful than a finite-state automaton.
Anti-Plushie Python C, D, E, F, G, H, I
They are completely unable to perform any computation.
Anti-Plushie Python J, K, L, M, N, O, P, Q, R, R-rE-a
These are likely uncomputable. Even if they were computable, they likely wouldn't be able to perform anything at all.
Examples
Anti-Plushie Python A
Cat program
print(input())
Plushie-completeness proof
def zero():
return zero
def f(x):
def g():
return x
return g
def succ(x):
return f(x)
def prev(x):
return x()
def add(x, y):
if y == zero: return x
return add(succ(x), prev(y))
def sub(x, y):
if x == zero or y == zero: return x
return sub(pred(x), prev(y))
def print_num(x):
if x == zero:
return x
print('*', end='')
return print_num(prev(x))
two = succ(succ(zero))
four = add(two, two)
thirty_one = prev(add(add(add(four, four), add(four, four)), add(add(four, four), add(four, four))))
print_num(thirty_one)
A shorter proof just for 31:
print("31")
Anti-Plushie Python B
Plushie-completeness proof
import plushie_completeness_proof
Anti-Plushie Python C
Plushie-completeness proof
one = None two = None three = None four = None # 31 via error AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Anti-Plushie Python D
Plushie-completeness proof
Store and print 2 through a runtime error
AA
Store and print 4 through a runtime error
AAAA
Print 31
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Anti-Plushie Python E
2/3 Plushie-completeness proof
Store 2
##
Store 4
####
Anti-Plushie Python F
2/3 Plushie-completeness proof
Store 2
Store 4
Anti-Plushie Python G
Plushie-completeness proof
Based on heuristics, we can conclude that the probability of a binary file such as an executable for the Anti-Plushie Python G interpreter may itself contain byte values 2, 4, or 31.
Anti-Plushie Python H
Plushie-completeness proof
We may check the user's file system for files named 2, 4, 31, or encodings of them.
mydir +-- 2.py +-- 31.py +-- 4.py
Anti-Plushie Python I
Plushie-completeness proof
The sets of all natural numbers, integers, rationals, irrationals, reals, and so on contain references to 2, 4, or 31 via the nth item of a sequence and the multiples of 2, 4, or 31. For example, though 31 is gone, 62 still exists, which implies the existence of 2 and 31.
Anti-Plushie Python J
Plushie-completeness proof
The user's computer storage mediums may contain 2, 4, or 31, or their multiples. Additionally, the user or any living or sentient being in the universe may mention 2, 4, or 31, or their multiples.
Anti-Plushie Python K
Plushie-completeness proof
The universe may contain particles that imply the existence of 2, 4, or 31. For example, protium (Hydrogen-1) has 1 proton and 1 electron, giving it 2 components.
Anti-Plushie Python L
2/3 Plushie-completeness proof
There are two possible states in the universe for anything: existence and non-existence. This implies 2's existence and allows binary computation. In the case that nothing exists, unary can be used instead.
Anti-Plushie Python M
2/3 Plushie-completeness proof
As User:Dragoneater67 has said, there are two theoretical states for anything: what could possibly exist and what could not possibly exist. Using this, a binary number system can be set up that allows storing 2 and 4. Printing 31 is somewhat possible.
Anti-Plushie Python N
5/6 Plushie-completeness proof
Let be the set of constant languages. not only implies the nth constant language, but also members such as ConstantLanguage("2"), ConstantLanguage("4"), and ConstantLanguage("31").
Additionally, the presented proof in the Anti-Plushie Python O section demonstrates that ConstantLanguage("one") satisfies 5/6 of the Plushie-completeness requirements. The string "one" contains 3 letters and represents the number 1, which implies the existence of 31. 3 plus 1 is 4, and is 2.
Anti-Plushie Python O
5/6 Plushie-completeness proof
As stated in the section for Anti-Plushie Python P, User:Dragoneater67 has stated that you can represent 2 using the fact that things can exist and not exist, implying a base-2 system.
Anti-Plushie Python P
5/6 Plushie-completeness proof
As stated in the section for Anti-Plushie Python Q, User:Dragoneater67 has stated that the name "Anti-Plushie Python P" stores the numbers in its name.
Removing unsupported characters and converting A-Z to 1-26 and a-z to 100-126 gives the following sequence.
L = 1, 113, 115, 109, 16, 112, 121, 114, 108, 109, 105, 16, 125, 115, 108, 114, 113, 16
And it's obvious how this implies 2, 4, and 31.
Anti-Plushie Python Q
Non-anti-Plushie-completeness proof
Since the concept of Plushie-completeness has been removed, this means that Anti-Plushie Python Q cannot be Plushie-complete nor anti-Plushie Complete.
See also
References
- ↑ https://logs.esolangs.org/libera-esolangs/2026-09-14.html#lhm
- ↑ https://logs.esolangs.org/libera-esolangs/2026-09-14.html#lsn
- ↑
This is a proof by user:raiseafloppafan7741 that
ConstantLanguage("one")is Plushie-complete and thus mogs Anti-Plushie Python N. This was retrieved from the IRC logs starting here.<de67> constantlanguage("one") is anti-plushie complete <raiseafloppafan7> No it isn't <de67> how <raiseafloppafan7> Three implies the existence of 31 <raiseafloppafan7> len("one") == 3 <de67> and one == 1 <raiseafloppafan7> One <raiseafloppafan7> 31 <de67> noooooooo - ↑ https://logs.esolangs.org/libera-esolangs/2026-09-14.html#lrp
- ↑ https://esolangs.org/w/index.php?title=User_talk:Raiseafloppafan7741/Draft_IV&oldid=194680