Metamath Proof Explorer


Theorem divalgb

Description: Express the division algorithm as stated in divalg in terms of || . (Contributed by Paul Chapman, 31-Mar-2011)

Ref Expression
Assertion divalgb
|- ( ( N e. ZZ /\ D e. ZZ /\ D =/= 0 ) -> ( E! r e. ZZ E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> E! r e. NN0 ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )

Proof

Step Hyp Ref Expression
1 zsubcl
 |-  ( ( N e. ZZ /\ r e. ZZ ) -> ( N - r ) e. ZZ )
2 divides
 |-  ( ( D e. ZZ /\ ( N - r ) e. ZZ ) -> ( D || ( N - r ) <-> E. q e. ZZ ( q x. D ) = ( N - r ) ) )
3 1 2 sylan2
 |-  ( ( D e. ZZ /\ ( N e. ZZ /\ r e. ZZ ) ) -> ( D || ( N - r ) <-> E. q e. ZZ ( q x. D ) = ( N - r ) ) )
4 3 3impb
 |-  ( ( D e. ZZ /\ N e. ZZ /\ r e. ZZ ) -> ( D || ( N - r ) <-> E. q e. ZZ ( q x. D ) = ( N - r ) ) )
5 4 3com12
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( D || ( N - r ) <-> E. q e. ZZ ( q x. D ) = ( N - r ) ) )
6 zcn
 |-  ( N e. ZZ -> N e. CC )
7 zcn
 |-  ( r e. ZZ -> r e. CC )
8 zmulcl
 |-  ( ( q e. ZZ /\ D e. ZZ ) -> ( q x. D ) e. ZZ )
9 8 zcnd
 |-  ( ( q e. ZZ /\ D e. ZZ ) -> ( q x. D ) e. CC )
10 subadd
 |-  ( ( N e. CC /\ r e. CC /\ ( q x. D ) e. CC ) -> ( ( N - r ) = ( q x. D ) <-> ( r + ( q x. D ) ) = N ) )
11 6 7 9 10 syl3an
 |-  ( ( N e. ZZ /\ r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( ( N - r ) = ( q x. D ) <-> ( r + ( q x. D ) ) = N ) )
12 addcom
 |-  ( ( r e. CC /\ ( q x. D ) e. CC ) -> ( r + ( q x. D ) ) = ( ( q x. D ) + r ) )
13 7 9 12 syl2an
 |-  ( ( r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( r + ( q x. D ) ) = ( ( q x. D ) + r ) )
14 13 3adant1
 |-  ( ( N e. ZZ /\ r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( r + ( q x. D ) ) = ( ( q x. D ) + r ) )
15 14 eqeq1d
 |-  ( ( N e. ZZ /\ r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( ( r + ( q x. D ) ) = N <-> ( ( q x. D ) + r ) = N ) )
16 11 15 bitrd
 |-  ( ( N e. ZZ /\ r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( ( N - r ) = ( q x. D ) <-> ( ( q x. D ) + r ) = N ) )
17 eqcom
 |-  ( ( N - r ) = ( q x. D ) <-> ( q x. D ) = ( N - r ) )
18 eqcom
 |-  ( ( ( q x. D ) + r ) = N <-> N = ( ( q x. D ) + r ) )
19 16 17 18 3bitr3g
 |-  ( ( N e. ZZ /\ r e. ZZ /\ ( q e. ZZ /\ D e. ZZ ) ) -> ( ( q x. D ) = ( N - r ) <-> N = ( ( q x. D ) + r ) ) )
20 19 3expia
 |-  ( ( N e. ZZ /\ r e. ZZ ) -> ( ( q e. ZZ /\ D e. ZZ ) -> ( ( q x. D ) = ( N - r ) <-> N = ( ( q x. D ) + r ) ) ) )
21 20 expcomd
 |-  ( ( N e. ZZ /\ r e. ZZ ) -> ( D e. ZZ -> ( q e. ZZ -> ( ( q x. D ) = ( N - r ) <-> N = ( ( q x. D ) + r ) ) ) ) )
22 21 3impia
 |-  ( ( N e. ZZ /\ r e. ZZ /\ D e. ZZ ) -> ( q e. ZZ -> ( ( q x. D ) = ( N - r ) <-> N = ( ( q x. D ) + r ) ) ) )
23 22 imp
 |-  ( ( ( N e. ZZ /\ r e. ZZ /\ D e. ZZ ) /\ q e. ZZ ) -> ( ( q x. D ) = ( N - r ) <-> N = ( ( q x. D ) + r ) ) )
24 23 rexbidva
 |-  ( ( N e. ZZ /\ r e. ZZ /\ D e. ZZ ) -> ( E. q e. ZZ ( q x. D ) = ( N - r ) <-> E. q e. ZZ N = ( ( q x. D ) + r ) ) )
25 24 3com23
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( E. q e. ZZ ( q x. D ) = ( N - r ) <-> E. q e. ZZ N = ( ( q x. D ) + r ) ) )
26 5 25 bitrd
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( D || ( N - r ) <-> E. q e. ZZ N = ( ( q x. D ) + r ) ) )
27 26 anbi2d
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ D || ( N - r ) ) <-> ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ E. q e. ZZ N = ( ( q x. D ) + r ) ) ) )
28 df-3an
 |-  ( ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ N = ( ( q x. D ) + r ) ) )
