2
$\begingroup$

I have a set, $F$, of boolean formulas defined inductively as follows:

$X_{i} \in F, \: \forall i \in \mathbb{N} \: \text{(variables)}\\ A \in F \implies \neg A \in F\\ A, B \in F \implies A \land B \in F\\ A, B \in F \implies A \lor B \in F$

I also have the mutually recursive functions $T$, $N: F \rightarrow F$ where:

$T(A \land B) = T(A) \land T(B)\\ T(A \lor B) = T(A) \lor T(B)\\ T(\neg A) = N(A)\\ T(X_{i}) = X_{i}\\ \:\\ N(A \land B) = N(A) \lor N(B)\\ N(A \lor B) = N(A) \land N(B)\\ N(\neg A) = T(A)\\ N(X_{i}) = \neg X_{i}$

I need to show, using structural induction on the definition of $F$, that $\forall A \in F$:

$T(A) \iff A$ "and has negation only on variables"

The suggestion is to define a stronger predicate that also makes a statement about $N$. I cannot seem to come up with a suitable predicate and I am not entirely sure what the qualification "and has negation only on variables" means. Structural induction itself is not a problem.

Any advice is appreciated.

EDIT:

Later, I realized that the qualification "has negation only on variables" must mean "has negation only on arguments to $T$ and $N$" and not the "variables" $X_{i}$.

$\endgroup$
6
  • 1
    $\begingroup$ Some hints: The function T corresponds to using De Morgan's laws, and the function N corresponds to negating the expression. Also, "has negation only on variables" means that a negation sign $\neg$ only appears in front of variables, and never in front of larger expressions. As an example, $\neg$ only appears in front of variables in $\neg X_1 \vee \neg X_2$ but not in $\neg (X_1 \wedge X_2)$. $\endgroup$
    – mrp
    Commented Mar 9, 2015 at 10:01
  • $\begingroup$ It seems that T is not applying De Morgan's Laws, rather that N is. $\endgroup$
    – Schemer
    Commented Mar 9, 2015 at 12:28
  • $\begingroup$ (Note: I don't have an answer, I just think this is an interesting question, so I'm trying to help) If we look at $\varphi = \neg(X_1 \wedge X_2)$, then $T(\varphi) = \neg X_1 \vee \neg X_2$, which is De Morgan's law, and $N(\varphi) = X_1 \wedge X_2$, which is just the negation of $\varphi$. Am I wrong? $\endgroup$
    – mrp
    Commented Mar 9, 2015 at 12:47
  • $\begingroup$ No, not at all. My apologies. I missed the trick of defining $\varphi$ as a negation. $\endgroup$
    – Schemer
    Commented Mar 9, 2015 at 12:58
  • $\begingroup$ Hopefully you realize that $$T(A \land B) = T(A) \land T(B)$$ is meant to be interpreted as a notation about building an AST, not as actually evaluating boolean expressions. $\endgroup$
    – DanielV
    Commented Mar 11, 2015 at 13:50

1 Answer 1

1
+50
$\begingroup$

$T$ is a transformation with the property that :

for all boolean formula $A \in \mathcal F$, $T(A) \leftrightarrow A$ and $T(A)$ has all the negation signs "pushed inside", i.e. in front of boolean variables $X_i$.

Basis of induction : $A = X_i$

$T(A)=T(X_i)=X_i$, by definition of $T$. Thus, $T(A)$ has all negation signs (there are none) in front of variables and $T(A)=X_i \leftrightarrow X_i=A$.

Induction step : the induction is on the number of connectives of $A$.

($1$) $A = \lnot B$; thus : $T(A)=T(\lnot B)=N(B)$.

Now we have to consider four sub-cases :

($1_{atomic}$) : $B = X_i$.

$T(A)=N(B)=N(X_i)=\lnot X_i$ and so : $T(A)=\lnot X_i$ has all the negation signs in front of variables.

But $T(A) = \lnot X_i \leftrightarrow \lnot B=A$ and we are done.

($1_{\lnot}$) : $B = \lnot C$.

$T(A)=N(B)=N(\lnot C)=T(C)$; $C$ has two connectives less than $A$ and thus the induction hypotheses apply, i.e. $T(C) \leftrightarrow C$ and $T(C)$ has all the negation signs "pushed inside".

Now, $A=\lnot B=\lnot \lnot C \leftrightarrow C$ and : $T(A)=T(C)$ and so : $T(A) \leftrightarrow C \leftrightarrow A$ and $T(A)$ (i.e. $T(C)$) has all negation signs in front of variables.

($1_{\land}$) : $B = C \land D$.

$T(A)=N(B)=N(C \land D)=N(C) \lor N(D)$ and $N(C)=T(\lnot C)$ and $N(D)=T(\lnot D)$. But $C$ and $D$ has two conncetives less than $A$ and thus the induction hypotheses apply to both $\lnot C$ and $\lnot D$, i.e. $T(\lnot C) \leftrightarrow \lnot C$ and $T(\lnot C)$ has all the negation signs "pushed inside", and the same for $T(\lnot D)$.

Thus $T(A)=N(B)=T(\lnot C) \lor T(\lnot D) \leftrightarrow \lnot C \lor \lnot D$ and $T(A)$ has all negation signs in front of variables, because so are $T(\lnot C)$ and $T(\lnot D)$ and the $\lor$ connective does not introduce any new negation sign.

But $T(A)=T(\lnot C) \lor T(\lnot D) \leftrightarrow \lnot C \lor \lnot D \leftrightarrow \lnot(C \land D) \leftrightarrow \lnot B=A$, and it's done.

($1_{\lor}$) : $B = C \lor D$.

Similar to ($1_{\land}$).

In the same way we can manage the other cases needed to complete the induction step :

($2$) $A = C \land D$.

($3$) $A = C \lor D$.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .