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 Th114:
  for C,I being Element of A
  st C is_terminating_wrt f & I is_terminating_wrt f &
  f iteration_terminates_for I\;C, f.(s,C) holds [s, while(C,I)] in
  TerminatingPrograms(A, S, T, f)
proof
  let C,I be Element of A such that
A1: C is_terminating_wrt f and
A2: I is_terminating_wrt f;
  given r being non empty FinSequence of S such that
A3: r.1 = f.(s,C) and
A4: r.len r nin T and
A5: for i being Nat st 1 <= i & i < len r
  holds r.i in T & r.(i+1) = f.(r.i, I\;C);
A6: now
    let i be Nat;
    assume that
A7: 1 <= i and
A8: i < len r;
    thus r.i in T by A5,A7,A8;
    then reconsider s = r.i as Element of S;
A9: [s, I] in TerminatingPrograms(A,S,T,f) by A2;
    [f.(s, I), C] in TerminatingPrograms(A,S,T,f) by A1;
    hence [r.i, I\;C] in TerminatingPrograms(A,S,T,f) &
    r.(i+1) = f.(r.i, I\;C) by A5,A7,A8,A9,Def35;
  end;
  [s,C] in TerminatingPrograms(A,S,T,f) by A1;
  hence thesis by A3,A4,A6,Def35;
end;
