reserve k,n,n1,m,m1,m0,h,i,j for Nat,
  a,x,y,X,X1,X2,X3,X4,Y for set;
reserve L,L1,L2 for FinSequence;
reserve F,F1,G,G1,H for LTL-formula;
reserve W,W1,W2 for Subset of Subformulae H;
reserve v for LTL-formula;
reserve N,N1,N2,N10,N20,M for strict LTLnode over v;
reserve w for Element of Inf_seq(AtomicFamily);
reserve R1,R2 for Real_Sequence;
reserve s,s0,s1,s2 for elementary strict LTLnode over v;

theorem Th51:
  for f being Function of LTLNodes(v),LTLNodes(v) st f
is_succ_homomorphism v,w holds for x st x in LTLNodes(v) & CastNode(x,v) is non
elementary & w |= *CastNode(x,v) holds ex n st (for i st i<n holds CastNode((f
|**i).x,v) is non elementary & CastNode((f|**(i+1)).x,v) is_succ_of CastNode((f
|**i).x,v)) & CastNode((f|**n).x,v) is elementary & for i st i<=n holds w |= *
  CastNode((f|**i).x,v)
proof
  set LN = LTLNodes(v);
  let f be Function of LN,LN;
  assume
A1: f is_succ_homomorphism v,w;
  then
  for y st y in LN & CastNode(y,v) is non elementary & w |= *CastNode(y,v)
  holds w |= *CastNode(f.y,v);
  then
A2: f is_homomorphism v,w;
  for x st x in LTLNodes(v) & CastNode(x,v) is non elementary & w |= *
  CastNode(x,v) holds ex n st (for i st i<n holds CastNode((f|**i).x,v) is non
  elementary & CastNode((f|**(i+1)).x,v) is_succ_of CastNode((f|**i).x,v)) &
CastNode((f|**n).x,v) is elementary & for i st i<=n holds w |= *CastNode((f|**i
  ).x,v)
  proof
    let x such that
A3: x in LN and
A4: CastNode(x,v) is non elementary and
A5: w |= *CastNode(x,v);
    consider n such that
A6: for i st i<n holds CastNode((f|**i).x,v) is non elementary and
A7: CastNode((f|**n).x,v) is elementary by A1,A3,A4,A5,Th49;
    for i st i<n holds CastNode((f|**(i+1)).x,v) is_succ_of CastNode((f|**
    i).x,v)
    proof
      let i;
      assume
A8:   i<n;
      for j st j<=i holds CastNode((f|**j).x,v) is non elementary
      proof
        let j;
        assume j<=i;
        then j<n by A8,XXREAL_0:2;
        hence thesis by A6;
      end;
      hence thesis by A1,A3,A4,A5,Th48;
    end;
    then
A9: for i st i<n holds CastNode((f|**i).x,v) is non elementary & CastNode(
    (f|**(i+1)).x,v) is_succ_of CastNode((f|**i).x,v) by A6;
    defpred P[Nat] means $1<=n implies for i st i<=$1 holds w |= *CastNode((f
    |**i).x,v);
A10: for m st P[m] holds P[m+1]
    proof
      let m;
      assume
A11:  P[m];
      P[m+1]
      proof
        assume
A12:    m+1<=n;
        then
A13:    m<n by NAT_1:13;
        then
A14:    CastNode((f|**m).x,v) is non elementary by A6;
        for i st i<=m+1 holds w |= *CastNode((f|**i).x,v)
        proof
          let i;
          w |= *CastNode((f|**m).x,v) by A11,A12,NAT_1:13;
          then
A15:      w |= *CastNode((f|**(m+1)).x,v) by A2,A3,A4,A14,Th50;
          assume i<=m+1;
          hence thesis by A11,A13,A15,NAT_1:8;
        end;
        hence thesis;
      end;
      hence thesis;
    end;
A16: P[0]
    proof
      assume 0<=n;
      for i st i<=0 holds w |= *CastNode((f|**i).x,v)
      proof
        let i;
        assume i<=0;
        then i=0;
        then f|**i = id LN by FUNCT_7:84;
        hence thesis by A3,A5,FUNCT_1:18;
      end;
      hence thesis;
    end;
    for m holds P[m] from NAT_1:sch 2 (A16,A10);
    then for i st i<=n holds w |= *CastNode((f|**i).x,v);
    hence thesis by A7,A9;
  end;
  hence thesis;
end;
