| Step | Hyp | Ref
| Expression |
| 1 | | mulcl 8023 |
. . . 4
 
     |
| 2 | 1 | adantl 277 |
. . 3
 
       |
| 3 | | mulcom 8025 |
. . . 4
 
       |
| 4 | 3 | adantl 277 |
. . 3
 
         |
| 5 | | mulass 8027 |
. . . 4
 
           |
| 6 | 5 | adantl 277 |
. . 3
 
             |
| 7 | | prodmolem3.5 |
. . . . 5
     |
| 8 | 7 | simpld 112 |
. . . 4
   |
| 9 | | nnuz 9654 |
. . . 4
     |
| 10 | 8, 9 | eleqtrdi 2289 |
. . 3
       |
| 11 | | prodmolem3.6 |
. . . . . 6
           |
| 12 | | f1ocnv 5520 |
. . . . . 6
        
           |
| 13 | 11, 12 | syl 14 |
. . . . 5
            |
| 14 | | prodmolem3.7 |
. . . . 5
           |
| 15 | | f1oco 5530 |
. . . . 5
                     
               |
| 16 | 13, 14, 15 | syl2anc 411 |
. . . 4
                  |
| 17 | 7 | ancomd 267 |
. . . . . . 7
     |
| 18 | 17, 14, 11 | nnf1o 11558 |
. . . . . 6
   |
| 19 | 18 | oveq2d 5941 |
. . . . 5
           |
| 20 | 19 | f1oeq2d 5503 |
. . . 4
                                   |
| 21 | 16, 20 | mpbird 167 |
. . 3
                  |
| 22 | | prodmodc.3 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif) 
   |
| 23 | | breq1 4037 |
. . . . . 6
 
♯ 
♯     |
| 24 | | fveq2 5561 |
. . . . . . 7
           |
| 25 | 24 | csbeq1d 3091 |
. . . . . 6
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
| 26 | 23, 25 | ifbieq1d 3584 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif) 
   ♯         ![]_ ]_](_urbrack.gif)     |
| 27 | | elnnuz 9655 |
. . . . . . 7

      |
| 28 | 27 | biimpri 133 |
. . . . . 6
    
  |
| 29 | 28 | adantl 277 |
. . . . 5
 
    
  |
| 30 | | f1of 5507 |
. . . . . . . . . 10
        
          |
| 31 | 11, 30 | syl 14 |
. . . . . . . . 9
           |
| 32 | 31 | ad2antrr 488 |
. . . . . . . 8
       
♯             |
| 33 | | 1zzd 9370 |
. . . . . . . . . 10
       
♯     |
| 34 | 8 | nnzd 9464 |
. . . . . . . . . . 11
   |
| 35 | 34 | ad2antrr 488 |
. . . . . . . . . 10
       
♯  
  |
| 36 | | eluzelz 9627 |
. . . . . . . . . . 11
    
  |
| 37 | 36 | ad2antlr 489 |
. . . . . . . . . 10
       
♯  
  |
| 38 | 33, 35, 37 | 3jca 1179 |
. . . . . . . . 9
       
♯   
   |
| 39 | | eluzle 9630 |
. . . . . . . . . . 11
    
  |
| 40 | 39 | ad2antlr 489 |
. . . . . . . . . 10
       
♯  
  |
| 41 | | simpr 110 |
. . . . . . . . . . 11
       
♯   ♯    |
| 42 | 8 | nnnn0d 9319 |
. . . . . . . . . . . . . 14
   |
| 43 | | hashfz1 10892 |
. . . . . . . . . . . . . 14

♯        |
| 44 | 42, 43 | syl 14 |
. . . . . . . . . . . . 13
 ♯        |
| 45 | | 1zzd 9370 |
. . . . . . . . . . . . . . 15
   |
| 46 | 45, 34 | fzfigd 10540 |
. . . . . . . . . . . . . 14
       |
| 47 | 46, 11 | fihasheqf1od 10898 |
. . . . . . . . . . . . 13
 ♯      ♯    |
| 48 | 44, 47 | eqtr3d 2231 |
. . . . . . . . . . . 12
 ♯    |
| 49 | 48 | ad2antrr 488 |
. . . . . . . . . . 11
       
♯  
♯    |
| 50 | 41, 49 | breqtrrd 4062 |
. . . . . . . . . 10
       
♯     |
| 51 | 40, 50 | jca 306 |
. . . . . . . . 9
       
♯   
   |
| 52 | | elfz2 10107 |
. . . . . . . . 9
    
 
 
    |
| 53 | 38, 51, 52 | sylanbrc 417 |
. . . . . . . 8
       
♯  
      |
| 54 | 32, 53 | ffvelcdmd 5701 |
. . . . . . 7
       
♯         |
| 55 | | prodmo.2 |
. . . . . . . . 9
 
   |
| 56 | 55 | ralrimiva 2570 |
. . . . . . . 8
 
  |
| 57 | 56 | ad2antrr 488 |
. . . . . . 7
       
♯   
  |
| 58 | | nfcsb1v 3117 |
. . . . . . . . 9
        ![]_ ]_](_urbrack.gif)  |
