Metamath Proof Explorer


Theorem modsubdir

Description: Distribute the modulo operation over a subtraction. (Contributed by NM, 30-Dec-2008)

Ref Expression
Assertion modsubdir ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐵 mod 𝐶 ) ≤ ( 𝐴 mod 𝐶 ) ↔ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) )

Proof

Step Hyp Ref Expression
1 modcl ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) ∈ ℝ )
2 1 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) ∈ ℝ )
3 modcl ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐵 mod 𝐶 ) ∈ ℝ )
4 3 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐵 mod 𝐶 ) ∈ ℝ )
5 2 4 subge0d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ↔ ( 𝐵 mod 𝐶 ) ≤ ( 𝐴 mod 𝐶 ) ) )
6 resubcl ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 𝐴𝐵 ) ∈ ℝ )
7 6 3adant3 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴𝐵 ) ∈ ℝ )
8 simp3 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐶 ∈ ℝ+ )
9 rerpdivcl ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 / 𝐶 ) ∈ ℝ )
10 9 flcld ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ∈ ℤ )
11 10 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ∈ ℤ )
12 rerpdivcl ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐵 / 𝐶 ) ∈ ℝ )
13 12 flcld ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ∈ ℤ )
14 13 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ∈ ℤ )
15 11 14 zsubcld ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ∈ ℤ )
16 modcyc2 ( ( ( 𝐴𝐵 ) ∈ ℝ ∧ 𝐶 ∈ ℝ+ ∧ ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ∈ ℤ ) → ( ( ( 𝐴𝐵 ) − ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) mod 𝐶 ) = ( ( 𝐴𝐵 ) mod 𝐶 ) )
17 7 8 15 16 syl3anc ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( ( 𝐴𝐵 ) − ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) mod 𝐶 ) = ( ( 𝐴𝐵 ) mod 𝐶 ) )
18 recn ( 𝐴 ∈ ℝ → 𝐴 ∈ ℂ )
19 18 3ad2ant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐴 ∈ ℂ )
20 recn ( 𝐵 ∈ ℝ → 𝐵 ∈ ℂ )
21 20 3ad2ant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐵 ∈ ℂ )
22 rpre ( 𝐶 ∈ ℝ+𝐶 ∈ ℝ )
23 22 adantl ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐶 ∈ ℝ )
24 refldivcl ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ∈ ℝ )
25 23 24 remulcld ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ∈ ℝ )
26 25 recnd ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ∈ ℂ )
27 26 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ∈ ℂ )
28 22 adantl ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐶 ∈ ℝ )
29 refldivcl ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ∈ ℝ )
30 28 29 remulcld ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ∈ ℝ )
31 30 recnd ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ∈ ℂ )
32 31 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ∈ ℂ )
33 19 21 27 32 sub4d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴𝐵 ) − ( ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) = ( ( 𝐴 − ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ) − ( 𝐵 − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) )
34 22 3ad2ant3 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐶 ∈ ℝ )
35 34 recnd ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 𝐶 ∈ ℂ )
36 24 recnd ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ∈ ℂ )
37 36 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ∈ ℂ )
38 29 recnd ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ∈ ℂ )
39 38 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ∈ ℂ )
40 35 37 39 subdid ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) = ( ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) )
41 40 oveq2d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴𝐵 ) − ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) = ( ( 𝐴𝐵 ) − ( ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) )
42 modval ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) = ( 𝐴 − ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ) )
43 42 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) = ( 𝐴 − ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ) )
44 modval ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐵 mod 𝐶 ) = ( 𝐵 − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) )
45 44 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐵 mod 𝐶 ) = ( 𝐵 − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) )
46 43 45 oveq12d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) = ( ( 𝐴 − ( 𝐶 · ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) ) ) − ( 𝐵 − ( 𝐶 · ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) )
47 33 41 46 3eqtr4d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴𝐵 ) − ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
48 47 oveq1d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( ( 𝐴𝐵 ) − ( 𝐶 · ( ( ⌊ ‘ ( 𝐴 / 𝐶 ) ) − ( ⌊ ‘ ( 𝐵 / 𝐶 ) ) ) ) ) mod 𝐶 ) = ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) mod 𝐶 ) )
49 17 48 eqtr3d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) mod 𝐶 ) )
50 49 adantr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) mod 𝐶 ) )
51 2 4 resubcld ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ∈ ℝ )
52 51 adantr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ∈ ℝ )
53 simpl3 ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → 𝐶 ∈ ℝ+ )
54 simpr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
55 modge0 ( ( 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 0 ≤ ( 𝐵 mod 𝐶 ) )
56 55 3adant1 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 0 ≤ ( 𝐵 mod 𝐶 ) )
57 2 4 subge02d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 0 ≤ ( 𝐵 mod 𝐶 ) ↔ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ≤ ( 𝐴 mod 𝐶 ) ) )
58 56 57 mpbid ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ≤ ( 𝐴 mod 𝐶 ) )
59 modlt ( ( 𝐴 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) < 𝐶 )
60 59 3adant2 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 𝐴 mod 𝐶 ) < 𝐶 )
61 51 2 34 58 60 lelttrd ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) < 𝐶 )
62 61 adantr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) < 𝐶 )
63 modid ( ( ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ ( 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ∧ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) < 𝐶 ) ) → ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
64 52 53 54 62 63 syl22anc ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
65 50 64 eqtrd ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
66 modge0 ( ( ( 𝐴𝐵 ) ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 0 ≤ ( ( 𝐴𝐵 ) mod 𝐶 ) )
67 6 66 stoic3 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → 0 ≤ ( ( 𝐴𝐵 ) mod 𝐶 ) )
68 67 adantr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → 0 ≤ ( ( 𝐴𝐵 ) mod 𝐶 ) )
69 simpr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
70 68 69 breqtrd ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) ∧ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) → 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) )
71 65 70 impbida ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( 0 ≤ ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ↔ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) )
72 5 71 bitr3d ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐶 ∈ ℝ+ ) → ( ( 𝐵 mod 𝐶 ) ≤ ( 𝐴 mod 𝐶 ) ↔ ( ( 𝐴𝐵 ) mod 𝐶 ) = ( ( 𝐴 mod 𝐶 ) − ( 𝐵 mod 𝐶 ) ) ) )