Revealed below are the full inner workings fo First Order Logic (FOL) as it pertains to Smullyan's Drinker Principle. Each quantifier is restricted by a unary predicate U implicit, though it is never formally specified in FOL proofs as it would be in DC Proof and most math textbooks. Here, we make the implicit explicit.
Following is my formal translation of Smullyan's informal proof of the Drinking Principle in the notation of DC Proof 2.0.
Smullyan writes:
"[T]here exists someone such that whenever he (or she) drinks, everybody drinks. It comes ultimately from the strange principle that a false proposition implies any proposition. [i.e. the principle of vacuous truth]
[Smullyan's informal proof:]
"Either it is true that everybody drinks or it isn't. Suppose it is true that everybody drinks. Then take any person-call him Jim. Since everybody drinks and Jim drinks, then it is true that if Jim drinks then everybody drinks. So there is at least one person namely Jim-such that if he drinks then everybody drinks.
"Suppose, however, that it is not true that everybody drinks; what then? Well, in that case there is at least one person-call him Jim-who doesn't drink. Since it is false that Jim drinks, then it is true that if Jim drinks,everybody drinks. So again there is a person--namely Jim--such that if he drinks, everybody drinks."
--"What is the name of this book?" pp. 209-210
****************************************************************************
Formal proof in the notation of DC Proof 2.0
Required to prove: EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]
Assume a non-empty domain of discussion U
1. EXIST(a):U(a)
Axiom
"Either it is true that everybody drinks or it isn't."
2. ALL(a):[U(a) => Drinker(a)] | ~ALL(a):[U(a) => Drinker(a)]
Or Not
Case 1
"Suppose it is true that everybody drinks."
3. ALL(a):[U(a) => Drinker(a)]
Premise
"Then take any person-call him Jim."
Apply the existence of a non-empty domain of discussion
4. U(jim)
E Spec, 1
"Since everybody drinks and Jim drinks,[...]
5. U(jim) => Drinker(jim)
U Spec, 3
6. Drinker(jim)
Detach, 5, 4
"If Jim drinks then everybody drinks."
7. Drinker(jim)
Premise
8. ALL(a):[U(a) => Drinker(a)]
Copy, 3
9. Drinker(jim) => ALL(a):[U(a) => Drinker(a)]
Conclusion, 7
"So there is at least one person, namely Jim, such that if he drinks then everybody drinks."
10. U(jim) & [Drinker(jim) => ALL(a):[U(a) => Drinker(a)]]
Join, 4, 9
Case 1
As Required:
11. ALL(a):[U(a) => Drinker(a)]
=> EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]
Conclusion, 3
Case 2
"Suppose, however, that it is not true that everybody drinks"
12. ~ALL(a):[U(a) => Drinker(a)]
Premise
13. ~~EXIST(a):~[U(a) => Drinker(a)]
Quant, 12
14. EXIST(a):~[U(a) => Drinker(a)]
Rem DNeg, 13
15. EXIST(a):~~[U(a) & ~Drinker(a)]
Imply-And, 14
16. EXIST(a):[U(a) & ~Drinker(a)]
Rem DNeg, 15
"Well, in that case there is at least one person, call him Jim, who doesn't drink."
17. U(jim) & ~Drinker(jim)
E Spec, 16
18. U(jim)
Split, 17
19. ~Drinker(jim)
Split, 17
"Since it is false that Jim drinks, then it is [vacuously] true that if Jim drinks, everybody drinks."
20. Drinker(jim)
Premise
21. ~Drinker(jim) => ALL(a):[U(a) => Drinker(a)]
Arb Cons, 20
Vacuously true:
22. ALL(a):[U(a) => Drinker(a)]
Detach, 21, 19
23. Drinker(jim) => ALL(a):[U(a) => Drinker(a)]
Conclusion, 20
24. U(jim)
& [Drinker(jim) => ALL(a):[U(a) => Drinker(a)]]
Join, 18, 23
Case 2
"So again there is a person, namely Jim, such that if he drinks, everybody drinks."
25. ~ALL(a):[U(a) => Drinker(a)]
=> EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]
Conclusion, 12
Joining results for Cases Rule
26. [ALL(a):[U(a) => Drinker(a)]
=> EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]]
& [~ALL(a):[U(a) => Drinker(a)]
=> EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]]
Join, 11, 25
As Required:
By cases:
27. EXIST(b):[U(b) & [Drinker(b) => ALL(a):[U(a) => Drinker(a)]]]
Cases, 2, 26
Dan
Download my DC Proof 2.0 freeware at
http://www.dcproof.com
Visit my Math Blog at
http://www.dcproof.wordpress.com