Metamath Proof Explorer


Theorem aaliou2

Description: Liouville's approximation theorem for algebraic numbers per se. (Contributed by Stefan O'Rear, 16-Nov-2014)

Ref Expression
Assertion aaliou2 ( 𝐴 ∈ ( 𝔸 ∩ ℝ ) → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )

Proof

Step Hyp Ref Expression
1 elin ( 𝐴 ∈ ( 𝔸 ∩ ℝ ) ↔ ( 𝐴 ∈ 𝔸 ∧ 𝐴 ∈ ℝ ) )
2 elaa ( 𝐴 ∈ 𝔸 ↔ ( 𝐴 ∈ ℂ ∧ ∃ 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ( 𝑎𝐴 ) = 0 ) )
3 eldifn ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) → ¬ 𝑎 ∈ { 0𝑝 } )
4 3 3ad2ant1 ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ¬ 𝑎 ∈ { 0𝑝 } )
5 simpr ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) )
6 fveq1 ( 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) → ( 𝑎𝐴 ) = ( ( ℂ × { ( 𝑎 ‘ 0 ) } ) ‘ 𝐴 ) )
7 6 adantl ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → ( 𝑎𝐴 ) = ( ( ℂ × { ( 𝑎 ‘ 0 ) } ) ‘ 𝐴 ) )
8 simpl2 ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → ( 𝑎𝐴 ) = 0 )
9 simpl3 ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝐴 ∈ ℝ )
10 9 recnd ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝐴 ∈ ℂ )
11 fvex ( 𝑎 ‘ 0 ) ∈ V
12 11 fvconst2 ( 𝐴 ∈ ℂ → ( ( ℂ × { ( 𝑎 ‘ 0 ) } ) ‘ 𝐴 ) = ( 𝑎 ‘ 0 ) )
13 10 12 syl ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → ( ( ℂ × { ( 𝑎 ‘ 0 ) } ) ‘ 𝐴 ) = ( 𝑎 ‘ 0 ) )
14 7 8 13 3eqtr3rd ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → ( 𝑎 ‘ 0 ) = 0 )
15 14 sneqd ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → { ( 𝑎 ‘ 0 ) } = { 0 } )
16 15 xpeq2d ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → ( ℂ × { ( 𝑎 ‘ 0 ) } ) = ( ℂ × { 0 } ) )
17 5 16 eqtrd ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝑎 = ( ℂ × { 0 } ) )
18 df-0p 0𝑝 = ( ℂ × { 0 } )
19 17 18 eqtr4di ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝑎 = 0𝑝 )
20 velsn ( 𝑎 ∈ { 0𝑝 } ↔ 𝑎 = 0𝑝 )
21 19 20 sylibr ( ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) ∧ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) → 𝑎 ∈ { 0𝑝 } )
22 4 21 mtand ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ¬ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) )
23 eldifi ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) → 𝑎 ∈ ( Poly ‘ ℤ ) )
24 23 3ad2ant1 ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → 𝑎 ∈ ( Poly ‘ ℤ ) )
25 0dgrb ( 𝑎 ∈ ( Poly ‘ ℤ ) → ( ( deg ‘ 𝑎 ) = 0 ↔ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) )
26 24 25 syl ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ( ( deg ‘ 𝑎 ) = 0 ↔ 𝑎 = ( ℂ × { ( 𝑎 ‘ 0 ) } ) ) )
27 22 26 mtbird ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ¬ ( deg ‘ 𝑎 ) = 0 )
28 dgrcl ( 𝑎 ∈ ( Poly ‘ ℤ ) → ( deg ‘ 𝑎 ) ∈ ℕ0 )
29 24 28 syl ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ( deg ‘ 𝑎 ) ∈ ℕ0 )
30 elnn0 ( ( deg ‘ 𝑎 ) ∈ ℕ0 ↔ ( ( deg ‘ 𝑎 ) ∈ ℕ ∨ ( deg ‘ 𝑎 ) = 0 ) )
31 29 30 sylib ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ( ( deg ‘ 𝑎 ) ∈ ℕ ∨ ( deg ‘ 𝑎 ) = 0 ) )
32 orel2 ( ¬ ( deg ‘ 𝑎 ) = 0 → ( ( ( deg ‘ 𝑎 ) ∈ ℕ ∨ ( deg ‘ 𝑎 ) = 0 ) → ( deg ‘ 𝑎 ) ∈ ℕ ) )
33 27 31 32 sylc ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ( deg ‘ 𝑎 ) ∈ ℕ )
34 eqid ( deg ‘ 𝑎 ) = ( deg ‘ 𝑎 )
35 simp3 ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → 𝐴 ∈ ℝ )
36 simp2 ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ( 𝑎𝐴 ) = 0 )
37 34 24 33 35 36 aaliou ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )
38 oveq2 ( 𝑘 = ( deg ‘ 𝑎 ) → ( 𝑞𝑘 ) = ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) )
39 38 oveq2d ( 𝑘 = ( deg ‘ 𝑎 ) → ( 𝑥 / ( 𝑞𝑘 ) ) = ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) )
40 39 breq1d ( 𝑘 = ( deg ‘ 𝑎 ) → ( ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ↔ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )
41 40 orbi2d ( 𝑘 = ( deg ‘ 𝑎 ) → ( ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ↔ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) )
42 41 2ralbidv ( 𝑘 = ( deg ‘ 𝑎 ) → ( ∀ 𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ↔ ∀ 𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) )
43 42 rexbidv ( 𝑘 = ( deg ‘ 𝑎 ) → ( ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ↔ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) )
44 43 rspcev ( ( ( deg ‘ 𝑎 ) ∈ ℕ ∧ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞 ↑ ( deg ‘ 𝑎 ) ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )
45 33 37 44 syl2anc ( ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ∧ ( 𝑎𝐴 ) = 0 ∧ 𝐴 ∈ ℝ ) → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )
46 45 3exp ( 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) → ( ( 𝑎𝐴 ) = 0 → ( 𝐴 ∈ ℝ → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) ) )
47 46 rexlimiv ( ∃ 𝑎 ∈ ( ( Poly ‘ ℤ ) ∖ { 0𝑝 } ) ( 𝑎𝐴 ) = 0 → ( 𝐴 ∈ ℝ → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) )
48 2 47 simplbiim ( 𝐴 ∈ 𝔸 → ( 𝐴 ∈ ℝ → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) ) )
49 48 imp ( ( 𝐴 ∈ 𝔸 ∧ 𝐴 ∈ ℝ ) → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )
50 1 49 sylbi ( 𝐴 ∈ ( 𝔸 ∩ ℝ ) → ∃ 𝑘 ∈ ℕ ∃ 𝑥 ∈ ℝ+𝑝 ∈ ℤ ∀ 𝑞 ∈ ℕ ( 𝐴 = ( 𝑝 / 𝑞 ) ∨ ( 𝑥 / ( 𝑞𝑘 ) ) < ( abs ‘ ( 𝐴 − ( 𝑝 / 𝑞 ) ) ) ) )