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
  for P being set for C,I being Element of A
  st C is_terminating_wrt f & I is_terminating_wrt f,P &
  P is_invariant_wrt C,f & (for s st s in P & f.(f.(s,I),C) in T
  holds f.(s,I) in P) &
  for s st f.(s,C) in P holds f iteration_terminates_for I\;C, f.(s,C)
  holds while(C,I) is_terminating_wrt f,P
proof
  let P be set;
  let C,I be Element of A such that
A1: C is_terminating_wrt f and
A2: I is_terminating_wrt f,P and
A3: P is_invariant_wrt C,f and
A4: for s st s in P & f.(f.(s,I),C) in T holds f.(s,I) in P and
A5: for s st f.(s,C) in P holds f iteration_terminates_for I\;C, f.(s,C);
  let s;
  assume
A6: s in P;
  then f.(s,C) in P by A3;
  hence thesis by A1,A2,A3,A4,A5,A6,Th116;
end;
