Metatheory - University of Cambridge
Metatheory - University of Cambridge
Metatheory - University of Cambridge
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2. Substitution 15<br />
I make the following claim:<br />
Claim 1: (A[ ⊤ /D] ∨ A[ ⊥ /D]) ⊨ B<br />
To prove Claim 1, let v be any valuation that makes (A[ ⊤ /D] ∨ A[ ⊥ /D]) true.<br />
If v makes A[ ⊤ /D] true, let w differ from v just by making D true; otherwise,<br />
let w differ from v just by making D false. Either way, w makes A true, so<br />
w makes B true too (since A ⊨ B). Finally, since D does not occur in B, v<br />
makes B true too. This establishes the Claim.<br />
Next, because there were n + 1 atomic sentences in A but not B, and D<br />
was one <strong>of</strong> these atomic sentences, there must be exactly n atomic sentences in<br />
A[ ⊤ /D] ∨ A[ ⊥ /D] but not B. Hence, by Claim 1 and the induction hypothesis,<br />
we can find an interpolant, I , linking (A[ ⊤ /D] ∨ A[ ⊥ /D]) to B, i.e.:<br />
1. (A[ ⊤ /D] ∨ A[ ⊥ /D]) ⊨ I<br />
2. I ⊨ B<br />
3. every atomic sentence in I occurs in both (A[ ⊤ /D] ∨ A[ ⊥ /D]) and in B<br />
I shall now show that I is an interpolant linking A itself to B. Point (2), above,<br />
tells us that I ⊨ B. Moreover, given point (3), it is obvious that every atomic<br />
sentence in I occurs in both A and in B. So it remains to show that A ⊨ I .<br />
Given that (A[ ⊤ /D] ∨ A[ ⊥ /D]) ⊨ I , it suffices, by the transitivity <strong>of</strong> entailment,<br />
to prove the following claim:<br />
Claim 2. A ⊨ (A[ ⊤ /D] ∨ A[ ⊥ /D])<br />
To prove Claim 2, let v be any valuation that makes A true. If v makes D<br />
true, then since ⊤ is a tautology, v makes A[ ⊤ /D] true. If v makes D false,<br />
then v makes A[ ⊥ /D] true. Either way, any valuation that makes A true makes<br />
(A[ ⊤ /D] ∨ A[ ⊥ /D]) true. This establishes Claim 2.<br />
Hence I is an interpolant linking A to B. This completes the pro<strong>of</strong> <strong>of</strong> the<br />
induction case. The entire Theorem now follows by induction.<br />
■<br />
This is easily the longest pro<strong>of</strong> that we have seen so far. So it is worth pausing,<br />
to make sure both that you understand every step in the pro<strong>of</strong>, and also how<br />
the pro<strong>of</strong> is put together.<br />
In fact, this pro<strong>of</strong> merits particular scrutiny since, implicitly, the pro<strong>of</strong><br />
does more than just prove the Theorem. The Interpolation Theorem states<br />
that, when A ⊨ B, an interpolant exists. If this were all we knew, then we<br />
might have no idea about how to find an interpolant. But, viewed correctly,<br />
the pro<strong>of</strong> yields an algorithm for finding an interpolant. An algorithm is a<br />
step-by-step process, followed ‘thoughtlessly’ (i.e. without any need for insight,<br />
just by implementing very simple little rules), that is guaranteed to terminate<br />
in finitely many steps. I shall describe the algorithm for finding an interpolant;<br />
and having done so, it should be clear how it relates to the pro<strong>of</strong>.<br />
Given that A ⊨ B, linking A to B as follows:<br />
Step 1: Designate A as the input sentence<br />
Step 2: Let D be the first atomic sentence (alphabetically) that appears in<br />
the input sentence, but that does not appear in B. Rewrite the input<br />
sentence twice, once uniformly substituting a tautology in place <strong>of</strong> D<br />
and once uniformly substituting a contradiction in place <strong>of</strong> D. Let the<br />
disjunction <strong>of</strong> these two rewritten sentences be your new input sentence.