Forum stats
Latest posts
Topic Date, time  Last Sender Forum
  Let's get this Thread to 1,000,000 pages! Today 18:59:02 Mystery Forum Games
  Predict the next poster Today 13:05:39 Kais dead Forum Games
  Add or Subtract Today 13:05:08 Kais dead Forum Games
  Last Post Wins! Today 13:04:34 Kais dead Forum Games
  Longest bump wins 3 Jun 14:38:21 queha Forum Games
  time to lurk again :^) 2 Jun 22:39:46 aaaaaa123456789 Gates of the Forums
  >last visited 2017-07-30 1 Jun 19:13:50 Mystery Gates of the Forums
  Why does money never make you happy? 31 May 14:46:09 Mystery Random Discussions
  Ecchi Slot 30 May 18:09:43 IcyMind Games
  Longest kill wins 25 May 11:30:35 Tuxi Forum Games
  Count to 100 before ax6 comes in 25 May 08:35:13 queha Forum Games
  Have you been infected with the Corona virus? 23 May 05:46:41 last post Random Discussions
  Free Gaming Stuff 23 May 03:28:46 David Games
  Monthly forum stats 19 May 06:35:08 aaaaaa123456789 Acid Archives
  Do you like shopping? 18 May 12:33:30 GodJob Random Discussions
  Pxem 12 May 12:21:39 queha Technology and Computers
  Bubble Racing [New Game by Jiggmin] 9 May 13:04:43 Camer the Dragon Games
  Tell something awful your country did. 8 May 23:36:17 FinalCheetah Random Discussions
  What do you think of people who go out without a m... 6 May 15:12:39 GodJob Random Discussions
  Post Picture Of Yourself 4 May 02:49:12 GodJob Forum Games
  C programming without if, while, for, switch, goto... 4 May 00:23:24 queha Technology and Computers
  New Minecraft skin ProClifo 1
  spacex launch last post 1
  Minimalization of Pxem queha 0
  The forums were down... aaaaaa123456789 5
  Let's not care for the au... queha 0
  How not to rage loudly at... queha 3
  Full picture from my sign... ProClifo 5
  Port of Mario 64 released ProClifo 5
  discord Jennitals 9
  How to learn what Sweden ... queha 6
Newest members
(banned account 2) 1 Jun
mika 1 Jun
Legend2 20 Apr
Stoner6982 9 Apr
Stoop:la 8 Apr
puja pawar 27 Mar
(banned account 1) 16 Mar
williamhakespeare123 2 Feb
jekeel 15 Jan
RedxWings 11 Dec

Welcome, Guest
You have to register before you can post on our site.



Search Forums

(Advanced Search)

Forum Statistics
» Members: 792
» Latest member: (banned account 2)
» Forum threads: 6,694
» Forum posts: 775,609

Full Statistics

Online Users
There are currently 31 online users.
» 1 Member(s) | 30 Guest(s)

  >last visited 2017-07-30
Posted by: Luro - 2020-06-01 08:05:20 - Forum: Gates of the Forums - Replies (3)

oh yikes

also how can i change my username

Print this item

  time to lurk again :^)
Posted by: mika - 2020-06-01 07:15:38 - Forum: Gates of the Forums - Replies (7)

hi. where the new funposts at.

Print this item

  New Minecraft skin
Posted by: ProClifo - 2020-06-01 00:03:38 - Forum: Blogs - Replies (1)

Earlier, I created a Minecraft skin for myself, based on the 1997 pirate cat character Captain Claw.

[Image: eV8ob71.png]

However, I found a skin made by someone else on that I want to change to instead.

[Image: txKrGPN.png]

So, which one would you prefer? The shitty one I made or the beautiful one I found online?

Print this item

  spacex launch
Posted by: last post - 2020-05-30 17:52:10 - Forum: Blogs - Replies (1)

anyone gonna watch it

Print this item

  Minimalization of Pxem
Posted by: queha - 2020-05-25 12:41:29 - Forum: Blogs - No Replies

First of all I had already proven that

Pxem is Turing-complete

last summer, but the program I programmed to prove Pxem's Turing-completeness was too large and had some unnecessary parts to prove the computation class.
So I thought if Pxem can be smaller while keeping its computation class.

1. Previous proofs
Last time I proved in two ways. I used 17+1 and 14+1 commands for the proofs respectively, and both of they have I/O commands, which affects to Pxem's computation class because they push and pop some items on stack.

2. What makes Pxem Turing-complete
nk., the designer of Pxem, first thought Pxem cannot be Turing-complete because Pxem has no built-ins for "swap" command as in this blog: swaps two top items of stack, which is represented in following pseudo code:

  • a<-Pop
  • b<-Pop
  • Push(a)
  • Push(b)

