
theorem Th17:
  for X be non-empty non empty FinSequence, Y be non empty set
  ex I be Function of [:product X,Y:],product(X^<*Y*>)
  st I is one-to-one onto &
  (for x,y be set st x in product X & y in Y ex x1,y1 be FinSequence
  st x = x1 & <*y*> = y1 & I.(x,y) = x1^y1)
proof
  let X be non-empty non empty FinSequence, Y be non empty set;
A1: product <*Y*> <> {}
  proof
    assume product <*Y*> = {};
    then {} in rng <*Y*> by CARD_3:26;
    then {} in { Y } by FINSEQ_1:39;
    hence contradiction by TARSKI:def 1;
  end;
  consider I be Function of [:product X,Y:],[:product X,product <*Y*>:]
  such that
A2: I is one-to-one & I is onto & (for x,y be set st x in product X & y in Y
  holds I.(x,y) = [x,<*y*>]) by Th15;
  <*Y*> is non-empty
  proof
    assume not (<*Y*> is non-empty);
    then {} in rng <*Y*> by RELAT_1:def 9;
    then {} in {Y} by FINSEQ_1:39;
    hence contradiction by TARSKI:def 1;
  end;
  then reconsider YY=<*Y*> as non-empty non empty FinSequence;
  consider J be Function of [:product X,product YY:],product(X^YY)
  such that
A3: J is one-to-one & J is onto & (for x,y be FinSequence st x in product X &
  y in product YY holds J.(x,y) = x^y) by PRVECT_3:6;
  set K = J*I;
  reconsider K as Function of [:product X,Y:],product (X^<*Y*>);
  take K;
  thus K is one-to-one by A2,A3;
A4: rng J = product (X^<*Y*>) by A3,FUNCT_2:def 3;
  rng I = [:product X,product<*Y*>:] by A2,FUNCT_2:def 3;
  then rng(J * I) = J.:([:product X,product <*Y*>:]) by RELAT_1:127
    .= product (X^<*Y*>) by A4,RELSET_1:22;
  hence K is onto by FUNCT_2:def 3;
  thus for x,y be set st x in product X & y in Y ex x1,y1 be FinSequence st
  x = x1 & <*y*> =y1 & K.(x,y) = x1^y1
  proof
    let x,y be set;
    assume
A5: x in product X & y in Y;
    then
A6: I.(x,y) = [x,<*y*>] by A2;
A7: [x,y] in [: product X,Y:] by A5,ZFMISC_1:87;
    then [x,<*y*>] in [:product X,product <*Y*>:] by A6,A1,FUNCT_2:5;
    then
A8: <*y*> in product <*Y*> by ZFMISC_1:87;
    reconsider xx=x as Function by A5;
    dom xx = dom X by CARD_3:9,A5
      .=Seg (len X) by FINSEQ_1:def 3;
    then reconsider x1=xx as FinSequence by FINSEQ_1:def 2;
    set y1 = <*y*>;
A9: J.(x,<*y*>) = x1^y1 by A3,A5,A8;
    J.(x,<*y*>) = K.(x,y) by A6,A7,FUNCT_2:15;
    hence thesis by A9;
  end;
end;
