| Step | Hyp | Ref
 | Expression | 
| 1 |   | prodmo.1 | 
. . 3
                               | 
| 2 |   | prodmo.2 | 
. . 3
       
                | 
| 3 |   | prodmodclem2a.dc | 
. . 3
       
            
DECID  
     | 
| 4 |   | prodmolem2.7 | 
. . . 4
          
       | 
| 5 |   | prodmolem2.9 | 
. . . . . . 7
          
           ♯          | 
| 6 |   | 1zzd 9353 | 
. . . . . . . . . . . 12
              | 
| 7 |   | prodmolem2.5 | 
. . . . . . . . . . . . 13
              | 
| 8 | 7 | nnzd 9447 | 
. . . . . . . . . . . 12
              | 
| 9 | 6, 8 | fzfigd 10523 | 
. . . . . . . . . . 11
                  | 
| 10 |   | prodmolem2.8 | 
. . . . . . . . . . 11
                  | 
| 11 | 9, 10 | fihasheqf1od 10881 | 
. . . . . . . . . 10
        ♯           ♯     | 
| 12 | 7 | nnnn0d 9302 | 
. . . . . . . . . . 11
              | 
| 13 |   | hashfz1 10875 | 
. . . . . . . . . . 11
        
   ♯             | 
| 14 | 12, 13 | syl 14 | 
. . . . . . . . . 10
        ♯             | 
| 15 | 11, 14 | eqtr3d 2231 | 
. . . . . . . . 9
        ♯         | 
| 16 | 15 | oveq2d 5938 | 
. . . . . . . 8
           ♯              | 
| 17 |   | isoeq4 5851 | 
. . . . . . . 8
       ♯                               ♯            
                     | 
| 18 | 16, 17 | syl 14 | 
. . . . . . 7
                       ♯            
                     | 
| 19 | 5, 18 | mpbid 147 | 
. . . . . 6
          
                  | 
| 20 |   | isof1o 5854 | 
. . . . . 6
                                     | 
| 21 |   | f1of 5504 | 
. . . . . 6
              
           | 
| 22 | 19, 20, 21 | 3syl 17 | 
. . . . 5
                  | 
| 23 |   | nnuz 9637 | 
. . . . . . 7
            | 
| 24 | 7, 23 | eleqtrdi 2289 | 
. . . . . 6
                  | 
| 25 |   | eluzfz2 10107 | 
. . . . . 6
              
           | 
| 26 | 24, 25 | syl 14 | 
. . . . 5
                  | 
| 27 | 22, 26 | ffvelcdmd 5698 | 
. . . 4
                  | 
| 28 | 4, 27 | sseldd 3184 | 
. . 3
                      | 
| 29 | 4 | sselda 3183 | 
. . . . . 6
       
                    | 
| 30 | 19, 20 | syl 14 | 
. . . . . . . . 9
                  | 
| 31 |   | f1ocnvfv2 5825 | 
. . . . . . . . 9
                   
                     | 
| 32 | 30, 31 | sylan 283 | 
. . . . . . . 8
       
                         | 
| 33 |   | f1ocnv 5517 | 
. . . . . . . . . . . 12
              
            | 
| 34 |   | f1of 5504 | 
. . . . . . . . . . . 12
                            | 
| 35 | 30, 33, 34 | 3syl 17 | 
. . . . . . . . . . 11
                   | 
| 36 | 35 | ffvelcdmda 5697 | 
. . . . . . . . . 10
       
                         | 
| 37 |   | elfzle2 10103 | 
. . . . . . . . . 10
                                | 
| 38 | 36, 37 | syl 14 | 
. . . . . . . . 9
       
                     | 
| 39 | 19 | adantr 276 | 
. . . . . . . . . 10
       
                               | 
| 40 |   | fzssuz 10140 | 
. . . . . . . . . . . . 13
                | 
| 41 |   | uzssz 9621 | 
. . . . . . . . . . . . . 14
            | 
| 42 |   | zssre 9333 | 
. . . . . . . . . . . . . 14
        | 
| 43 | 41, 42 | sstri 3192 | 
. . . . . . . . . . . . 13
            | 
| 44 | 40, 43 | sstri 3192 | 
. . . . . . . . . . . 12
            | 
| 45 |   | ressxr 8070 | 
. . . . . . . . . . . 12
        | 
