
theorem
  for n be Nat, f1,f2 be n-element complex-valued XFinSequence holds
    XProduct (f1 (#) f2) = (XProduct f1) * (XProduct f2)
  proof
    let n be Nat, f1, f2 be n-element complex-valued XFinSequence;
    defpred P[Nat] means
      for f1,f2 be $1-element complex-valued XFinSequence holds
    XProduct (f1 (#) f2) = XProduct f1 * XProduct f2;
    A1: for k be Nat st P[k] holds P[k+1]
    proof
      let k be Nat such that
      B1: P[k];
      for f1,f2 be (k+1)-element complex-valued XFinSequence holds
        XProduct (f1 (#) f2) = XProduct f1 * XProduct f2
      proof
        let f1,f2 be (k+1)-element complex-valued XFinSequence;
        reconsider F = f1 (#) f2 as (k+1)-element complex-valued XFinSequence;
        reconsider G = (f1 (#) f2)|k as k-element complex-valued XFinSequence;
        reconsider g1 = f1|k as k-element complex-valued XFinSequence;
        reconsider g2 = f2|k as k-element complex-valued XFinSequence;
        C1: dom f1 = k+1 & dom f2 = k+1 & dom F = k+1 by CARD_1:def 7;
        k + 0 < k + 1 by XREAL_1:6; then
        C2: k in Segm (len f1) & k in Segm (len f2) & k in Segm (len F)
          by C1,NAT_1:44; then
    C3: XProduct (f1|(k+1)) = XProduct g1 * f1.k &
          XProduct (f2|(k+1)) = XProduct g2 * f2.k by A265;
        C4: XProduct (g1 (#) g2) = XProduct g1 * XProduct g2 by B1;
        XProduct F = XProduct (F|(k+1))
        .= XProduct G * F.k by C2,A265
        .= (XProduct g1 * XProduct g2) * (f1 (#) f2).k by C4,MFG
        .= XProduct g1 * XProduct g2 * (f1.k * f2.k) by C2,VALUED_1:def 4
        .= XProduct f1 * XProduct f2 by C3;
        hence thesis;
      end;
      hence thesis;
    end;
A2: P[0]
    proof
      let f1,f2 be 0-element complex-valued XFinSequence;
      XProduct (f1(#)f2) = 1 & XProduct f1 = 1 & XProduct f2 = 1 by PFO;
      hence thesis;
    end;
    for k be Nat holds P[k] from NAT_1:sch 2(A2,A1);
    hence thesis;
  end;
