| Step |
Hyp |
Ref |
Expression |
| 1 |
|
odf1.1 |
|- X = ( Base ` G ) |
| 2 |
|
odf1.2 |
|- O = ( od ` G ) |
| 3 |
|
odf1.3 |
|- .x. = ( .g ` G ) |
| 4 |
|
odf1.4 |
|- F = ( x e. ZZ |-> ( x .x. A ) ) |
| 5 |
|
fzfid |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( 0 ... ( ( O ` A ) - 1 ) ) e. Fin ) |
| 6 |
1 3
|
mulgcl |
|- ( ( G e. Grp /\ x e. ZZ /\ A e. X ) -> ( x .x. A ) e. X ) |
| 7 |
6
|
3expa |
|- ( ( ( G e. Grp /\ x e. ZZ ) /\ A e. X ) -> ( x .x. A ) e. X ) |
| 8 |
7
|
an32s |
|- ( ( ( G e. Grp /\ A e. X ) /\ x e. ZZ ) -> ( x .x. A ) e. X ) |
| 9 |
8
|
adantlr |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> ( x .x. A ) e. X ) |
| 10 |
9 4
|
fmptd |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> F : ZZ --> X ) |
| 11 |
|
frn |
|- ( F : ZZ --> X -> ran F C_ X ) |
| 12 |
1
|
fvexi |
|- X e. _V |
| 13 |
12
|
ssex |
|- ( ran F C_ X -> ran F e. _V ) |
| 14 |
10 11 13
|
3syl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ran F e. _V ) |
| 15 |
|
elfzelz |
|- ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) -> y e. ZZ ) |
| 16 |
15
|
adantl |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> y e. ZZ ) |
| 17 |
|
ovex |
|- ( y .x. A ) e. _V |
| 18 |
|
oveq1 |
|- ( x = y -> ( x .x. A ) = ( y .x. A ) ) |
| 19 |
4 18
|
elrnmpt1s |
|- ( ( y e. ZZ /\ ( y .x. A ) e. _V ) -> ( y .x. A ) e. ran F ) |
| 20 |
16 17 19
|
sylancl |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( y .x. A ) e. ran F ) |
| 21 |
20
|
ralrimiva |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> A. y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( y .x. A ) e. ran F ) |
| 22 |
|
zmodfz |
|- ( ( x e. ZZ /\ ( O ` A ) e. NN ) -> ( x mod ( O ` A ) ) e. ( 0 ... ( ( O ` A ) - 1 ) ) ) |
| 23 |
22
|
ancoms |
|- ( ( ( O ` A ) e. NN /\ x e. ZZ ) -> ( x mod ( O ` A ) ) e. ( 0 ... ( ( O ` A ) - 1 ) ) ) |
| 24 |
23
|
adantll |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> ( x mod ( O ` A ) ) e. ( 0 ... ( ( O ` A ) - 1 ) ) ) |
| 25 |
|
simpllr |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( O ` A ) e. NN ) |
| 26 |
|
simplr |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> x e. ZZ ) |
| 27 |
15
|
adantl |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> y e. ZZ ) |
| 28 |
|
moddvds |
|- ( ( ( O ` A ) e. NN /\ x e. ZZ /\ y e. ZZ ) -> ( ( x mod ( O ` A ) ) = ( y mod ( O ` A ) ) <-> ( O ` A ) || ( x - y ) ) ) |
| 29 |
25 26 27 28
|
syl3anc |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( ( x mod ( O ` A ) ) = ( y mod ( O ` A ) ) <-> ( O ` A ) || ( x - y ) ) ) |
| 30 |
27
|
zred |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> y e. RR ) |
| 31 |
25
|
nnrpd |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( O ` A ) e. RR+ ) |
| 32 |
|
0z |
|- 0 e. ZZ |
| 33 |
|
nnz |
|- ( ( O ` A ) e. NN -> ( O ` A ) e. ZZ ) |
| 34 |
33
|
adantl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( O ` A ) e. ZZ ) |
| 35 |
34
|
adantr |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> ( O ` A ) e. ZZ ) |
| 36 |
|
elfzm11 |
|- ( ( 0 e. ZZ /\ ( O ` A ) e. ZZ ) -> ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) <-> ( y e. ZZ /\ 0 <_ y /\ y < ( O ` A ) ) ) ) |
| 37 |
32 35 36
|
sylancr |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) <-> ( y e. ZZ /\ 0 <_ y /\ y < ( O ` A ) ) ) ) |
| 38 |
37
|
biimpa |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( y e. ZZ /\ 0 <_ y /\ y < ( O ` A ) ) ) |
| 39 |
38
|
simp2d |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> 0 <_ y ) |
| 40 |
38
|
simp3d |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> y < ( O ` A ) ) |
| 41 |
|
modid |
|- ( ( ( y e. RR /\ ( O ` A ) e. RR+ ) /\ ( 0 <_ y /\ y < ( O ` A ) ) ) -> ( y mod ( O ` A ) ) = y ) |
| 42 |
30 31 39 40 41
|
syl22anc |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( y mod ( O ` A ) ) = y ) |
| 43 |
42
|
eqeq2d |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( ( x mod ( O ` A ) ) = ( y mod ( O ` A ) ) <-> ( x mod ( O ` A ) ) = y ) ) |
| 44 |
|
eqcom |
|- ( ( x mod ( O ` A ) ) = y <-> y = ( x mod ( O ` A ) ) ) |
| 45 |
43 44
|
bitrdi |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( ( x mod ( O ` A ) ) = ( y mod ( O ` A ) ) <-> y = ( x mod ( O ` A ) ) ) ) |
| 46 |
|
simp-4l |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> G e. Grp ) |
| 47 |
|
simp-4r |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> A e. X ) |
| 48 |
|
eqid |
|- ( 0g ` G ) = ( 0g ` G ) |
| 49 |
1 2 3 48
|
odcong |
|- ( ( G e. Grp /\ A e. X /\ ( x e. ZZ /\ y e. ZZ ) ) -> ( ( O ` A ) || ( x - y ) <-> ( x .x. A ) = ( y .x. A ) ) ) |
| 50 |
46 47 26 27 49
|
syl112anc |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( ( O ` A ) || ( x - y ) <-> ( x .x. A ) = ( y .x. A ) ) ) |
| 51 |
29 45 50
|
3bitr3rd |
|- ( ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) /\ y e. ( 0 ... ( ( O ` A ) - 1 ) ) ) -> ( ( x .x. A ) = ( y .x. A ) <-> y = ( x mod ( O ` A ) ) ) ) |
| 52 |
51
|
ralrimiva |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> A. y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( ( x .x. A ) = ( y .x. A ) <-> y = ( x mod ( O ` A ) ) ) ) |
| 53 |
|
reu6i |
|- ( ( ( x mod ( O ` A ) ) e. ( 0 ... ( ( O ` A ) - 1 ) ) /\ A. y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( ( x .x. A ) = ( y .x. A ) <-> y = ( x mod ( O ` A ) ) ) ) -> E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) |
| 54 |
24 52 53
|
syl2anc |
|- ( ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) /\ x e. ZZ ) -> E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) |
| 55 |
54
|
ralrimiva |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> A. x e. ZZ E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) |
| 56 |
|
ovex |
|- ( x .x. A ) e. _V |
| 57 |
56
|
rgenw |
|- A. x e. ZZ ( x .x. A ) e. _V |
| 58 |
|
eqeq1 |
|- ( z = ( x .x. A ) -> ( z = ( y .x. A ) <-> ( x .x. A ) = ( y .x. A ) ) ) |
| 59 |
58
|
reubidv |
|- ( z = ( x .x. A ) -> ( E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) z = ( y .x. A ) <-> E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) ) |
| 60 |
4 59
|
ralrnmptw |
|- ( A. x e. ZZ ( x .x. A ) e. _V -> ( A. z e. ran F E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) z = ( y .x. A ) <-> A. x e. ZZ E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) ) |
| 61 |
57 60
|
ax-mp |
|- ( A. z e. ran F E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) z = ( y .x. A ) <-> A. x e. ZZ E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( x .x. A ) = ( y .x. A ) ) |
| 62 |
55 61
|
sylibr |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> A. z e. ran F E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) z = ( y .x. A ) ) |
| 63 |
|
eqid |
|- ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) |-> ( y .x. A ) ) = ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) |-> ( y .x. A ) ) |
| 64 |
63
|
f1ompt |
|- ( ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) |-> ( y .x. A ) ) : ( 0 ... ( ( O ` A ) - 1 ) ) -1-1-onto-> ran F <-> ( A. y e. ( 0 ... ( ( O ` A ) - 1 ) ) ( y .x. A ) e. ran F /\ A. z e. ran F E! y e. ( 0 ... ( ( O ` A ) - 1 ) ) z = ( y .x. A ) ) ) |
| 65 |
21 62 64
|
sylanbrc |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) |-> ( y .x. A ) ) : ( 0 ... ( ( O ` A ) - 1 ) ) -1-1-onto-> ran F ) |
| 66 |
|
f1oen2g |
|- ( ( ( 0 ... ( ( O ` A ) - 1 ) ) e. Fin /\ ran F e. _V /\ ( y e. ( 0 ... ( ( O ` A ) - 1 ) ) |-> ( y .x. A ) ) : ( 0 ... ( ( O ` A ) - 1 ) ) -1-1-onto-> ran F ) -> ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ran F ) |
| 67 |
5 14 65 66
|
syl3anc |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ran F ) |
| 68 |
|
enfi |
|- ( ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ran F -> ( ( 0 ... ( ( O ` A ) - 1 ) ) e. Fin <-> ran F e. Fin ) ) |
| 69 |
67 68
|
syl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( ( 0 ... ( ( O ` A ) - 1 ) ) e. Fin <-> ran F e. Fin ) ) |
| 70 |
5 69
|
mpbid |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ran F e. Fin ) |
| 71 |
70
|
iftrued |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> if ( ran F e. Fin , ( # ` ran F ) , 0 ) = ( # ` ran F ) ) |
| 72 |
|
fz01en |
|- ( ( O ` A ) e. ZZ -> ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ( 1 ... ( O ` A ) ) ) |
| 73 |
|
ensym |
|- ( ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ( 1 ... ( O ` A ) ) -> ( 1 ... ( O ` A ) ) ~~ ( 0 ... ( ( O ` A ) - 1 ) ) ) |
| 74 |
34 72 73
|
3syl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( 1 ... ( O ` A ) ) ~~ ( 0 ... ( ( O ` A ) - 1 ) ) ) |
| 75 |
|
entr |
|- ( ( ( 1 ... ( O ` A ) ) ~~ ( 0 ... ( ( O ` A ) - 1 ) ) /\ ( 0 ... ( ( O ` A ) - 1 ) ) ~~ ran F ) -> ( 1 ... ( O ` A ) ) ~~ ran F ) |
| 76 |
74 67 75
|
syl2anc |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( 1 ... ( O ` A ) ) ~~ ran F ) |
| 77 |
|
fzfid |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( 1 ... ( O ` A ) ) e. Fin ) |
| 78 |
|
hashen |
|- ( ( ( 1 ... ( O ` A ) ) e. Fin /\ ran F e. Fin ) -> ( ( # ` ( 1 ... ( O ` A ) ) ) = ( # ` ran F ) <-> ( 1 ... ( O ` A ) ) ~~ ran F ) ) |
| 79 |
77 70 78
|
syl2anc |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( ( # ` ( 1 ... ( O ` A ) ) ) = ( # ` ran F ) <-> ( 1 ... ( O ` A ) ) ~~ ran F ) ) |
| 80 |
76 79
|
mpbird |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( # ` ( 1 ... ( O ` A ) ) ) = ( # ` ran F ) ) |
| 81 |
|
nnnn0 |
|- ( ( O ` A ) e. NN -> ( O ` A ) e. NN0 ) |
| 82 |
81
|
adantl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( O ` A ) e. NN0 ) |
| 83 |
|
hashfz1 |
|- ( ( O ` A ) e. NN0 -> ( # ` ( 1 ... ( O ` A ) ) ) = ( O ` A ) ) |
| 84 |
82 83
|
syl |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( # ` ( 1 ... ( O ` A ) ) ) = ( O ` A ) ) |
| 85 |
71 80 84
|
3eqtr2rd |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) e. NN ) -> ( O ` A ) = if ( ran F e. Fin , ( # ` ran F ) , 0 ) ) |
| 86 |
|
simp3 |
|- ( ( G e. Grp /\ A e. X /\ ( O ` A ) = 0 ) -> ( O ` A ) = 0 ) |
| 87 |
1 2 3 4
|
odinf |
|- ( ( G e. Grp /\ A e. X /\ ( O ` A ) = 0 ) -> -. ran F e. Fin ) |
| 88 |
87
|
iffalsed |
|- ( ( G e. Grp /\ A e. X /\ ( O ` A ) = 0 ) -> if ( ran F e. Fin , ( # ` ran F ) , 0 ) = 0 ) |
| 89 |
86 88
|
eqtr4d |
|- ( ( G e. Grp /\ A e. X /\ ( O ` A ) = 0 ) -> ( O ` A ) = if ( ran F e. Fin , ( # ` ran F ) , 0 ) ) |
| 90 |
89
|
3expa |
|- ( ( ( G e. Grp /\ A e. X ) /\ ( O ` A ) = 0 ) -> ( O ` A ) = if ( ran F e. Fin , ( # ` ran F ) , 0 ) ) |
| 91 |
1 2
|
odcl |
|- ( A e. X -> ( O ` A ) e. NN0 ) |
| 92 |
91
|
adantl |
|- ( ( G e. Grp /\ A e. X ) -> ( O ` A ) e. NN0 ) |
| 93 |
|
elnn0 |
|- ( ( O ` A ) e. NN0 <-> ( ( O ` A ) e. NN \/ ( O ` A ) = 0 ) ) |
| 94 |
92 93
|
sylib |
|- ( ( G e. Grp /\ A e. X ) -> ( ( O ` A ) e. NN \/ ( O ` A ) = 0 ) ) |
| 95 |
85 90 94
|
mpjaodan |
|- ( ( G e. Grp /\ A e. X ) -> ( O ` A ) = if ( ran F e. Fin , ( # ` ran F ) , 0 ) ) |