Step | Hyp | Ref
| Expression |
1 | | mulcl 7938 |
. . . 4
 
     |
2 | 1 | adantl 277 |
. . 3
 
       |
3 | | mulcom 7940 |
. . . 4
 
       |
4 | 3 | adantl 277 |
. . 3
 
         |
5 | | mulass 7942 |
. . . 4
 
           |
6 | 5 | adantl 277 |
. . 3
 
             |
7 | | prodmolem3.5 |
. . . . 5
     |
8 | 7 | simpld 112 |
. . . 4
   |
9 | | nnuz 9563 |
. . . 4
     |
10 | 8, 9 | eleqtrdi 2270 |
. . 3
       |
11 | | prodmolem3.6 |
. . . . . 6
           |
12 | | f1ocnv 5475 |
. . . . . 6
        
           |
13 | 11, 12 | syl 14 |
. . . . 5
            |
14 | | prodmolem3.7 |
. . . . 5
           |
15 | | f1oco 5485 |
. . . . 5
                     
               |
16 | 13, 14, 15 | syl2anc 411 |
. . . 4
                  |
17 | 7 | ancomd 267 |
. . . . . . 7
     |
18 | 17, 14, 11 | nnf1o 11384 |
. . . . . 6
   |
19 | 18 | oveq2d 5891 |
. . . . 5
           |
20 | 19 | f1oeq2d 5458 |
. . . 4
                                   |
21 | 16, 20 | mpbird 167 |
. . 3
                  |
22 | | prodmodc.3 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif) 
   |
23 | | breq1 4007 |
. . . . . 6
 
♯ 
♯     |
24 | | fveq2 5516 |
. . . . . . 7
           |
25 | 24 | csbeq1d 3065 |
. . . . . 6
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
26 | 23, 25 | ifbieq1d 3557 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif) 
   ♯         ![]_ ]_](_urbrack.gif)     |
27 | | elnnuz 9564 |
. . . . . . 7

      |
28 | 27 | biimpri 133 |
. . . . . 6
    
  |
29 | 28 | adantl 277 |
. . . . 5
 
    
  |
30 | | f1of 5462 |
. . . . . . . . . 10
        
          |
31 | 11, 30 | syl 14 |
. . . . . . . . 9
           |
32 | 31 | ad2antrr 488 |
. . . . . . . 8
       
♯             |
33 | | 1zzd 9280 |
. . . . . . . . . 10
       
♯     |
34 | 8 | nnzd 9374 |
. . . . . . . . . . 11
   |
35 | 34 | ad2antrr 488 |
. . . . . . . . . 10
       
♯  
  |
36 | | eluzelz 9537 |
. . . . . . . . . . 11
    
  |
37 | 36 | ad2antlr 489 |
. . . . . . . . . 10
       
♯  
  |
38 | 33, 35, 37 | 3jca 1177 |
. . . . . . . . 9
       
♯   
   |
39 | | eluzle 9540 |
. . . . . . . . . . 11
    
  |
40 | 39 | ad2antlr 489 |
. . . . . . . . . 10
       
♯  
  |
41 | | simpr 110 |
. . . . . . . . . . 11
       
♯   ♯    |
42 | 8 | nnnn0d 9229 |
. . . . . . . . . . . . . 14
   |
43 | | hashfz1 10763 |
. . . . . . . . . . . . . 14

♯        |
44 | 42, 43 | syl 14 |
. . . . . . . . . . . . 13
 ♯        |
45 | | 1zzd 9280 |
. . . . . . . . . . . . . . 15
   |
46 | 45, 34 | fzfigd 10431 |
. . . . . . . . . . . . . 14
       |
47 | 46, 11 | fihasheqf1od 10769 |
. . . . . . . . . . . . 13
 ♯      ♯    |
48 | 44, 47 | eqtr3d 2212 |
. . . . . . . . . . . 12
 ♯    |
49 | 48 | ad2antrr 488 |
. . . . . . . . . . 11
       
♯  
♯    |
50 | 41, 49 | breqtrrd 4032 |
. . . . . . . . . 10
       
♯     |
51 | 40, 50 | jca 306 |
. . . . . . . . 9
       
♯   
   |
52 | | elfz2 10015 |
. . . . . . . . 9
    
 
 
    |
53 | 38, 51, 52 | sylanbrc 417 |
. . . . . . . 8
       
♯  
      |
54 | 32, 53 | ffvelcdmd 5653 |
. . . . . . 7
       
♯         |
55 | | prodmo.2 |
. . . . . . . . 9
 
   |
56 | 55 | ralrimiva 2550 |
. . . . . . . 8
 
  |
57 | 56 | ad2antrr 488 |
. . . . . . 7
       
♯   
  |
58 | | nfcsb1v 3091 |
. . . . . . . . 9
        ![]_ ]_](_urbrack.gif)  |
59 | 58 | nfel1 2330 |
. . . . . . . 8
        ![]_ ]_](_urbrack.gif)
 |
60 | | csbeq1a 3067 |
. . . . . . . . 9
           ![]_ ]_](_urbrack.gif)   |
61 | 60 | eleq1d 2246 |
. . . . . . . 8
     
      ![]_ ]_](_urbrack.gif)    |
62 | 59, 61 | rspc 2836 |
. . . . . . 7
      
      ![]_ ]_](_urbrack.gif)
   |
63 | 54, 57, 62 | sylc 62 |
. . . . . 6
       
♯         ![]_ ]_](_urbrack.gif)
  |
64 | | 1cnd 7973 |
. . . . . 6
       
♯  
  |
65 | 29 | nnzd 9374 |
. . . . . . 7
 
    
  |
66 | 48, 34 | eqeltrrd 2255 |
. . . . . . . 8
 ♯    |
67 | 66 | adantr 276 |
. . . . . . 7
 
    
♯    |
68 | | zdcle 9329 |
. . . . . . 7
  ♯  
DECID
♯    |
69 | 65, 67, 68 | syl2anc 411 |
. . . . . 6
 
    
DECID
♯    |
70 | 63, 64, 69 | ifcldadc 3564 |
. . . . 5
 
    
 
♯         ![]_ ]_](_urbrack.gif)     |
71 | 22, 26, 29, 70 | fvmptd3 5610 |
. . . 4
 
    
      ♯         ![]_ ]_](_urbrack.gif) 
   |
72 | 71, 70 | eqeltrd 2254 |
. . 3
 
    
      |
73 | | prodmodclem3.4 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif)     |
74 | | fveq2 5516 |
. . . . . . 7
           |
75 | 74 | csbeq1d 3065 |
. . . . . 6
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
76 | 23, 75 | ifbieq1d 3557 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif)     ♯         ![]_ ]_](_urbrack.gif)     |
77 | 14 | ad2antrr 488 |
. . . . . . . . 9
       
♯             |
78 | | f1of 5462 |
. . . . . . . . 9
        
          |
79 | 77, 78 | syl 14 |
. . . . . . . 8
       
♯             |
80 | 19 | ad2antrr 488 |
. . . . . . . . 9
       
♯             |
81 | 53, 80 | eleqtrd 2256 |
. . . . . . . 8
       
♯  
      |
82 | 79, 81 | ffvelcdmd 5653 |
. . . . . . 7
       
♯         |
83 | | nfcsb1v 3091 |
. . . . . . . . 9
        ![]_ ]_](_urbrack.gif)  |
84 | 83 | nfel1 2330 |
. . . . . . . 8
        ![]_ ]_](_urbrack.gif)
 |
85 | | csbeq1a 3067 |
. . . . . . . . 9
           ![]_ ]_](_urbrack.gif)   |
86 | 85 | eleq1d 2246 |
. . . . . . . 8
     
      ![]_ ]_](_urbrack.gif)    |
87 | 84, 86 | rspc 2836 |
. . . . . . 7
      
      ![]_ ]_](_urbrack.gif)
   |
88 | 82, 57, 87 | sylc 62 |
. . . . . 6
       
♯         ![]_ ]_](_urbrack.gif)
  |
89 | 88, 64, 69 | ifcldadc 3564 |
. . . . 5
 
    
 
♯         ![]_ ]_](_urbrack.gif)     |
90 | 73, 76, 29, 89 | fvmptd3 5610 |
. . . 4
 
    
      ♯         ![]_ ]_](_urbrack.gif)     |
91 | 90, 89 | eqeltrd 2254 |
. . 3
 
    
      |
92 | 19 | f1oeq2d 5458 |
. . . . . . . . . 10
                     |
93 | 14, 92 | mpbird 167 |
. . . . . . . . 9
           |
94 | | f1of 5462 |
. . . . . . . . 9
        
          |
95 | 93, 94 | syl 14 |
. . . . . . . 8
           |
96 | | fvco3 5588 |
. . . . . . . 8
              
  
               |
97 | 95, 96 | sylan 283 |
. . . . . . 7
 
                       |
98 | 97 | fveq2d 5520 |
. . . . . 6
 
          
                    |
99 | 11 | adantr 276 |
. . . . . . 7
 
               |
100 | 95 | ffvelcdmda 5652 |
. . . . . . 7
 
           |
101 | | f1ocnvfv2 5779 |
. . . . . . 7
                                  |
102 | 99, 100, 101 | syl2anc 411 |
. . . . . 6
 
                        |
103 | 98, 102 | eqtrd 2210 |
. . . . 5
 
          
           |
104 | 103 | csbeq1d 3065 |
. . . 4
 
           
      ![]_ ]_](_urbrack.gif)
      ![]_ ]_](_urbrack.gif)   |
