| Step |
Hyp |
Ref |
Expression |
| 1 |
|
prmoval |
|- ( N e. NN0 -> ( #p ` N ) = prod_ k e. ( 1 ... N ) if ( k e. Prime , k , 1 ) ) |
| 2 |
|
eqidd |
|- ( k e. ( 1 ... N ) -> ( m e. NN |-> if ( m e. Prime , m , 1 ) ) = ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ) |
| 3 |
|
simpr |
|- ( ( k e. ( 1 ... N ) /\ m = k ) -> m = k ) |
| 4 |
3
|
eleq1d |
|- ( ( k e. ( 1 ... N ) /\ m = k ) -> ( m e. Prime <-> k e. Prime ) ) |
| 5 |
4 3
|
ifbieq1d |
|- ( ( k e. ( 1 ... N ) /\ m = k ) -> if ( m e. Prime , m , 1 ) = if ( k e. Prime , k , 1 ) ) |
| 6 |
|
elfznn |
|- ( k e. ( 1 ... N ) -> k e. NN ) |
| 7 |
|
1nn |
|- 1 e. NN |
| 8 |
7
|
a1i |
|- ( k e. ( 1 ... N ) -> 1 e. NN ) |
| 9 |
6 8
|
ifcld |
|- ( k e. ( 1 ... N ) -> if ( k e. Prime , k , 1 ) e. NN ) |
| 10 |
2 5 6 9
|
fvmptd |
|- ( k e. ( 1 ... N ) -> ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) = if ( k e. Prime , k , 1 ) ) |
| 11 |
10
|
eqcomd |
|- ( k e. ( 1 ... N ) -> if ( k e. Prime , k , 1 ) = ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) ) |
| 12 |
11
|
prodeq2i |
|- prod_ k e. ( 1 ... N ) if ( k e. Prime , k , 1 ) = prod_ k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) |
| 13 |
1 12
|
eqtrdi |
|- ( N e. NN0 -> ( #p ` N ) = prod_ k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) ) |
| 14 |
|
fzfid |
|- ( N e. NN0 -> ( 1 ... N ) e. Fin ) |
| 15 |
|
fz1ssnn |
|- ( 1 ... N ) C_ NN |
| 16 |
14 15
|
jctil |
|- ( N e. NN0 -> ( ( 1 ... N ) C_ NN /\ ( 1 ... N ) e. Fin ) ) |
| 17 |
|
fzssz |
|- ( 1 ... N ) C_ ZZ |
| 18 |
17
|
a1i |
|- ( N e. NN0 -> ( 1 ... N ) C_ ZZ ) |
| 19 |
|
0nelfz1 |
|- 0 e/ ( 1 ... N ) |
| 20 |
19
|
a1i |
|- ( N e. NN0 -> 0 e/ ( 1 ... N ) ) |
| 21 |
|
lcmfn0cl |
|- ( ( ( 1 ... N ) C_ ZZ /\ ( 1 ... N ) e. Fin /\ 0 e/ ( 1 ... N ) ) -> ( _lcm ` ( 1 ... N ) ) e. NN ) |
| 22 |
18 14 20 21
|
syl3anc |
|- ( N e. NN0 -> ( _lcm ` ( 1 ... N ) ) e. NN ) |
| 23 |
|
id |
|- ( m e. NN -> m e. NN ) |
| 24 |
7
|
a1i |
|- ( m e. NN -> 1 e. NN ) |
| 25 |
23 24
|
ifcld |
|- ( m e. NN -> if ( m e. Prime , m , 1 ) e. NN ) |
| 26 |
25
|
adantl |
|- ( ( N e. NN0 /\ m e. NN ) -> if ( m e. Prime , m , 1 ) e. NN ) |
| 27 |
26
|
fmpttd |
|- ( N e. NN0 -> ( m e. NN |-> if ( m e. Prime , m , 1 ) ) : NN --> NN ) |
| 28 |
|
simpr |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> k e. ( 1 ... N ) ) |
| 29 |
28
|
adantr |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ x e. ( ( 1 ... N ) \ { k } ) ) -> k e. ( 1 ... N ) ) |
| 30 |
|
eldifi |
|- ( x e. ( ( 1 ... N ) \ { k } ) -> x e. ( 1 ... N ) ) |
| 31 |
30
|
adantl |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ x e. ( ( 1 ... N ) \ { k } ) ) -> x e. ( 1 ... N ) ) |
| 32 |
|
eldif |
|- ( x e. ( ( 1 ... N ) \ { k } ) <-> ( x e. ( 1 ... N ) /\ -. x e. { k } ) ) |
| 33 |
|
velsn |
|- ( x e. { k } <-> x = k ) |
| 34 |
33
|
biimpri |
|- ( x = k -> x e. { k } ) |
| 35 |
34
|
equcoms |
|- ( k = x -> x e. { k } ) |
| 36 |
35
|
necon3bi |
|- ( -. x e. { k } -> k =/= x ) |
| 37 |
32 36
|
simplbiim |
|- ( x e. ( ( 1 ... N ) \ { k } ) -> k =/= x ) |
| 38 |
37
|
adantl |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ x e. ( ( 1 ... N ) \ { k } ) ) -> k =/= x ) |
| 39 |
|
eqid |
|- ( m e. NN |-> if ( m e. Prime , m , 1 ) ) = ( m e. NN |-> if ( m e. Prime , m , 1 ) ) |
| 40 |
39
|
fvprmselgcd1 |
|- ( ( k e. ( 1 ... N ) /\ x e. ( 1 ... N ) /\ k =/= x ) -> ( ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) gcd ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` x ) ) = 1 ) |
| 41 |
29 31 38 40
|
syl3anc |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ x e. ( ( 1 ... N ) \ { k } ) ) -> ( ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) gcd ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` x ) ) = 1 ) |
| 42 |
41
|
ralrimiva |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> A. x e. ( ( 1 ... N ) \ { k } ) ( ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) gcd ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` x ) ) = 1 ) |
| 43 |
42
|
ralrimiva |
|- ( N e. NN0 -> A. k e. ( 1 ... N ) A. x e. ( ( 1 ... N ) \ { k } ) ( ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) gcd ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` x ) ) = 1 ) |
| 44 |
|
eqidd |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> ( m e. NN |-> if ( m e. Prime , m , 1 ) ) = ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ) |
| 45 |
|
simpr |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ m = k ) -> m = k ) |
| 46 |
45
|
eleq1d |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ m = k ) -> ( m e. Prime <-> k e. Prime ) ) |
| 47 |
46 45
|
ifbieq1d |
|- ( ( ( N e. NN0 /\ k e. ( 1 ... N ) ) /\ m = k ) -> if ( m e. Prime , m , 1 ) = if ( k e. Prime , k , 1 ) ) |
| 48 |
15 28
|
sselid |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> k e. NN ) |
| 49 |
17 28
|
sselid |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> k e. ZZ ) |
| 50 |
|
1zzd |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> 1 e. ZZ ) |
| 51 |
49 50
|
ifcld |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> if ( k e. Prime , k , 1 ) e. ZZ ) |
| 52 |
44 47 48 51
|
fvmptd |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) = if ( k e. Prime , k , 1 ) ) |
| 53 |
|
breq1 |
|- ( x = if ( k e. Prime , k , 1 ) -> ( x || ( _lcm ` ( 1 ... N ) ) <-> if ( k e. Prime , k , 1 ) || ( _lcm ` ( 1 ... N ) ) ) ) |
| 54 |
16
|
adantr |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> ( ( 1 ... N ) C_ NN /\ ( 1 ... N ) e. Fin ) ) |
| 55 |
17
|
2a1i |
|- ( ( 1 ... N ) e. Fin -> ( ( 1 ... N ) C_ NN -> ( 1 ... N ) C_ ZZ ) ) |
| 56 |
55
|
imdistanri |
|- ( ( ( 1 ... N ) C_ NN /\ ( 1 ... N ) e. Fin ) -> ( ( 1 ... N ) C_ ZZ /\ ( 1 ... N ) e. Fin ) ) |
| 57 |
|
dvdslcmf |
|- ( ( ( 1 ... N ) C_ ZZ /\ ( 1 ... N ) e. Fin ) -> A. x e. ( 1 ... N ) x || ( _lcm ` ( 1 ... N ) ) ) |
| 58 |
54 56 57
|
3syl |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> A. x e. ( 1 ... N ) x || ( _lcm ` ( 1 ... N ) ) ) |
| 59 |
|
elfzuz2 |
|- ( k e. ( 1 ... N ) -> N e. ( ZZ>= ` 1 ) ) |
| 60 |
59
|
adantl |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> N e. ( ZZ>= ` 1 ) ) |
| 61 |
|
eluzfz1 |
|- ( N e. ( ZZ>= ` 1 ) -> 1 e. ( 1 ... N ) ) |
| 62 |
60 61
|
syl |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> 1 e. ( 1 ... N ) ) |
| 63 |
28 62
|
ifcld |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> if ( k e. Prime , k , 1 ) e. ( 1 ... N ) ) |
| 64 |
53 58 63
|
rspcdva |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> if ( k e. Prime , k , 1 ) || ( _lcm ` ( 1 ... N ) ) ) |
| 65 |
52 64
|
eqbrtrd |
|- ( ( N e. NN0 /\ k e. ( 1 ... N ) ) -> ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) || ( _lcm ` ( 1 ... N ) ) ) |
| 66 |
65
|
ralrimiva |
|- ( N e. NN0 -> A. k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) || ( _lcm ` ( 1 ... N ) ) ) |
| 67 |
|
coprmproddvds |
|- ( ( ( ( 1 ... N ) C_ NN /\ ( 1 ... N ) e. Fin ) /\ ( ( _lcm ` ( 1 ... N ) ) e. NN /\ ( m e. NN |-> if ( m e. Prime , m , 1 ) ) : NN --> NN ) /\ ( A. k e. ( 1 ... N ) A. x e. ( ( 1 ... N ) \ { k } ) ( ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) gcd ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` x ) ) = 1 /\ A. k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) || ( _lcm ` ( 1 ... N ) ) ) ) -> prod_ k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) || ( _lcm ` ( 1 ... N ) ) ) |
| 68 |
16 22 27 43 66 67
|
syl122anc |
|- ( N e. NN0 -> prod_ k e. ( 1 ... N ) ( ( m e. NN |-> if ( m e. Prime , m , 1 ) ) ` k ) || ( _lcm ` ( 1 ... N ) ) ) |
| 69 |
13 68
|
eqbrtrd |
|- ( N e. NN0 -> ( #p ` N ) || ( _lcm ` ( 1 ... N ) ) ) |