29 28 rexbii
 |-  ( E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> E. q e. ZZ ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ N = ( ( q x. D ) + r ) ) )
30 r19.42v
 |-  ( E. q e. ZZ ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ N = ( ( q x. D ) + r ) ) <-> ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ E. q e. ZZ N = ( ( q x. D ) + r ) ) )
31 29 30 bitri
 |-  ( E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ E. q e. ZZ N = ( ( q x. D ) + r ) ) )
32 27 31 syl6rbbr
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ D || ( N - r ) ) ) )
33 anass
 |-  ( ( ( 0 <_ r /\ r < ( abs ` D ) ) /\ D || ( N - r ) ) <-> ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )
34 32 33 syl6bb
 |-  ( ( N e. ZZ /\ D e. ZZ /\ r e. ZZ ) -> ( E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
35 34 3expa
 |-  ( ( ( N e. ZZ /\ D e. ZZ ) /\ r e. ZZ ) -> ( E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
36 35 reubidva
 |-  ( ( N e. ZZ /\ D e. ZZ ) -> ( E! r e. ZZ E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> E! r e. ZZ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
37 elnn0z
 |-  ( r e. NN0 <-> ( r e. ZZ /\ 0 <_ r ) )
38 37 anbi1i
 |-  ( ( r e. NN0 /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> ( ( r e. ZZ /\ 0 <_ r ) /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )
39 anass
 |-  ( ( ( r e. ZZ /\ 0 <_ r ) /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> ( r e. ZZ /\ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
40 38 39 bitri
 |-  ( ( r e. NN0 /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> ( r e. ZZ /\ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
41 40 eubii
 |-  ( E! r ( r e. NN0 /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> E! r ( r e. ZZ /\ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
42 df-reu
 |-  ( E! r e. NN0 ( r < ( abs ` D ) /\ D || ( N - r ) ) <-> E! r ( r e. NN0 /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )
43 df-reu
 |-  ( E! r e. ZZ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> E! r ( r e. ZZ /\ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) ) )
44 41 42 43 3bitr4ri
 |-  ( E! r e. ZZ ( 0 <_ r /\ ( r < ( abs ` D ) /\ D || ( N - r ) ) ) <-> E! r e. NN0 ( r < ( abs ` D ) /\ D || ( N - r ) ) )
45 36 44 syl6bb
 |-  ( ( N e. ZZ /\ D e. ZZ ) -> ( E! r e. ZZ E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> E! r e. NN0 ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )
46 45 3adant3
 |-  ( ( N e. ZZ /\ D e. ZZ /\ D =/= 0 ) -> ( E! r e. ZZ E. q e. ZZ ( 0 <_ r /\ r < ( abs ` D ) /\ N = ( ( q x. D ) + r ) ) <-> E! r e. NN0 ( r < ( abs ` D ) /\ D || ( N - r ) ) ) )