A basic paper program might look like this:
Nowadays, there is little to be expected from it as far as efficiency is concerned. Notice that some of the codes have only one functional operand. By utilizing the unused operands, improvement on both speed and size can be gained.
Like others, paper's goal is to terminate all of its adversary processes. Although it is lacking of what other warriors have: core-clear, it can win mainly just by overwriting the opponent code with its own paper code. An ideal paper module should provide dual functions: replicator and terminator. Checksum, as part of codes being copied, controls all the processes executing it to choose among the two functions. They are allowed to continue replicating if they can identify themselves as their own processes or forced terminated otherwise.
One way to design checksum is by observing how distinct own processes from opponent ones when running in a paper module. They are:
The concept is as follow:
In order to make a full copy, there has to be at least 6 processes in any loop or module. The checksum checks for exactly 6 processes being present in that loop. If it is, the processes continue the copy routine. Otherwise, their progress are simply denied and forced to activate the self-erase routine.