| 46 | 44, 45 | sstri 3192 | 
. . . . . . . . . . 11
            | 
| 47 | 46 | a1i 9 | 
. . . . . . . . . 10
       
                    | 
| 48 |   | uzssz 9621 | 
. . . . . . . . . . . . . 14
            | 
| 49 | 48, 42 | sstri 3192 | 
. . . . . . . . . . . . 13
            | 
| 50 | 49, 45 | sstri 3192 | 
. . . . . . . . . . . 12
            | 
| 51 | 4, 50 | sstrdi 3195 | 
. . . . . . . . . . 11
          
   | 
| 52 | 51 | adantr 276 | 
. . . . . . . . . 10
       
                | 
| 53 | 26 | adantr 276 | 
. . . . . . . . . 10
       
                    | 
| 54 |   | leisorel 10929 | 
. . . . . . . . . 10
       
                                                                                                   
        | 
| 55 | 39, 47, 52, 36, 53, 54 | syl122anc 1258 | 
. . . . . . . . 9
       
                                   
        | 
| 56 | 38, 55 | mpbid 147 | 
. . . . . . . 8
       
                     
       | 
| 57 | 32, 56 | eqbrtrrd 4057 | 
. . . . . . 7
       
                    | 
| 58 | 4, 48 | sstrdi 3195 | 
. . . . . . . . 9
          
   | 
| 59 | 58 | sselda 3183 | 
. . . . . . . 8
       
                | 
| 60 | 48, 28 | sselid 3181 | 
. . . . . . . . 9
                  | 
| 61 | 60 | adantr 276 | 
. . . . . . . 8
       
                    | 
| 62 |   | eluz 9614 | 
. . . . . . . 8
                                         
            | 
| 63 | 59, 61, 62 | syl2anc 411 | 
. . . . . . 7
       
                         
            | 
| 64 | 57, 63 | mpbird 167 | 
. . . . . 6
       
                        | 
| 65 |   | elfzuzb 10094 | 
. . . . . 6
                                                | 
| 66 | 29, 64, 65 | sylanbrc 417 | 
. . . . 5
       
                        | 
| 67 | 66 | ex 115 | 
. . . 4
                                | 
| 68 | 67 | ssrdv 3189 | 
. . 3
          
           | 
| 69 | 1, 2, 3, 28, 68 | fproddccvg 11737 | 
. 2
                                         | 
| 70 |   | mullid 8024 | 
. . . . 5
                        | 
| 71 | 70 | adantl 277 | 
. . . 4
       
      
               | 
| 72 |   | mulrid 8023 | 
. . . . 5
                        | 
| 73 | 72 | adantl 277 | 
. . . 4
       
      
               | 
| 74 |   | mulcl 8006 | 
. . . . 5
               
                  | 
| 75 | 74 | adantl 277 | 
. . . 4
       
                                | 
| 76 |   | 1cnd 8042 | 
. . . 4
              | 
| 77 | 26, 16 | eleqtrrd 2276 | 
. . . 4
               ♯      | 
| 78 |   | eluzelz 9610 | 
. . . . . 6
              
       | 
| 79 |   | simpr 110 | 
. . . . . . . 8
                     
                | 
| 80 | 2 | ralrimiva 2570 | 
. . . . . . . . 9
                 
   | 
| 81 | 80 | ad2antrr 488 | 
. . . . . . . 8
                     
               
       | 
| 82 |   | nfcsb1v 3117 | 
. . . . . . . . . 10
      
   ![]_  ]_](_urbrack.gif)   | 
| 83 | 82 | nfel1 2350 | 
. . . . . . . . 9
          ![]_  ]_](_urbrack.gif)  
    | 
| 84 |   | csbeq1a 3093 | 
. . . . . . . . . 10
                     ![]_  ]_](_urbrack.gif)    | 
| 85 | 84 | eleq1d 2265 | 
. . . . . . . . 9
               
   
      ![]_  ]_](_urbrack.gif)         | 
| 86 | 83, 85 | rspc 2862 | 
. . . . . . . 8
              
       
          ![]_  ]_](_urbrack.gif)    
    | 
| 87 | 79, 81, 86 | sylc 62 | 
. . . . . . 7
                     
               ![]_  ]_](_urbrack.gif)        | 
| 88 |   | 1cnd 8042 | 
. . . . . . 7
                     
                  | 
