reserve A for preIfWhileAlgebra,
  C,I,J for Element of A;
reserve S for non empty set,
  T for Subset of S,
  s for Element of S;
reserve f for ExecutionFunction of A,S,T;

theorem Th86:
  for r being non empty FinSequence of S st r.1 = f.(s,C) & r.len r nin T &
  for i being Nat st 1 <= i & i < len r
  holds r.i in T & r.(i+1) = f.(r.i, I \; C) holds f.(s, while(C,I)) = r.len r
proof
A1: f complies_with_while_wrt T by Def32;
  let r be non empty FinSequence of S;
  assume
A2: r.1 = f.(s,C);
  assume
A3: r.len r nin T;
  assume
A4: for i being Nat st 1 <= i & i < len r
  holds r.i in T & r.(i+1) = f.(r.i, I \; C);
  defpred P[Nat] means (len r)-$1 in dom r implies
  for q being Element of S st f.(q,C) = r.((len r)-$1)
  holds f.(q, while(C,I)) = r.len r;
A5: P[0] by A1,A3;
A6: for i being Nat st P[i] holds P[i+1]
  proof
    let i be Nat such that
A7: P[i] and
A8: (len r)-(i+1) in dom r;
    reconsider j = (len r)-(i+1) as Element of NAT by A8;
A9: j+1+i = len r;
A10: 1 <= j+1 by NAT_1:11;
A11: j+1 <= len r by A9,NAT_1:11;
A12: 1 <= j by A8,FINSEQ_3:25;
A13: j < len r by A11,NAT_1:13;
    then
A14: r.(j+1) = f.(r.j, I\;C) by A4,A12;
    let q be Element of S;
    assume
A15: f.(q,C) = r.((len r)-(i+1));
    then
A16: f.(q,C) in T by A4,A12,A13;
    r.(j+1) = f.(f.(f.(q,C), I), C) by A14,A15,Def29;
    then f.(f.(f.(q,C), I), while(C,I)) = r.len r by A7,A10,A11,FINSEQ_3:25;
    hence thesis by A1,A16;
  end;
A17: for i being Nat holds P[i] from NAT_1:sch 2(A5,A6);
A18: len r >= 0+1 by NAT_1:13;
  then consider i being Nat such that
A19: len r = 1+i by NAT_1:10;
  P[i] by A17;
  hence thesis by A2,A18,A19,FINSEQ_3:25;
end;
