| Step | Hyp | Ref
| Expression |
| 1 | | fprodabs.2 |
. . 3
   |
| 2 | | fprodabs.1 |
. . 3
     |
| 3 | 1, 2 | eleqtrdi 2289 |
. 2
       |
| 4 | | oveq2 5930 |
. . . . . . 7
           |
| 5 | 4 | prodeq1d 11729 |
. . . . . 6
       
       |
| 6 | 5 | fveq2d 5562 |
. . . . 5
                       |
| 7 | 4 | prodeq1d 11729 |
. . . . 5
                       |
| 8 | 6, 7 | eqeq12d 2211 |
. . . 4
                                             |
| 9 | 8 | imbi2d 230 |
. . 3
  
                    
                         |
| 10 | | oveq2 5930 |
. . . . . . 7
           |
| 11 | 10 | prodeq1d 11729 |
. . . . . 6
       
       |
| 12 | 11 | fveq2d 5562 |
. . . . 5
                       |
| 13 | 10 | prodeq1d 11729 |
. . . . 5
                       |
| 14 | 12, 13 | eqeq12d 2211 |
. . . 4
                                             |
| 15 | 14 | imbi2d 230 |
. . 3
  
                    
                         |
| 16 | | oveq2 5930 |
. . . . . . 7
               |
| 17 | 16 | prodeq1d 11729 |
. . . . . 6
         
         |
| 18 | 17 | fveq2d 5562 |
. . . . 5
                           |
| 19 | 16 | prodeq1d 11729 |
. . . . 5
                 
         |
| 20 | 18, 19 | eqeq12d 2211 |
. . . 4
                               
                   |
| 21 | 20 | imbi2d 230 |
. . 3
    
                    
        
                    |
| 22 | | oveq2 5930 |
. . . . . . 7
           |
| 23 | 22 | prodeq1d 11729 |
. . . . . 6
       
       |
| 24 | 23 | fveq2d 5562 |
. . . . 5
                       |
| 25 | 22 | prodeq1d 11729 |
. . . . 5
                       |
| 26 | 24, 25 | eqeq12d 2211 |
. . . 4
                                             |
| 27 | 26 | imbi2d 230 |
. . 3
  
                    
                         |
| 28 | | csbfv2g 5597 |
. . . . . 6
   ![]_ ]_](_urbrack.gif)          ![]_ ]_](_urbrack.gif)    |
| 29 | 28 | adantl 277 |
. . . . 5
 

  ![]_ ]_](_urbrack.gif)          ![]_ ]_](_urbrack.gif)    |
| 30 | | fzsn 10141 |
. . . . . . . 8
         |
| 31 | 30 | adantl 277 |
. . . . . . 7
 

        |
| 32 | 31 | prodeq1d 11729 |
. . . . . 6
 

                   |
| 33 | | simpr 110 |
. . . . . . 7
 

  |
| 34 | | uzid 9615 |
. . . . . . . . . . . 12
       |
| 35 | 34, 2 | eleqtrrdi 2290 |
. . . . . . . . . . 11
   |
| 36 | | fprodabs.3 |
. . . . . . . . . . . . 13
 
   |
| 37 | 36 | ralrimiva 2570 |
. . . . . . . . . . . 12
 
  |
| 38 | | nfcsb1v 3117 |
. . . . . . . . . . . . . 14
  
 ![]_ ]_](_urbrack.gif)  |
| 39 | 38 | nfel1 2350 |
. . . . . . . . . . . . 13
    ![]_ ]_](_urbrack.gif)
 |
| 40 | | csbeq1a 3093 |
. . . . . . . . . . . . . 14
   ![]_ ]_](_urbrack.gif)   |
| 41 | 40 | eleq1d 2265 |
. . . . . . . . . . . . 13
 
  ![]_ ]_](_urbrack.gif)    |
