Metamath Proof Explorer


Theorem 0ramcl

Description: Lemma for ramcl : Existence of the Ramsey number when M = 0 . (Contributed by Mario Carneiro, 23-Apr-2015)

Ref Expression
Assertion 0ramcl ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )

Proof

Step Hyp Ref Expression
1 ffn ( 𝐹 : 𝑅 ⟶ ℕ0𝐹 Fn 𝑅 )
2 dffn4 ( 𝐹 Fn 𝑅𝐹 : 𝑅onto→ ran 𝐹 )
3 1 2 sylib ( 𝐹 : 𝑅 ⟶ ℕ0𝐹 : 𝑅onto→ ran 𝐹 )
4 3 ad2antlr ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → 𝐹 : 𝑅onto→ ran 𝐹 )
5 foeq2 ( 𝑅 = ∅ → ( 𝐹 : 𝑅onto→ ran 𝐹𝐹 : ∅ –onto→ ran 𝐹 ) )
6 5 adantl ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → ( 𝐹 : 𝑅onto→ ran 𝐹𝐹 : ∅ –onto→ ran 𝐹 ) )
7 4 6 mpbid ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → 𝐹 : ∅ –onto→ ran 𝐹 )
8 fo00 ( 𝐹 : ∅ –onto→ ran 𝐹 ↔ ( 𝐹 = ∅ ∧ ran 𝐹 = ∅ ) )
9 8 simplbi ( 𝐹 : ∅ –onto→ ran 𝐹𝐹 = ∅ )
10 7 9 syl ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → 𝐹 = ∅ )
11 10 oveq2d ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → ( 0 Ramsey 𝐹 ) = ( 0 Ramsey ∅ ) )
12 0nn0 0 ∈ ℕ0
13 ram0 ( 0 ∈ ℕ0 → ( 0 Ramsey ∅ ) = 0 )
14 12 13 ax-mp ( 0 Ramsey ∅ ) = 0
15 14 12 eqeltri ( 0 Ramsey ∅ ) ∈ ℕ0
16 11 15 eqeltrdi ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 = ∅ ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )
17 0ram2 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ( 0 Ramsey 𝐹 ) = sup ( ran 𝐹 , ℝ , < ) )
18 frn ( 𝐹 : 𝑅 ⟶ ℕ0 → ran 𝐹 ⊆ ℕ0 )
19 18 3ad2ant3 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ran 𝐹 ⊆ ℕ0 )
20 nn0ssz 0 ⊆ ℤ
21 19 20 sstrdi ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ran 𝐹 ⊆ ℤ )
22 fdm ( 𝐹 : 𝑅 ⟶ ℕ0 → dom 𝐹 = 𝑅 )
23 22 3ad2ant3 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → dom 𝐹 = 𝑅 )
24 simp2 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → 𝑅 ≠ ∅ )
25 23 24 eqnetrd ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → dom 𝐹 ≠ ∅ )
26 dm0rn0 ( dom 𝐹 = ∅ ↔ ran 𝐹 = ∅ )
27 26 necon3bii ( dom 𝐹 ≠ ∅ ↔ ran 𝐹 ≠ ∅ )
28 25 27 sylib ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ran 𝐹 ≠ ∅ )
29 nn0ssre 0 ⊆ ℝ
30 19 29 sstrdi ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ran 𝐹 ⊆ ℝ )
31 simp1 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → 𝑅 ∈ Fin )
32 3 3ad2ant3 ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → 𝐹 : 𝑅onto→ ran 𝐹 )
33 fofi ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅onto→ ran 𝐹 ) → ran 𝐹 ∈ Fin )
34 31 32 33 syl2anc ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ran 𝐹 ∈ Fin )
35 fimaxre ( ( ran 𝐹 ⊆ ℝ ∧ ran 𝐹 ∈ Fin ∧ ran 𝐹 ≠ ∅ ) → ∃ 𝑥 ∈ ran 𝐹𝑦 ∈ ran 𝐹 𝑦𝑥 )
36 30 34 28 35 syl3anc ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ∃ 𝑥 ∈ ran 𝐹𝑦 ∈ ran 𝐹 𝑦𝑥 )
37 ssrexv ( ran 𝐹 ⊆ ℤ → ( ∃ 𝑥 ∈ ran 𝐹𝑦 ∈ ran 𝐹 𝑦𝑥 → ∃ 𝑥 ∈ ℤ ∀ 𝑦 ∈ ran 𝐹 𝑦𝑥 ) )
38 21 36 37 sylc ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ∃ 𝑥 ∈ ℤ ∀ 𝑦 ∈ ran 𝐹 𝑦𝑥 )
39 suprzcl2 ( ( ran 𝐹 ⊆ ℤ ∧ ran 𝐹 ≠ ∅ ∧ ∃ 𝑥 ∈ ℤ ∀ 𝑦 ∈ ran 𝐹 𝑦𝑥 ) → sup ( ran 𝐹 , ℝ , < ) ∈ ran 𝐹 )
40 21 28 38 39 syl3anc ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → sup ( ran 𝐹 , ℝ , < ) ∈ ran 𝐹 )
41 19 40 sseldd ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → sup ( ran 𝐹 , ℝ , < ) ∈ ℕ0 )
42 17 41 eqeltrd ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )
43 42 3expa ( ( ( 𝑅 ∈ Fin ∧ 𝑅 ≠ ∅ ) ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )
44 43 an32s ( ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) ∧ 𝑅 ≠ ∅ ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )
45 16 44 pm2.61dane ( ( 𝑅 ∈ Fin ∧ 𝐹 : 𝑅 ⟶ ℕ0 ) → ( 0 Ramsey 𝐹 ) ∈ ℕ0 )