105 | | breq1 4007 |
. . . . . . 7
         ♯ 
  
    ♯     |
106 | | fveq2 5516 |
. . . . . . . 8
                         |
107 | 106 | csbeq1d 3065 |
. . . . . . 7
              ![]_ ]_](_urbrack.gif)
             ![]_ ]_](_urbrack.gif)   |
108 | 105, 107 | ifbieq1d 3557 |
. . . . . 6
          ♯         ![]_ ]_](_urbrack.gif) 
         
♯         
      ![]_ ]_](_urbrack.gif) 
   |
109 | | f1of 5462 |
. . . . . . . . 9
  
                              |
110 | 21, 109 | syl 14 |
. . . . . . . 8
                  |
111 | 110 | ffvelcdmda 5652 |
. . . . . . 7
 
                  |
112 | | elfznn 10054 |
. . . . . . 7
                     |
113 | 111, 112 | syl 14 |
. . . . . 6
 
              |
114 | | elfzle2 10028 |
. . . . . . . . . 10
                     |
115 | 111, 114 | syl 14 |
. . . . . . . . 9
 
           
  |
116 | 48 | adantr 276 |
. . . . . . . . 9
 
     ♯    |
117 | 115, 116 | breqtrd 4030 |
. . . . . . . 8
 
           
♯    |
118 | 117 | iftrued 3542 |
. . . . . . 7
 
              ♯                ![]_ ]_](_urbrack.gif)         
      ![]_ ]_](_urbrack.gif)   |
119 | 56 | adantr 276 |
. . . . . . . . 9
 
     
  |
120 | | nfcsb1v 3091 |
. . . . . . . . . . 11
        ![]_ ]_](_urbrack.gif)  |
121 | 120 | nfel1 2330 |
. . . . . . . . . 10
        ![]_ ]_](_urbrack.gif)
 |
122 | | csbeq1a 3067 |
. . . . . . . . . . 11
           ![]_ ]_](_urbrack.gif)   |
123 | 122 | eleq1d 2246 |
. . . . . . . . . 10
     
      ![]_ ]_](_urbrack.gif)    |
124 | 121, 123 | rspc 2836 |
. . . . . . . . 9
      
      ![]_ ]_](_urbrack.gif)
   |
125 | 100, 119,
124 | sylc 62 |
. . . . . . . 8
 
           ![]_ ]_](_urbrack.gif)   |
126 | 104, 125 | eqeltrd 2254 |
. . . . . . 7
 
           
      ![]_ ]_](_urbrack.gif)
  |
127 | 118, 126 | eqeltrd 2254 |
. . . . . 6
 
              ♯                ![]_ ]_](_urbrack.gif)     |
128 | 22, 108, 113, 127 | fvmptd3 5610 |
. . . . 5
 
          
              ♯                ![]_ ]_](_urbrack.gif)     |
129 | 128, 118 | eqtrd 2210 |
. . . 4
 
          
           
      ![]_ ]_](_urbrack.gif)   |
130 | | breq1 4007 |
. . . . . . 7
 
♯  ♯     |
131 | | fveq2 5516 |
. . . . . . . 8
           |
132 | 131 | csbeq1d 3065 |
. . . . . . 7
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
133 | 130, 132 | ifbieq1d 3557 |
. . . . . 6
   ♯         ![]_ ]_](_urbrack.gif)     ♯         ![]_ ]_](_urbrack.gif)     |
134 | | elfznn 10054 |
. . . . . . 7
       |
135 | 134 | adantl 277 |
. . . . . 6
 
       |
136 | | elfzle2 10028 |
. . . . . . . . . 10
       |
137 | 136 | adantl 277 |
. . . . . . . . 9
 
       |
138 | 137, 116 | breqtrd 4030 |
. . . . . . . 8
 
     ♯    |
139 | 138 | iftrued 3542 |
. . . . . . 7
 
       ♯         ![]_ ]_](_urbrack.gif)         ![]_ ]_](_urbrack.gif)   |
140 | 139, 125 | eqeltrd 2254 |
. . . . . 6
 
       ♯         ![]_ ]_](_urbrack.gif)     |
141 | 73, 133, 135, 140 | fvmptd3 5610 |
. . . . 5
 
           ♯         ![]_ ]_](_urbrack.gif)     |
142 | 141, 139 | eqtrd 2210 |
. . . 4
 
               ![]_ ]_](_urbrack.gif)   |
143 | 104, 129,
142 | 3eqtr4rd 2221 |
. . 3
 
                      |
144 | 2, 4, 6, 10, 21, 72, 91, 143 | seq3f1o 10504 |
. 2
               |
145 | 18 | fveq2d 5520 |
. 2
               |
146 | 144, 145 | eqtr3d 2212 |
1
               |