reserve X,Y for set, x,y,z for object, i,j,n for natural number;
reserve
  n for non empty Nat,
  S for non empty non void n PC-correct PCLangSignature,
  L for language MSAlgebra over S,
  F for PC-theory of L,
  A,B,C,D for Formula of L;
reserve
  J for non empty non void Signature,
  T for non-empty MSAlgebra over J,
  X for non empty-yielding GeneratorSet of T,
  S1 for J-extension non empty non void n PC-correct QC-correct
  QCLangSignature over Union X,
  L for non-empty Language of X extended_by ({},the carrier of S1), S1,
  G for QC-theory of L,
  A,B,C,D for Formula of L;
reserve x,y,z for Element of Union X;
reserve x0,y0,z0 for Element of Union (X extended_by ({},the carrier of S1));
reserve a for SortSymbol of J;
reserve
  L for
    non-empty T-extension Language of X extended_by ({},the carrier of S1), S1,
  G for QC-theory of L,
  G1 for QC-theory_with_equality of L,
  A,B,C,D for Formula of L,
  s,s1 for SortSymbol of S1,
  t,t9 for Element of L,s,
  t1,t2,t3 for Element of L,s1;
reserve
  n for non empty natural number,
  J for non empty non void Signature,
  T for non-empty VarMSAlgebra over J,
  X for non-empty GeneratorSet of T,
  S for essential J-extension non empty non void n PC-correct QC-correct
  n AL-correct AlgLangSignature over Union X,
  L for non empty IfWhileAlgebra of X,S,
  M,M1,M2 for Algorithm of L,
  A,B,C,V for Formula of L,
  H for AL-theory of V,L,
  a for SortSymbol of J,
  x,y for (Element of X.a),
  t for Element of T,a;

theorem
  M*\notV in H & A in H or M*V in H & M*(M1*(while(M,M1)*A)) in H implies
  while(M,M1)*A in H
  proof
    assume M*\notV in H & A in H or M*V in H & M*(M1*(while(M,M1)*A)) in H;
    then
A1: (M*\notV)\andA in H or (M*V)\and(M*(M1*(while(M,M1)*A))) in H
    by Th35;
    ((M*\notV)\andA)\imp((M*\notV)\andA)\or
    ((M*V)\and(M*(M1*(while(M,M1)*A)))) in H &
    ((M*V)\and(M*(M1*(while(M,M1)*A))))\imp((M*\notV)\andA)\or
    ((M*V)\and(M*(M1*(while(M,M1)*A)))) in H by Def38;
    then
A2: ((M*\notV)\andA)\or((M*V)\and(M*(M1*(while(M,M1)*A)))) in H
    by A1,Def38;
    (while(M,M1)*A) \iff
    ((M*\notV)\andA)\or((M*V)\and(M*(M1*(while(M,M1)*A)))) in H by Def43;
    then
    ((M*\notV)\andA)\or((M*V)\and(M*(M1*(while(M,M1)*A))))\imp
    (while(M,M1)*A) in H by Th43;
    hence thesis by Def38,A2;
  end;