| 89 |   | eleq1 2259 | 
. . . . . . . . 9
                   
        | 
| 90 | 89 | dcbid 839 | 
. . . . . . . 8
            DECID      
  DECID    
    | 
| 91 | 3 | ralrimiva 2570 | 
. . . . . . . . 9
                 DECID        | 
| 92 | 91 | adantr 276 | 
. . . . . . . 8
       
            
          DECID        | 
| 93 |   | simpr 110 | 
. . . . . . . 8
       
            
           | 
| 94 | 90, 92, 93 | rspcdva 2873 | 
. . . . . . 7
       
            
DECID  
     | 
| 95 | 87, 88, 94 | ifcldadc 3590 | 
. . . . . 6
       
            
           
   ![]_  ]_](_urbrack.gif)            | 
| 96 |   | nfcv 2339 | 
. . . . . . 7
      | 
| 97 |   | nfv 1542 | 
. . . . . . . 8
           | 
| 98 |   | nfcv 2339 | 
. . . . . . . 8
      | 
| 99 | 97, 82, 98 | nfif 3589 | 
. . . . . . 7
                   ![]_  ]_](_urbrack.gif)       | 
| 100 | 89, 84 | ifbieq1d 3583 | 
. . . . . . 7
                                           ![]_  ]_](_urbrack.gif)        | 
| 101 | 96, 99, 100, 1 | fvmptf 5654 | 
. . . . . 6
                           ![]_  ]_](_urbrack.gif)                                 
   ![]_  ]_](_urbrack.gif)        | 
| 102 | 78, 95, 101 | syl2an2 594 | 
. . . . 5
       
            
                       ![]_  ]_](_urbrack.gif)        | 
| 103 | 102, 95 | eqeltrd 2273 | 
. . . 4
       
            
           | 
| 104 |   | prodmodclem2.4 | 
. . . . . 6
                      ♯               ![]_  ]_](_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 |   | elnnuz 9638 | 
. . . . . . . 8
          
           | 
| 110 | 109 | biimpri 133 | 
. . . . . . 7
              
       | 
| 111 | 110 | adantl 277 | 
. . . . . 6
       
            
       | 
| 112 | 22 | ad2antrr 488 | 
. . . . . . . . 9
                     
     ♯                  | 
| 113 |   | 1zzd 9353 | 
. . . . . . . . . . 11
                     
     ♯              | 
| 114 | 8 | ad2antrr 488 | 
. . . . . . . . . . 11
                     
     ♯          
   | 
| 115 |   | eluzelz 9610 | 
. . . . . . . . . . . 12
              
       | 
| 116 | 115 | ad2antlr 489 | 
. . . . . . . . . . 11
                     
     ♯          
   | 
| 117 | 113, 114,
116 | 3jca 1179 | 
. . . . . . . . . 10
                     
     ♯                           
    | 
| 118 |   | eluzle 9613 | 
. . . . . . . . . . . 12
              
       | 
| 119 | 118 | ad2antlr 489 | 
. . . . . . . . . . 11
                     
     ♯          
   | 
| 120 |   | simpr 110 | 
. . . . . . . . . . . 12
                     
     ♯            ♯     | 
| 121 | 15 | ad2antrr 488 | 
. . . . . . . . . . . 12
                     
     ♯        ♯         | 
| 122 | 120, 121 | breqtrd 4059 | 
. . . . . . . . . . 11
                     
     ♯              | 
| 123 | 119, 122 | jca 306 | 
. . . . . . . . . 10
                     
     ♯                 
      | 
| 124 |   | elfz2 10090 | 
. . . . . . . . . 10
              
             
                 
             | 
| 125 | 117, 123,
124 | sylanbrc 417 | 
. . . . . . . . 9
                     
     ♯          
       | 
| 126 | 112, 125 | ffvelcdmd 5698 | 
. . . . . . . 8
                     
     ♯                  | 
| 127 | 80 | ad2antrr 488 | 
. . . . . . . 8
                     
     ♯         
       
   | 
| 128 |   | nfcsb1v 3117 | 
. . . . . . . . . 10
              ![]_  ]_](_urbrack.gif)   | 
| 129 | 128 | nfel1 2350 | 
. . . . . . . . 9
              ![]_  ]_](_urbrack.gif)  
    | 
| 130 |   | csbeq1a 3093 | 
. . . . . . . . . 10
                             ![]_  ]_](_urbrack.gif)    | 
