 reserve n for Nat;

theorem Th11:
  for R being non degenerated comRing,
      a,b being non zero Element of R, n,m being Nat holds
   anpoly(a,n) *' anpoly(b,m) = anpoly(a*b,n+m)
   proof
     let R be non degenerated comRing,
         a,b be non zero Element of R, n,m be Nat;
     set p = anpoly(a,n), q = anpoly(b,m), r = anpoly(a*b,n+m);
     per cases;
       suppose A1: n = 0;
       hence p *' q = (a|R) *' q
              .= (a * 1_.R) *' q by RING_4:16
              .= a * ((1_.R) *' q) by RING_4:10
              .= r by A1,Th10;
       end;
       suppose A2: m = 0;
       hence p *' q = p *' (b|R)
              .= p *' (b * 1_.R) by RING_4:16
              .= b * (p *' 1_.R) by RING_4:10
              .= r by A2,Th10;
       end;
       suppose
A3:    n <> 0 & m <> 0; then
A4:     n >= 0 + 1 & m >= 0 + 1 by NAT_1:13;
       now let i be Element of NAT;
         consider F being FinSequence of the carrier of R such that
A5:       len F = i+1 & (p*'q).i = Sum F & for k being Element of NAT
         st k in dom F holds F.k = p.(k-'1) * q.(i+1-'k) by POLYNOM3:def 9;
A6:     for k being Element of NAT st k in dom F & k <> len p holds F/.k = 0.R
         proof
           let k be Element of NAT;
           assume
A7:        k in dom F & k <> len p;
A8:        deg p = n by Lm1;
           now assume
A9:          k -' 1 = n; then
             k - 1 = k -' 1 by A3,XREAL_0:def 2;
             hence contradiction by A7,A9,A8;
           end; then
A10:       p.(k-'1) = 0.R by POLYDIFF:25;
           thus F/.k = F.k by A7,PARTFUN1:def 6
              .= 0.R * q.(i+1-'k) by A10,A7,A5 .= 0.R;
        end;
A11:    dom F = Seg(i+1) by FINSEQ_1:def 3,A5;
        per cases;
          suppose
A12:        i = n + m;
A13:       deg p = n by Lm1; then
A14:       len p <= n + 1 + m by NAT_1:11;
A15:       dom F = Seg(n+m+1) by A12,A5,FINSEQ_1:def 3;
          len p - 1 + 1 >= 1 + 1 by A13,A4,XREAL_1:6; then
A16:       1 <= len p by XXREAL_0:2;
A17:       len p -' 1 = n by A13,XREAL_0:def 2;
          m = i + 1 - len p by A13,A12; then
A18:       i + 1 -' len p = m by XREAL_0:def 2;
          Sum F = F/.(len p) by A16,A6,A14,A15,FINSEQ_1:1,POLYNOM2:3
          .= F.(len p) by A16,A14,A15,FINSEQ_1:1,PARTFUN1:def 6
          .= p.n * q.m by A16,A14,A15,FINSEQ_1:1,A17,A18,A5
          .= a * q.m by POLYDIFF:24
          .= a * b by POLYDIFF:24;
          hence r.i = (p *' q).i by A5,A12,POLYDIFF:24;
          end;
          suppose
A19:        i <> n + m;
          Sum F = 0.R
          proof
            per cases;
              suppose i < len p - 1; then
A20:          i + 1 < (len p - 1) + 1 by XREAL_1:6;
              now let k be Element of NAT;
                assume
A21:            k in dom F; then
                1 <= k <= i + 1 by A11,FINSEQ_1:1;
                hence 0.R = F/.k by A20,A21,A6 .= F.k by A21,PARTFUN1:def 6;
              end;
              hence thesis by POLYNOM3:1;
            end;
              suppose
A22:            i >= len p - 1;
              now let k be Element of NAT;
                assume
A23:             k in dom F;
                per cases;
                  suppose k <> len p;
                  hence 0.R = F/.k by A23,A6 .= F.k by A23,PARTFUN1:def 6;
                  end;
                  suppose
A24:               k = len p;
A25:               deg p = n by Lm1;
                  i + 1 >= (len p - 1) + 1 by A22,XREAL_1:6; then
                  i + 1 - len p >= len p - len p by XREAL_1:6; then
                  i + 1 -' len p = i - n by A25,XREAL_0:def 2; then
A26:              i + 1 -' len p <> m by A19;
                  thus F.k = p.(len p -'1) * q.(i+1-' len p) by A5,A23,A24
                   .= p.(len p -'1) * 0.R by A26,POLYDIFF:25
                   .= 0.R;
                 end;
               end;
               hence thesis by POLYNOM3:1;
             end;
           end;
           hence r.i = (p *' q).i by A5,A19,POLYDIFF:25;
         end;
       end;
       hence thesis;
     end;
   end;