| 42 | 39, 41 | rspc 2862 |
. . . . . . . . . . . 12
  
  ![]_ ]_](_urbrack.gif)
   |
| 43 | 37, 42 | mpan9 281 |
. . . . . . . . . . 11
 
   ![]_ ]_](_urbrack.gif)   |
| 44 | 35, 43 | sylan2 286 |
. . . . . . . . . 10
 

  ![]_ ]_](_urbrack.gif)   |
| 45 | 44 | abscld 11346 |
. . . . . . . . 9
 

     ![]_ ]_](_urbrack.gif)    |
| 46 | 45 | recnd 8055 |
. . . . . . . 8
 

     ![]_ ]_](_urbrack.gif)    |
| 47 | 29, 46 | eqeltrd 2273 |
. . . . . . 7
 

  ![]_ ]_](_urbrack.gif)       |
| 48 | | prodsns 11768 |
. . . . . . 7
    ![]_ ]_](_urbrack.gif)               ![]_ ]_](_urbrack.gif)       |
| 49 | 33, 47, 48 | syl2anc 411 |
. . . . . 6
 

         ![]_ ]_](_urbrack.gif)       |
| 50 | 32, 49 | eqtrd 2229 |
. . . . 5
 

            ![]_ ]_](_urbrack.gif)       |
| 51 | 30 | prodeq1d 11729 |
. . . . . . . 8
       
     |
| 52 | 51 | adantl 277 |
. . . . . . 7
 

            |
| 53 | | prodsns 11768 |
. . . . . . . 8
    ![]_ ]_](_urbrack.gif)
       ![]_ ]_](_urbrack.gif)   |
| 54 | 33, 44, 53 | syl2anc 411 |
. . . . . . 7
 

      ![]_ ]_](_urbrack.gif)   |
| 55 | 52, 54 | eqtrd 2229 |
. . . . . 6
 

        ![]_ ]_](_urbrack.gif)   |
| 56 | 55 | fveq2d 5562 |
. . . . 5
 

               ![]_ ]_](_urbrack.gif)    |
| 57 | 29, 50, 56 | 3eqtr4rd 2240 |
. . . 4
 

                      |
| 58 | 57 | expcom 116 |
. . 3
                         |
| 59 | | simp3 1001 |
. . . . . . . 8
 
                                               |
| 60 | | peano2uz 9657 |
. . . . . . . . . . 11
    
        |
| 61 | | csbfv2g 5597 |
. . . . . . . . . . 11
      
    ![]_ ]_](_urbrack.gif)            ![]_ ]_](_urbrack.gif)    |
| 62 | 60, 61 | syl 14 |
. . . . . . . . . 10
    
    ![]_ ]_](_urbrack.gif)            ![]_ ]_](_urbrack.gif)    |
| 63 | 62 | eqcomd 2202 |
. . . . . . . . 9
    
       ![]_ ]_](_urbrack.gif)   
  ![]_ ]_](_urbrack.gif)       |
| 64 | 63 | 3ad2ant2 1021 |
. . . . . . . 8
 
                                ![]_ ]_](_urbrack.gif)      ![]_ ]_](_urbrack.gif)       |
| 65 | 59, 64 | oveq12d 5940 |
. . . . . . 7
 
                                           ![]_ ]_](_urbrack.gif)    
             ![]_ ]_](_urbrack.gif)        |
| 66 | | simpr 110 |
. . . . . . . . . . 11
 
    
      |
| 67 | | elfzuz 10096 |
. . . . . . . . . . . . . 14
    
        |
| 68 | 67, 2 | eleqtrrdi 2290 |
. . . . . . . . . . . . 13
    
    |
| 69 | 68, 36 | sylan2 286 |
. . . . . . . . . . . 12
 
      
  |
| 70 | 69 | adantlr 477 |
. . . . . . . . . . 11
       
      
  |
| 71 | 66, 70 | fprodp1s 11767 |
. . . . . . . . . 10
 
    
         
         ![]_ ]_](_urbrack.gif)    |
