Metamath Proof Explorer


Theorem dvdsflf1o

Description: A bijection from the numbers less than N / A to the multiples of A less than N . Useful for some sum manipulations. (Contributed by Mario Carneiro, 3-May-2016)

Ref Expression
Hypotheses dvdsflf1o.1 ( 𝜑𝐴 ∈ ℝ )
dvdsflf1o.2 ( 𝜑𝑁 ∈ ℕ )
dvdsflf1o.f 𝐹 = ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↦ ( 𝑁 · 𝑛 ) )
Assertion dvdsflf1o ( 𝜑𝐹 : ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) –1-1-onto→ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } )

Proof

Step Hyp Ref Expression
1 dvdsflf1o.1 ( 𝜑𝐴 ∈ ℝ )
2 dvdsflf1o.2 ( 𝜑𝑁 ∈ ℕ )
3 dvdsflf1o.f 𝐹 = ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↦ ( 𝑁 · 𝑛 ) )
4 breq2 ( 𝑥 = ( 𝑁 · 𝑛 ) → ( 𝑁𝑥𝑁 ∥ ( 𝑁 · 𝑛 ) ) )
5 elfznn ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) → 𝑛 ∈ ℕ )
6 nnmulcl ( ( 𝑁 ∈ ℕ ∧ 𝑛 ∈ ℕ ) → ( 𝑁 · 𝑛 ) ∈ ℕ )
7 2 5 6 syl2an ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ∈ ℕ )
8 1 2 nndivred ( 𝜑 → ( 𝐴 / 𝑁 ) ∈ ℝ )
9 fznnfl ( ( 𝐴 / 𝑁 ) ∈ ℝ → ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↔ ( 𝑛 ∈ ℕ ∧ 𝑛 ≤ ( 𝐴 / 𝑁 ) ) ) )
10 8 9 syl ( 𝜑 → ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↔ ( 𝑛 ∈ ℕ ∧ 𝑛 ≤ ( 𝐴 / 𝑁 ) ) ) )
11 10 simplbda ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑛 ≤ ( 𝐴 / 𝑁 ) )
12 5 adantl ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑛 ∈ ℕ )
13 12 nnred ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑛 ∈ ℝ )
14 1 adantr ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝐴 ∈ ℝ )
15 2 nnred ( 𝜑𝑁 ∈ ℝ )
16 15 adantr ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑁 ∈ ℝ )
17 2 nngt0d ( 𝜑 → 0 < 𝑁 )
18 17 adantr ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 0 < 𝑁 )
19 lemuldiv2 ( ( 𝑛 ∈ ℝ ∧ 𝐴 ∈ ℝ ∧ ( 𝑁 ∈ ℝ ∧ 0 < 𝑁 ) ) → ( ( 𝑁 · 𝑛 ) ≤ 𝐴𝑛 ≤ ( 𝐴 / 𝑁 ) ) )
20 13 14 16 18 19 syl112anc ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( ( 𝑁 · 𝑛 ) ≤ 𝐴𝑛 ≤ ( 𝐴 / 𝑁 ) ) )
21 11 20 mpbird ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ≤ 𝐴 )
22 2 nnzd ( 𝜑𝑁 ∈ ℤ )
23 elfzelz ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) → 𝑛 ∈ ℤ )
24 zmulcl ( ( 𝑁 ∈ ℤ ∧ 𝑛 ∈ ℤ ) → ( 𝑁 · 𝑛 ) ∈ ℤ )
25 22 23 24 syl2an ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ∈ ℤ )
26 flge ( ( 𝐴 ∈ ℝ ∧ ( 𝑁 · 𝑛 ) ∈ ℤ ) → ( ( 𝑁 · 𝑛 ) ≤ 𝐴 ↔ ( 𝑁 · 𝑛 ) ≤ ( ⌊ ‘ 𝐴 ) ) )
27 14 25 26 syl2anc ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( ( 𝑁 · 𝑛 ) ≤ 𝐴 ↔ ( 𝑁 · 𝑛 ) ≤ ( ⌊ ‘ 𝐴 ) ) )
28 21 27 mpbid ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ≤ ( ⌊ ‘ 𝐴 ) )
29 1 flcld ( 𝜑 → ( ⌊ ‘ 𝐴 ) ∈ ℤ )
30 29 adantr ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( ⌊ ‘ 𝐴 ) ∈ ℤ )
31 fznn ( ( ⌊ ‘ 𝐴 ) ∈ ℤ → ( ( 𝑁 · 𝑛 ) ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ↔ ( ( 𝑁 · 𝑛 ) ∈ ℕ ∧ ( 𝑁 · 𝑛 ) ≤ ( ⌊ ‘ 𝐴 ) ) ) )
32 30 31 syl ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( ( 𝑁 · 𝑛 ) ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ↔ ( ( 𝑁 · 𝑛 ) ∈ ℕ ∧ ( 𝑁 · 𝑛 ) ≤ ( ⌊ ‘ 𝐴 ) ) ) )
33 7 28 32 mpbir2and ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) )
34 dvdsmul1 ( ( 𝑁 ∈ ℤ ∧ 𝑛 ∈ ℤ ) → 𝑁 ∥ ( 𝑁 · 𝑛 ) )
35 22 23 34 syl2an ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑁 ∥ ( 𝑁 · 𝑛 ) )
36 4 33 35 elrabd ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → ( 𝑁 · 𝑛 ) ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } )
37 breq2 ( 𝑥 = 𝑚 → ( 𝑁𝑥𝑁𝑚 ) )
38 37 elrab ( 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ↔ ( 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∧ 𝑁𝑚 ) )
39 38 simprbi ( 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } → 𝑁𝑚 )
40 39 adantl ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑁𝑚 )
41 elrabi ( 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } → 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) )
42 41 adantl ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) )
43 elfznn ( 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) → 𝑚 ∈ ℕ )
44 42 43 syl ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑚 ∈ ℕ )
45 2 adantr ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑁 ∈ ℕ )
46 nndivdvds ( ( 𝑚 ∈ ℕ ∧ 𝑁 ∈ ℕ ) → ( 𝑁𝑚 ↔ ( 𝑚 / 𝑁 ) ∈ ℕ ) )
47 44 45 46 syl2anc ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝑁𝑚 ↔ ( 𝑚 / 𝑁 ) ∈ ℕ ) )
48 40 47 mpbid ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝑚 / 𝑁 ) ∈ ℕ )
49 fznnfl ( 𝐴 ∈ ℝ → ( 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ↔ ( 𝑚 ∈ ℕ ∧ 𝑚𝐴 ) ) )
50 1 49 syl ( 𝜑 → ( 𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ↔ ( 𝑚 ∈ ℕ ∧ 𝑚𝐴 ) ) )
51 50 simplbda ( ( 𝜑𝑚 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ) → 𝑚𝐴 )
52 41 51 sylan2 ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑚𝐴 )
53 44 nnred ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑚 ∈ ℝ )
54 1 adantr ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝐴 ∈ ℝ )
55 15 adantr ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑁 ∈ ℝ )
56 17 adantr ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 0 < 𝑁 )
57 lediv1 ( ( 𝑚 ∈ ℝ ∧ 𝐴 ∈ ℝ ∧ ( 𝑁 ∈ ℝ ∧ 0 < 𝑁 ) ) → ( 𝑚𝐴 ↔ ( 𝑚 / 𝑁 ) ≤ ( 𝐴 / 𝑁 ) ) )
58 53 54 55 56 57 syl112anc ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝑚𝐴 ↔ ( 𝑚 / 𝑁 ) ≤ ( 𝐴 / 𝑁 ) ) )
59 52 58 mpbid ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝑚 / 𝑁 ) ≤ ( 𝐴 / 𝑁 ) )
60 8 adantr ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝐴 / 𝑁 ) ∈ ℝ )
61 fznnfl ( ( 𝐴 / 𝑁 ) ∈ ℝ → ( ( 𝑚 / 𝑁 ) ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↔ ( ( 𝑚 / 𝑁 ) ∈ ℕ ∧ ( 𝑚 / 𝑁 ) ≤ ( 𝐴 / 𝑁 ) ) ) )
62 60 61 syl ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( ( 𝑚 / 𝑁 ) ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ↔ ( ( 𝑚 / 𝑁 ) ∈ ℕ ∧ ( 𝑚 / 𝑁 ) ≤ ( 𝐴 / 𝑁 ) ) ) )
63 48 59 62 mpbir2and ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → ( 𝑚 / 𝑁 ) ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) )
64 44 nncnd ( ( 𝜑𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) → 𝑚 ∈ ℂ )
65 64 adantrl ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → 𝑚 ∈ ℂ )
66 2 nncnd ( 𝜑𝑁 ∈ ℂ )
67 66 adantr ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → 𝑁 ∈ ℂ )
68 12 nncnd ( ( 𝜑𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ) → 𝑛 ∈ ℂ )
69 68 adantrr ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → 𝑛 ∈ ℂ )
70 2 nnne0d ( 𝜑𝑁 ≠ 0 )
71 70 adantr ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → 𝑁 ≠ 0 )
72 65 67 69 71 divmuld ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → ( ( 𝑚 / 𝑁 ) = 𝑛 ↔ ( 𝑁 · 𝑛 ) = 𝑚 ) )
73 eqcom ( 𝑛 = ( 𝑚 / 𝑁 ) ↔ ( 𝑚 / 𝑁 ) = 𝑛 )
74 eqcom ( 𝑚 = ( 𝑁 · 𝑛 ) ↔ ( 𝑁 · 𝑛 ) = 𝑚 )
75 72 73 74 3bitr4g ( ( 𝜑 ∧ ( 𝑛 ∈ ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) ∧ 𝑚 ∈ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } ) ) → ( 𝑛 = ( 𝑚 / 𝑁 ) ↔ 𝑚 = ( 𝑁 · 𝑛 ) ) )
76 3 36 63 75 f1o2d ( 𝜑𝐹 : ( 1 ... ( ⌊ ‘ ( 𝐴 / 𝑁 ) ) ) –1-1-onto→ { 𝑥 ∈ ( 1 ... ( ⌊ ‘ 𝐴 ) ) ∣ 𝑁𝑥 } )