reserve f, g, h for Function;
reserve x, y, z, u, X for set,
  A for non empty set,
  n for Element of NAT,
  f for Function of X, X;
reserve f for c=-monotone Function of bool X, bool X,
  S for Subset of X;
reserve X, Y for non empty set,
  f for Function of X, Y,
  g for Function of Y, X;
reserve L for Lattice,
  f for Function of the carrier of L, the carrier of L,
  x for Element of L,
  O, O1, O2, O3, O4 for Ordinal,
  T for Sequence;
reserve L for complete Lattice,
  f for monotone UnOp of L,
  a, b for Element of L;

theorem Th35:
  b [= a & b is_a_fixpoint_of f implies for O2 holds b [= (f, O2) -.a
proof
  assume that
A1: b [= a and
A2: b is_a_fixpoint_of f;
  defpred S[Ordinal] means b [= (f, $1)-.a;
A3: f.b = b by A2;
A4: now
    let O1;
    assume S[O1];
    then f.b [= f.(f, O1)-.a by QUANTAL1:def 12;
    hence S[succ O1] by A3,Th16;
  end;
A5: now
    deffunc F(Ordinal)=(f, $1)-.a;
    let O1;
    assume that
A6: O1 <> 0 & O1 is limit_ordinal and
A7: for O2 st O2 in O1 holds S[O2];
    consider L1 being Sequence such that
A8: dom L1 = O1 & for O3 st O3 in O1 holds L1.O3 = F(O3) from
    ORDINAL2:sch 2;
A9: b is_less_than rng L1
    proof
      let q be Element of L;
      assume q in rng L1;
      then consider O3 being object such that
A10:  O3 in dom L1 and
A11:  q = L1.O3 by FUNCT_1:def 3;
      reconsider O3 as Ordinal by A10;
      b [= (f, O3)-.a by A7,A8,A10;
      hence b [= q by A8,A10,A11;
    end;
    (f, O1)-.a = "/\"(rng L1, L) by A6,A8,Th18;
    hence S[O1] by A9,LATTICE3:39;
  end;
A12: S[0] by A1,Th14;
  thus for O2 holds S[O2] from ORDINAL2:sch 1(A12, A4, A5);
end;
