Try to keep minimal "cognitive load" at all times. * Minimize "symbol density" I.e. the number of symbols in a function body required to do some specific task. This *excludes* things that decrease cognitive load, such as: types, pre-conditions, assertions, etc. * Minimize states * Minimize "control-flow state" and control-statement nesting This is basically the number of bblocks. This can be done by transforming: - trivial loops into trivial functional expressions - nested blocks into non-nested blocks, e.g. `if A; B; end` into e.g. `only A; B` * Minimize possible states per line. - Avoid boolean variables, use control flow instead. - Avoid mutability - Use `given` to avoid introducing variables * Prefer local context over global context - Use `given` "statement prefixes" rather than extra variables