1. The memory tape is infinitely long to the right 2. Going to the left of the starting cell is an error 3. Cells can hold values from 0 to 255 4. No over- or underflow allowed 5. EOF = 0 Sounds great. I will suggest a few others, which are widely agreed on but are probably worth stating explicitly anyway just as a precaution. If anyone disagrees with any of these, they're up for debate, of course. 6. Any character but +-<>[],. is a comment and therefore ignored in execution; also not counted for scoring purposes. 7. Brainfuck source code is ASCII text (extended-ASCII characters are fine). 8. There is no limitation on program length. 9. No special termination character is necessary. 10. A return is ASCII 10 (decimal), plain and simple. 11. Code with unbalanced [] is illegal. 12. There is no limitation on nesting of loops. 13. The range of possible input will be described in the problem specification, which may be trusted. 14. Code to produce a given output must produce exactly that output; stray invisible characters are a violation. (E.g. +[,.] is not a legitimate cat.) 15. The . command leaves the value in the cell unchanged. 16. The test for the [] commands is done on the cell where the pointer is at the time, which is not necessarily where it was when the loop was begun. 17. Code intended to solve a finite problem must solve it in finite time, and terminate afterwards; code intended to solve an infinite problem must solve any given finite portion of it in finite time. 19. Where the problem involves generating brainfuck code, generated code is subject to the exact same rules. (Yes, including this one.) (Note that several of the other rules are very unlikely to become relevant except in conjunction with this last one.) 20. If no input is described in the problem specification, the , command may not be used. 21. If input is terminated with a return, the , command may not be used after the return is received. 22. If the length of input is specified in the problem description, or is specified explicitly by some part of the input (most likely if a binary format is being used), the , command may not be used to get more input than the specified amount. 23. If input is terminated with an EOF, the , command may not be used after the EOF is received.