However, a commenter commented on my article on Qiita posted one can implement such the manipulation with available built-ins. They said  .t.c.m.c.t.+.c.m.-.t.-.m is the one (the article is not available anymore because I deleted it), and I traced how it works, as shown below. It was proven that manipulation works properly if and only if (a) two items on top of stack are non-negative values and (b) sum of the two values never overflows.
  • <A set of registers>::=<<Heap>, <Stack>>
    • <Heap>::=empty set | {m|m is an integer}
    • <Stack>::=nil | m::<Stack>, where m is an integer
  • <heap, m::n::R> to <m, m::n::n::R> by .t.c.m.c.t
  • last result to <m, (m+n)::n::R> by .+
  • last result to <m, abs(m+n-m)::(m+n)::n::R> by .c.m.-
  • abs(m+n-m)=abs(n)
  • second previous result to <abs(n), abs(m)::R> by .t.-
  • finally, to <abs(n), abs(n)::abs(m)::R> by .m

Now we know how the "swap" manipulation can be done. I considered this, however, does not really affect to Pxem's computational class; Pxem has possibly four features to make Pxem Turing-complete: (a) .w, .x, .y, .z, and .a commands for condition-controlled loops, (b) .v command to reverse order of items stored on a stack, © .t and .m commands to manipulate the heap register, and (d) .e command for recursive call of subroutine. I proved the combinations of (a) and (b), (a) and ©, and (a) and (d) are enough to prove Pxem is still Turing-complete.

3. Pxem without contents of file and a heap
3.1. Emulating tag system
At first I tried to prove in this case. The method I used was to emulate a tag system on Pxem. I referred an example on article on Wikipedia to emulate, which is:
  • m=2
  • initial word is baa
  • a->ccbaH
  • b->cca
  • c->cc
  • H halts the program

Here is my first version of Pxem program to emulate the program with that input:
  • Filename:

I'd like you to notice some parts of the program above are underlined; they indicate the input string to the tag system, the symbols to compare with first one of the currently computed string, and what substrings to append.

Last program consists of some literal strings, .p, .o, .c, .v, .w, .y, .z, .a, .d, and .-, which is 10+1 commands.

3.1.1. Reduction of .y command
You may have noticed some parts of the last program were surrounded with .cc.-ab.-.y and XX.a. That is an idiom to check if top of the stack is equal to the value c and execute what are surrounded with those codes if that condition is true.

Those codes can be replaced with .cc.-.c.w.sab.-XX.-.aab.-.w and XX.-.a respectively. This is, however, inadequate for case when stack is empty. To make the condition true if so, you have to prefix .c.c.-.wXXc.-.a to former code; they push c if stack is empty, and do nothing otherwise.

3.1.2. Reduction of .z command
Last program had a part to halt the program if stack is empty: .c.c.z.d.a. This can be replaced with .c.c.-.w.d.a.

3.1.3. Reduction of .p command
The command is to pop each item of stack to output to stdout, which is represented with following algorithm:

  1. Check if stack is not empty
  2. If so, end this algorithm
  3. Pop and output the character
  4. Go to step 1

This can be realized with: L.w.o.c.c.-.c.wab.-XX.-.aab.-.a. The program gets out of the loop when the stack gets empty.

3.1.4. Reduction of .s command
On 3.1.1 we used a .s command, but it can be replaced with .wXX.-.a. This works when stack has nothing.

3.1.5. Reduction of I/O commands
If you never hesitate reduction of I/O to reduce Pxem as small as possible, you can replace .o with .s, which is also replaced with longer code, as explained on previous section.

Now, we have 6+1 commands with which replace first program to emulate a tag system: some literal strings, .c, .v, .w, .a, .d, and .-. If you could do more, it may be possible to reduce .d or replace .w and .- commands with .z. I, unfortunately, could not hit on the idea until I thought of emulating another, smaller computation model.

3.2. Emulating cyclic tag system
The next idea I hit on was to emulate a simpler computation model. I emulated an example one from this article: (011, 10, 101) with input "1".

3.2.1. First attempt
Here is my first attempt:
  • Filename: 011.z.c.c.z000.a0.z11.v110.v.a.c.c.z000.a0.z11.v01.v.a.c.c.z000.a0.z11.v101.v.a01.a.pxe, however you may omit last .pxe.

This program used some literals consists of '0' and '1' only, .c, .v, .z, and .a, which is only 4+1 kinds of commands. This program, however, never halts and I wondered, "is what does never halt at all a Turing-complete thing?"

