Metamath Proof Explorer


Theorem remexz

Description: Division with rest. (Contributed by metakunt, 15-May-2025)

Ref Expression
Hypotheses remexz.1 ( 𝜑𝑁 ∈ ℤ )
remexz.2 ( 𝜑𝐴 ∈ ℕ )
Assertion remexz ( 𝜑 → ∃ 𝑥 ∈ ℤ ∃ 𝑦 ∈ ( 0 ... ( 𝐴 − 1 ) ) 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) )

Proof

Step Hyp Ref Expression
1 remexz.1 ( 𝜑𝑁 ∈ ℤ )
2 remexz.2 ( 𝜑𝐴 ∈ ℕ )
3 zmodfzo ( ( 𝑁 ∈ ℤ ∧ 𝐴 ∈ ℕ ) → ( 𝑁 mod 𝐴 ) ∈ ( 0 ..^ 𝐴 ) )
4 1 2 3 syl2anc ( 𝜑 → ( 𝑁 mod 𝐴 ) ∈ ( 0 ..^ 𝐴 ) )
5 2 nnzd ( 𝜑𝐴 ∈ ℤ )
6 fzoval ( 𝐴 ∈ ℤ → ( 0 ..^ 𝐴 ) = ( 0 ... ( 𝐴 − 1 ) ) )
7 5 6 syl ( 𝜑 → ( 0 ..^ 𝐴 ) = ( 0 ... ( 𝐴 − 1 ) ) )
8 4 7 eleqtrd ( 𝜑 → ( 𝑁 mod 𝐴 ) ∈ ( 0 ... ( 𝐴 − 1 ) ) )
9 simpr ( ( 𝜑𝑦 = ( 𝑁 mod 𝐴 ) ) → 𝑦 = ( 𝑁 mod 𝐴 ) )
10 9 oveq2d ( ( 𝜑𝑦 = ( 𝑁 mod 𝐴 ) ) → ( ( 𝑥 · 𝐴 ) + 𝑦 ) = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) )
11 10 eqeq2d ( ( 𝜑𝑦 = ( 𝑁 mod 𝐴 ) ) → ( 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) ↔ 𝑁 = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) ) )
12 11 rexbidv ( ( 𝜑𝑦 = ( 𝑁 mod 𝐴 ) ) → ( ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) ↔ ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) ) )
13 eqidd ( 𝜑 → ( 𝑁 mod 𝐴 ) = ( 𝑁 mod 𝐴 ) )
14 2 nnrpd ( 𝜑𝐴 ∈ ℝ+ )
15 modmuladdim ( ( 𝑁 ∈ ℤ ∧ 𝐴 ∈ ℝ+ ) → ( ( 𝑁 mod 𝐴 ) = ( 𝑁 mod 𝐴 ) → ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) ) )
16 1 14 15 syl2anc ( 𝜑 → ( ( 𝑁 mod 𝐴 ) = ( 𝑁 mod 𝐴 ) → ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) ) )
17 13 16 mpd ( 𝜑 → ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + ( 𝑁 mod 𝐴 ) ) )
18 8 12 17 rspcedvd ( 𝜑 → ∃ 𝑦 ∈ ( 0 ... ( 𝐴 − 1 ) ) ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) )
19 rexcom ( ∃ 𝑥 ∈ ℤ ∃ 𝑦 ∈ ( 0 ... ( 𝐴 − 1 ) ) 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) ↔ ∃ 𝑦 ∈ ( 0 ... ( 𝐴 − 1 ) ) ∃ 𝑥 ∈ ℤ 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) )
20 18 19 sylibr ( 𝜑 → ∃ 𝑥 ∈ ℤ ∃ 𝑦 ∈ ( 0 ... ( 𝐴 − 1 ) ) 𝑁 = ( ( 𝑥 · 𝐴 ) + 𝑦 ) )