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
  for p being non empty ProbFinS FinSequence of REAL st (for k st k in
  dom p holds p.k>0) holds Entropy p <= log(2,len p) & ((for k st k in dom p
holds p.k=1/(len p)) iff Entropy p=log(2,len p)) & ((ex k st k in dom p & p.k<>
  1/(len p)) iff Entropy p<log(2,len p))
proof
  let p be non empty ProbFinS FinSequence of REAL such that
A1: for k st k in dom p holds p.k > 0;
  set p3 = - Infor_FinSeq_of p;
  set n = len p;
  reconsider n1=n as non zero Element of NAT;
  reconsider nn=1/n1 as Element of REAL by XREAL_0:def 1;
  reconsider p1 = n |-> nn as FinSequence of REAL;
  deffunc F(Nat) = In(-p.$1*log(2,p1.$1),REAL);
  consider p2 be FinSequence of REAL such that
A2: len p2 = n and
A3: for k be Nat st k in dom p2 holds p2.k = F(k) from FINSEQ_2:sch 1;
A4: dom p2 = Seg n by A2,FINSEQ_1:def 3;
A5: for k be Nat st k in dom p2 holds p2.k = ((-log(2,1/n1))*p).k
  proof
    let k be Nat such that
A6: k in dom p2;
    thus p2.k = F(k) by A3,A6
      .= -p.k*log(2,1/n1) by A4,A6,FINSEQ_2:57
      .= (-log(2,1/n1))*p.k
      .= ((-log(2,1/n1))*p).k by RVSUM_1:44;
  end;
A7: len p1 = n by CARD_1:def 7;
A8: dom Infor_FinSeq_of p = Seg len Infor_FinSeq_of p by FINSEQ_1:def 3
    .= Seg n by Th47;
A9: len p3 = n & for k st k in Seg n holds p3.k=-p.k*log(2,p.k)
  proof
    dom p3 = Seg n by A8,VALUED_1:8;
    hence len p3 = n by FINSEQ_1:def 3;
    hereby
      let k such that
A10:  k in Seg n;
      thus p3.k = -((Infor_FinSeq_of p).k) by RVSUM_1:17
        .= -p.k*log(2,p.k) by A8,A10,Th47;
    end;
  end;
  dom p2 = dom p by A2,FINSEQ_3:29;
  then dom p2 = dom((-log(2,1/n1))*p) by VALUED_1:def 5;
  then p2 = (-log(2,1/n1))*p by A5,FINSEQ_1:13;
  then
A11: Sum p2 = (-log(2,1/n1)) * Sum p by RVSUM_1:87
    .= (-log(2,1/n1)) * 1 by MATRPROB:def 5
    .= log(2,1/(1/n1)) by Th5
    .= log(2,n);
A12: p1 is non empty ProbFinS FinSequence of REAL by Th16;
A13: dom p = Seg len p by FINSEQ_1:def 3;
A14: for k st k in dom p holds p.k > 0 & p1.k > 0 & p3.k=-p.k*log(2,p.k) &
  p2.k = -p.k*log(2,p1.k)
 proof let k;
  assume
A15:  k in dom p;
  hence p.k > 0 & p1.k > 0 by A1,FINSEQ_2:57,A13;
  thus p3.k=-p.k*log(2,p.k) by A15,A9,A13;
    p2.k = F(k) by A15,A3,A4,A13;
  hence thesis;
 end;
A16: Sum p3 = Entropy p by RVSUM_1:88;
  hence Entropy p <= log(2,len p) by A7,A12,A2,A9,A14,A11,Th57;
  thus (for k st k in dom p holds p.k=1/(len p)) iff Entropy p=log(2,len p)
  proof
    hereby
      assume
A17:  for k st k in dom p holds p.k=1/(len p);
      now
        let k such that
A18:    k in dom p;
        thus p.k = 1/n by A17,A18
          .= p1.k by A13,A18,FINSEQ_2:57;
      end;
      hence Entropy p=log(2,n) by A7,A12,A2,A9,A14,A16,A11,Th57;
    end;
    assume
A19: Entropy p=log(2,n);
    hereby
      let k;
      assume
A20:  k in dom p;
      hence p.k = p1.k by A7,A12,A2,A9,A14,A16,A11,A19,Th57
        .= 1/n by A13,A20,FINSEQ_2:57;
    end;
  end;
A21: (for k st k in dom p holds p.k=p1.k) iff Sum p3 = Sum p2 by A7,A12,A2,A9
,A14,Th57;
  thus (ex k st k in dom p & p.k<>1/(len p)) iff Entropy p<log(2,len p)
  proof
    hereby
      assume ex k st k in dom p & p.k<>1/(len p);
      then consider k1 being Nat such that
A22:  k1 in dom p and
A23:  p.k1<>1/n;
      p1.k1 <> p.k1 by A13,A22,A23,FINSEQ_2:57;
      hence Entropy p<log(2,n) by A7,A12,A2,A9,A14,A16,A11,A22,Th57;
    end;
    assume Entropy p<log(2,n);
    then consider k1 being Nat such that
A24: k1 in dom p and
A25: p.k1<>p1.k1 by A21,A11,RVSUM_1:88;
    p1.k1 = 1/n by A13,A24,FINSEQ_2:57;
    hence thesis by A24,A25;
  end;
end;
