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 Th47:
  for f being Function of LTLNodes(v),LTLNodes(v) st f
  is_homomorphism v,w holds for x st x in LTLNodes(v) & CastNode(x,v) is non
elementary & w |= *CastNode(x,v) holds for k st (for i st i<=k holds CastNode((
  f|**i).x,v) is non elementary) holds w |= *CastNode((f|**k).x,v)
proof
  set LN = LTLNodes(v);
  let f be Function of LN,LN;
  assume f is_homomorphism v,w;
  then
A1: for y st y in LN & CastNode(y,v) is non elementary & w |= *CastNode(y,v)
  holds w |= *CastNode(f.y,v);
  for x st x in LN & CastNode(x,v) is non elementary & w |= *CastNode(x,v)
  holds for k st (for i st i<=k holds CastNode((f|**i).x,v) is non elementary)
  holds w |= *CastNode((f|**k).x,v)
  proof
    let x such that
A2: x in LN and
    CastNode(x,v) is non elementary and
A3: w |= *CastNode(x,v);
    for k st (for i st i<=k holds CastNode((f|**i).x,v) is non elementary)
    holds w |= *CastNode((f|**k).x,v)
    proof
      defpred P[Nat] means (for i st i<=$1 holds CastNode((f|**i).x,v) is non
      elementary) implies w |= *CastNode((f|**$1).x,v);
A4:   for m st P[m] holds P[m+1]
      proof
        let m;
        assume
A5:     P[m];
        P[m+1]
        proof
          set y = (f|**m).x;
A6:       m<=m+1 by NAT_1:13;
A7:       (f|**(m+1)).x = (f*(f|**m)).x by FUNCT_7:71
            .= f.y by A2,FUNCT_2:15;
          assume for i st i<=m+1 holds CastNode((f|**i).x,v) is non elementary;
          then CastNode(y,v) is non elementary & w |= *CastNode(y,v) by A5,A6,
XXREAL_0:2;
          hence thesis by A1,A2,A7,FUNCT_2:5;
        end;
        hence thesis;
      end;
A8:   P[0]
      proof
        assume for i st i<=0 holds CastNode((f|**i).x,v) is non elementary;
        f|**0 = id LN by FUNCT_7:84;
        hence thesis by A2,A3,FUNCT_1:18;
      end;
A9:   for m holds P[m] from NAT_1:sch 2 (A8,A4);
      let k;
      assume for i st i<=k holds CastNode((f|**i).x,v) is non elementary;
      hence thesis by A9;
    end;
    hence thesis;
  end;
  hence thesis;
end;
