reserve X1, X2, Y for non empty RelStr,
  f for Function of [:X1, X2:], Y,
  x for Element of X1,
  y for Element of X2;

theorem :: Lemma 2.9 p. 116  (2) => (1)
  for R, S, T being complete LATTICE, f being Function of [:R, S:], T st
  ( for a being Element of R, b being Element of S holds Proj (f, a) is
directed-sups-preserving & Proj (f, b) is directed-sups-preserving ) holds f is
  directed-sups-preserving
proof
  let R, S, T be complete LATTICE, f be Function of [:R,S:], T;
  assume
A1: for a being Element of R, b being Element of S holds Proj (f, a) is
  directed-sups-preserving & Proj (f, b) is directed-sups-preserving;
  for X being Subset of [:R, S:] st X is non empty directed holds f
  preserves_sup_of X
  proof
    let X be Subset of [:R, S:];
    assume X is non empty directed;
    then reconsider X as non empty directed Subset of [:R, S:];
    for a be Element of R, b be Element of S holds Proj (f, a) is monotone
    & Proj (f, b) is monotone by A1,WAYBEL17:3;
    then
A2: f is monotone by Th12;
    f preserves_sup_of X
    proof
      proj1 X is directed non empty & Proj (f, "\/"(proj2 X, S)) is
      directed-sups-preserving by A1,YELLOW_3:21,22;
      then
A3:   Proj (f, "\/"(proj2 X, S)) preserves_sup_of proj1 X;
A4:   ex_sup_of (Proj (f, sup proj2 X).:proj1 X), T by YELLOW_0:17;
      assume
A5:   ex_sup_of X, [:R, S:];
      then
A6:   ex_sup_of proj1 X, R by YELLOW_3:41;
A7:   ex_sup_of proj2 X, S by A5,YELLOW_3:41;
      for b being Element of T st b in Proj (f, sup proj2 X).:proj1 X
      holds b <= sup (f.:X)
      proof
        let b be Element of T;
        assume b in Proj (f, sup proj2 X).:proj1 X;
        then consider b1 being object such that
A8:     b1 in dom Proj (f, sup proj2 X) and
A9:     b1 in proj1 X and
A10:    b = (Proj (f, sup proj2 X)).b1 by FUNCT_1:def 6;
        reconsider b1 as Element of R by A8;
A11:    (Proj (f, b1).:proj2 X) is_<=_than sup (f.:X)
        proof
          let k be Element of T;
          assume k in (Proj (f, b1).:proj2 X);
          then consider k1 being object such that
A12:      k1 in dom Proj (f, b1) and
A13:      k1 in proj2 X and
A14:      k = (Proj (f, b1)).k1 by FUNCT_1:def 6;
          reconsider k1 as Element of S by A12;
          k = f.(b1, k1) by A14,Th7;
          hence thesis by A2,A9,A13,Th17,YELLOW_0:17;
        end;
        proj2 X is non empty directed & Proj (f, b1) is
        directed-sups-preserving by A1,YELLOW_3:21,22;
        then
A15:    Proj (f, b1) preserves_sup_of proj2 X;
A16:    ex_sup_of (Proj (f, b1).:proj2 X), T by YELLOW_0:17;
        b = (Proj (f, b1)). sup proj2 X by A10,Th9
          .= sup (Proj (f, b1).:proj2 X) by A7,A15;
        hence thesis by A16,A11,YELLOW_0:def 9;
      end;
      then
A17:  Proj (f, sup proj2 X).:proj1 X is_<=_than sup (f.:X);
A18:  sup (f.:X) <= f.sup X by A2,WAYBEL17:16;
      f.sup X = f.(sup proj1 X, sup proj2 X) by YELLOW_3:46
        .= Proj (f, sup proj2 X). sup proj1 X by Th8
        .= sup (Proj (f, sup proj2 X).:proj1 X) by A6,A3;
      then f.sup X <= sup (f.:X) by A17,A4,YELLOW_0:def 9;
      hence thesis by A18,YELLOW_0:17,def 3;
    end;
    hence thesis;
  end;
  hence thesis;
end;
