Skolem wrote an interesting paper in 1960 about the use of a three-valued logic to create a set theory with true comprehension that solves Russell's paradox. That paper is [A set theory based on a certain 3-valued logic](https://doi.org/10.7146/math.scand.a-10600).


He basically uses what most today would call the strong Kleene three-valued logic. The tables are:


\begin{gather\*}
\begin{array}{c|c|c|c}
a \wedge b& 0 & ½ & 1 \\
\hline
0 & 0 & 0 & 0 \\
\hline
½ & 0 & ½ & ½ \\
\hline
1 & 0 & ½ & 1 \\
\end{array}
\\
\begin{array}{c|c|c|c}
a \vee b& 0 & ½ & 1 \\
\hline
0 & 0 & ½ & 1 \\
\hline
½ & ½ & ½ & 1 \\
\hline
1 & 1 & 1 & 1 \\
\end{array}
\\
\begin{array}{c|c}
a & \lnot a \\
\hline
0 & 1 \\
\hline
½ & ½ \\
\hline
1 & 0 \\
\end{array}
\end{gather\*}


So we have that $a \wedge b = \min(a,b)$, $a \vee b = \max(a,b)$, and $\lnot a = 1-a$. He then goes on to show how you can solve Russell's paradox with this system and retain true comprehension, as the Russell set $R$ simply has $R \in R = ½$. He also allows non-bounded quantifiers with $\forall$ as an infinite $\min$ and $\exists$ as an infinite $\max$.


There seems to be a real snag right away with these kinds of three-valued systems in defining singletons (and thus ordered pairs, etc.), and the subtlety is all about if equality is taken as primitive and how one can use it. Skolem, for instance, doesn't allow equality in comprehension, nor provides for any kind of primitive singleton operator, so we can't define $\{x\} := \{y \mid y = x\}$.


In two-valued logic, we can do this via extensionality instead: here we will use the symbol $x \approx y$ to mean $\forall z: (z \in x) \leftrightarrow (z \in y)$. There is a question here, however, regarding what "$\leftrightarrow$" means. It turns out there is *only* one function in this three-valued logic extending the usual bidirectional on Boolean values:


$$
\begin{array}{c|c|c|c}
a \leftrightarrow b& 0 & ½ & 1 \\
\hline
0 & 1 & ½ & 0 \\
\hline
½ & ½ & ½ & ½ \\
\hline
1 & 0 & ½ & 1 \\
\end{array}
$$


This is, again, the unique bidirectional in the system Skolem is using. If we try to build the "weak singleton" using this, which would be $\{x\}\_W = \{y \mid y \approx x\}$, we can get some strange results. For starters, if $x$ itself has any elements in it with membership value $½$, then $x \in \{x\}\_W$ will evaluate to $½$ — it won't even be in its own weak singleton. If $x$'s membership function is purely Boolean and doesn't have any such elements, then for any $y$ which has element $z$ such that $z \in y$ takes value $½$, then we know that the above biconditional will evaluate to $½$ no matter what, and when quantified over all such $z$ we will either $0$ or $½$. Thus, for any $x$, it will always contain "extra" elements with membership value $½$, and it may even contain itself with membership value $½$.


If one tries adding *any* other bidirectional to the system, it will lose the property that all unary functions have fixed points and we will be able to rebuild Russell's paradox. With the Łukaszewicz bidirectional, for instance, we can rebuild it as $\{x \mid (x \in x) \leftrightarrow \lnot(x \in x)\}$.


Thus we are not guaranteed that singletons exist in this set theory — or if they do, you can't build them in comprehension — and thus it would seem to be very difficult to form other sets depending on them such as ordered pairs: $\{\{a\}, \{a,b\}\}$, and thus functions, etc.


One could, of course, try to "solve" this problem by simply permitting equality in comprehension to begin with. However, this can also causes problems, unless one is very careful: there's *another* version of Russell's paradox: $\{x \mid x \neq x \cup \{x\}\}$. This could perhaps be solved by not allowing union in comprehension, or perhaps prohibiting "nested comprehensions" in some form — not sure how that would work.


Summarizing all of this: it would seem like not being able to form a singleton would make for a very strange set theory, one which I cannot figure out how you could possibly do math in. On the other hand, Skolem doesn't seem to think it's a problem, and I know there are many other people who have studied non-classical logics in set theory. **Is there some way that these things can actually be useful, even though you can't build what we would normally think of as singletons?** Or, is there some standard way to somehow let you build singletons, and thus more complex sets from them, without making everything inconsistent?



Using three-valued logic for set theory with singletons and equality
One way to adopt three-valued truth in set theory is with paraconsistent set theory, which typically uses Kleene three-valued logic, but with the understanding that truth value 1/2 is regarded as "both true and false," and so in particular, both 1/2 and 1 are designated as instances of truth (and this logic is then called the logic of paradox). The method generalizes to paraconsistent model theory, not just set theory.


My favored way to think about it is that we are to take any two models $M\_0$, $M\_1$ in the same language, with the same domain. We define their paraconsistent mixture $M$ as follows: $[\![\varphi(\vec a)]\!]$ for any atomic formula $\varphi$ and individuals $\vec a$ in the domain has value $1$, if both $M\_i\models\varphi(\vec a)$, and $0$ if both $M\_i\models\neg\varphi(\vec a)$, and otherwise $[\![\varphi(\vec a)]\!]=1/2$. Thus, we mix together the atomic truths of the two models. One can just as easily use any collection of models.


Then, we extend the truth values by the truth-functional definition of Kleene logic. The result is a truth-functional account of 3-valued truth in the mixture model $M$.


Some accounts of paraconsistent set theory or paraconsistent model theory focus on the two-model case, but present the situation of every atomic relation being specified by its positive instances and its negative instances, setting up a duality between truth ad falsity. In a relational language, this amounts the same to the mixture as I specified it, with two models, but I regard the mixture idea as a more general approach to paraconsistent model theory, since it works with more than two models and with other logics.


A non-truth-functional approach simply defines that $[\![\varphi(\vec a)]\!]$ has value $1$, if $\varphi(\vec a)$ is true in all the models, value $0$ if it is false in all the models, and value 1/2 otherwise. This violates truth functionality, since if $\varphi$ is true in some and false in others, then $[\![\varphi\vee\neg\varphi]\!]$ has value 1 in this semantics, but value 1/2 in the truth-functional semantics.


There is an interesting connection with forcing, in the sense that for any algebra $\newcommand\A{\mathbb{A}}\A$ of truth values, including the 3-valued truth case, one can form the class $V^{\A}$ of all $\A$-names, as in forcing, and then define $\A$-valued truth $[\![\varphi(\vec\tau)]\!]$, just as in the Boolean-valued approach to forcing, except that $\A$ may not be a Boolean algebra. Things work out quite well in general. I had worked out a theory of this, but just as I was getting ready to complete my paper, I noticed the following great paper of Löwe and Tarafder, which did it even better:


* *Löwe, Benedikt; Tarafder, Sourav*, [**Generalized algebra-valued models of set theory**](https://doi.org/10.1017/S175502031400046X), Rev. Symb. Log. 8, No. 1, 192-205 (2015). [ZBL1375.03066](https://zbmath.org/?q=an:1375.03066).
This paper is really great.


