(Revised version. Recall that '@' = espilon, '|' = OR-operator)
THEOREM (The Drinkers Paradox)
*******
ALL(a):ALL(b):[Set(a) & Set(b) & EXIST(c):c @ a
=> EXIST(c):[c @ a & c @ b => ALL(d):[d @ a => d @ b]]]
In words: Suppose we have someone in a pub. Then, at any given instant, there exists someone in the pub who, if he drinks, then everyone else in the pub also drinks.
Note that there is no single individual that is the designated "leader of the drinkers" even briefly when everyone might happen to be drinking. Only one person (x) is designated as a patron in the pub.
There is no cause and effect here, no signal to suddenly start or stop drinking. We are simply considering all possibilities of who is drinking or not at any given instant in time.
The key to this proof is the use of the Arbitrary Antecedent and Arbitrary Consequent Rules.
The Arbitrary Antecedent Rule: Q --> P => Q for arbitrary P i.e. every thing implies a truth-hood
The Arbitrary Consequent Rule: P --> ~P => Q for arbitrary P i.e. every thing follows from a falsehood
(This proof was written with the aid of the author's DC Proof 2.0 software available free at
http://www.dcproof.com )
PROOF
*****
1 Set(pub) & Set(drinkers) & EXIST(c):c @ pub
Premise
Let pub be a set
2 Set(pub)
Split, 1
Let drinkers be a set
3 Set(drinkers)
Split, 1
pub is not empty
4 EXIST(c):c @ pub
Split, 1
Let x be any one of the patrons in the pub at an unspecified instant in time
5 x @ pub
E Spec, 4
Two cases to consider: At this instant in time, we have either
(1) every patron in the pub is drinking, or
(2) NOT every patron in the pub is drinking
6 ALL(d):[d @ pub => d @ drinkers] | ~ALL(d):[d @ pub => d @ drinkers]
Or Not
Case 1
******
Suppose all patrons are drinking at this instant in time
7 ALL(d):[d @ pub => d @ drinkers]
Premise
Apply Arbitrary Antecedent Rule: Q --> P => Q for arbitrary P
8 x @ drinkers => ALL(d):[d @ pub => d @ drinkers]
Arb Ante, 7
9 x @ pub
& [x @ drinkers => ALL(d):[d @ pub => d @ drinkers]]
Join, 5, 8
10 EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]
E Gen, 9
Case 1
As Required:
11 ALL(d):[d @ pub => d @ drinkers]
=> EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]
Conclusion, 7
Case 2
******
Suppose not all patrons are drinking at the moment
12 ~ALL(d):[d @ pub => d @ drinkers]
Premise
Change quantifier
13 ~~EXIST(d):~[d @ pub => d @ drinkers]
Quant, 12
14 EXIST(d):~[d @ pub => d @ drinkers]
Rem DNeg, 13
15 EXIST(d):~~[d @ pub & ~d @ drinkers]
Imply-And, 14
16 EXIST(d):[d @ pub & ~d @ drinkers]
Rem DNeg, 15
Let y be a patron in the pub that is NOT drinking at the moment
17 y @ pub & ~y @ drinkers
E Spec, 16
18 y @ pub
Split, 17
19 ~y @ drinkers
Split, 17
Apply Arbitrary Consequence Rule: P --> ~P => Q for arbitrary Q
20 ~~y @ drinkers => ALL(d):[d @ pub => d @ drinkers]
Arb Cons, 19
21 y @ drinkers => ALL(d):[d @ pub => d @ drinkers]
Rem DNeg, 20
22 y @ pub
& [y @ drinkers => ALL(d):[d @ pub => d @ drinkers]]
Join, 18, 21
23 EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]
E Gen, 22
Case 2
As Required:
24 ~ALL(d):[d @ pub => d @ drinkers]
=> EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]
Conclusion, 12
Join results from both cases
25 [ALL(d):[d @ pub => d @ drinkers]
=> EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]]
& [~ALL(d):[d @ pub => d @ drinkers]
=> EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]]
Join, 11, 24
In both cases, we have...
26 EXIST(c):[c @ pub
& [c @ drinkers => ALL(d):[d @ pub => d @ drinkers]]]
Cases, 6, 25
As Required:
27 ALL(a):ALL(b):[Set(a) & Set(b) & EXIST(c):c @ a
=> EXIST(c):[c @ a
& [c @ b => ALL(d):[d @ a => d @ b]]]]
Conclusion, 1