Syntactic symbol manipulation may be the universal way of deriving new knowledge in science and engineering, but the technique is still rarely used in the act of writing software. We will explore this alternate way of reasoning about code, while demonstrating the power of formal refactoring and its potential for automation.