Then I tried to change the program, shown below. This halts when the data string gets empty.
  • Filename: 011.z.c.c.z000.a0.z.v110.v11.a.c.c.z000.a0.z.v01.v11.a.c.c.z000.a0.z.v101.v11.a.c.c.z00X.a.cX.a.d.pxe, however you may omit last .d.pxe.

Now the system can halt, but last literal string has a character 'X', and this was a fault.

Later, after thinking of reducing .v command while using .e or a set of .t and .m, I hit on alternative way. Syntax in EBNF
  • Filename = init, main [, omitable ];
  • init = dummy, data-string;
  • dummy = '01';
  • data-string = data-bit {, data-bit };
  • data-bit = '0' | '1';
  • main = '.z', { command }, exiter, '.a';
  • command = empty-checker, actual-command;
  • empty-checker = '.c.c.z000.a'; actually stores a bit '0' if empty
  • actual-command = '0.z.v', data-string-reversed, '.v11.a';
  • data-string-reversed = { data-bit }, data-bit;
  • exiter = '.c.c.z00X.a.cX';
  • omitable = '.d.pxe';

3.2.2. Final version of reducing contents of file and a heap
The alternative way to store data string was based on this grammar-thing.
  • <data-string>=::<nil>|<data-bit> <data-string>
  • <nil>=::1
  • <data-bit>=::0 <actual-data-bit>
  • <actual-data-bit>=::0|1

When <nil> is on top, you have to move to bottom. When <nil> is on top again, then data string is empty, and assumes if "0" is set now.

Here is the final version of my emulator:
  • Filename: 01011.z.c0.z.s.v1.v.c0.z0000.a00.a.s0.zv101000.v00.a.c0.z.s.v1.v.c0.z0000.a00.a.s0.z.v0010.v00.a.c0.z.s.v1.v.c0.z0000.a00.a.s0.z.v100010.v00.a.c0.z.s.v1.v00.a.c1.a.d.pxe but each .s must be replaced with 1.z.a and .d.pxe as the extension of the file can be omitted.

This one, actually, reduces one minor behaviour of a command '.c': it originally works as a NOP command if stack is empty, but this, final version, does never use the feature. Syntax in EBNF
  • Filename = init, main [, omitable ];
  • init = dummy, data-string;
  • dummy = '01';
  • data-string = { data-bit }, end-of-string;
  • data-bit = '0', actual-bit;
  • actual-bit = '0' | '1';
  • end-of-string = '1';
  • main = '.z', command, exiter, '.a';
  • command = empty-checker, actual-command;
  • empty-checker = 'c0.z1.z.a.v1.v.c0.z0000.a'; If empty, data string is updated with a '0' string.
  • actual-command = '00.a1.z.a0.zv', pushing-data-string-reversed, '.v00.a';
  • pushing-data-string-reversed = { actual-bit, '0' };
  • exiter = '.c0.z1.z.a.v1.v00.a.c1';
  • omitable = '.d.pxe';

4. Pxem without stack-reverser and contents of file
In this and next section I attempted to emulate programs written in Fractran. Unlike to previous section I didn't really try minimalizing Pxem under given restrictions; just tried to find out to prove Turing-completeness under given restrictions.

4.1. Algorithm for emulation of Fractran programming
Because of how Pxem's built-ins works, I had to think of a procedure to execute each Fractran fractions, which is:

  1. Let n be current value
  2. Check if numerator times n is greater than or equal to denominator (or alternatively numerator times n is greater than denominator minus one)
  3. If not, go to next fraction
  4. Check if numerator times n modulo denominator is NOT zero
  5. If equals zero, go to next fraction
  6. Let n be numerator times n divided by denominator
  7. Go to first fraction

Unlike to many other stack-based programming languages, two Pxem built-ins .$ and .% care which value is greater than other, and they divide greater one by less one. For example, if you wanted to do what is like 13/17 on C or several languages in Pxem, you cannot do it directly; when 13 and 17 were popped, 17/13->1 will be pushed back no matter the order of those items is.

4.2. Implementation of Fractran using a heap only
Here is the syntax to generate a program to emulate a Fractran program with an input, in EBNF. The <n> means a manipulation to push the integer value i onto the stack; e.g. <10> has to be replaced with ak.-, 05.-.c.+, or whatever does same.
  • filename = initializer, main [, extension ];
  • initializer = <n>,<n'>,<n''>; n is the input to a Fractran program to be emulated, and n' and n'' must be two different values.
  • main = loop-begin, loop, loop-end;
  • loop-begin = '.z';
  • loop-end = '.mF.a';
  • loop = set-false, command {, check-done, command, exit-check-done };
  • set-false = 'F.t';
  • check-done = '.mF.-', <1>, '.y';
  • exit-check-done = 'XX.a';
  • command = first-checker, second-checker, actual-updater, end-command;
  • first-checker = '.c', <numerator>, '.!', <denominator minus 1>, '.x'; checks if <numerator> times current integer is equal or greater than <denominator>.
  • second-checker = '.c', <numerator>, '.!', <denominator>, '.%', <1>, '.y'; checks if <numerator> times current integer is divible by <denominator>.
  • actual-updater = <numerator>, '.!', <denominator>, '.$', 'T.t', 'XX.a', 'XX.a'; the 'T.t' is to have the heap remember that an update was done.
  • extension = '.d.pxe'; actual extension is '.pxe'.

