I came across some transformation modulo p, while solving MIT algorithms course assignment, that I couldn't get. We have n bits long binary number A. I have a value of x1 mod p (p - random prime number in [2, n^2]), where x1 is m (m < n) bits long binary number, which includes bits A[0, m-1]. Now, I want to find a value of x2 mod p, where x2 is m long binary number, which includes bits A[1, m].
I in the solution I found the following transformation:
A[1, m] = 2(A[0, m-1]- 2^(m-1)) + A[m]
Taking both sides of this equation modulo p, we get
A[1, m] mod p = ( 2 ( (A[0, m-1] mod p) - (2^(m-1) mod p) ) + A[m] ) mod p
Regarding this transformation, I have a doubt, is this right to do the following:
(2(a - b) + c) mod p = (2 (a mod p - b mod p) + c) mod p ?
What laws allow to do that?