| Step | Hyp | Ref
 | Expression | 
| 1 |   | mulcl 8006 | 
. . . 4
               
                  | 
| 2 | 1 | adantl 277 | 
. . 3
       
                                | 
| 3 |   | mulcom 8008 | 
. . . 4
               
                        | 
| 4 | 3 | adantl 277 | 
. . 3
       
                                      | 
| 5 |   | mulass 8010 | 
. . . 4
               
                                            | 
| 6 | 5 | adantl 277 | 
. . 3
       
                                                          | 
| 7 |   | prodmolem3.5 | 
. . . . 5
                        | 
| 8 | 7 | simpld 112 | 
. . . 4
              | 
| 9 |   | nnuz 9637 | 
. . . 4
            | 
| 10 | 8, 9 | eleqtrdi 2289 | 
. . 3
                  | 
| 11 |   | prodmolem3.6 | 
. . . . . 6
                  | 
| 12 |   | f1ocnv 5517 | 
. . . . . 6
              
            | 
| 13 | 11, 12 | syl 14 | 
. . . . 5
                   | 
| 14 |   | prodmolem3.7 | 
. . . . 5
                  | 
| 15 |   | f1oco 5527 | 
. . . . 5
                                 
                  | 
| 16 | 13, 14, 15 | syl2anc 411 | 
. . . 4
                             | 
| 17 | 7 | ancomd 267 | 
. . . . . . 7
                        | 
| 18 | 17, 14, 11 | nnf1o 11541 | 
. . . . . 6
              | 
| 19 | 18 | oveq2d 5938 | 
. . . . 5
                      | 
| 20 | 19 | f1oeq2d 5500 | 
. . . 4
                                                      | 
| 21 | 16, 20 | mpbird 167 | 
. . 3
                             | 
| 22 |   | prodmodc.3 | 
. . . . 5
                      ♯               ![]_  ]_](_urbrack.gif)   
    | 
| 23 |   | breq1 4036 | 
. . . . . 6
               
 ♯       
   ♯      | 
| 24 |   | fveq2 5558 | 
. . . . . . 7
                          | 
| 25 | 24 | csbeq1d 3091 | 
. . . . . 6
                     ![]_  ]_](_urbrack.gif)               ![]_  ]_](_urbrack.gif)    | 
| 26 | 23, 25 | ifbieq1d 3583 | 
. . . . 5
                  ♯               ![]_  ]_](_urbrack.gif)   
            ♯               ![]_  ]_](_urbrack.gif)        | 
| 27 |   | elnnuz 9638 | 
. . . . . . 7
          
           | 
| 28 | 27 | biimpri 133 | 
. . . . . 6
              
       | 
| 29 | 28 | adantl 277 | 
. . . . 5
       
            
       | 
| 30 |   | f1of 5504 | 
. . . . . . . . . 10
              
           | 
| 31 | 11, 30 | syl 14 | 
. . . . . . . . 9
                  | 
| 32 | 31 | ad2antrr 488 | 
. . . . . . . 8
                     
     ♯                  | 
| 33 |   | 1zzd 9353 | 
. . . . . . . . . 10
                     
     ♯              | 
| 34 | 8 | nnzd 9447 | 
. . . . . . . . . . 11
              | 
| 35 | 34 | ad2antrr 488 | 
. . . . . . . . . 10
                     
     ♯          
   | 
| 36 |   | eluzelz 9610 | 
. . . . . . . . . . 11
              
       | 
| 37 | 36 | ad2antlr 489 | 
. . . . . . . . . 10
                     
     ♯          
   | 
| 38 | 33, 35, 37 | 3jca 1179 | 
. . . . . . . . 9
                     
     ♯                           
    | 
| 39 |   | eluzle 9613 | 
. . . . . . . . . . 11
              
       | 
| 40 | 39 | ad2antlr 489 | 
. . . . . . . . . 10
                     
     ♯          
   | 
| 41 |   | simpr 110 | 
. . . . . . . . . . 11
                     
     ♯            ♯     | 
| 42 | 8 | nnnn0d 9302 | 
. . . . . . . . . . . . . 14
              | 
| 43 |   | hashfz1 10875 | 
. . . . . . . . . . . . . 14
        
   ♯             | 
