reserve D for non empty set,
  i,j,k,l for Nat,
  n for Nat,
  x for set,
  a,b,c,r,r1,r2 for Real,
  p,q for FinSequence of REAL,
  MR,MR1 for Matrix of REAL;

theorem Th57:
  for p,q being non empty ProbFinS FinSequence of REAL, pp,qq
being FinSequence of REAL st len p = len q & len pp = len p & len qq = len q &
(for k st k in dom p holds p.k > 0 & q.k > 0 & pp.k=-p.k*log(2,p.k) & qq.k = -p
  .k*log(2,q.k)) holds Sum pp <= Sum qq & ((for k st k in dom p holds p.k=q.k)
  iff Sum pp = Sum qq) & ((ex k st k in dom p & p.k<>q.k) iff Sum pp < Sum qq)
proof
  let p,q be non empty ProbFinS FinSequence of REAL, pp,qq be FinSequence of
  REAL such that
A1: len p = len q and
A2: len pp = len p and
A3: len qq = len q and
A4: for k st k in dom p holds p.k > 0 & q.k > 0 & pp.k=-p.k*log(2,p.k) &
  qq.k=-p.k*log(2,q.k);
  set p1 = pp-qq;
A5: number_e <> 1 by TAYLOR_1:11;
A6: len (pp - qq) = len p by A1,A2,A3,RVSUM_1:116;
  then
A7: dom (pp - qq) = dom pp by A2,FINSEQ_3:29;
  then for k st k in dom pp holds (pp - qq).k = pp.k - qq.k by VALUED_1:13;
  then
A8: Sum pp - Sum qq = Sum(pp-qq) by A1,A2,A3,A6,Th8;
A9: dom pp = Seg len pp by FINSEQ_1:def 3
    .= dom p by A2,FINSEQ_1:def 3;
A10: for k st k in dom p holds p1.k = p.k*log(2,number_e)*log(number_e,(q.k)
  /(p.k))
  proof
    let k such that
A11: k in dom p;
A12: pp.k=-p.k*log(2,p.k) by A4,A11;
A13: qq.k=-p.k*log(2,q.k) by A4,A11;
A14: p.k > 0 by A4,A11;
    then
A15: -log(2,p.k)=log(2,1/(p.k)) by Th5;
A16: q.k > 0 by A4,A11;
    then (q.k)/(p.k) > 0 by A14,XREAL_1:139;
    then
A17: log(2,(q.k)/(p.k)) = log(2,number_e)*log(number_e,(q.k)/(p.k)) by A5,
POWER:56,TAYLOR_1:11;
    thus p1.k = pp.k - qq.k by A7,A9,A11,VALUED_1:13
      .= p.k*(log(2,1/(p.k)) + log(2,(q.k))) by A12,A13,A15
      .= p.k*log(2,(1/(p.k))*(q.k)) by A14,A16,POWER:53
      .= p.k*log(2,number_e)*log(number_e,(q.k)/(p.k)) by A17;
  end;
  set n = len p;
  deffunc F(Nat) = In(p.$1*log(2,number_e)*(((q.$1)/(p.$1))-1),REAL);
  consider p2 be FinSequence of REAL such that
A18: len p2 = n and
A19: for k be Nat st k in dom p2 holds p2.k = F(k) from FINSEQ_2:sch 1;
A20: dom p2 = Seg len p2 by FINSEQ_1:def 3
    .= dom p by A18,FINSEQ_1:def 3;
A21: len p1 = len p by A1,A2,A3,RVSUM_1:116;
  then
A22: p1 is Element of n-tuples_on REAL by FINSEQ_2:92;
A23: dom p2 = Seg n by A18,FINSEQ_1:def 3;
A24: len(q-p)=len q by A1,RVSUM_1:116;
A25: for k st k in dom q holds (q-p).k=q.k-p.k
  proof
    let k;
    assume k in dom q;
    then k in dom(q-p) by A24,FINSEQ_3:29;
    hence thesis by VALUED_1:13;
  end;
A26: dom p = Seg n by FINSEQ_1:def 3;
A27: dom(q-p)=dom p2 by A1,A18,A24,FINSEQ_3:29;
A28: for k be Nat st k in dom p2 holds p2.k=(log(2,number_e)*(q-p)).k
  proof
    let k be Nat such that
