Exploring Clang/LLVM optimization on programming horror
The core simplification is due to LLVM's induction-detection step. Even after doing induction-based proofs in school, until reading this I had the sense that induction is kinda magical and kinda not real.I still cannot fathom how you can encode induction detection into an algorithm, any pointers welcome (keeping it simple, please, and ideally with working code).The only case that makes sense to me is if you did numeric computation against some fixed number of cases and if that worked out then you assume it's right.I guess this is what proof assistants do (among other things). Maybe I should look into how to write a basic proof assistant.