5. Pxem without heap and stack-reverser
This, however, was easier than previous limitation.

5.1. Implementation of Fractran using content of file only
<n>, where n is an integer value, is a manipulation to push the value onto the stack, as I said on 4.2. Here is the syntax to emulate a fractran program with an input:
  • filename = <input>, '.e' [, '.d', '.pxe'];
  • content-of-file = <command> {, <command> };
  • command = '.c', <numerator>, '.!', <denominator minus 1>, '.x', '.c', <numerator>, '.!', <denominator>, '.%', <1>, '.y', <numerator>, '.!', <denominator>, '.$', '.e.d', 'XX.a', 'XX.a';

When the program ends, the final value is on top of stack.

6. Conclusion
Now I have shown how

Pxem is Turing-complete,

with kinda formaler and smaller proofs, publishing online for the first time.

I don't think anyone really, really, really, care for this great blog because Pxem, the esolang I asked original designer nk. to bring it back, is insufficiently known today.

I am very glad and proud of revealing nk. how Pxem can be Turing-complete.

I would like to express my very great appreciation to nk., for designing, giving birth, and bringing back Pxem, an esolang.

I forgot to write if .[wxyza] commands cannot be omitted.

Print this item

  The forums were down...
Posted by: aaaaaa123456789 - 2020-05-17 09:09:32 - Forum: Blogs - Replies (5)

...for a bit more than two hours. The database ran out of RAM, it seems.

I'm surprised nobody said a word, though...

Print this item

  Do you like shopping?
Posted by: queha - 2020-05-15 07:36:05 - Forum: Random Discussions - Replies (10)

I have no idea how shopping makes people happy or some emotional; if you do like, I'd like you to convince me why shopping is fun.

Print this item

  Let's not care for the auditions to be a virtual being
Posted by: queha - 2020-05-11 13:12:36 - Forum: Blogs - No Replies

nor becoming a virtual something alone; if I really had something what I'd like to act, it's what is something like: an existence.

Why would you do livestream every day and force yourself to show people gaming as if you were a pro gamer? Unlike to those virtual boring people that look like livestreaming gamers, I still have college time and it's almost impossible because of the place where I live. However, if I really want to be something different, why don't I do something different, unlike those, virtual people?

Gotta write down what I would like to do: reveal myself and some darkness in my heart, claim what I would like to be with loud voice, sing some songs with loud voice, give myself some energy, and so on. Also, be a being.

Print this item

  How not to rage loudly at my mother's terrible experiences whenever she talks?
Posted by: queha - 2020-05-10 23:32:08 - Forum: Blogs - Replies (3)

These days she often talks her experiences other people such as former doctor, my father, and my father's mother, ruined her mental state. Whenever she speaks her terrible experiences, I also have a terrible habit that I rage with loud voice to her story, as if I experienced and as if it were my obligation. Then what I rage makes her get worse and my grandmother and her scolds me for what I do. How should I improve this habit? They say I am preventing my mother from remembering and speaking her experiences she has ever sealed because of not having a place where she may speak.

Also have I ever talked what gave her mental disease that country (I think) certificate? In case I haven't yet, my father's previous wife (actually a criminal person) and her daughter (the woman forced my mother to take care of her daughter because attracting men were more important than her daughter for her), at first, gave her mental disease. Then my father's mother taught her something that is completely against my mother's willing. My father never cared for my mother in terrible situation.
Now my mother has a woman attending physician, but she used to have a man physician. He also gave here terrible treatment, such as saying, "NO BEING LAZY ALLOWED, HOWEVER TERRIBLE YOUR SANITARY IS!", "HOUSEWIVES HAS NO MONEY!", "OBEY YOUR HUSBAND, NO MATTER WHAT!", and so on, without trying to understand in what situation she used to be on.

Print this item

  Bubble Racing [New Game by Jiggmin]
Posted by: Zinx - 2020-05-09 05:35:05 - Forum: Games - Replies (3)

So, I just stumbled upon Jiggmin's site and he made a blog post literally 34 minutes ago about his new game. It's a work in progress at the moment, but it's something new!

Blog Post:


P.S. Hello again!

Print this item