EDIT: I've migrated the question by deleting the same question I asked on mathematics stackexchange.

2 questions: (1) I am confused about the definition of support used in the proof given in the textbook Computational Complexity: A Modern Approach lemma 9.2 by Arora and Barak (2) The usage of the assumption that $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$

Lemma 9.2 states that

if $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$, then given any polynomial-time computable encryption scheme $(E, D)$ with key length $n$ shorter than the message length $m$ and where $E$ and $D$ are each poly-time computable functions satisfying $D_k(E_k(x)) = x$ for plaintext $x$, we can construct a polynomial-time algorithm $A$ such that for every input length $m$ we can construct a pair of messages $x_0, x_1 \in \{0, 1\}^m$ satisfying that the algorithm $A$ distinguishes any given encryption of either $x_0$ or $x_1$ with probability greater than $\frac{3}{4}$.

(1) In the proof, they write:

Let $S \subseteq \{0, 1\}^*$ denote the support of $E_{U_n}(0^m)$

where $U_n$ is the uniform distribution on $\{0, 1\}^n$ and then they state:

Note that $y \in S$ if and only if $y = E_k(0^m)$; hence if $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$ then membership in $S$ can be efficiently verified.

But the definition of a support as I have known is that the support of a function is the smallest closed set of inputs where the function does not vanish. But $y$ is the output of the encryption function so how can it be in defined to be in the support of the function in the definition I'm using? How is the support defined properly in this case?

(2) My second confusion is on the statement

Note that $y \in S$ if and only if $y = E_k(0^m)$; hence if $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$ then membership in $S$ can be efficiently verified.

It seems that verification is efficient since in this case given a witness, a key $k$, one can encrypt $0^m$ with key $k$ and compare the output with $y$ and encryption is a poly-time computable function. Where does the assumption $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$ come into play?

  • $\begingroup$ should i remove one or the other? $\endgroup$ Commented Sep 18, 2019 at 15:27
  • $\begingroup$ Thanks @kelalaka. I've deleted the other question on math stackexchange. I'll be more aware of the cross-posting in the future! $\endgroup$ Commented Sep 18, 2019 at 15:31

1 Answer 1


If you read the statements carefully, you see that $E_{U_n}(0^m)$ does not denote the encryption of $0^m$ with a specific key. It is function applied to a probability distribution - so $y$ is actually a probability distribution itself.

And this means, the word support fits to your understanding: It is the minimal set in the codomain (seeing $E$ as a function), where the probability is not 0 for any input from $U_n$ (side-note: the term closed doesn't really do anything for discrete or finite sets) - it is precisely the image of $E$ for this specific key length.

Another way to see this: The set $S$ is the image of the encryption function - for the specific parameters $m,n$.

Regarding this statement:

Note that $y \in S$ if and only if $y = E_k(0^m)$; hence if $\boldsymbol{\mathbf{P}} = \boldsymbol{\mathbf{NP}}$ then membership in $S$ can be efficiently verified.

This sentence might be missing something: It should state for claraification, that this is true for some key $k$ taken from $U_n$.

Regarding your 2nd question: For any $NP$ problem, verifying a witness if polynomial. But given some value in the codomain of $E$, you can't decide if it belongs to $S$ or not. However, if $P=NP$ you can find a witness in polynomial time. If for some potential witness exists, it is in $S$, and if no witness exists, it is not in $S$.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.