| 59 | 58 | nfel1 2350 |
. . . . . . . 8
        ![]_ ]_](_urbrack.gif)
 |
| 60 | | csbeq1a 3093 |
. . . . . . . . 9
           ![]_ ]_](_urbrack.gif)   |
| 61 | 60 | eleq1d 2265 |
. . . . . . . 8
     
      ![]_ ]_](_urbrack.gif)    |
| 62 | 59, 61 | rspc 2862 |
. . . . . . 7
      
      ![]_ ]_](_urbrack.gif)
   |
| 63 | 54, 57, 62 | sylc 62 |
. . . . . 6
       
♯         ![]_ ]_](_urbrack.gif)
  |
| 64 | | 1cnd 8059 |
. . . . . 6
       
♯  
  |
| 65 | 29 | nnzd 9464 |
. . . . . . 7
 
    
  |
| 66 | 48, 34 | eqeltrrd 2274 |
. . . . . . . 8
 ♯    |
| 67 | 66 | adantr 276 |
. . . . . . 7
 
    
♯    |
| 68 | | zdcle 9419 |
. . . . . . 7
  ♯  
DECID
♯    |
| 69 | 65, 67, 68 | syl2anc 411 |
. . . . . 6
 
    
DECID
♯    |
| 70 | 63, 64, 69 | ifcldadc 3591 |
. . . . 5
 
    
 
♯         ![]_ ]_](_urbrack.gif)     |
| 71 | 22, 26, 29, 70 | fvmptd3 5658 |
. . . 4
 
    
      ♯         ![]_ ]_](_urbrack.gif) 
   |
| 72 | 71, 70 | eqeltrd 2273 |
. . 3
 
    
      |
| 73 | | prodmodclem3.4 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif)     |
| 74 | | fveq2 5561 |
. . . . . . 7
           |
| 75 | 74 | csbeq1d 3091 |
. . . . . 6
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
| 76 | 23, 75 | ifbieq1d 3584 |
. . . . 5
   ♯         ![]_ ]_](_urbrack.gif)     ♯         ![]_ ]_](_urbrack.gif)     |
| 77 | 14 | ad2antrr 488 |
. . . . . . . . 9
       
♯             |
| 78 | | f1of 5507 |
. . . . . . . . 9
        
          |
| 79 | 77, 78 | syl 14 |
. . . . . . . 8
       
♯             |
| 80 | 19 | ad2antrr 488 |
. . . . . . . . 9
       
♯             |
| 81 | 53, 80 | eleqtrd 2275 |
. . . . . . . 8
       
♯  
      |
| 82 | 79, 81 | ffvelcdmd 5701 |
. . . . . . 7
       
♯         |
| 83 | | nfcsb1v 3117 |
. . . . . . . . 9
        ![]_ ]_](_urbrack.gif)  |
| 84 | 83 | nfel1 2350 |
. . . . . . . 8
        ![]_ ]_](_urbrack.gif)
 |
| 85 | | csbeq1a 3093 |
. . . . . . . . 9
           ![]_ ]_](_urbrack.gif)   |
| 86 | 85 | eleq1d 2265 |
. . . . . . . 8
     
      ![]_ ]_](_urbrack.gif)    |
| 87 | 84, 86 | rspc 2862 |
. . . . . . 7
      
      ![]_ ]_](_urbrack.gif)
   |
| 88 | 82, 57, 87 | sylc 62 |
. . . . . 6
       
♯         ![]_ ]_](_urbrack.gif)
  |
| 89 | 88, 64, 69 | ifcldadc 3591 |
. . . . 5
 
    
 
♯         ![]_ ]_](_urbrack.gif)     |
| 90 | 73, 76, 29, 89 | fvmptd3 5658 |
. . . 4
 
    
      ♯         ![]_ ]_](_urbrack.gif)     |
| 91 | 90, 89 | eqeltrd 2273 |
. . 3
 
    
      |
| 92 | 19 | f1oeq2d 5503 |
. . . . . . . . . 10
                     |
| 93 | 14, 92 | mpbird 167 |
. . . . . . . . 9
           |
| 94 | | f1of 5507 |
. . . . . . . . 9
        
          |
| 95 | 93, 94 | syl 14 |
. . . . . . . 8
           |
| 96 | | fvco3 5635 |
. . . . . . . 8
              
  
               |
| 97 | 95, 96 | sylan 283 |
. . . . . . 7
 
                       |
| 98 | 97 | fveq2d 5565 |
. . . . . 6
 
          
                    |
| 99 | 11 | adantr 276 |
. . . . . . 7
 
               |
| 100 | 95 | ffvelcdmda 5700 |
. . . . . . 7
 
           |
| 101 | | f1ocnvfv2 5828 |
. . . . . . 7
                                  |
| 102 | 99, 100, 101 | syl2anc 411 |
. . . . . 6
 
                        |
| 103 | 98, 102 | eqtrd 2229 |
. . . . 5
 
          
           |
| 104 | 103 | csbeq1d 3091 |
. . . 4
 
           
      ![]_ ]_](_urbrack.gif)
      ![]_ ]_](_urbrack.gif)   |
