&gt;  Mathematics is essentially a system for &quot;encapsulating internal complexity&quot;<p>Not really; here&#x27;s why:<p>An index is something that maps a small space into a big one so that you can move through the big one by traversing the small one. Example: The old card catalog is a tiny space through which you can move relatively quickly so that you don&#x27;t have to explore parts of the library through which you can only move relatively slowly.<p>Mathematics is an indexing system for ideals (it maps ideals onto ideals).  It&#x27;s unreasonably effective for a couple of reasons:<p>* Some ideals correspond close enough to reality to be useful. So, mathematics indexes reality.<p>* Since mathematics indexes ideals, it can index itself. In other words, no matter how big mathematics gets, you can always shrink it again by using more math.<p>The purpose  of encapsulation is to hide, but the purpose of indexing is to reveal. Mathematics does the opposite of encapsulation.<p>&gt; In programming, the core abstraction mechanism is the function, which is essentially a device for &quot;encapsulating internal complexity&quot;<p>Abstraction is not about hiding complexity, abstraction is just naming things. I think what you really mean to say is that the core abstraction in programming is substitution: We give names to substitutions. (As a side note, it&#x27;s an unfortunate misconception that software must have complexity  which must then be hidden)<p>&gt;  Remove mutable state and OOP reduces to &quot;partially applied functions&quot; in the mathematical sense, i.e. zero original content.<p>Remove mutable state and <i>de facto</i> OOP reduces <i>de jure</i> OOP, which reduces to &quot;networks of general purpose computers that get things done by sending and interpreting messages&quot;. We have at least one big existence proof that this works at scale.<p>But, even in the mathematical sense, OOP with immutability offers more than just partial function application; it yields families of algebras, and we&#x27;re always inventing&#x2F;discovering new varieties of those. On the other hand, if you use just a little bit of mutable state judiciously, you get a set of propositions that are falsifiable by experiment: In other words, you get science, which was one of the motives for inventing OOP.