| 131 | 130 | eleq1d 2265 | 
. . . . . . . . 9
                   
   
          ![]_  ]_](_urbrack.gif)         | 
| 132 | 129, 131 | rspc 2862 | 
. . . . . . . 8
                  
       
              ![]_  ]_](_urbrack.gif)    
    | 
| 133 | 126, 127,
132 | sylc 62 | 
. . . . . . 7
                     
     ♯                 ![]_  ]_](_urbrack.gif)    
   | 
| 134 |   | 1cnd 8042 | 
. . . . . . 7
                     
       ♯      
       | 
| 135 | 111 | nnzd 9447 | 
. . . . . . . 8
       
            
       | 
| 136 | 15, 8 | eqeltrd 2273 | 
. . . . . . . . 9
        ♯         | 
| 137 | 136 | adantr 276 | 
. . . . . . . 8
       
            
 ♯         | 
| 138 |   | zdcle 9402 | 
. . . . . . . 8
             ♯          
DECID  
   ♯     | 
| 139 | 135, 137,
138 | syl2anc 411 | 
. . . . . . 7
       
            
DECID  
   ♯     | 
| 140 | 133, 134,
139 | ifcldadc 3590 | 
. . . . . 6
       
            
     
 ♯               ![]_  ]_](_urbrack.gif)            | 
| 141 | 104, 108,
111, 140 | fvmptd3 5655 | 
. . . . 5
       
            
               ♯               ![]_  ]_](_urbrack.gif)        | 
| 142 | 141, 140 | eqeltrd 2273 | 
. . . 4
       
            
           | 
| 143 |   | eldifi 3285 | 
. . . . . . 7
               ♯                        ♯       | 
| 144 |   | elfzelz 10100 | 
. . . . . . 7
              ♯           
   | 
| 145 | 143, 144 | syl 14 | 
. . . . . 6
               ♯                    | 
| 146 |   | eldifn 3286 | 
. . . . . . . . 9
               ♯              
       | 
| 147 | 146 | iffalsed 3571 | 
. . . . . . . 8
               ♯                            ![]_  ]_](_urbrack.gif)            | 
| 148 |   | ax-1cn 7972 | 
. . . . . . . 8
        | 
| 149 | 147, 148 | eqeltrdi 2287 | 
. . . . . . 7
               ♯                            ![]_  ]_](_urbrack.gif)            | 
| 150 | 149 | adantl 277 | 
. . . . . 6
       
            ♯                             ![]_  ]_](_urbrack.gif)            | 
| 151 | 145, 150,
101 | syl2an2 594 | 
. . . . 5
       
            ♯                                 
   ![]_  ]_](_urbrack.gif)        | 
| 152 | 147 | adantl 277 | 
. . . . 5
       
            ♯                             ![]_  ]_](_urbrack.gif)            | 
| 153 | 151, 152 | eqtrd 2229 | 
. . . 4
       
            ♯                         | 
| 154 |   | elfzle2 10103 | 
. . . . . . 7
           ♯      
     ♯     | 
| 155 | 154 | adantl 277 | 
. . . . . 6
       
        ♯             ♯     | 
| 156 | 155 | iftrued 3568 | 
. . . . 5
       
        ♯               ♯               ![]_  ]_](_urbrack.gif)                   ![]_  ]_](_urbrack.gif)    | 
| 157 |   | breq1 4036 | 
. . . . . . 7
               
 ♯       
   ♯      | 
| 158 |   | fveq2 5558 | 
. . . . . . . 8
                          | 
| 159 | 158 | csbeq1d 3091 | 
. . . . . . 7
                     ![]_  ]_](_urbrack.gif)               ![]_  ]_](_urbrack.gif)    | 
| 160 | 157, 159 | ifbieq1d 3583 | 
. . . . . 6
                  ♯               ![]_  ]_](_urbrack.gif)                ♯               ![]_  ]_](_urbrack.gif)        | 
| 161 |   | elfznn 10129 | 
. . . . . . 7
           ♯      
       | 
| 162 | 161 | adantl 277 | 
. . . . . 6
       
        ♯               | 
| 163 | 22 | adantr 276 | 
. . . . . . . . 9
       
        ♯                   | 
| 164 |   | simpr 110 | 
. . . . . . . . . 10
       
        ♯                ♯      | 
