Step | Hyp | Ref | Expression |
1 |
|
mod01 |
0 % c = 0 |
2 |
|
div0 |
a // 0 = 0 |
3 |
|
diveq2 |
b = 0 -> a // b = a // 0 |
4 |
2, 3 |
syl6eq |
b = 0 -> a // b = 0 |
5 |
4 |
modeq1d |
b = 0 -> a // b % c = 0 % c |
6 |
1, 5 |
syl6eq |
b = 0 -> a // b % c = 0 |
7 |
|
div0 |
a % (b * c) // 0 = 0 |
8 |
|
diveq2 |
b = 0 -> a % (b * c) // b = a % (b * c) // 0 |
9 |
7, 8 |
syl6eq |
b = 0 -> a % (b * c) // b = 0 |
10 |
6, 9 |
eqtr4d |
b = 0 -> a // b % c = a % (b * c) // b |
11 |
|
mod0 |
a // b % 0 = a // b |
12 |
|
modeq2 |
c = 0 -> a // b % c = a // b % 0 |
13 |
11, 12 |
syl6eq |
c = 0 -> a // b % c = a // b |
14 |
|
mod0 |
a % 0 = a |
15 |
|
mul02 |
b * 0 = 0 |
16 |
|
muleq2 |
c = 0 -> b * c = b * 0 |
17 |
15, 16 |
syl6eq |
c = 0 -> b * c = 0 |
18 |
17 |
modeq2d |
c = 0 -> a % (b * c) = a % 0 |
19 |
14, 18 |
syl6eq |
c = 0 -> a % (b * c) = a |
20 |
19 |
diveq1d |
c = 0 -> a % (b * c) // b = a // b |
21 |
13, 20 |
eqtr4d |
c = 0 -> a // b % c = a % (b * c) // b |
22 |
21 |
anwr |
~b = 0 /\ c = 0 -> a // b % c = a % (b * c) // b |
23 |
|
divltmul1 |
b != 0 -> (a % (b * c) // b < c <-> a % (b * c) < b * c) |
24 |
23 |
conv ne |
~b = 0 -> (a % (b * c) // b < c <-> a % (b * c) < b * c) |
25 |
24 |
anwl |
~b = 0 /\ ~c = 0 -> (a % (b * c) // b < c <-> a % (b * c) < b * c) |
26 |
|
mulne0 |
b * c != 0 <-> b != 0 /\ c != 0 |
27 |
26 |
conv ne |
b * c != 0 <-> ~b = 0 /\ ~c = 0 |
28 |
|
modlt |
b * c != 0 -> a % (b * c) < b * c |
29 |
27, 28 |
sylbir |
~b = 0 /\ ~c = 0 -> a % (b * c) < b * c |
30 |
25, 29 |
mpbird |
~b = 0 /\ ~c = 0 -> a % (b * c) // b < c |
31 |
|
modlt |
b != 0 -> a % (b * c) % b < b |
32 |
31 |
conv ne |
~b = 0 -> a % (b * c) % b < b |
33 |
32 |
anwl |
~b = 0 /\ ~c = 0 -> a % (b * c) % b < b |
34 |
|
eqtr |
b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b ->
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = a ->
b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = a |
35 |
|
addeq1 |
b * (c * (a // (b * c)) + a % (b * c) // b) = b * (c * (a // (b * c))) + b * (a % (b * c) // b) ->
b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b |
36 |
|
muladd |
b * (c * (a // (b * c)) + a % (b * c) // b) = b * (c * (a // (b * c))) + b * (a % (b * c) // b) |
37 |
35, 36 |
ax_mp |
b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b |
38 |
34, 37 |
ax_mp |
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = a -> b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = a |
39 |
|
eqtr |
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) ->
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = a ->
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = a |
40 |
|
addass |
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) |
41 |
39, 40 |
ax_mp |
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = a -> b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = a |
42 |
|
eqtr |
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = b * (c * (a // (b * c))) + a % (b * c) ->
b * (c * (a // (b * c))) + a % (b * c) = a ->
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = a |
43 |
|
addeq2 |
b * (a % (b * c) // b) + a % (b * c) % b = a % (b * c) ->
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = b * (c * (a // (b * c))) + a % (b * c) |
44 |
|
divmod |
b * (a % (b * c) // b) + a % (b * c) % b = a % (b * c) |
45 |
43, 44 |
ax_mp |
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = b * (c * (a // (b * c))) + a % (b * c) |
46 |
42, 45 |
ax_mp |
b * (c * (a // (b * c))) + a % (b * c) = a -> b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = a |
47 |
|
eqtr3 |
b * c * (a // (b * c)) + a % (b * c) = b * (c * (a // (b * c))) + a % (b * c) ->
b * c * (a // (b * c)) + a % (b * c) = a ->
b * (c * (a // (b * c))) + a % (b * c) = a |
48 |
|
addeq1 |
b * c * (a // (b * c)) = b * (c * (a // (b * c))) -> b * c * (a // (b * c)) + a % (b * c) = b * (c * (a // (b * c))) + a % (b * c) |
49 |
|
mulass |
b * c * (a // (b * c)) = b * (c * (a // (b * c))) |
50 |
48, 49 |
ax_mp |
b * c * (a // (b * c)) + a % (b * c) = b * (c * (a // (b * c))) + a % (b * c) |
51 |
47, 50 |
ax_mp |
b * c * (a // (b * c)) + a % (b * c) = a -> b * (c * (a // (b * c))) + a % (b * c) = a |
52 |
|
divmod |
b * c * (a // (b * c)) + a % (b * c) = a |
53 |
51, 52 |
ax_mp |
b * (c * (a // (b * c))) + a % (b * c) = a |
54 |
46, 53 |
ax_mp |
b * (c * (a // (b * c))) + (b * (a % (b * c) // b) + a % (b * c) % b) = a |
55 |
41, 54 |
ax_mp |
b * (c * (a // (b * c))) + b * (a % (b * c) // b) + a % (b * c) % b = a |
56 |
38, 55 |
ax_mp |
b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = a |
57 |
56 |
a1i |
~b = 0 /\ ~c = 0 -> b * (c * (a // (b * c)) + a % (b * c) // b) + a % (b * c) % b = a |
58 |
33, 57 |
eqdivmod |
~b = 0 /\ ~c = 0 -> a // b = c * (a // (b * c)) + a % (b * c) // b /\ a % b = a % (b * c) % b |
59 |
58 |
anld |
~b = 0 /\ ~c = 0 -> a // b = c * (a // (b * c)) + a % (b * c) // b |
60 |
59 |
eqcomd |
~b = 0 /\ ~c = 0 -> c * (a // (b * c)) + a % (b * c) // b = a // b |
61 |
30, 60 |
eqdivmod |
~b = 0 /\ ~c = 0 -> a // b // c = a // (b * c) /\ a // b % c = a % (b * c) // b |
62 |
61 |
anrd |
~b = 0 /\ ~c = 0 -> a // b % c = a % (b * c) // b |
63 |
22, 62 |
casesda |
~b = 0 -> a // b % c = a % (b * c) // b |
64 |
10, 63 |
cases |
a // b % c = a % (b * c) // b |