For Paul Curry's optical illusion and dissection puzzle, see Missing square puzzle.

Curry's paradox is a paradox that occurs in naive set theory or naive logics, and allows the derivation of an arbitrary sentence from a self-referring sentence and some apparently innocuous logical deduction rules. It is named after the logician Haskell Curry. While naive set theory fails to identify it, a more rigorous examination reveals that the sentence is self-contradictory.

It has also been called Löb's paradox after Martin Hugo Löb.[1]

The Paradox may be expressed in natural language and in various mathematical languages;

• Natural language
• Formal logic
• Set theory
• Logic with a string Eval function
• Lambda calculus
• Combinatory logic

### Natural language

Claims of the form "if A, then B" are called conditional claims. Curry's paradox uses a particular kind of self-referential conditional sentence, as demonstrated in this example:

If this sentence is true, then Germany borders China.

Even though Germany does not border China, the example sentence certainly is a natural-language sentence, and so the truth of that sentence can be analyzed. The paradox follows from this analysis. First, common natural-language proof techniques can be used to prove that the example sentence is true. Second, the truth of the example sentence can be used to prove that Germany borders China. Because Germany does not border China, this suggests that there has been an error in one of the proofs.

The claim "Germany borders China" could be replaced by any other claim, and the sentence would still be provable; thus every sentence appears to be provable. Because the proof uses only well-accepted methods of deduction, and because none of these methods appears to be incorrect, this situation is paradoxical.

#### Proof that the sentence is true

The following analysis is used to show that the sentence "If this sentence is true, then Germany borders China" is itself true. The quoted sentence is of the form "If A then B" where A refers to the sentence itself and B refers to "Germany borders China".

The usual method for proving a conditional sentence is to show that by assuming that hypothesis (A) is true, then the conclusion (B) can be proven from that assumption. Therefore, for the purpose of the proof, assume A.

Because A refers to the overall sentence, this means that assuming A is the same as assuming "If A then B". Therefore, in assuming A, we have assumed both A and "If A then B". From these, we can obtain B by modus ponens. Therefore, A implies B and we have proved "If this sentence is true then Germany borders China" is true. Therefore "Germany borders China", but we know that is false, which is a paradox.

### Formal logic

The example in the previous section used unformalized, natural-language reasoning. Curry's paradox also occurs in formal logic. In this context, it shows that if we assume there is a formal sentence (X → Y), where X itself is equivalent to (X → Y), then we can prove Y with a formal proof. One example of such a formal proof is as follows. For explanation of the logic notation used in this section, refer to the list of logic symbols.

0. X := (X → Y)

assumption, the starting point, equivalent to "If this sentence is true, then Y"

1. X → X

rule of assumption, also called restatement of premise or of hypothesis

2. X → (X → Y)

substitute right side of 1, since X is equivalent to X → Y by 0

3. X → Y

from 2 by contraction

4. X

substitute 3, by 0

5. Y

from 4 and 3 by modus ponens

An alternative proof is via Peirce's law. If X = X → Y then (X → Y) → X. This together with Pierce's law ((X → Y) → X) → X and modus ponens implies X and subsequently Y (as in above proof).

Therefore, if Y is an unprovable statement in a formal system, there is no statement X in that system such that X is equivalent to the implication (X → Y). By contrast, the previous section shows that in natural (unformalized) language, for every natural language statement Y there is a natural language statement Z such that Z is equivalent to (Z → Y) in natural language. Namely, Z is "If this sentence is true then Y".

In specific cases where the classification of Y is already known, few steps are needed to reveal the contradiction. For example, when Y is "Germany borders China," it is known that Y is false.

1. X = (X → Y)

assumption

2. X = (X → false)

substitute known value of Y

3. X = (¬X ∨ false)

implication

4. X = ¬X

identity

### Naive set theory

Even if the underlying mathematical logic does not admit any self-referential sentence, in set theories which allow unrestricted comprehension, we can nevertheless prove any logical statement Y by examining the set

$X \ \stackrel{\mathrm{def}}{=}\ \left\{ x \mid ( x \in x ) \to Y \right\}.$

The proof proceeds as follows:

1. $( X \in X ) \iff ( ( X \in X ) \to Y )$
Definition of X
2. $( X \in X ) \to ( ( X \in X ) \to Y )$
from 1
3. $( X \in X ) \to Y$
from 2, contraction
4. $( ( X \in X ) \to Y) \to ( X \in X )$
from 1
5. $X \in X$
from 3 and 4, modus ponens
6. $Y$
from 3 and 5, modus ponens

