In the fifth century BC, the four-corner theory, the *Catuskoti*, started emerging in India. The theory insists that there are four possibilities regarding any statement: it might be *true* (and true only), *false* (and false only), both *true* and *false*, or neither *true* nor *false*.

This view was long dismissed by Aristotelian traditions, which insist that there is only *true* and *false*, aka, the law of the excluded middle.

Aristotle is a grandee in his own right, but he does use simplifications that are possibly only circumstantially correct; even though it is also true that you can get surprisingly far already, just with those.

Cracks started showing up the Aristotelian 2-valued logic wall when in 1901 Bertrand Russell commenced his lengthy tribulations with what is now famously referred to as Russell’s paradox:

Does the set of all sets that do not contain themselves, contain itself?

Here you can find an implementation of the paradox in php:

https://github.com/eriksank/math-php/tree/master/russell-paradox-php

In Aristotelian logic, every answer is wrong.

Of course, after Russell’s famous breakthrough, the situation became worse for 2-valued naivism.

The idea of summarily dismissing the real solution, i.e. multi-valued logic, completely came to a grinding halt after Alan Turing and Alonzo Church proved in 1936 that there is no valid yes-or-no answer possible to David Hilbert’s Entscheidungsproblem.

The only valid answer is the *Catuskoti* on steroids, which also implies that the vast majority of thinkable questions are indeed thinkable but *undecidable*.

Two-valued logical systems are inherently naive, simplistic, and often unusable. That is obviously one reason why we rather use Stephen Kleene’s 3-valued *strong logic of indeterminacy* in the SQL language: *true*, *false*, and *null*.

We are slowly but surely adopting more powerful instruments in software.

At best, it still takes decades to roll out a thing like 3-valued logic, and many programmers — undoubtedly including myself — are still not using the value *null* entirely correctly.

In our field, there is new hype that comes out every day — reactJS anybody? However, you can safely ignore all of it, unless it represents solutions that are deeply rooted in the real problems governing and limiting our computational axiomatizations.

## One thought on “Russell’s paradox implemented in php”