| 105 | | breq1 4037 |
. . . . . . 7
         ♯ 
  
    ♯     |
| 106 | | fveq2 5561 |
. . . . . . . 8
                         |
| 107 | 106 | csbeq1d 3091 |
. . . . . . 7
              ![]_ ]_](_urbrack.gif)
             ![]_ ]_](_urbrack.gif)   |
| 108 | 105, 107 | ifbieq1d 3584 |
. . . . . 6
          ♯         ![]_ ]_](_urbrack.gif) 
         
♯         
      ![]_ ]_](_urbrack.gif) 
   |
| 109 | | f1of 5507 |
. . . . . . . . 9
  
                              |
| 110 | 21, 109 | syl 14 |
. . . . . . . 8
                  |
| 111 | 110 | ffvelcdmda 5700 |
. . . . . . 7
 
                  |
| 112 | | elfznn 10146 |
. . . . . . 7
                     |
| 113 | 111, 112 | syl 14 |
. . . . . 6
 
              |
| 114 | | elfzle2 10120 |
. . . . . . . . . 10
                     |
| 115 | 111, 114 | syl 14 |
. . . . . . . . 9
 
           
  |
| 116 | 48 | adantr 276 |
. . . . . . . . 9
 
     ♯    |
| 117 | 115, 116 | breqtrd 4060 |
. . . . . . . 8
 
           
♯    |
| 118 | 117 | iftrued 3569 |
. . . . . . 7
 
              ♯                ![]_ ]_](_urbrack.gif)         
      ![]_ ]_](_urbrack.gif)   |
| 119 | 56 | adantr 276 |
. . . . . . . . 9
 
     
  |
| 120 | | nfcsb1v 3117 |
. . . . . . . . . . 11
        ![]_ ]_](_urbrack.gif)  |
| 121 | 120 | nfel1 2350 |
. . . . . . . . . 10
        ![]_ ]_](_urbrack.gif)
 |
| 122 | | csbeq1a 3093 |
. . . . . . . . . . 11
           ![]_ ]_](_urbrack.gif)   |
| 123 | 122 | eleq1d 2265 |
. . . . . . . . . 10
     
      ![]_ ]_](_urbrack.gif)    |
| 124 | 121, 123 | rspc 2862 |
. . . . . . . . 9
      
      ![]_ ]_](_urbrack.gif)
   |
| 125 | 100, 119,
124 | sylc 62 |
. . . . . . . 8
 
           ![]_ ]_](_urbrack.gif)   |
| 126 | 104, 125 | eqeltrd 2273 |
. . . . . . 7
 
           
      ![]_ ]_](_urbrack.gif)
  |
| 127 | 118, 126 | eqeltrd 2273 |
. . . . . 6
 
              ♯                ![]_ ]_](_urbrack.gif)     |
| 128 | 22, 108, 113, 127 | fvmptd3 5658 |
. . . . 5
 
          
              ♯                ![]_ ]_](_urbrack.gif)     |
| 129 | 128, 118 | eqtrd 2229 |
. . . 4
 
          
           
      ![]_ ]_](_urbrack.gif)   |
| 130 | | breq1 4037 |
. . . . . . 7
 
♯  ♯     |
| 131 | | fveq2 5561 |
. . . . . . . 8
           |
| 132 | 131 | csbeq1d 3091 |
. . . . . . 7
       ![]_ ]_](_urbrack.gif)       ![]_ ]_](_urbrack.gif)   |
| 133 | 130, 132 | ifbieq1d 3584 |
. . . . . 6
   ♯         ![]_ ]_](_urbrack.gif)     ♯         ![]_ ]_](_urbrack.gif)     |
| 134 | | elfznn 10146 |
. . . . . . 7
       |
| 135 | 134 | adantl 277 |
. . . . . 6
 
       |
| 136 | | elfzle2 10120 |
. . . . . . . . . 10
       |
| 137 | 136 | adantl 277 |
. . . . . . . . 9
 
       |
| 138 | 137, 116 | breqtrd 4060 |
. . . . . . . 8
 
     ♯    |
| 139 | 138 | iftrued 3569 |
. . . . . . 7
 
       ♯         ![]_ ]_](_urbrack.gif)         ![]_ ]_](_urbrack.gif)   |
| 140 | 139, 125 | eqeltrd 2273 |
. . . . . 6
 
       ♯         ![]_ ]_](_urbrack.gif)     |
| 141 | 73, 133, 135, 140 | fvmptd3 5658 |
. . . . 5
 
           ♯         ![]_ ]_](_urbrack.gif)     |
| 142 | 141, 139 | eqtrd 2229 |
. . . 4
 
               ![]_ ]_](_urbrack.gif)   |
| 143 | 104, 129,
142 | 3eqtr4rd 2240 |
. . 3
 
                      |
| 144 | 2, 4, 6, 10, 21, 72, 91, 143 | seq3f1o 10626 |
. 2
               |
| 145 | 18 | fveq2d 5565 |
. 2
               |
| 146 | 144, 145 | eqtr3d 2231 |
1
               |