“…Let L R = {x : ∃w such that (x, w) ∈ R}. A non-interactive proof system for a language L R is a tuple of probabilistic polynomial-time algorithms (Setup, Prover, Verifier), where -Setup (the common reference string generator) takes as input a security parameter 1 and the statement length n and produces a common reference string σ ← Setup(n), 8 -Prover (the prover) takes as input the security parameter 1 , a common reference string σ, a statement x, and a witness w and produces a proof π ← Prover(σ, x, w), -Verifier (the verifier) takes as input the security parameter 1 , a common reference string σ, a statement x, and a proof π and outputs 1/0 ← Verifier(σ, x, π) depending on whether it accepts π as a proof of x or not, such that the following conditions (completeness and soundness) are satisfied. Perfect completeness: For n = O(1) and all adversaries A outputting (x, w) ∈ R with |x| = n Pr[σ ← Setup(n); (x, w) ← A(σ); π ← Prover(σ, x, w); b ← Verifier(σ, x, π) :…”