Metamath Proof Explorer


Theorem divalgmod

Description: The result of the mod operator satisfies the requirements for the remainder R in the division algorithm for a positive divisor (compare divalg2 and divalgb ). This demonstration theorem justifies the use of mod to yield an explicit remainder from this point forward. (Contributed by Paul Chapman, 31-Mar-2011) (Revised by AV, 21-Aug-2021)

Ref Expression
Assertion divalgmod NDR=NmodDR0R<DDNR

Proof

Step Hyp Ref Expression
1 ovex NmodDV
2 1 snid NmodDNmodD
3 eleq1 R=NmodDRNmodDNmodDNmodD
4 2 3 mpbiri R=NmodDRNmodD
5 elsni RNmodDR=NmodD
6 4 5 impbii R=NmodDRNmodD
7 zre NN
8 nnrp DD+
9 modlt ND+NmodD<D
10 7 8 9 syl2an NDNmodD<D
11 nnre DD
12 nnne0 DD0
13 redivcl NDD0ND
14 7 11 12 13 syl3an NDDND
15 14 3anidm23 NDND
16 15 flcld NDND
17 nnz DD
18 17 adantl NDD
19 zmodcl NDNmodD0
20 19 nn0zd NDNmodD
21 zsubcl NNmodDNNmodD
22 20 21 syldan NDNNmodD
23 nncn DD
24 23 adantl NDD
25 16 zcnd NDND
26 24 25 mulcomd NDDND=NDD
27 modval ND+NmodD=NDND
28 7 8 27 syl2an NDNmodD=NDND
29 19 nn0cnd NDNmodD
30 zmulcl DNDDND
31 17 16 30 syl2an2 NDDND
32 31 zcnd NDDND
33 zcn NN
34 33 adantr NDN
35 29 32 34 subexsub NDNmodD=NDNDDND=NNmodD
36 28 35 mpbid NDDND=NNmodD
37 26 36 eqtr3d NDNDD=NNmodD
38 dvds0lem NDDNNmodDNDD=NNmodDDNNmodD
39 16 18 22 37 38 syl31anc NDDNNmodD
40 divalg2 ND∃!z0z<DDNz
41 breq1 z=NmodDz<DNmodD<D
42 oveq2 z=NmodDNz=NNmodD
43 42 breq2d z=NmodDDNzDNNmodD
44 41 43 anbi12d z=NmodDz<DDNzNmodD<DDNNmodD
45 44 riota2 NmodD0∃!z0z<DDNzNmodD<DDNNmodDιz0|z<DDNz=NmodD
46 19 40 45 syl2anc NDNmodD<DDNNmodDιz0|z<DDNz=NmodD
47 10 39 46 mpbi2and NDιz0|z<DDNz=NmodD
48 47 eqcomd NDNmodD=ιz0|z<DDNz
49 48 sneqd NDNmodD=ιz0|z<DDNz
50 snriota ∃!z0z<DDNzz0|z<DDNz=ιz0|z<DDNz
51 40 50 syl NDz0|z<DDNz=ιz0|z<DDNz
52 49 51 eqtr4d NDNmodD=z0|z<DDNz
53 52 eleq2d NDRNmodDRz0|z<DDNz
54 6 53 bitrid NDR=NmodDRz0|z<DDNz
55 breq1 z=Rz<DR<D
56 oveq2 z=RNz=NR
57 56 breq2d z=RDNzDNR
58 55 57 anbi12d z=Rz<DDNzR<DDNR
59 58 elrab Rz0|z<DDNzR0R<DDNR
60 54 59 bitrdi NDR=NmodDR0R<DDNR