reserve a,b,c for boolean object;
reserve p,q,r,s,A,B,C for Element of LTLB_WFF,
        F,G,X,Y for Subset of LTLB_WFF,
        i,j,k,n for Element of NAT,
        f,f1,f2,g for FinSequence of LTLB_WFF;
reserve M for LTLModel;

theorem Th45:
  X|-p=>q & X|-p=>('X' p) implies X|-p=>('G' q)
 proof
  assume that
   A1: X|-p=>q and
   A2: X|-p=>('X' p);
  consider f such that
   A3: f.len f=p=>q and
   A4: 1<=len f and
   A5: for i be Nat st 1<=i & i<=len f holds prc f,X,i by A1;
  consider g such that
   A6: g.len g=p=>('X' p) and
   A7: 1<=len g and
   A8: for i be Nat st 1<=i & i<=len g holds prc g,X,i by A2;
  A9: for i be Nat st 1<=i & i<=len(f^g) holds prc f^g,X,i by A4,A5,A7,A8,Th39;
  set h=f^g^<*p=>('G' q)*>;
  A10: h=f^(g^<*p=>('G' q)*>) by FINSEQ_1:32;
  A11: len(f^g)=len f+len g by FINSEQ_1:22;
  then A12: 1<=len(f^g) by A4,NAT_1:12;
  A13: len h=len(f^g)+len<*p=>('G' q)*> by FINSEQ_1:22
   .=len(f^g)+1 by FINSEQ_1:39;
  then 1<=len h by A4,A11,NAT_1:16;
  then A14: h/.len h=h.len h by Lm1
   .=p=>('G' q) by A13,FINSEQ_1:42;
  len h=len f+(len g+1) by A11,A13;
  then A15: len f<len h by NAT_1:16;
  then A16: h/.len f=h.len f by A4,Lm1
   .=p=>q by A3,A4,A10,FINSEQ_1:64;
  A17: len(f^g)<len h by A13,NAT_1:16;
  then h/.len(f^g)=h.len(f^g) by A12,Lm1
   .=(f^g).len(f^g) by A12,FINSEQ_1:64
   .=(f^g).(len f+len g) by FINSEQ_1:22
   .=p=>('X' p) by A6,A7,FINSEQ_1:65;
  then h/.len f,h/.len(f^g)IND_rule h/.len h by A16,A14;
  then prc h,X,len h by A4,A12,A15,A17;
  hence X|-p=>('G' q) by A12,A9,Th40;
 end;
