reserve i,j for Nat;
reserve A,B for Ring;

theorem Th24:
  for B be comRing
  for p,q be Polynomial of A for x be Element of B st A is Subring of B
  holds Ext_eval(p*'q,x) = Ext_eval(p,x) * Ext_eval(q,x)
proof
  let B be comRing;
  let p,q be Polynomial of A;
  let x be Element of B;
    assume
A0:   A is Subring of B;
  defpred P[Nat] means for p be Polynomial of A holds len p = $1
  implies Ext_eval(p*'q,x) = Ext_eval(p,x)* Ext_eval(q,x);
A1: for k be Nat st for n be Nat st n < k holds P[n] holds P[k]
  proof
    let k be Nat;
    assume
A2: for n be Nat st n < k holds for p be Polynomial of A holds len p =
    n implies Ext_eval(p*'q,x) = Ext_eval(p,x) * Ext_eval(q,x);
    let p be Polynomial of A;
    assume
A3: len p = k;
    per cases;
    suppose
A4:   len p <> 0;
      set LMp = Leading-Monomial(p);
      consider r be Polynomial of A such that
A5:   len r < len p and
A6:   p = r+Leading-Monomial(p) and
      for n be Element of NAT st n < len p-1 holds r.n = p.n by A4,POLYNOM4:16;
      thus Ext_eval(p*'q,x) = Ext_eval(r*'q+LMp*'q,x) by A6,POLYNOM3:32
    .= Ext_eval(r*'q,x) + Ext_eval(LMp*'q,x) by A0,Th19
    .= Ext_eval(r,x)*Ext_eval(q,x) + Ext_eval(LMp*'q,x) by A2,A3,A5
    .= Ext_eval(r,x)*Ext_eval(q,x) + Ext_eval(LMp,x)*Ext_eval(q,x)
       by A0,Th15
    .= (Ext_eval(r,x)+Ext_eval(LMp,x))*Ext_eval(q,x) by VECTSP_1:def 7
    .= Ext_eval(p,x) * Ext_eval(q,x) by A0,A6,Th19;
    end;
    suppose
      len p = 0; then
A7:   p = 0_.A by POLYNOM4:5;
      hence Ext_eval(p*'q,x) = Ext_eval(0_.A,x) by POLYNOM4:2
        .= 0.B * Ext_eval(q,x) by Th17
        .= Ext_eval(p,x) * Ext_eval(q,x) by A7,Th17;
    end;
  end;
A8: for n be Nat holds P[n] from NAT_1:sch 4(A1);
  len p = len p;
  hence thesis by A8;
end;