| 44 | 42, 43 | syl 14 | 
. . . . . . . . . . . . 13
        ♯             | 
| 45 |   | 1zzd 9353 | 
. . . . . . . . . . . . . . 15
              | 
| 46 | 45, 34 | fzfigd 10523 | 
. . . . . . . . . . . . . 14
                  | 
| 47 | 46, 11 | fihasheqf1od 10881 | 
. . . . . . . . . . . . 13
        ♯           ♯     | 
| 48 | 44, 47 | eqtr3d 2231 | 
. . . . . . . . . . . 12
            ♯     | 
| 49 | 48 | ad2antrr 488 | 
. . . . . . . . . . 11
                     
     ♯          
 ♯     | 
| 50 | 41, 49 | breqtrrd 4061 | 
. . . . . . . . . 10
                     
     ♯              | 
| 51 | 40, 50 | jca 306 | 
. . . . . . . . 9
                     
     ♯                 
      | 
| 52 |   | elfz2 10090 | 
. . . . . . . . 9
              
             
                 
             | 
| 53 | 38, 51, 52 | sylanbrc 417 | 
. . . . . . . 8
                     
     ♯          
       | 
| 54 | 32, 53 | ffvelcdmd 5698 | 
. . . . . . 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 8042 | 
. . . . . 6
                     
       ♯      
       | 
| 65 | 29 | nnzd 9447 | 
. . . . . . 7
       
            
       | 
| 66 | 48, 34 | eqeltrrd 2274 | 
. . . . . . . 8
        ♯         | 
| 67 | 66 | adantr 276 | 
. . . . . . 7
       
            
 ♯         | 
| 68 |   | zdcle 9402 | 
. . . . . . 7
             ♯          
DECID  
   ♯     | 
| 69 | 65, 67, 68 | syl2anc 411 | 
. . . . . 6
       
            
DECID  
   ♯     | 
| 70 | 63, 64, 69 | ifcldadc 3590 | 
. . . . 5
       
            
     
 ♯               ![]_  ]_](_urbrack.gif)            | 
| 71 | 22, 26, 29, 70 | fvmptd3 5655 | 
. . . 4
       
            
               ♯               ![]_  ]_](_urbrack.gif)   
    | 
| 72 | 71, 70 | eqeltrd 2273 | 
. . 3
       
            
           | 
| 73 |   | prodmodclem3.4 | 
. . . . 5
                      ♯               ![]_  ]_](_urbrack.gif)        | 
| 74 |   | fveq2 5558 | 
. . . . . . 7
                          | 
| 75 | 74 | csbeq1d 3091 | 
. . . . . 6
                     ![]_  ]_](_urbrack.gif)               ![]_  ]_](_urbrack.gif)    | 
| 76 | 23, 75 | ifbieq1d 3583 | 
. . . . 5
                  ♯               ![]_  ]_](_urbrack.gif)                ♯               ![]_  ]_](_urbrack.gif)        | 
| 77 | 14 | ad2antrr 488 | 
. . . . . . . . 9
                     
     ♯                  | 
| 78 |   | f1of 5504 | 
. . . . . . . . 9
              
           | 
| 79 | 77, 78 | syl 14 | 
. . . . . . . 8
                     
     ♯                  | 
| 80 | 19 | ad2antrr 488 | 
. . . . . . . . 9
                     
     ♯                      | 
| 81 | 53, 80 | eleqtrd 2275 | 
. . . . . . . 8
                     
     ♯          
       | 
| 82 | 79, 81 | ffvelcdmd 5698 | 
. . . . . . 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 3590 | 
. . . . 5
       
            
     
 ♯               ![]_  ]_](_urbrack.gif)            | 
| 90 | 73, 76, 29, 89 | fvmptd3 5655 | 
. . . 4
       
            
               ♯               ![]_  ]_](_urbrack.gif)        | 
| 91 | 90, 89 | eqeltrd 2273 | 
. . 3
       
            
           | 
| 92 | 19 | f1oeq2d 5500 | 
. . . . . . . . . 10
                                | 
| 93 | 14, 92 | mpbird 167 | 
. . . . . . . . 9
                  | 