| 72 | 71 | fveq2d 5562 |
. . . . . . . . 9
 
    
   
                      ![]_ ]_](_urbrack.gif)     |
| 73 | | eluzel2 9606 |
. . . . . . . . . . . . 13
    
  |
| 74 | 73 | adantl 277 |
. . . . . . . . . . . 12
 
    
  |
| 75 | | eluzelz 9610 |
. . . . . . . . . . . . 13
    
  |
| 76 | 75 | adantl 277 |
. . . . . . . . . . . 12
 
    
  |
| 77 | 74, 76 | fzfigd 10523 |
. . . . . . . . . . 11
 
    
      |
| 78 | | elfzuz 10096 |
. . . . . . . . . . . . . 14
           |
| 79 | 78, 2 | eleqtrrdi 2290 |
. . . . . . . . . . . . 13
       |
| 80 | 79, 36 | sylan2 286 |
. . . . . . . . . . . 12
 
    
  |
| 81 | 80 | adantlr 477 |
. . . . . . . . . . 11
       
    
  |
| 82 | 77, 81 | fprodcl 11772 |
. . . . . . . . . 10
 
    
        |
| 83 | 60, 2 | eleqtrrdi 2290 |
. . . . . . . . . . 11
    
    |
| 84 | | nfcsb1v 3117 |
. . . . . . . . . . . . . 14
      ![]_ ]_](_urbrack.gif)  |
| 85 | 84 | nfel1 2350 |
. . . . . . . . . . . . 13
      ![]_ ]_](_urbrack.gif)
 |
| 86 | | csbeq1a 3093 |
. . . . . . . . . . . . . 14
       ![]_ ]_](_urbrack.gif)   |
| 87 | 86 | eleq1d 2265 |
. . . . . . . . . . . . 13
   
    ![]_ ]_](_urbrack.gif)    |
| 88 | 85, 87 | rspc 2862 |
. . . . . . . . . . . 12
    
    ![]_ ]_](_urbrack.gif)
   |
| 89 | 37, 88 | mpan9 281 |
. . . . . . . . . . 11
 
       ![]_ ]_](_urbrack.gif)   |
| 90 | 83, 89 | sylan2 286 |
. . . . . . . . . 10
 
    
    ![]_ ]_](_urbrack.gif)   |
| 91 | 82, 90 | absmuld 11359 |
. . . . . . . . 9
 
    
              ![]_ ]_](_urbrack.gif)                     ![]_ ]_](_urbrack.gif)     |
| 92 | 72, 91 | eqtrd 2229 |
. . . . . . . 8
 
    
   
                          ![]_ ]_](_urbrack.gif)     |
| 93 | 92 | 3adant3 1019 |
. . . . . . 7
 
                                                       ![]_ ]_](_urbrack.gif)     |
| 94 | 70 | abscld 11346 |
. . . . . . . . . 10
       
      
      |
| 95 | 94 | recnd 8055 |
. . . . . . . . 9
       
      
      |
| 96 | 66, 95 | fprodp1s 11767 |
. . . . . . . 8
 
    
                           ![]_ ]_](_urbrack.gif)        |
| 97 | 96 | 3adant3 1019 |
. . . . . . 7
 
                             
        
             ![]_ ]_](_urbrack.gif)        |
| 98 | 65, 93, 97 | 3eqtr4d 2239 |
. . . . . 6
 
                                         
         |
| 99 | 98 | 3exp 1204 |
. . . . 5
                          
   
                        |
| 100 | 99 | com12 30 |
. . . 4
    
                     
   
                        |
| 101 | 100 | a2d 26 |
. . 3
    
                               
                    |
| 102 | 9, 15, 21, 27, 58, 101 | uzind4 9662 |
. 2
    
                        |
| 103 | 3, 102 | mpcom 36 |
1
                       |