Metamath Proof Explorer


Theorem ballotth

Description: Bertrand's ballot problem : the probability that A is ahead throughout the counting. The proof formalized here is a proof "by reflection", as opposed to other known proofs "by induction" or "by permutation". This is Metamath 100 proof #30. (Contributed by Thierry Arnoux, 7-Dec-2016)

Ref Expression
Hypotheses ballotth.m
|- M e. NN
ballotth.n
|- N e. NN
ballotth.o
|- O = { c e. ~P ( 1 ... ( M + N ) ) | ( # ` c ) = M }
ballotth.p
|- P = ( x e. ~P O |-> ( ( # ` x ) / ( # ` O ) ) )
ballotth.f
|- F = ( c e. O |-> ( i e. ZZ |-> ( ( # ` ( ( 1 ... i ) i^i c ) ) - ( # ` ( ( 1 ... i ) \ c ) ) ) ) )
ballotth.e
|- E = { c e. O | A. i e. ( 1 ... ( M + N ) ) 0 < ( ( F ` c ) ` i ) }
ballotth.mgtn
|- N < M
ballotth.i
|- I = ( c e. ( O \ E ) |-> inf ( { k e. ( 1 ... ( M + N ) ) | ( ( F ` c ) ` k ) = 0 } , RR , < ) )
ballotth.s
|- S = ( c e. ( O \ E ) |-> ( i e. ( 1 ... ( M + N ) ) |-> if ( i <_ ( I ` c ) , ( ( ( I ` c ) + 1 ) - i ) , i ) ) )
ballotth.r
|- R = ( c e. ( O \ E ) |-> ( ( S ` c ) " c ) )
Assertion ballotth
|- ( P ` E ) = ( ( M - N ) / ( M + N ) )

Proof

Step Hyp Ref Expression
1 ballotth.m
 |-  M e. NN
2 ballotth.n
 |-  N e. NN
3 ballotth.o
 |-  O = { c e. ~P ( 1 ... ( M + N ) ) | ( # ` c ) = M }
4 ballotth.p
 |-  P = ( x e. ~P O |-> ( ( # ` x ) / ( # ` O ) ) )
5 ballotth.f
 |-  F = ( c e. O |-> ( i e. ZZ |-> ( ( # ` ( ( 1 ... i ) i^i c ) ) - ( # ` ( ( 1 ... i ) \ c ) ) ) ) )
6 ballotth.e
 |-  E = { c e. O | A. i e. ( 1 ... ( M + N ) ) 0 < ( ( F ` c ) ` i ) }
7 ballotth.mgtn
 |-  N < M
8 ballotth.i
 |-  I = ( c e. ( O \ E ) |-> inf ( { k e. ( 1 ... ( M + N ) ) | ( ( F ` c ) ` k ) = 0 } , RR , < ) )
9 ballotth.s
 |-  S = ( c e. ( O \ E ) |-> ( i e. ( 1 ... ( M + N ) ) |-> if ( i <_ ( I ` c ) , ( ( ( I ` c ) + 1 ) - i ) , i ) ) )
10 ballotth.r
 |-  R = ( c e. ( O \ E ) |-> ( ( S ` c ) " c ) )
11 ssrab2
 |-  { c e. O | A. i e. ( 1 ... ( M + N ) ) 0 < ( ( F ` c ) ` i ) } C_ O
12 6 11 eqsstri
 |-  E C_ O
13 fzfi
 |-  ( 1 ... ( M + N ) ) e. Fin
14 pwfi
 |-  ( ( 1 ... ( M + N ) ) e. Fin <-> ~P ( 1 ... ( M + N ) ) e. Fin )
15 13 14 mpbi
 |-  ~P ( 1 ... ( M + N ) ) e. Fin
16 ssrab2
 |-  { c e. ~P ( 1 ... ( M + N ) ) | ( # ` c ) = M } C_ ~P ( 1 ... ( M + N ) )
17 3 16 eqsstri
 |-  O C_ ~P ( 1 ... ( M + N ) )
18 ssfi
 |-  ( ( ~P ( 1 ... ( M + N ) ) e. Fin /\ O C_ ~P ( 1 ... ( M + N ) ) ) -> O e. Fin )
19 15 17 18 mp2an
 |-  O e. Fin
20 ssfi
 |-  ( ( O e. Fin /\ E C_ O ) -> E e. Fin )
21 19 12 20 mp2an
 |-  E e. Fin
22 21 elexi
 |-  E e. _V
23 22 elpw
 |-  ( E e. ~P O <-> E C_ O )
24 fveq2
 |-  ( x = E -> ( # ` x ) = ( # ` E ) )
25 24 oveq1d
 |-  ( x = E -> ( ( # ` x ) / ( # ` O ) ) = ( ( # ` E ) / ( # ` O ) ) )
26 ovex
 |-  ( ( # ` E ) / ( # ` O ) ) e. _V
27 25 4 26 fvmpt
 |-  ( E e. ~P O -> ( P ` E ) = ( ( # ` E ) / ( # ` O ) ) )
28 23 27 sylbir
 |-  ( E C_ O -> ( P ` E ) = ( ( # ` E ) / ( # ` O ) ) )
29 12 28 ax-mp
 |-  ( P ` E ) = ( ( # ` E ) / ( # ` O ) )
30 hashssdif
 |-  ( ( O e. Fin /\ E C_ O ) -> ( # ` ( O \ E ) ) = ( ( # ` O ) - ( # ` E ) ) )
31 19 12 30 mp2an
 |-  ( # ` ( O \ E ) ) = ( ( # ` O ) - ( # ` E ) )
32 31 eqcomi
 |-  ( ( # ` O ) - ( # ` E ) ) = ( # ` ( O \ E ) )
33 hashcl
 |-  ( O e. Fin -> ( # ` O ) e. NN0 )
34 19 33 ax-mp
 |-  ( # ` O ) e. NN0
35 34 nn0cni
 |-  ( # ` O ) e. CC
36 hashcl
 |-  ( E e. Fin -> ( # ` E ) e. NN0 )
37 21 36 ax-mp
 |-  ( # ` E ) e. NN0
38 37 nn0cni
 |-  ( # ` E ) e. CC
39 difss
 |-  ( O \ E ) C_ O
40 ssfi
 |-  ( ( O e. Fin /\ ( O \ E ) C_ O ) -> ( O \ E ) e. Fin )
41 19 39 40 mp2an
 |-  ( O \ E ) e. Fin
42 hashcl
 |-  ( ( O \ E ) e. Fin -> ( # ` ( O \ E ) ) e. NN0 )
43 41 42 ax-mp
 |-  ( # ` ( O \ E ) ) e. NN0
44 43 nn0cni
 |-  ( # ` ( O \ E ) ) e. CC
45 35 38 44 subsub23i
 |-  ( ( ( # ` O ) - ( # ` E ) ) = ( # ` ( O \ E ) ) <-> ( ( # ` O ) - ( # ` ( O \ E ) ) ) = ( # ` E ) )
46 32 45 mpbi
 |-  ( ( # ` O ) - ( # ` ( O \ E ) ) ) = ( # ` E )
47 46 oveq1i
 |-  ( ( ( # ` O ) - ( # ` ( O \ E ) ) ) / ( # ` O ) ) = ( ( # ` E ) / ( # ` O ) )
48 29 47 eqtr4i
 |-  ( P ` E ) = ( ( ( # ` O ) - ( # ` ( O \ E ) ) ) / ( # ` O ) )
49 1 2 3 ballotlem1
 |-  ( # ` O ) = ( ( M + N ) _C M )
50 1 nnnn0i
 |-  M e. NN0
51 nnaddcl
 |-  ( ( M e. NN /\ N e. NN ) -> ( M + N ) e. NN )
52 1 2 51 mp2an
 |-  ( M + N ) e. NN
53 52 nnnn0i
 |-  ( M + N ) e. NN0
54 1 nnrei
 |-  M e. RR
55 2 nnnn0i
 |-  N e. NN0
56 54 55 nn0addge1i
 |-  M <_ ( M + N )
57 elfz2nn0
 |-  ( M e. ( 0 ... ( M + N ) ) <-> ( M e. NN0 /\ ( M + N ) e. NN0 /\ M <_ ( M + N ) ) )
58 50 53 56 57 mpbir3an
 |-  M e. ( 0 ... ( M + N ) )
59 bccl2
 |-  ( M e. ( 0 ... ( M + N ) ) -> ( ( M + N ) _C M ) e. NN )
60 58 59 ax-mp
 |-  ( ( M + N ) _C M ) e. NN
61 60 nnne0i
 |-  ( ( M + N ) _C M ) =/= 0
62 49 61 eqnetri
 |-  ( # ` O ) =/= 0
63 35 62 pm3.2i
 |-  ( ( # ` O ) e. CC /\ ( # ` O ) =/= 0 )
64 divsubdir
 |-  ( ( ( # ` O ) e. CC /\ ( # ` ( O \ E ) ) e. CC /\ ( ( # ` O ) e. CC /\ ( # ` O ) =/= 0 ) ) -> ( ( ( # ` O ) - ( # ` ( O \ E ) ) ) / ( # ` O ) ) = ( ( ( # ` O ) / ( # ` O ) ) - ( ( # ` ( O \ E ) ) / ( # ` O ) ) ) )
65 35 44 63 64 mp3an
 |-  ( ( ( # ` O ) - ( # ` ( O \ E ) ) ) / ( # ` O ) ) = ( ( ( # ` O ) / ( # ` O ) ) - ( ( # ` ( O \ E ) ) / ( # ` O ) ) )
66 35 62 dividi
 |-  ( ( # ` O ) / ( # ` O ) ) = 1
67 66 oveq1i
 |-  ( ( ( # ` O ) / ( # ` O ) ) - ( ( # ` ( O \ E ) ) / ( # ` O ) ) ) = ( 1 - ( ( # ` ( O \ E ) ) / ( # ` O ) ) )
68 48 65 67 3eqtri
 |-  ( P ` E ) = ( 1 - ( ( # ` ( O \ E ) ) / ( # ` O ) ) )
69 1 2 3 4 5 6 7 8 9 10 ballotlem8
 |-  ( # ` { c e. ( O \ E ) | 1 e. c } ) = ( # ` { c e. ( O \ E ) | -. 1 e. c } )
70 69 oveq1i
 |-  ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) = ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) )
71 70 oveq1i
 |-  ( ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) ) = ( ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) )
72 rabxm
 |-  ( O \ E ) = ( { c e. ( O \ E ) | 1 e. c } u. { c e. ( O \ E ) | -. 1 e. c } )
73 72 fveq2i
 |-  ( # ` ( O \ E ) ) = ( # ` ( { c e. ( O \ E ) | 1 e. c } u. { c e. ( O \ E ) | -. 1 e. c } ) )
74 ssrab2
 |-  { c e. ( O \ E ) | 1 e. c } C_ ( O \ E )
75 74 39 sstri
 |-  { c e. ( O \ E ) | 1 e. c } C_ O
76 75 17 sstri
 |-  { c e. ( O \ E ) | 1 e. c } C_ ~P ( 1 ... ( M + N ) )
77 ssfi
 |-  ( ( ~P ( 1 ... ( M + N ) ) e. Fin /\ { c e. ( O \ E ) | 1 e. c } C_ ~P ( 1 ... ( M + N ) ) ) -> { c e. ( O \ E ) | 1 e. c } e. Fin )
78 15 76 77 mp2an
 |-  { c e. ( O \ E ) | 1 e. c } e. Fin
79 ssrab2
 |-  { c e. ( O \ E ) | -. 1 e. c } C_ ( O \ E )
80 79 39 sstri
 |-  { c e. ( O \ E ) | -. 1 e. c } C_ O
81 80 17 sstri
 |-  { c e. ( O \ E ) | -. 1 e. c } C_ ~P ( 1 ... ( M + N ) )
82 ssfi
 |-  ( ( ~P ( 1 ... ( M + N ) ) e. Fin /\ { c e. ( O \ E ) | -. 1 e. c } C_ ~P ( 1 ... ( M + N ) ) ) -> { c e. ( O \ E ) | -. 1 e. c } e. Fin )
83 15 81 82 mp2an
 |-  { c e. ( O \ E ) | -. 1 e. c } e. Fin
84 rabnc
 |-  ( { c e. ( O \ E ) | 1 e. c } i^i { c e. ( O \ E ) | -. 1 e. c } ) = (/)
85 hashun
 |-  ( ( { c e. ( O \ E ) | 1 e. c } e. Fin /\ { c e. ( O \ E ) | -. 1 e. c } e. Fin /\ ( { c e. ( O \ E ) | 1 e. c } i^i { c e. ( O \ E ) | -. 1 e. c } ) = (/) ) -> ( # ` ( { c e. ( O \ E ) | 1 e. c } u. { c e. ( O \ E ) | -. 1 e. c } ) ) = ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) )
86 78 83 84 85 mp3an
 |-  ( # ` ( { c e. ( O \ E ) | 1 e. c } u. { c e. ( O \ E ) | -. 1 e. c } ) ) = ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) )
87 73 86 eqtri
 |-  ( # ` ( O \ E ) ) = ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) )
88 87 oveq1i
 |-  ( ( # ` ( O \ E ) ) / ( # ` O ) ) = ( ( ( # ` { c e. ( O \ E ) | 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) )
89 ssrab2
 |-  { c e. O | -. 1 e. c } C_ O
90 19 elexi
 |-  O e. _V
91 90 elpw2
 |-  ( { c e. O | -. 1 e. c } e. ~P O <-> { c e. O | -. 1 e. c } C_ O )
92 89 91 mpbir
 |-  { c e. O | -. 1 e. c } e. ~P O
93 fveq2
 |-  ( x = { c e. O | -. 1 e. c } -> ( # ` x ) = ( # ` { c e. O | -. 1 e. c } ) )
94 93 oveq1d
 |-  ( x = { c e. O | -. 1 e. c } -> ( ( # ` x ) / ( # ` O ) ) = ( ( # ` { c e. O | -. 1 e. c } ) / ( # ` O ) ) )
95 ovex
 |-  ( ( # ` { c e. O | -. 1 e. c } ) / ( # ` O ) ) e. _V
96 94 4 95 fvmpt
 |-  ( { c e. O | -. 1 e. c } e. ~P O -> ( P ` { c e. O | -. 1 e. c } ) = ( ( # ` { c e. O | -. 1 e. c } ) / ( # ` O ) ) )
97 92 96 ax-mp
 |-  ( P ` { c e. O | -. 1 e. c } ) = ( ( # ` { c e. O | -. 1 e. c } ) / ( # ` O ) )
98 1 2 3 4 ballotlem2
 |-  ( P ` { c e. O | -. 1 e. c } ) = ( N / ( M + N ) )
99 nfrab1
 |-  F/_ c { c e. O | -. 1 e. c }
100 nfrab1
 |-  F/_ c { c e. ( O \ E ) | -. 1 e. c }
101 99 100 dfss2f
 |-  ( { c e. O | -. 1 e. c } C_ { c e. ( O \ E ) | -. 1 e. c } <-> A. c ( c e. { c e. O | -. 1 e. c } -> c e. { c e. ( O \ E ) | -. 1 e. c } ) )
102 1 2 3 4 5 6 ballotlem4
 |-  ( c e. O -> ( -. 1 e. c -> -. c e. E ) )
103 102 imdistani
 |-  ( ( c e. O /\ -. 1 e. c ) -> ( c e. O /\ -. c e. E ) )
104 rabid
 |-  ( c e. { c e. O | -. 1 e. c } <-> ( c e. O /\ -. 1 e. c ) )
105 eldif
 |-  ( c e. ( O \ E ) <-> ( c e. O /\ -. c e. E ) )
106 103 104 105 3imtr4i
 |-  ( c e. { c e. O | -. 1 e. c } -> c e. ( O \ E ) )
107 104 simprbi
 |-  ( c e. { c e. O | -. 1 e. c } -> -. 1 e. c )
108 rabid
 |-  ( c e. { c e. ( O \ E ) | -. 1 e. c } <-> ( c e. ( O \ E ) /\ -. 1 e. c ) )
109 106 107 108 sylanbrc
 |-  ( c e. { c e. O | -. 1 e. c } -> c e. { c e. ( O \ E ) | -. 1 e. c } )
110 101 109 mpgbir
 |-  { c e. O | -. 1 e. c } C_ { c e. ( O \ E ) | -. 1 e. c }
111 rabss2
 |-  ( ( O \ E ) C_ O -> { c e. ( O \ E ) | -. 1 e. c } C_ { c e. O | -. 1 e. c } )
112 39 111 ax-mp
 |-  { c e. ( O \ E ) | -. 1 e. c } C_ { c e. O | -. 1 e. c }
113 110 112 eqssi
 |-  { c e. O | -. 1 e. c } = { c e. ( O \ E ) | -. 1 e. c }
114 113 fveq2i
 |-  ( # ` { c e. O | -. 1 e. c } ) = ( # ` { c e. ( O \ E ) | -. 1 e. c } )
115 114 oveq1i
 |-  ( ( # ` { c e. O | -. 1 e. c } ) / ( # ` O ) ) = ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) / ( # ` O ) )
116 97 98 115 3eqtr3i
 |-  ( N / ( M + N ) ) = ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) / ( # ` O ) )
117 116 oveq2i
 |-  ( 2 x. ( N / ( M + N ) ) ) = ( 2 x. ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) / ( # ` O ) ) )
118 2cn
 |-  2 e. CC
119 hashcl
 |-  ( { c e. ( O \ E ) | -. 1 e. c } e. Fin -> ( # ` { c e. ( O \ E ) | -. 1 e. c } ) e. NN0 )
120 83 119 ax-mp
 |-  ( # ` { c e. ( O \ E ) | -. 1 e. c } ) e. NN0
121 120 nn0cni
 |-  ( # ` { c e. ( O \ E ) | -. 1 e. c } ) e. CC
122 118 121 35 62 divassi
 |-  ( ( 2 x. ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) ) = ( 2 x. ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) / ( # ` O ) ) )
123 121 2timesi
 |-  ( 2 x. ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) = ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) )
124 123 oveq1i
 |-  ( ( 2 x. ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) ) = ( ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) )
125 117 122 124 3eqtr2i
 |-  ( 2 x. ( N / ( M + N ) ) ) = ( ( ( # ` { c e. ( O \ E ) | -. 1 e. c } ) + ( # ` { c e. ( O \ E ) | -. 1 e. c } ) ) / ( # ` O ) )
126 71 88 125 3eqtr4ri
 |-  ( 2 x. ( N / ( M + N ) ) ) = ( ( # ` ( O \ E ) ) / ( # ` O ) )
127 126 oveq2i
 |-  ( 1 - ( 2 x. ( N / ( M + N ) ) ) ) = ( 1 - ( ( # ` ( O \ E ) ) / ( # ` O ) ) )
128 52 nncni
 |-  ( M + N ) e. CC
129 2 nncni
 |-  N e. CC
130 118 129 mulcli
 |-  ( 2 x. N ) e. CC
131 52 nnne0i
 |-  ( M + N ) =/= 0
132 128 131 pm3.2i
 |-  ( ( M + N ) e. CC /\ ( M + N ) =/= 0 )
133 divsubdir
 |-  ( ( ( M + N ) e. CC /\ ( 2 x. N ) e. CC /\ ( ( M + N ) e. CC /\ ( M + N ) =/= 0 ) ) -> ( ( ( M + N ) - ( 2 x. N ) ) / ( M + N ) ) = ( ( ( M + N ) / ( M + N ) ) - ( ( 2 x. N ) / ( M + N ) ) ) )
134 128 130 132 133 mp3an
 |-  ( ( ( M + N ) - ( 2 x. N ) ) / ( M + N ) ) = ( ( ( M + N ) / ( M + N ) ) - ( ( 2 x. N ) / ( M + N ) ) )
135 129 2timesi
 |-  ( 2 x. N ) = ( N + N )
136 135 oveq2i
 |-  ( ( M + N ) - ( 2 x. N ) ) = ( ( M + N ) - ( N + N ) )
137 1 nncni
 |-  M e. CC
138 137 129 129 129 addsub4i
 |-  ( ( M + N ) - ( N + N ) ) = ( ( M - N ) + ( N - N ) )
139 129 subidi
 |-  ( N - N ) = 0
140 139 oveq2i
 |-  ( ( M - N ) + ( N - N ) ) = ( ( M - N ) + 0 )
141 137 129 subcli
 |-  ( M - N ) e. CC
142 141 addid1i
 |-  ( ( M - N ) + 0 ) = ( M - N )
143 138 140 142 3eqtri
 |-  ( ( M + N ) - ( N + N ) ) = ( M - N )
144 136 143 eqtri
 |-  ( ( M + N ) - ( 2 x. N ) ) = ( M - N )
145 144 oveq1i
 |-  ( ( ( M + N ) - ( 2 x. N ) ) / ( M + N ) ) = ( ( M - N ) / ( M + N ) )
146 128 131 dividi
 |-  ( ( M + N ) / ( M + N ) ) = 1
147 118 129 128 131 divassi
 |-  ( ( 2 x. N ) / ( M + N ) ) = ( 2 x. ( N / ( M + N ) ) )
148 146 147 oveq12i
 |-  ( ( ( M + N ) / ( M + N ) ) - ( ( 2 x. N ) / ( M + N ) ) ) = ( 1 - ( 2 x. ( N / ( M + N ) ) ) )
149 134 145 148 3eqtr3ri
 |-  ( 1 - ( 2 x. ( N / ( M + N ) ) ) ) = ( ( M - N ) / ( M + N ) )
150 68 127 149 3eqtr2i
 |-  ( P ` E ) = ( ( M - N ) / ( M + N ) )