| 165 | 15 | adantr 276 | 
. . . . . . . . . . 11
       
        ♯         ♯         | 
| 166 | 165 | oveq2d 5938 | 
. . . . . . . . . 10
       
        ♯            ♯              | 
| 167 | 164, 166 | eleqtrd 2275 | 
. . . . . . . . 9
       
        ♯                   | 
| 168 | 163, 167 | ffvelcdmd 5698 | 
. . . . . . . 8
       
        ♯                   | 
| 169 | 80 | adantr 276 | 
. . . . . . . 8
       
        ♯                  
   | 
| 170 |   | nfcsb1v 3117 | 
. . . . . . . . . 10
              ![]_  ]_](_urbrack.gif)   | 
| 171 | 170 | nfel1 2350 | 
. . . . . . . . 9
              ![]_  ]_](_urbrack.gif)  
    | 
| 172 |   | csbeq1a 3093 | 
. . . . . . . . . 10
                             ![]_  ]_](_urbrack.gif)    | 
| 173 | 172 | eleq1d 2265 | 
. . . . . . . . 9
                   
   
          ![]_  ]_](_urbrack.gif)         | 
| 174 | 171, 173 | rspc 2862 | 
. . . . . . . 8
                  
       
              ![]_  ]_](_urbrack.gif)    
    | 
| 175 | 168, 169,
174 | sylc 62 | 
. . . . . . 7
       
        ♯                  ![]_  ]_](_urbrack.gif)  
     | 
| 176 | 156, 175 | eqeltrd 2273 | 
. . . . . 6
       
        ♯               ♯               ![]_  ]_](_urbrack.gif)            | 
| 177 | 104, 160,
162, 176 | fvmptd3 5655 | 
. . . . 5
       
        ♯                       ♯               ![]_  ]_](_urbrack.gif)        | 
| 178 | 4 | adantr 276 | 
. . . . . . . . 9
       
        ♯                   | 
| 179 | 178, 48 | sstrdi 3195 | 
. . . . . . . 8
       
        ♯               | 
| 180 | 179, 168 | sseldd 3184 | 
. . . . . . 7
       
        ♯                   | 
| 181 | 168 | iftrued 3568 | 
. . . . . . . 8
       
        ♯                               ![]_  ]_](_urbrack.gif)                   ![]_  ]_](_urbrack.gif)    | 
| 182 | 181, 175 | eqeltrd 2273 | 
. . . . . . 7
       
        ♯                               ![]_  ]_](_urbrack.gif)            | 
| 183 |   | nfcv 2339 | 
. . . . . . . 8
          | 
| 184 |   | nfv 1542 | 
. . . . . . . . 9
              | 
| 185 | 184, 170,
98 | nfif 3589 | 
. . . . . . . 8
                           ![]_  ]_](_urbrack.gif)       | 
| 186 |   | eleq1 2259 | 
. . . . . . . . 9
                       
            | 
| 187 | 186, 172 | ifbieq1d 3583 | 
. . . . . . . 8
                                                       ![]_  ]_](_urbrack.gif)        | 
| 188 | 183, 185,
187, 1 | fvmptf 5654 | 
. . . . . . 7
                                       ![]_  ]_](_urbrack.gif)                                                 ![]_  ]_](_urbrack.gif)   
    | 
| 189 | 180, 182,
188 | syl2anc 411 | 
. . . . . 6
       
        ♯                                           ![]_  ]_](_urbrack.gif)   
    | 
| 190 | 189, 181 | eqtrd 2229 | 
. . . . 5
       
        ♯                              ![]_  ]_](_urbrack.gif)    | 
| 191 | 156, 177,
190 | 3eqtr4d 2239 | 
. . . 4
       
        ♯                           | 
| 192 | 71, 73, 75, 76, 5, 77, 4, 103, 142, 153, 191 | seq3coll 10934 | 
. . 3
                                              | 
| 193 |   | prodmodc.3 | 
. . . 4
                      ♯               ![]_  ]_](_urbrack.gif)   
    | 
| 194 | 7, 7 | jca 306 | 
. . . 4
                        | 
| 195 | 1, 2, 193, 104, 194, 10, 30 | prodmodclem3 11740 | 
. . 3
                                          | 
| 196 | 192, 195 | eqtr4d 2232 | 
. 2
                                              | 
| 197 | 69, 196 | breqtrd 4059 | 
1
                                     |