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=AP2modP
Assertion prmdiv PA¬PAR1P1PAR1

Proof

Step Hyp Ref Expression
1 prmdiv.1 R=AP2modP
2 nprmdvds1 P¬P1
3 2 3ad2ant1 PA¬PA¬P1
4 prmz PP
5 4 3ad2ant1 PA¬PAP
6 simp2 PA¬PAA
7 phiprm PϕP=P1
8 7 3ad2ant1 PA¬PAϕP=P1
9 prmnn PP
10 9 3ad2ant1 PA¬PAP
11 nnm1nn0 PP10
12 10 11 syl PA¬PAP10
13 8 12 eqeltrd PA¬PAϕP0
14 zexpcl AϕP0AϕP
15 6 13 14 syl2anc PA¬PAAϕP
16 1z 1
17 zsubcl AϕP1AϕP1
18 15 16 17 sylancl PA¬PAAϕP1
19 prmuz2 PP2
20 19 3ad2ant1 PA¬PAP2
21 uznn0sub P2P20
22 20 21 syl PA¬PAP20
23 zexpcl AP20AP2
24 6 22 23 syl2anc PA¬PAAP2
25 24 zred PA¬PAAP2
26 25 10 nndivred PA¬PAAP2P
27 26 flcld PA¬PAAP2P
28 6 27 zmulcld PA¬PAAAP2P
29 5 28 zmulcld PA¬PAPAAP2P
30 6 5 gcdcomd PA¬PAAgcdP=PgcdA
31 coprm PA¬PAPgcdA=1
32 31 biimp3a PA¬PAPgcdA=1
33 30 32 eqtrd PA¬PAAgcdP=1
34 eulerth PAAgcdP=1AϕPmodP=1modP
35 10 6 33 34 syl3anc PA¬PAAϕPmodP=1modP
36 1zzd PA¬PA1
37 moddvds PAϕP1AϕPmodP=1modPPAϕP1
38 10 15 36 37 syl3anc PA¬PAAϕPmodP=1modPPAϕP1
39 35 38 mpbid PA¬PAPAϕP1
40 dvdsmul1 PAAP2PPPAAP2P
41 5 28 40 syl2anc PA¬PAPPAAP2P
42 5 18 29 39 41 dvds2subd PA¬PAPAϕP-1-PAAP2P
43 6 zcnd PA¬PAA
44 24 zcnd PA¬PAAP2
45 5 27 zmulcld PA¬PAPAP2P
46 45 zcnd PA¬PAPAP2P
47 43 44 46 subdid PA¬PAAAP2PAP2P=AAP2APAP2P
48 10 nnrpd PA¬PAP+
49 modval AP2P+AP2modP=AP2PAP2P
50 25 48 49 syl2anc PA¬PAAP2modP=AP2PAP2P
51 1 50 eqtrid PA¬PAR=AP2PAP2P
52 51 oveq2d PA¬PAAR=AAP2PAP2P
53 2m1e1 21=1
54 53 oveq2i P21=P1
55 8 54 eqtr4di PA¬PAϕP=P21
56 10 nncnd PA¬PAP
57 2cnd PA¬PA2
58 1cnd PA¬PA1
59 56 57 58 subsubd PA¬PAP21=P-2+1
60 55 59 eqtrd PA¬PAϕP=P-2+1
61 60 oveq2d PA¬PAAϕP=AP-2+1
62 43 22 expp1d PA¬PAAP-2+1=AP2A
63 44 43 mulcomd PA¬PAAP2A=AAP2
64 61 62 63 3eqtrd PA¬PAAϕP=AAP2
65 27 zcnd PA¬PAAP2P
66 56 43 65 mul12d PA¬PAPAAP2P=APAP2P
67 64 66 oveq12d PA¬PAAϕPPAAP2P=AAP2APAP2P
68 47 52 67 3eqtr4d PA¬PAAR=AϕPPAAP2P
69 68 oveq1d PA¬PAAR1=AϕP-PAAP2P-1
70 15 zcnd PA¬PAAϕP
71 29 zcnd PA¬PAPAAP2P
72 70 71 58 sub32d PA¬PAAϕP-PAAP2P-1=AϕP-1-PAAP2P
73 69 72 eqtrd PA¬PAAR1=AϕP-1-PAAP2P
74 42 73 breqtrrd PA¬PAPAR1
75 oveq2 R=0AR=A0
76 75 oveq1d R=0AR1=A01
77 76 breq2d R=0PAR1PA01
78 74 77 syl5ibcom PA¬PAR=0PA01
79 43 mul01d PA¬PAA0=0
80 79 oveq1d PA¬PAA01=01
81 df-neg 1=01
82 80 81 eqtr4di PA¬PAA01=1
83 82 breq2d PA¬PAPA01P-1
84 dvdsnegb P1P1P-1
85 5 16 84 sylancl PA¬PAP1P-1
86 83 85 bitr4d PA¬PAPA01P1
87 78 86 sylibd PA¬PAR=0P1
88 3 87 mtod PA¬PA¬R=0
89 zmodfz AP2PAP2modP0P1
90 24 10 89 syl2anc PA¬PAAP2modP0P1
91 1 90 eqeltrid PA¬PAR0P1
92 nn0uz 0=0
93 12 92 eleqtrdi PA¬PAP10
94 elfzp12 P10R0P1R=0R0+1P1
95 93 94 syl PA¬PAR0P1R=0R0+1P1
96 91 95 mpbid PA¬PAR=0R0+1P1
97 96 ord PA¬PA¬R=0R0+1P1
98 88 97 mpd PA¬PAR0+1P1
99 1e0p1 1=0+1
100 99 oveq1i 1P1=0+1P1
101 98 100 eleqtrrdi PA¬PAR1P1
102 101 74 jca PA¬PAR1P1PAR1