
theorem
for D be non empty set,
    E be non-empty non empty FinSequence,
    F be non empty set holds
 ex L being Function of Funcs(D,Funcs(product E,F)),
                     Funcs(product(E^<*D*>),F)
  st L is bijective
   & for f be Function of D,Funcs(product E,F),
         e be FinSequence, d be object
      st e in product E & d in D holds (L.f).(e^<*d*>) = (f.d).e
proof
   let D be non empty set,
       E be non-empty non empty FinSequence,
       F be non empty set;
   consider I be Function of Funcs(D,Funcs(product E,F)),
         Funcs([:product E, D:],F) such that
A1: I is bijective
  & for f be Function of D,Funcs(product E,F), e,d be object
     st e in product E & d in D holds (I.f).(e,d) = (f.d).e by Th2;
   consider J be Function of [: product E,D :],product(E^<*D*>) such that
A2: J is bijective
  & for x be FinSequence, y be object st x in product E & y in D
       holds J.(x,y) = x^<*y*> by Th5;
A3:rng J = product(E^<*D*>) by A2,FUNCT_2:def 3; then
   reconsider K = J" as Function of product(E^<*D*>),[:product E,D:]
              by FUNCT_2:25,A2;
   deffunc F0(object)=(I.$1) * K;
A4:for x be object st x in Funcs(D,Funcs(product E,F))
                holds F0(x) in Funcs(product(E^<*D*>),F)
   proof
    let x be object;
    assume x in Funcs(D,Funcs(product E,F)); then
    I.x in Funcs([:product E,D:],F) &
    K in Funcs(product(E^<*D*>),[:product E,D:]) by FUNCT_2:5,8;
    hence thesis by FUNCT_2:128;
   end;
   consider L being Function of Funcs(D,Funcs(product E,F)),
                     Funcs(product(E^<*D*>),F) such that
A5: for e be object st
     e in Funcs(D,Funcs(product E,F)) holds L.e = F0(e) from FUNCT_2:sch 2(A4);
   take L;
A6:
   (K*J) = id [: product E,D :] by A2,A3,FUNCT_2:29;
A7:
   (J*K) = id product(E^<*D*>) by A2,A3,FUNCT_2:29;
   now let z1,z2 be object;
    assume A8: z1 in Funcs(D,Funcs(product E,F))
              & z2 in Funcs(D,Funcs(product E,F)) & L.z1=L.z2;
    (I.z1) * K = L.z2 by A5,A8; then
A9:((I.z1) * K)*J =((I.z2) * K)*J by A5,A8;
    (I.z1)*(K*J) = ((I.z1)* K)*J by RELAT_1:36; then
A10:(I.z1)*(K*J) = (I.z2)*(K*J) by A9,RELAT_1:36;
    I.z1 is Function of [:product E,D:],F &
    I.z2 is Function of [:product E,D:],F by A8,FUNCT_2:5,66; then
    (I.z1)*(K*J) = I.z1 & (I.z2)*(K*J) = I.z2 by A6,FUNCT_2:17;
    hence z1=z2 by A1,FUNCT_2:19,A8,A10;
   end;
   then A11: L is one-to-one by FUNCT_2:19;
   now let w be object;
    assume w in Funcs(product(E^<*D*>),F); then
    reconsider wf = w as Function of product(E^<*D*>),F by FUNCT_2:66;
    wf*J in Funcs([: product E, D :],F ) by FUNCT_2:8; then
    wf*J in rng I by A1,FUNCT_2:def 3; then
    consider zf be object such that
A12: zf in Funcs(D,Funcs(product E,F)) & I.zf = wf*J by FUNCT_2:11;
    L.zf = wf*J*K by A5,A12; then
    L.zf = wf* id (product(E^<*D*>)) by A7,RELAT_1:36; then
    L.zf = w by FUNCT_2:17;
    hence w in rng L by A12,FUNCT_2:112;
   end;
   then Funcs(product(E^<*D*>),F) c= rng L by TARSKI:def 3;
   then L is onto by FUNCT_2:def 3,XBOOLE_0:def 10;
   hence L is bijective by A11;
   thus for f be Function of D,Funcs(product E,F),
    e be FinSequence, d be object
     st e in product E & d in D holds (L.f).(e^<*d*>) = (f.d).e
   proof
    let f be Function of D,Funcs(product E,F),
        e be FinSequence, d be object;
    assume A13: e in product E & d in D; then
A14: (I.f).(e,d) = (f.d).e by A1;
A15: J.(e,d) = e^<*d*> by A2,A13;
    [e,d] in [:product E,D:] by A13,ZFMISC_1:def 2; then
A16: J.(e,d) in product(E^<*D*>) & K.(J.(e,d)) = [e,d] by A2,FUNCT_2:5,26;
    f in Funcs(D,Funcs(product E,F)) by FUNCT_2:8; then
    (L.f).(e^<*d*>) = ((I.f)*K).(J.(e,d)) by A15,A5;
    hence (L.f).(e^<*d*>) = (f.d).e by A14,A16,FUNCT_2:15;
   end;
end;