| 94 |   | f1of 5504 | 
. . . . . . . . 9
              
           | 
| 95 | 93, 94 | syl 14 | 
. . . . . . . 8
                  | 
| 96 |   | fvco3 5632 | 
. . . . . . . 8
                            
    
                      | 
| 97 | 95, 96 | sylan 283 | 
. . . . . . 7
       
                                        | 
| 98 | 97 | fveq2d 5562 | 
. . . . . 6
       
                    
                           | 
| 99 | 11 | adantr 276 | 
. . . . . . 7
       
                        | 
| 100 | 95 | ffvelcdmda 5697 | 
. . . . . . 7
       
                        | 
| 101 |   | f1ocnvfv2 5825 | 
. . . . . . 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 4036 | 
. . . . . . 7
                            ♯     
    
           ♯      | 
| 106 |   | fveq2 5558 | 
. . . . . . . 8
                                                | 
| 107 | 106 | csbeq1d 3091 | 
. . . . . . 7
                                ![]_  ]_](_urbrack.gif)    
                     ![]_  ]_](_urbrack.gif)    | 
| 108 | 105, 107 | ifbieq1d 3583 | 
. . . . . 6
                             ♯               ![]_  ]_](_urbrack.gif)   
                     
 ♯             
            ![]_  ]_](_urbrack.gif)   
    | 
| 109 |   | f1of 5504 | 
. . . . . . . . 9
      
                                         | 
| 110 | 21, 109 | syl 14 | 
. . . . . . . 8
                             | 
| 111 | 110 | ffvelcdmda 5697 | 
. . . . . . 7
       
                                   | 
| 112 |   | elfznn 10129 | 
. . . . . . 7
                                            | 
| 113 | 111, 112 | syl 14 | 
. . . . . 6
       
                               | 
| 114 |   | elfzle2 10103 | 
. . . . . . . . . 10
                                            | 
| 115 | 111, 114 | syl 14 | 
. . . . . . . . 9
       
                           
   | 
| 116 | 48 | adantr 276 | 
. . . . . . . . 9
       
                  ♯     | 
| 117 | 115, 116 | breqtrd 4059 | 
. . . . . . . 8
       
                           
 ♯     | 
| 118 | 117 | iftrued 3568 | 
. . . . . . 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 5655 | 
. . . . 5
       
                    
                             ♯                          ![]_  ]_](_urbrack.gif)        | 
| 129 | 128, 118 | eqtrd 2229 | 
. . . 4
       
                    
                   
            ![]_  ]_](_urbrack.gif)    | 
| 130 |   | breq1 4036 | 
. . . . . . 7
               
 ♯           ♯      | 
| 131 |   | fveq2 5558 | 
. . . . . . . 8
                          | 
| 132 | 131 | csbeq1d 3091 | 
. . . . . . 7
                     ![]_  ]_](_urbrack.gif)               ![]_  ]_](_urbrack.gif)    | 
| 133 | 130, 132 | ifbieq1d 3583 | 
. . . . . 6
                  ♯               ![]_  ]_](_urbrack.gif)                ♯               ![]_  ]_](_urbrack.gif)        | 
| 134 |   | elfznn 10129 | 
. . . . . . 7
                      | 
| 135 | 134 | adantl 277 | 
. . . . . 6
       
                    | 
| 136 |   | elfzle2 10103 | 
. . . . . . . . . 10
                      | 
| 137 | 136 | adantl 277 | 
. . . . . . . . 9
       
                    | 
| 138 | 137, 116 | breqtrd 4059 | 
. . . . . . . 8
       
                  ♯     | 
| 139 | 138 | iftrued 3568 | 
. . . . . . 7
       
                    ♯               ![]_  ]_](_urbrack.gif)                   ![]_  ]_](_urbrack.gif)    | 
| 140 | 139, 125 | eqeltrd 2273 | 
. . . . . 6
       
                    ♯               ![]_  ]_](_urbrack.gif)            | 
| 141 | 73, 133, 135, 140 | fvmptd3 5655 | 
. . . . 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 10609 | 
. 2
                                          | 
| 145 | 18 | fveq2d 5562 | 
. 2
                                          | 
| 146 | 144, 145 | eqtr3d 2231 | 
1
                                          |