A29: k in dom p2;
A30: p.k>0 by A4,A20,A29;
    thus p2.k = F(k) by A19,A29
      .= log(2,number_e)*(((p.k)/(p.k))*(q.k)-p.k)
      .= log(2,number_e)*(1*(q.k)-p.k) by A30,XCMPLX_1:60
      .= log(2,number_e)*(q-p).k by A27,A29,VALUED_1:13
      .= (log(2,number_e)*(q-p)).k by RVSUM_1:44;
  end;
  dom p2 = dom(log(2,number_e)*(q-p)) by A27,VALUED_1:def 5;
  then
A31: Sum p2 = Sum(log(2,number_e)*(q-p)) by A28,FINSEQ_1:13
    .= log(2,number_e)* Sum(q-p) by RVSUM_1:87
    .= log(2,number_e)* (Sum q - Sum p) by A1,A24,A25,Th8
    .= log(2,number_e)*(1-Sum p) by MATRPROB:def 5
    .= log(2,number_e)*(1-1) by MATRPROB:def 5
    .=0;
  number_e-0 > 2-1 by TAYLOR_1:11,XREAL_1:15;
  then
A32: log(2,number_e) > 0 by Th4;
A33: for k be Nat st k in Seg n holds p1.k <= p2.k
  proof
    let k be Nat such that
A34: k in Seg n;
A35: k in dom p by A34,FINSEQ_1:def 3;
    then
A36: p.k > 0 by A4;
    q.k > 0 by A4,A35;
    then (q.k)/(p.k) > 0 by A36,XREAL_1:139;
    then log(number_e,(q.k)/(p.k)) <= ((q.k)/(p.k))-1 by Th3;
    then p.k * log(2,number_e)*log(number_e,(q.k)/(p.k))<= p.k * log(2,
    number_e)*(((q.k)/(p.k))-1) by A32,A36,XREAL_1:64;
    then p1.k <= F(k) by A10,A35;
    hence thesis by A19,A23,A34;
  end;
A37: p2 is Element of n-tuples_on REAL by A18,FINSEQ_2:92;
  hence Sum pp <= Sum qq by A8,A33,A22,A31,RVSUM_1:82,XREAL_1:50;
A38: (ex k st k in Seg n & p.k<>q.k) implies Sum pp < Sum qq
  proof
    assume ex k st k in Seg n & p.k<>q.k;
    then consider k1 being Nat such that
A39: k1 in Seg n and
A40: p.k1 <> q.k1;
A41: k1 in dom p by A39,FINSEQ_1:def 3;
    then
A42: p.k1 > 0 by A4;
    then
A43: p.k1 * log(2,number_e) > 0 by A32,XREAL_1:129;
    q.k1 > 0 by A4,A41;
    then
A44: q.k1/p.k1 >0 by A42,XREAL_1:139;
    q.k1/p.k1 <> 1 by A40,XCMPLX_1:58;
    then log(number_e,(q.k1)/(p.k1)) < ((q.k1)/(p.k1)-1) by A44,Th3;
    then p.k1 * log(2,number_e) * log(number_e,(q.k1)/(p.k1)) < p.k1 * log(2,
    number_e) * ((q.k1)/(p.k1)-1) by A43,XREAL_1:68;
    then p1.k1 < F(k1) by A10,A41;
    then p1.k1 < p2.k1 by A19,A23,A39;
    then Sum pp - Sum qq < 0 by A8,A33,A22,A37,A31,A39,RVSUM_1:83;
    hence thesis by XREAL_1:48;
  end;
A45: dom p1 = dom p2 by A21,A18,FINSEQ_3:29;
  thus (for k st k in dom p holds p.k=q.k) iff Sum pp = Sum qq
  proof
    hereby
      assume
A46:  for k st k in dom p holds p.k=q.k;
      for k be Nat st k in dom p holds p1.k = p2.k
      proof
        let k be Nat such that
A47:    k in dom p;
A48:    p.k = q.k by A46,A47;
        p.k > 0 by A4,A47;
        then q.k/p.k = 1 by A48,XCMPLX_1:60;
        then p.k * log(2,number_e) * log(number_e,(q.k)/(p.k)) = p.k * log(2,
        number_e) * ((q.k)/(p.k)-1) by Th3;
        then
A49:    p1.k = F(k) by A10,A47;
        k in Seg n by A47,FINSEQ_1:def 3;
        hence thesis by A19,A23,A49;
      end;
      then Sum p1 = 0 by A20,A45,A31,FINSEQ_1:13;
      hence Sum pp = Sum qq by A8;
    end;
    assume
A50: Sum pp = Sum qq;
    assume not for k st k in dom p holds p.k=q.k;
    hence contradiction by A26,A38,A50;
  end;
  hence thesis by A26,A38;
end;