Therefore, in a consistent set theory, the set $\left\{ x \mid ( x \in x ) \to Y \right\}$ does not exist for false Y. This can be seen as a variant on Russell's paradox, but is not identical. Some proposals for set theory have attempted to deal with Russell's paradox not by restricting the rule of comprehension, but by restricting the rules of logic so that it tolerates the contradictory nature of the set of all sets that are not members of themselves. The existence of proofs like the one above shows that such a task is not so simple, because at least one of the deduction rules used in the proof above must be omitted or restricted.

### Logic with a string Eval function

Suppose there is a function called eval, that takes a string and converts it into a logical expression. Then consider the string,

s = "eval(s) → y"

then the expression,

eval(s) = eval(s) → y

### Lambda calculus

Curry's paradox may be expressed in Lambda calculus. Consider a function r defined as

r = ( λx. ((x x) → y) )

Then (r r) β-reduces to

(r r) → y

If (r r) is true then its reduct (r r) → y is also true, and, by modus ponens, so is y. If (r r) is false then (r r) → y is true by the principle of explosion, which is a contradiction. So y is true and as y can be any statement, any statement may be proved true.

(r r) is a non-terminating computation. Considered as logic, (r r) is an expression for a value that does not exist.

In simply typed lambda calculus, such terms, like any fixed point combinators, cannot be typed and hence aren't admitted; this is sufficient to avoid consistency problems in combination with logical junctors. The programming language Lambda prolog is based on such a combination. [clarification needed]

### Combinatory logic

Curry's paradox may also be expressed in combinatory logic, which has equivalent expressive power to lambda calculus. Any lambda expression may be translated into combinatory logic, so a translation of the implementation of Curry's paradox in lambda calculus would suffice.

If m is the implication function taking two parameters (that is m A B is equivalent to A → B), then r in combinatory logic is,

r = S (S (K m) (S I I)) (K y)

then

r r = m (r r) y

The paradox may also be produced using the Curry's paradoxical combinator, where,

$f = \lambda x.x \to y$ = S m (K y)

Then,

Y f

is the solution of,

$x = x \to y$

so

Y f = m (Y f) y

## Discussion

### Terminology

Natural language and mathematical logic are both based on asserting some statements to be true. A statement may be represented as a logical (or boolean) expression (or formula) which may be evaluated to give a value of true or false. An assertion is a statement or logical expression that, it is asserted, when evaluated, will give the value true.

Statements may also be considered in more complex ways. Statements may be qualified by who states, or believe them, and by level of certainty. However, for logic, the simple definition given above is sufficient.

### Existence problem

in that each paradox attempts to give a name for something that does not exist. These paradoxes all attempt to give a name or representation to a solution to the equation,

X = ¬X

Note that the paradox does not arise from asserting the statement of ¬X, as such a statement would be a lie. It arises from the consideration and naming of the statement. The paradox arises by naming or representing an expression of the form ¬X to be X. In the case of Curry's Paradox, the negation is constructed from implication,

X = X → false = ¬X ∨ false = ¬X

The domain of a boolean variable X is the set {true, false}. However neither true or false is a solution to the above equation. So it must be wrong to assert the existence of X, and it is falsehood to name the expression ¬X as X.

The paradox exists whenever an expression can be constructed whose value does not exist. This may be achieved using "this statement", but there are many other language features that allow the construction of an expression that does not exist.

### Language capabilities for expressing the paradox

Curry's paradox can be formulated in any language supporting basic logic operations that also allows a self-recursive function to be constructed as an expression. The following list gives some mechanisms that support the construction of the paradox but the list is not exhaustive.

1. Self-reference; "this sentence".
2. Through naming of an expression which includes the name.
3. Apply naive set theory (Unrestricted comprehension).
4. Lambda expressions.
5. An Eval function on a string.

The logic rules used in the construction of the proof are,

The self-recursive function can then be used to define a non terminating computation whose value is solution to an equation. In Curry's Paradox we use implication to construct a negation, that constructs an equation with no solution.

The recursive expression then represents a value that does not exist. The laws of logic are only valid for Boolean values in {true, false}, so any deduction made from the expression may be in error.

Natural languages nearly always contain many of features that could be used to construct the paradox, as do many other languages. Usually the addition of meta programming capabilities to a language will add the features needed.

Mathematical logic generally does not countenance explicit reference to its own sentences. However the heart of Gödel's incompleteness theorems is the observation that a self-reference can be added; see Gödel number.

The axiom of Unrestricted comprehension adds the ability to construct a recursive definition in set theory. This axiom is not supported by modern set theory.

### Consequences for some formal logic

In the 1930s, Curry's Paradox and the related Kleene–Rosser paradox played a major role in showing that formal logic systems based on self-recursive expressions are inconsistent.

Curry started with the Kleene–Rosser paradox[2] and deduced that the core problem could be expressed in this simpler Curry's paradox.[3] His conclusion may be stated as saying that the Combinatory logic and Lambda calculus could not be made consistent as a deductive language, while allowing recursion.

