I've kind of wanted to formalize this concept ever since I learned about the Static_single_assignment_form used in compilers for optimisation. Programs may be able to benefit greatly from this in terms of refactoring: it's basically separating concerns (from a mechanical point of view.) Separated concerns can open venues for parallelism!