Metamath Proof Explorer


Theorem pockthi

Description: Pocklington's theorem, which gives a sufficient criterion for a number N to be prime. This is the preferred method for verifying large primes, being much more efficient to compute than trial division. This form has been optimized for application to specific large primes; see pockthg for a more general closed-form version. (Contributed by Mario Carneiro, 2-Mar-2014)

Ref Expression
Hypotheses pockthi.p P
pockthi.g G
pockthi.m M=GP
pockthi.n N=M+1
pockthi.d D
pockthi.e E
pockthi.a A
pockthi.fac M=DPE
pockthi.gt D<PE
pockthi.mod AMmodN=1modN
pockthi.gcd AG1gcdN=1
Assertion pockthi N

Proof

Step Hyp Ref Expression
1 pockthi.p P
2 pockthi.g G
3 pockthi.m M=GP
4 pockthi.n N=M+1
5 pockthi.d D
6 pockthi.e E
7 pockthi.a A
8 pockthi.fac M=DPE
9 pockthi.gt D<PE
10 pockthi.mod AMmodN=1modN
11 pockthi.gcd AG1gcdN=1
12 prmnn PP
13 1 12 ax-mp P
14 6 nnnn0i E0
15 nnexpcl PE0PE
16 13 14 15 mp2an PE
17 16 a1i DPE
18 id DD
19 9 a1i DD<PE
20 5 nncni D
21 16 nncni PE
22 20 21 mulcomi DPE=PED
23 8 22 eqtri M=PED
24 23 oveq1i M+1=PED+1
25 4 24 eqtri N=PED+1
26 25 a1i DN=PED+1
27 prmdvdsexpb xPExPEx=P
28 1 6 27 mp3an23 xxPEx=P
29 2 13 nnmulcli GP
30 3 29 eqeltri M
31 30 nncni M
32 ax-1cn 1
33 31 32 4 mvrraddi N1=M
34 33 oveq2i AN1=AM
35 34 oveq1i AN1modN=AMmodN
36 peano2nn MM+1
37 30 36 ax-mp M+1
38 4 37 eqeltri N
39 38 nnrei N
40 30 nngt0i 0<M
41 30 nnrei M
42 1re 1
43 ltaddpos2 M10<M1<M+1
44 41 42 43 mp2an 0<M1<M+1
45 40 44 mpbi 1<M+1
46 45 4 breqtrri 1<N
47 1mod N1<N1modN=1
48 39 46 47 mp2an 1modN=1
49 10 48 eqtri AMmodN=1
50 35 49 eqtri AN1modN=1
51 oveq2 x=PN1x=N1P
52 2 nncni G
53 13 nncni P
54 52 53 mulcomi GP=PG
55 33 3 54 3eqtrri PG=N1
56 38 nncni N
57 56 32 subcli N1
58 13 nnne0i P0
59 57 53 52 58 divmuli N1P=GPG=N1
60 55 59 mpbir N1P=G
61 51 60 eqtrdi x=PN1x=G
62 61 oveq2d x=PAN1x=AG
63 62 oveq1d x=PAN1x1=AG1
64 63 oveq1d x=PAN1x1gcdN=AG1gcdN
65 64 11 eqtrdi x=PAN1x1gcdN=1
66 7 nnzi A
67 oveq1 y=AyN1=AN1
68 67 oveq1d y=AyN1modN=AN1modN
69 68 eqeq1d y=AyN1modN=1AN1modN=1
70 oveq1 y=AyN1x=AN1x
71 70 oveq1d y=AyN1x1=AN1x1
72 71 oveq1d y=AyN1x1gcdN=AN1x1gcdN
73 72 eqeq1d y=AyN1x1gcdN=1AN1x1gcdN=1
74 69 73 anbi12d y=AyN1modN=1yN1x1gcdN=1AN1modN=1AN1x1gcdN=1
75 74 rspcev AAN1modN=1AN1x1gcdN=1yyN1modN=1yN1x1gcdN=1
76 66 75 mpan AN1modN=1AN1x1gcdN=1yyN1modN=1yN1x1gcdN=1
77 50 65 76 sylancr x=PyyN1modN=1yN1x1gcdN=1
78 28 77 syl6bi xxPEyyN1modN=1yN1x1gcdN=1
79 78 rgen xxPEyyN1modN=1yN1x1gcdN=1
80 79 a1i DxxPEyyN1modN=1yN1x1gcdN=1
81 17 18 19 26 80 pockthg DN
82 5 81 ax-mp N