In the study of illative (deductive) combinatory logic, Curry in 1941[4] recognized the implication of the paradox as implying that, without restrictions, the following properties of a combinatory logic are incompatible:

1. Combinatorial completeness. This means that an abstraction operator is definable (or primitive) in the system, which is a requirement on the expressive power of the system.
2. Deductive completeness. This is a requirement on derivability, namely, the principle that in a formal system with material implication and modus ponens, if Y is provable from the hypothesis X, then there is also a proof of X → Y.[5]

## Resolution

Note that unlike the liar paradox or Russell's paradox, this paradox does not depend on what model of negation is used, as it is completely negation-free. Thus paraconsistent logics can still be vulnerable to this, even if they are immune to the liar paradox.

### Resolution in natural language

Consideration of the sentence "If A then B" where A refers to the sentence creates a falsehood if B is false, because in fact there is no value for A that satisfies the expression A = "if A then false". Therefore the rest of the argument is invalid because it is arguing from an expression that has no possible value (does not exist).

### No resolution in lambda calculus

The origin of Alonzo Church's lambda calculus may have been, "How can you solve an equation, to provide a definition of a function?". This is expressed in this equivalence,

$f\ x = y \iff f = \lambda x.y$

This definition is valid if there is one and only one function $f$ that satisfies the equation $f\ x = y$ but invalid otherwise. This is the core of the problem that Stephen Cole Kleene and then Haskell Curry discovered with Combinatory logic and Lambda calculus.

The situation may be compared to defining,

$y = x^2 \iff x = \sqrt{y}$

This definition is fine as long as only positive values are allowed for the square root. In mathematics an existentially quantified variable may represent multiple values, but only one at a time. Existential quantification is the disjunction of many instances of an equation. In each equation there is one value for the variable.

However, in mathematics, an expression with no free variables must have one and only one value. So $\sqrt{4}$ can only represent $+2$. However there is no convenient way to restrict the lambda abstraction to one value, or to assure that there is a value.

Lambda calculus allows recursion by passing the same function as called, as a parameter. This allows situations where $f\ x = y$ has multiple, or no solutions for $f$.

Lambda calculus may be considered as part of mathematics if only lambda abstractions that represent a single solution to an equation are allowed. Other lambda abstractions are incorrect in mathematics.

Curry's paradox, and other paradoxes arise in Lambda Calculus because of the inconsistency of Lambda calculus considered as a deductive system. See also deductive lambda calculus.

#### Domain of lambda calculus terms

Lambda calculus is a consistent theory in its own domain. However it is not consistent to add the lambda abstraction definition to general mathematics. Lambda terms describe values from the lambda calculus domain. Each lambda term has a value in that domain.

When translating expressions from mathematics to lambda calculus the domain of lambda calculus terms is not always isomorphic to the domain of the mathematical expressions. This lack of isomorphism is the source of the apparent contradictions.

### Resolution in unrestricted languages

There are many language constructs that implicitly invoke an equation that may have none or many solutions. The sound resolution to this problem is to syntactically link these expressions to an existentially quantified variable. The variable represents the multiple values in a way that is meaningful in common human reasoning, but is also valid in mathematics.

For example a natural language that allows the Eval function is not mathematically consistent. But each call to Eval in that natural language may be translated into mathematics in a way that is consistent. The translation of Eval(s) into mathematics is,

let x = Eval(s) in x

So where s = "Eval(s) → y"

let x = x → y in x

If y is false then the x = x → y is false, but this is a falsehood, not a paradox.

The existence of the variable x was implicit in the natural language. The variable x is created when the natural language is translated into mathematics. This allows us to use natural language, with natural semantics, while maintaining mathematical integrity.

### Resolution in formal logic

The argument in formal logic starts with assuming the validity of naming (X → Y) as X. However this is not a valid starting point. First we must deduce the validity of the naming. The following theorem is easily proved and represents such a naming.

$\forall A, \exists X, X = A$

In the above statement the formula A is named as X. Now attempt to instantiate the formula with (X → Y) for A. However this is not possible as the scope of $\exists X$ is inside the scope of $\forall A$. The order of the quantifiers may be reversed using Skolemization.

$\exists f, \forall A, f(A) = A$

However now instantiation gives,

$f(X \to Y) = X \to Y$

which is not the starting point for the proof and does not lead to a contradiction. There are no other instantiations for A that lead to the starting point of the paradox.

### Resolution in set theory

In Zermelo–Fraenkel set theory the axiom of unrestricted comprehension is replaced with a group of axioms that allow construction of sets. So Curry's paradox cannot be stated in ZFC. ZFC evolved in response to Russell's paradox.