(Looks like I had a problem I forgot to post. I’ll let this count for this week while we’re on coronavirus lockdown. We’ll see where we are in 2 weeks)

We continue bouncing between really easy and really hard reductions with another easy one.

**The problem: **Predicate Logic Without Negation. This is problem LO15 in the appendix.

**The description: **Given a predicate logic system, that is:

- A set of variables U = {u
_{1}..u_{n}} - A set of “function symbols” F = {f
_{1}..f_{k}} - A set of “relation symbols” R = {R
_{1}..R_{j}}

..and a well-formed predicate logic sentence A without negations using U, F, and R, is A true under all interpretations of F and R. An interpretation (I think) is us replacing the function (or relation) symbol f_{i} or r_{i} with an actual function of the correct dimension.

**Example:**

Suppose we have the predicate logic sentence:

∀x,y R1(x,y) = R2(x,y)

..then this statement would not be true under all interpretations R, because we can make R1 and R2 be different relations (maybe R1 always is true but R2 is always false)

But if we do:

∀x,y R1(x,y) = R1(x,y)

..then no matter what relation we choose for R1, the statement is true.

**Reduction: **G&J imply that the reduction is “trivial” but I still went to Kozen’s paper to figure out how to get rid of the negations. The idea is that we replace each positive instance of a literal x_{i} with the equation “x_{i} = a_{1}“, and we replace each negative instance of a literal ~x_{j} with the equation “x_{j} = a_{0}“. The new values a_{0} and a_{1} are constants (or, more precisely, functions that take 0 parameters)

If the original sat formula is satisfiable, then our new formula is also satisfiable with setting a_{1} to true and a_{0} to false. (Or, technically, setting each variable x_{i} to a_{1} if it is true in our satisfying assignment, and setting it to a_{0} if it’s false in our satisfying assignment).

If the new formula is satisfiable, then we have a way to assign the variables to a_{0} or a_{1} that makes the whole formula true. This gives us a way to solve the original SAT instance.

**Difficulty: **4. There isn’t much to the transformation, but I think it’s hard to see what’s happening- the fact that the a values are 0-parameter functions, and that the x values are given values in the domain {a_{0}, a_{1}} is a subtle point. It’s hard right off to see the new formula with no negations and not say “But that’s always satisfiable if we make both a variables true!”. The trick is that we’re not setting the a variables to true and false, we’re setting the x variables to constant values in {a_{0}, a_{1}}, which is different.