reserve k,n for Element of NAT,
  a,Y for set,
  D,D1,D2 for non empty set,
  p,q for FinSequence of NAT;
reserve F,F1,G,G1,H,H1,H2 for CTL-formula;
reserve sq,sq9 for FinSequence;
reserve V for CTLModel;
reserve Kai for Function of atomic_WFF,the BasicAssign of V;
reserve f,f1,f2 for Function of CTL_WFF,the carrier of V;
reserve S for non empty set;
reserve R for total Relation of S,S;
reserve s,s0,s1 for Element of S;
reserve BASSIGN for non empty Subset of ModelSP(S);
reserve kai for Function of atomic_WFF,the BasicAssign of BASSModel(R,BASSIGN);

theorem Th47:
  for f,g,h being Assign of BASSModel(R,BASSIGN) holds (for s being
Element of S holds s|= h iff s|= Foax(g,f,h)) implies for s being Element of S
  holds s|= f EU g implies s|= h
proof
  let f,g,h be Assign of BASSModel(R,BASSIGN);
  assume
A1: for s being Element of S holds s|= h iff s|= Foax(g,f,h);
  let s0 be Element of S;
  assume s0|= f EU g;
  then consider pai being inf_path of R such that
A2: pai.0 = s0 and
A3: ex m being Element of NAT st (for j being Element of NAT st j<m
  holds pai.j |= f) & pai.m |= g by Th16;
  consider m be Element of NAT such that
A4: for j being Element of NAT st j<m holds pai.j |= f and
A5: pai.m |= g by A3;
  for j being Element of NAT holds j<= m implies pai.k_nat(m-j) |= h
  proof
    defpred P[Nat] means $1 <= m implies pai.k_nat(m-$1) |= h;
A6: for j being Nat st P[j] holds P[j+1]
    proof
      let j be Nat such that
A7:   P[j];
      set j1 = j+1;
      j1 <= m implies pai.k_nat(m-j1) |= h
      proof
        set k =m-j1;
        assume
A8:     j1 <=m;
        then reconsider k as Element of NAT by NAT_1:21;
        set pai1 = PathShift(pai,k);
A9:     pai1.0 = pai.(k+0) by Def67
          .= pai.k;
        k<= k+j by NAT_1:12;
        then k < (k+j) +1 by NAT_1:13;
        then
A10:    pai.k |= f by A4;
A11:    pai1.1 = pai.(k+1) by Def67;
        pai.(k+1) |= h by A7,A8,Def2,NAT_1:13;
        then pai.k |= EX(h) by A9,A11,Th14;
        then pai.k |= Fax(f,h) by A10,Th13;
        then
A12:    pai.k |= Foax(g,f,h) by Th17;
        k_nat(k) = k by Def2;
        hence thesis by A1,A12;
      end;
      hence thesis;
    end;
A13: P[0]
    proof
      assume 0 <= m;
A14:  k_nat(m-0) = m by Def2;
      pai.m |= Foax(g,f,h) by A5,Th17;
      hence thesis by A1,A14;
    end;
    for j being Nat holds P[j] from NAT_1:sch 2(A13,A6);
    hence thesis;
  end;
  then pai.k_nat(m-m) |= h;
  hence thesis by A2,Def2;
end;
