Metamath Proof Explorer


Theorem modaddmodup

Description: The sum of an integer modulo a positive integer and another integer minus the positive integer equals the sum of the two integers modulo the positive integer if the other integer is in the upper part of the range between 0 and the positive integer. (Contributed by AV, 30-Oct-2018)

Ref Expression
Assertion modaddmodup ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) = ( ( 𝐵 + 𝐴 ) mod 𝑀 ) ) )

Proof

Step Hyp Ref Expression
1 elfzoelz ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → 𝐵 ∈ ℤ )
2 1 zred ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → 𝐵 ∈ ℝ )
3 2 adantr ( ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → 𝐵 ∈ ℝ )
4 zmodcl ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐴 mod 𝑀 ) ∈ ℕ0 )
5 4 nn0red ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐴 mod 𝑀 ) ∈ ℝ )
6 5 adantl ( ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( 𝐴 mod 𝑀 ) ∈ ℝ )
7 3 6 readdcld ( ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∈ ℝ )
8 7 ancoms ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∈ ℝ )
9 nnrp ( 𝑀 ∈ ℕ → 𝑀 ∈ ℝ+ )
10 9 ad2antlr ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → 𝑀 ∈ ℝ+ )
11 elfzo2 ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ↔ ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) ∧ 𝑀 ∈ ℤ ∧ 𝐵 < 𝑀 ) )
12 eluz2 ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) ↔ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ∈ ℤ ∧ 𝐵 ∈ ℤ ∧ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ≤ 𝐵 ) )
13 nnre ( 𝑀 ∈ ℕ → 𝑀 ∈ ℝ )
14 13 adantl ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ∈ ℝ )
15 14 adantl ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → 𝑀 ∈ ℝ )
16 5 adantl ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( 𝐴 mod 𝑀 ) ∈ ℝ )
17 zre ( 𝐵 ∈ ℤ → 𝐵 ∈ ℝ )
18 17 adantr ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → 𝐵 ∈ ℝ )
19 15 16 18 lesubaddd ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ≤ 𝐵𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
20 19 biimpd ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ≤ 𝐵𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
21 20 impancom ( ( 𝐵 ∈ ℤ ∧ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ≤ 𝐵 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
22 21 3adant1 ( ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ∈ ℤ ∧ 𝐵 ∈ ℤ ∧ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ≤ 𝐵 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
23 12 22 sylbi ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
24 23 3ad2ant1 ( ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) ∧ 𝑀 ∈ ℤ ∧ 𝐵 < 𝑀 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
25 11 24 sylbi ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ) )
26 25 impcom ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) )
27 eluzelz ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) → 𝐵 ∈ ℤ )
28 17 5 anim12i ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( 𝐵 ∈ ℝ ∧ ( 𝐴 mod 𝑀 ) ∈ ℝ ) )
29 13 13 jca ( 𝑀 ∈ ℕ → ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) )
30 29 adantl ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) )
31 30 adantl ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) )
32 28 31 jca ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) → ( ( 𝐵 ∈ ℝ ∧ ( 𝐴 mod 𝑀 ) ∈ ℝ ) ∧ ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) ) )
33 32 adantr ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( ( 𝐵 ∈ ℝ ∧ ( 𝐴 mod 𝑀 ) ∈ ℝ ) ∧ ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) ) )
34 simpr ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → 𝐵 < 𝑀 )
35 zre ( 𝐴 ∈ ℤ → 𝐴 ∈ ℝ )
36 modlt ( ( 𝐴 ∈ ℝ ∧ 𝑀 ∈ ℝ+ ) → ( 𝐴 mod 𝑀 ) < 𝑀 )
37 35 9 36 syl2an ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐴 mod 𝑀 ) < 𝑀 )
38 5 14 37 ltled ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐴 mod 𝑀 ) ≤ 𝑀 )
39 38 ad2antlr ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( 𝐴 mod 𝑀 ) ≤ 𝑀 )
40 34 39 jca ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( 𝐵 < 𝑀 ∧ ( 𝐴 mod 𝑀 ) ≤ 𝑀 ) )
41 ltleadd ( ( ( 𝐵 ∈ ℝ ∧ ( 𝐴 mod 𝑀 ) ∈ ℝ ) ∧ ( 𝑀 ∈ ℝ ∧ 𝑀 ∈ ℝ ) ) → ( ( 𝐵 < 𝑀 ∧ ( 𝐴 mod 𝑀 ) ≤ 𝑀 ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 𝑀 + 𝑀 ) ) )
42 33 40 41 sylc ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 𝑀 + 𝑀 ) )
43 nncn ( 𝑀 ∈ ℕ → 𝑀 ∈ ℂ )
44 43 2timesd ( 𝑀 ∈ ℕ → ( 2 · 𝑀 ) = ( 𝑀 + 𝑀 ) )
45 44 adantl ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 2 · 𝑀 ) = ( 𝑀 + 𝑀 ) )
46 45 ad2antlr ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( 2 · 𝑀 ) = ( 𝑀 + 𝑀 ) )
47 42 46 breqtrrd ( ( ( 𝐵 ∈ ℤ ∧ ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ) ∧ 𝐵 < 𝑀 ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) )
48 47 exp31 ( 𝐵 ∈ ℤ → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 < 𝑀 → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) ) )
49 48 com23 ( 𝐵 ∈ ℤ → ( 𝐵 < 𝑀 → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) ) )
50 27 49 syl ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) → ( 𝐵 < 𝑀 → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) ) )
51 50 imp ( ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) ∧ 𝐵 < 𝑀 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) )
52 51 3adant2 ( ( 𝐵 ∈ ( ℤ ‘ ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ) ∧ 𝑀 ∈ ℤ ∧ 𝐵 < 𝑀 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) )
53 11 52 sylbi ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) )
54 53 impcom ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) )
55 2submod ( ( ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∈ ℝ ∧ 𝑀 ∈ ℝ+ ) ∧ ( 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∧ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) mod 𝑀 ) = ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) )
56 55 eqcomd ( ( ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∈ ℝ ∧ 𝑀 ∈ ℝ+ ) ∧ ( 𝑀 ≤ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) ∧ ( 𝐵 + ( 𝐴 mod 𝑀 ) ) < ( 2 · 𝑀 ) ) ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) = ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) mod 𝑀 ) )
57 8 10 26 54 56 syl22anc ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) = ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) mod 𝑀 ) )
58 35 adantr ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → 𝐴 ∈ ℝ )
59 58 adantr ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → 𝐴 ∈ ℝ )
60 2 adantl ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → 𝐵 ∈ ℝ )
61 modadd2mod ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝑀 ∈ ℝ+ ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) mod 𝑀 ) = ( ( 𝐵 + 𝐴 ) mod 𝑀 ) )
62 59 60 10 61 syl3anc ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) mod 𝑀 ) = ( ( 𝐵 + 𝐴 ) mod 𝑀 ) )
63 57 62 eqtrd ( ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) ∧ 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) = ( ( 𝐵 + 𝐴 ) mod 𝑀 ) )
64 63 ex ( ( 𝐴 ∈ ℤ ∧ 𝑀 ∈ ℕ ) → ( 𝐵 ∈ ( ( 𝑀 − ( 𝐴 mod 𝑀 ) ) ..^ 𝑀 ) → ( ( 𝐵 + ( 𝐴 mod 𝑀 ) ) − 𝑀 ) = ( ( 𝐵 + 𝐴 ) mod 𝑀 ) ) )