step(): {/a/; "b" + step()} | {/b/; "ab" + step()}. increment(): {/0/; "1" + /.*/} | {/1/; "0" + increment()} | {/$/; "1"}. reverse(): {x <- /./; reverse() + x} | /$/. unary(): {/./; increment[unary()]} | /$/. run(): {x <- step(); output[reverse[unary()]]; run[x]}. main(): run["a"].