See "Programming as Theory Building": https://pages.cs.wisc.edu/~remzi/Naur.pdf