
theorem ::: An analogue of RFINSEQ for Products - EULER_2 change for Functions
  for R1,R2 being real-valued FinSequence st R1,R2 are_fiberwise_equipotent
    holds Product R1 = Product R2
proof
  let R1,R2 be real-valued FinSequence;
  defpred P[Nat] means for f,g be FinSequence of REAL st f,g
  are_fiberwise_equipotent & len f = $1 holds Product f = Product g;
  assume
A1: R1,R2 are_fiberwise_equipotent;
A2: len R1 = len R1;
A3: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume
A4: P[n];
    let f,g be FinSequence of REAL;
    assume that
A5: f,g are_fiberwise_equipotent and
A6: len f = n+1;
    set a = f.(n+1);
A7: rng f = rng g by A5,CLASSES1:75;
    0 qua Nat + 1 <= n + 1 by NAT_1:13;
    then n+1 in dom f by A6,FINSEQ_3:25;
    then a in rng g by A7,FUNCT_1:def 3;
    then consider m being Nat such that
A8: m in dom g and
A9: g.m = a by FINSEQ_2:10;
    set gg = g/^m, gm = g|m;
A11: 1 <= m by A8,FINSEQ_3:25;
    max(0,m-1) = m-1 by FINSEQ_2:4,A8,FINSEQ_3:25;
    then reconsider m1 = m-1 as Element of NAT by FINSEQ_2:5;
    m = m1+1; then
A13: Seg m1 c= Seg m by FINSEQ_1:5,NAT_1:11;
    m in Seg m by A11; then
WW: a = gm.(m1+1) by A8,A9,RFINSEQ:6;
    m <= len g by A8,FINSEQ_3:25; then
    len gm = m by FINSEQ_1:59; then
A14:gm = (gm|m1)^<*a*> by WW,RFINSEQ:7;
    set fn = f|n;
A15: g = (g|m)^(g/^m) by RFINSEQ:8;
A16: gm|m1 = g | ((Seg m)/\(Seg m1)) by RELAT_1:71
          .= g|m1 by A13,XBOOLE_1:28;
A17: f = fn ^ <*a*> by A6,RFINSEQ:7;
    now
      let x be object;
      card Coim(f,x) = card Coim(g,x) by A5; then
      card(fn"{x}) +
        card(<*a*>"{x}) = card(((g|m1)^<*a*>^(g/^m))"{x})
          by A15,A14,A16,A17,FINSEQ_3:57
        .= card(((g|m1)^<*a*>)"{x}) + card((g/^m)"{x}) by FINSEQ_3:57
        .= card((g|m1)"{x})+ card(<*a*>"{x}) + card((g/^m)"{x}) by FINSEQ_3:57
        .= card((g|m1)"{x}) + card((g/^m)"{x})+ card(<*a*>"{x})
        .= card(((g|m1)^(g/^m))"{x})+ card(<*a*>"{x}) by FINSEQ_3:57;
      hence card Coim(fn,x) = card Coim((g|m1)^(g/^m),x);
    end; then
A18: fn, (g|m1)^(g/^m) are_fiberwise_equipotent;
    len fn = n by A6,FINSEQ_1:59,NAT_1:11;
    then Product fn = Product ((g|m1)^gg) by A4,A18;
    hence Product f = Product((g|m1)^gg) * Product <*a*> by A17,RVSUM_1:97
      .= Product(g|m1) * Product gg* Product <*a*> by RVSUM_1:97
      .= Product(g|m1) * Product <*a*> * Product gg
      .= Product gm * Product gg by A14,A16,RVSUM_1:97
      .= Product g by A15,RVSUM_1:97;
  end;
A19: P[0]
  proof
    let f,g be FinSequence of REAL;
    assume
a:   f,g are_fiberwise_equipotent & len f = 0; then
A20: len g = 0 & f = <*>REAL by RFINSEQ:3;
     g = <*>REAL by RFINSEQ:3,a;
    hence thesis by A20;
  end;
A4: for n being Nat holds P[n] from NAT_1:sch 2(A19,A3);
  R1 is FinSequence of REAL & R2 is FinSequence of REAL by RVSUM_1:145;
  hence thesis by A1,A2,A4;
end;
