
theorem
  for C being with_exponential_objects with_binary_products non empty category,
      a,b,c being Object of C st Hom(c [x] a,b) <> {} 
  holds
  ex L being Function of Hom(c [x] a,b), Hom(c,b|^a) st
  (for f being Morphism of c [x] a,b, h being Morphism of c,b|^a st h = L.f
  holds eval(a,b) * (h [x] id- a) = f) & L is bijective
  proof
    let C be with_exponential_objects with_binary_products non empty category;
    let a,b,c be Object of C;
    assume
A1: Hom(c [x] a, b) <> {};
A2: Hom(b|^a [x] a, b) <> {} & b|^a,eval(a,b) is_exponent_of a,b by Th70;
    defpred P[object,object] means
    for f being Morphism of c [x] a,b st f = $1 ex h being Morphism of c,b|^a
    st h = $2 & f = eval(a,b) * (h [x] id- a) &
    for h1 being Morphism of c,b|^a st f = eval(a,b) * (h1[x]id- a)
    holds h = h1;
A4: for x being object st x in Hom(c [x] a,b)
    ex y being object st y in Hom(c,b|^a) & P[x,y]
    proof
      let x be object;
      assume
A5:   x in Hom(c [x] a,b);
      reconsider f = x as Morphism of c [x] a,b by A5,CAT_7:def 3;
      consider y be Morphism of c,b|^a such that
A6:   f = eval(a,b) * (y[x]id- a) &
      for h1 being Morphism of c,b|^a st f = eval(a,b) * (h1[x]id- a)
      holds y = h1 by A2,A1,Def29;
      take y;
      Hom(c,b|^a)<>{} by A2,A1,Def29;
      hence y in Hom(c,b|^a) by CAT_7:def 3;
      thus P[x,y] by A6;
    end;
    consider L be Function of Hom(c [x] a,b), Hom(c,b|^a) such that
A7: for x being object st x in Hom(c [x] a,b) holds P[x,L.x]
    from FUNCT_2:sch 1(A4);
    take L;
A8: ex y being object st y in Hom(c,b|^a)
    proof
      consider x be object such that
A9:   x in Hom(c [x] a,b) by A1,XBOOLE_0:def 1;
      consider y be object such that
A10:   y in Hom(c,b|^a) & P[x,y] by A9,A4;
      take y;
      thus y in Hom(c,b|^a) by A10;
    end;
    thus for f being Morphism of c [x] a,b, h being Morphism of c,b|^a
    st h = L.f holds eval(a,b) * (h [x] id- a) = f
    proof
      let f be Morphism of c [x] a,b;
      f in Hom(c [x] a,b) by A1,CAT_7:def 3;
      then consider h0 be Morphism of c,b|^a such that
A11:  h0 = L.f & f = eval(a,b) * (h0[x]id- a) &
      for h1 being Morphism of c,b|^a st f = eval(a,b) * (h1[x]id- a)
      holds h0 = h1 by A7;
      let h be Morphism of c,b|^a;
      assume h = L.f;
      hence eval(a,b) * (h [x] id- a) = f by A11;
    end;
    for x1,x2 being object st x1 in Hom(c [x] a,b) & x2 in Hom(c [x] a,b) &
    L.x1 = L.x2 holds x1 = x2
    proof
      let x1,x2 be object;
      assume
A12:   x1 in Hom(c [x] a,b);
      then reconsider f1 = x1 as Morphism of c [x] a,b by CAT_7:def 3;
      consider h1 be Morphism of c,b|^a such that
A13:  h1 = L.x1 & f1 = eval(a,b) * (h1[x]id- a) &
      for h0 being Morphism of c,b|^a st f1 = eval(a,b) * (h0[x]id- a)
      holds h1 = h0 by A12,A7;
      assume
A14:   x2 in Hom(c [x] a,b);
      then reconsider f2 = x2 as Morphism of c [x] a,b by CAT_7:def 3;
      consider h2 be Morphism of c,b|^a such that
A15:  h2 = L.x2 & f2 = eval(a,b) * (h2[x]id- a) &
      for h0 being Morphism of c,b|^a st f2 = eval(a,b) * (h0[x]id- a)
      holds h2 = h0 by A14,A7;
      assume L.x1 = L.x2;
      hence x1 = x2 by A13,A15;
    end;
    then
A16: L is one-to-one by A8,FUNCT_2:19;
    for y being object st y in Hom(c,b|^a) holds y in rng L
    proof
      let y be object;
      assume y in Hom(c,b|^a);
      then reconsider h = y as Morphism of c,b|^a by CAT_7:def 3;
      set f1 = eval(a,b) * (h [x] id- a);
A17:  f1 in Hom(c [x] a,b) by A1,CAT_7:def 3;
      then consider h1 be Morphism of c,b|^a such that
A18:  h1 = L.f1 & f1 = eval(a,b) * (h1[x]id- a) &
      for h0 being Morphism of c,b|^a st f1 = eval(a,b) * (h0[x]id- a)
      holds h1 = h0 by A7;
A19:  y = L.f1 by A18;
      f1 in dom L by A8,A17,FUNCT_2:def 1;
      hence y in rng L by A19,FUNCT_1:3;
    end;
    then Hom(c,b|^a) 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 A16;
  end;
