Metamath Proof Explorer


Theorem prmdiv

Description: Show an explicit expression for the modular inverse of A mod P . (Contributed by Mario Carneiro, 24-Jan-2015)

Ref Expression
Hypothesis prmdiv.1 R = A P 2 mod P
Assertion prmdiv P A ¬ P A R 1 P 1 P A R 1

Proof

Step Hyp Ref Expression
1 prmdiv.1 R = A P 2 mod P
2 nprmdvds1 P ¬ P 1
3 2 3ad2ant1 P A ¬ P A ¬ P 1
4 prmz P P
5 4 3ad2ant1 P A ¬ P A P
6 prmnn P P
7 6 3ad2ant1 P A ¬ P A P
8 simp2 P A ¬ P A A
9 gcdcom A P A gcd P = P gcd A
10 8 5 9 syl2anc P A ¬ P A A gcd P = P gcd A
11 coprm P A ¬ P A P gcd A = 1
12 11 biimp3a P A ¬ P A P gcd A = 1
13 10 12 eqtrd P A ¬ P A A gcd P = 1
14 eulerth P A A gcd P = 1 A ϕ P mod P = 1 mod P
15 7 8 13 14 syl3anc P A ¬ P A A ϕ P mod P = 1 mod P
16 phiprm P ϕ P = P 1
17 16 3ad2ant1 P A ¬ P A ϕ P = P 1
18 nnm1nn0 P P 1 0
19 7 18 syl P A ¬ P A P 1 0
20 17 19 eqeltrd P A ¬ P A ϕ P 0
21 zexpcl A ϕ P 0 A ϕ P
22 8 20 21 syl2anc P A ¬ P A A ϕ P
23 1zzd P A ¬ P A 1
24 moddvds P A ϕ P 1 A ϕ P mod P = 1 mod P P A ϕ P 1
25 7 22 23 24 syl3anc P A ¬ P A A ϕ P mod P = 1 mod P P A ϕ P 1
26 15 25 mpbid P A ¬ P A P A ϕ P 1
27 prmuz2 P P 2
28 27 3ad2ant1 P A ¬ P A P 2
29 uznn0sub P 2 P 2 0
30 28 29 syl P A ¬ P A P 2 0
31 zexpcl A P 2 0 A P 2
32 8 30 31 syl2anc P A ¬ P A A P 2
33 32 zred P A ¬ P A A P 2
34 33 7 nndivred P A ¬ P A A P 2 P
35 34 flcld P A ¬ P A A P 2 P
36 8 35 zmulcld P A ¬ P A A A P 2 P
37 dvdsmul1 P A A P 2 P P P A A P 2 P
38 5 36 37 syl2anc P A ¬ P A P P A A P 2 P
39 1z 1
40 zsubcl A ϕ P 1 A ϕ P 1
41 22 39 40 sylancl P A ¬ P A A ϕ P 1
42 5 36 zmulcld P A ¬ P A P A A P 2 P
43 5 26 38 41 42 dvds2subd P A ¬ P A P A ϕ P - 1 - P A A P 2 P
44 8 zcnd P A ¬ P A A
45 32 zcnd P A ¬ P A A P 2
46 5 35 zmulcld P A ¬ P A P A P 2 P
47 46 zcnd P A ¬ P A P A P 2 P
48 44 45 47 subdid P A ¬ P A A A P 2 P A P 2 P = A A P 2 A P A P 2 P
49 7 nnrpd P A ¬ P A P +
50 modval A P 2 P + A P 2 mod P = A P 2 P A P 2 P
51 33 49 50 syl2anc P A ¬ P A A P 2 mod P = A P 2 P A P 2 P
52 1 51 syl5eq P A ¬ P A R = A P 2 P A P 2 P
53 52 oveq2d P A ¬ P A A R = A A P 2 P A P 2 P
54 2m1e1 2 1 = 1
55 54 oveq2i P 2 1 = P 1
56 17 55 syl6eqr P A ¬ P A ϕ P = P 2 1
57 7 nncnd P A ¬ P A P
58 2cnd P A ¬ P A 2
59 1cnd P A ¬ P A 1
60 57 58 59 subsubd P A ¬ P A P 2 1 = P - 2 + 1
61 56 60 eqtrd P A ¬ P A ϕ P = P - 2 + 1
62 61 oveq2d P A ¬ P A A ϕ P = A P - 2 + 1
63 44 30 expp1d P A ¬ P A A P - 2 + 1 = A P 2 A
64 45 44 mulcomd P A ¬ P A A P 2 A = A A P 2
65 62 63 64 3eqtrd P A ¬ P A A ϕ P = A A P 2
66 35 zcnd P A ¬ P A A P 2 P
67 57 44 66 mul12d P A ¬ P A P A A P 2 P = A P A P 2 P
68 65 67 oveq12d P A ¬ P A A ϕ P P A A P 2 P = A A P 2 A P A P 2 P
69 48 53 68 3eqtr4d P A ¬ P A A R = A ϕ P P A A P 2 P
70 69 oveq1d P A ¬ P A A R 1 = A ϕ P - P A A P 2 P - 1
71 22 zcnd P A ¬ P A A ϕ P
72 42 zcnd P A ¬ P A P A A P 2 P
73 71 72 59 sub32d P A ¬ P A A ϕ P - P A A P 2 P - 1 = A ϕ P - 1 - P A A P 2 P
74 70 73 eqtrd P A ¬ P A A R 1 = A ϕ P - 1 - P A A P 2 P
75 43 74 breqtrrd P A ¬ P A P A R 1
76 oveq2 R = 0 A R = A 0
77 76 oveq1d R = 0 A R 1 = A 0 1
78 77 breq2d R = 0 P A R 1 P A 0 1
79 75 78 syl5ibcom P A ¬ P A R = 0 P A 0 1
80 44 mul01d P A ¬ P A A 0 = 0
81 80 oveq1d P A ¬ P A A 0 1 = 0 1
82 df-neg 1 = 0 1
83 81 82 syl6eqr P A ¬ P A A 0 1 = 1
84 83 breq2d P A ¬ P A P A 0 1 P -1
85 dvdsnegb P 1 P 1 P -1
86 5 39 85 sylancl P A ¬ P A P 1 P -1
87 84 86 bitr4d P A ¬ P A P A 0 1 P 1
88 79 87 sylibd P A ¬ P A R = 0 P 1
89 3 88 mtod P A ¬ P A ¬ R = 0
90 zmodfz A P 2 P A P 2 mod P 0 P 1
91 32 7 90 syl2anc P A ¬ P A A P 2 mod P 0 P 1
92 1 91 eqeltrid P A ¬ P A R 0 P 1
93 nn0uz 0 = 0
94 19 93 eleqtrdi P A ¬ P A P 1 0
95 elfzp12 P 1 0 R 0 P 1 R = 0 R 0 + 1 P 1
96 94 95 syl P A ¬ P A R 0 P 1 R = 0 R 0 + 1 P 1
97 92 96 mpbid P A ¬ P A R = 0 R 0 + 1 P 1
98 97 ord P A ¬ P A ¬ R = 0 R 0 + 1 P 1
99 89 98 mpd P A ¬ P A R 0 + 1 P 1
100 1e0p1 1 = 0 + 1
101 100 oveq1i 1 P 1 = 0 + 1 P 1
102 99 101 eleqtrrdi P A ¬ P A R 1 P 1
103 102 75 jca P A ¬ P A R 1 P 1 P A R 1