Metamath Proof Explorer


Theorem ramub1

Description: Inductive step for Ramsey's theorem, in the form of an explicit upper bound. (Contributed by Mario Carneiro, 23-Apr-2015)

Ref Expression
Hypotheses ramub1.m ( 𝜑𝑀 ∈ ℕ )
ramub1.r ( 𝜑𝑅 ∈ Fin )
ramub1.f ( 𝜑𝐹 : 𝑅 ⟶ ℕ )
ramub1.g 𝐺 = ( 𝑥𝑅 ↦ ( 𝑀 Ramsey ( 𝑦𝑅 ↦ if ( 𝑦 = 𝑥 , ( ( 𝐹𝑥 ) − 1 ) , ( 𝐹𝑦 ) ) ) ) )
ramub1.1 ( 𝜑𝐺 : 𝑅 ⟶ ℕ0 )
ramub1.2 ( 𝜑 → ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 )
Assertion ramub1 ( 𝜑 → ( 𝑀 Ramsey 𝐹 ) ≤ ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) )

Proof

Step Hyp Ref Expression
1 ramub1.m ( 𝜑𝑀 ∈ ℕ )
2 ramub1.r ( 𝜑𝑅 ∈ Fin )
3 ramub1.f ( 𝜑𝐹 : 𝑅 ⟶ ℕ )
4 ramub1.g 𝐺 = ( 𝑥𝑅 ↦ ( 𝑀 Ramsey ( 𝑦𝑅 ↦ if ( 𝑦 = 𝑥 , ( ( 𝐹𝑥 ) − 1 ) , ( 𝐹𝑦 ) ) ) ) )
5 ramub1.1 ( 𝜑𝐺 : 𝑅 ⟶ ℕ0 )
6 ramub1.2 ( 𝜑 → ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 )
7 eqid ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) = ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } )
8 1 nnnn0d ( 𝜑𝑀 ∈ ℕ0 )
9 nnssnn0 ℕ ⊆ ℕ0
10 fss ( ( 𝐹 : 𝑅 ⟶ ℕ ∧ ℕ ⊆ ℕ0 ) → 𝐹 : 𝑅 ⟶ ℕ0 )
11 3 9 10 sylancl ( 𝜑𝐹 : 𝑅 ⟶ ℕ0 )
12 peano2nn0 ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 → ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∈ ℕ0 )
13 6 12 syl ( 𝜑 → ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∈ ℕ0 )
14 simprl ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) )
15 6 adantr ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 )
16 nn0p1nn ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 → ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∈ ℕ )
17 15 16 syl ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∈ ℕ )
18 14 17 eqeltrd ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ♯ ‘ 𝑠 ) ∈ ℕ )
19 18 nnnn0d ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ♯ ‘ 𝑠 ) ∈ ℕ0 )
20 hashclb ( 𝑠 ∈ V → ( 𝑠 ∈ Fin ↔ ( ♯ ‘ 𝑠 ) ∈ ℕ0 ) )
21 20 elv ( 𝑠 ∈ Fin ↔ ( ♯ ‘ 𝑠 ) ∈ ℕ0 )
22 19 21 sylibr ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → 𝑠 ∈ Fin )
23 hashnncl ( 𝑠 ∈ Fin → ( ( ♯ ‘ 𝑠 ) ∈ ℕ ↔ 𝑠 ≠ ∅ ) )
24 22 23 syl ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ( ♯ ‘ 𝑠 ) ∈ ℕ ↔ 𝑠 ≠ ∅ ) )
25 18 24 mpbid ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → 𝑠 ≠ ∅ )
26 n0 ( 𝑠 ≠ ∅ ↔ ∃ 𝑤 𝑤𝑠 )
27 25 26 sylib ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ∃ 𝑤 𝑤𝑠 )
28 1 adantr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝑀 ∈ ℕ )
29 2 adantr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝑅 ∈ Fin )
30 3 adantr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝐹 : 𝑅 ⟶ ℕ )
31 5 adantr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝐺 : 𝑅 ⟶ ℕ0 )
32 6 adantr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → ( ( 𝑀 − 1 ) Ramsey 𝐺 ) ∈ ℕ0 )
33 22 adantrr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝑠 ∈ Fin )
34 simprll ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) )
35 simprlr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 )
36 simprr ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → 𝑤𝑠 )
37 uneq1 ( 𝑣 = 𝑢 → ( 𝑣 ∪ { 𝑤 } ) = ( 𝑢 ∪ { 𝑤 } ) )
38 37 fveq2d ( 𝑣 = 𝑢 → ( 𝑓 ‘ ( 𝑣 ∪ { 𝑤 } ) ) = ( 𝑓 ‘ ( 𝑢 ∪ { 𝑤 } ) ) )
39 38 cbvmptv ( 𝑣 ∈ ( ( 𝑠 ∖ { 𝑤 } ) ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) ( 𝑀 − 1 ) ) ↦ ( 𝑓 ‘ ( 𝑣 ∪ { 𝑤 } ) ) ) = ( 𝑢 ∈ ( ( 𝑠 ∖ { 𝑤 } ) ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) ( 𝑀 − 1 ) ) ↦ ( 𝑓 ‘ ( 𝑢 ∪ { 𝑤 } ) ) )
40 28 29 30 4 31 32 7 33 34 35 36 39 ramub1lem2 ( ( 𝜑 ∧ ( ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ∧ 𝑤𝑠 ) ) → ∃ 𝑐𝑅𝑧 ∈ 𝒫 𝑠 ( ( 𝐹𝑐 ) ≤ ( ♯ ‘ 𝑧 ) ∧ ( 𝑧 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⊆ ( 𝑓 “ { 𝑐 } ) ) )
41 40 expr ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( 𝑤𝑠 → ∃ 𝑐𝑅𝑧 ∈ 𝒫 𝑠 ( ( 𝐹𝑐 ) ≤ ( ♯ ‘ 𝑧 ) ∧ ( 𝑧 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⊆ ( 𝑓 “ { 𝑐 } ) ) ) )
42 41 exlimdv ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ( ∃ 𝑤 𝑤𝑠 → ∃ 𝑐𝑅𝑧 ∈ 𝒫 𝑠 ( ( 𝐹𝑐 ) ≤ ( ♯ ‘ 𝑧 ) ∧ ( 𝑧 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⊆ ( 𝑓 “ { 𝑐 } ) ) ) )
43 27 42 mpd ( ( 𝜑 ∧ ( ( ♯ ‘ 𝑠 ) = ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) ∧ 𝑓 : ( 𝑠 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⟶ 𝑅 ) ) → ∃ 𝑐𝑅𝑧 ∈ 𝒫 𝑠 ( ( 𝐹𝑐 ) ≤ ( ♯ ‘ 𝑧 ) ∧ ( 𝑧 ( 𝑎 ∈ V , 𝑖 ∈ ℕ0 ↦ { 𝑏 ∈ 𝒫 𝑎 ∣ ( ♯ ‘ 𝑏 ) = 𝑖 } ) 𝑀 ) ⊆ ( 𝑓 “ { 𝑐 } ) ) )
44 7 8 2 11 13 43 ramub2 ( 𝜑 → ( 𝑀 Ramsey 𝐹 ) ≤ ( ( ( 𝑀 − 1 ) Ramsey 𝐺 ) + 1 ) )