The Mizar article:

Complete Lattices

by
Grzegorz Bancerek

Received May 13, 1992

Copyright (c) 1992 Association of Mizar Users

MML identifier: LATTICE3
[ MML identifier index ]


environ

 vocabulary LATTICES, FUNCT_1, BOOLE, BINOP_1, SUBSET_1, FILTER_1, ORDERS_1,
      RELAT_1, RELAT_2, BHSP_3, FILTER_0, TARSKI, ZF_LANG, LATTICE3, PARTFUN1;
 notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, DOMAIN_1, STRUCT_0, FUNCT_1,
      FUNCT_2, BINOP_1, LATTICES, FILTER_0, LATTICE2, FILTER_1, RELAT_1,
      RELAT_2, RELSET_1, PARTFUN1, ORDERS_1;
 constructors DOMAIN_1, BINOP_1, LATTICE2, FILTER_1, RELAT_2, ORDERS_1,
      ORDERS_2, MEMBERED, PARTFUN1, XBOOLE_0;
 clusters LATTICE2, ORDERS_1, RELSET_1, STRUCT_0, RLSUB_2, SUBSET_1, LATTICES,
      MEMBERED, ZFMISC_1, XBOOLE_0;
 requirements SUBSET, BOOLE;
 definitions XBOOLE_0, TARSKI, LATTICES, RELAT_1, RELAT_2, ORDERS_1, STRUCT_0;
 theorems TARSKI, ENUMSET1, ZFMISC_1, FUNCT_1, FUNCT_2, BINOP_1, LATTICES,
      FILTER_0, FILTER_1, LATTICE2, RELAT_1, RELSET_1, ORDERS_1, STRUCT_0,
      XBOOLE_0, XBOOLE_1, RELAT_2, PARTFUN1;
 schemes FRAENKEL, BINOP_1, RELSET_1, FUNCT_2;

begin :: Boolean Lattice of Subsets

 deffunc carr(LattStr) = the carrier of $1;
 deffunc join(LattStr) = the L_join of $1;
 deffunc met(LattStr) = the L_meet of $1;

definition let X be set;
 func BooleLatt X -> strict LattStr means :Def1:
  the carrier of it = bool X &
  for Y,Z being Element of bool X holds
   (the L_join of it).(Y,Z) = Y \/ Z & (the L_meet of it).(Y,Z) = Y /\ Z;
 existence
  proof
   deffunc U(Element of bool X,Element of bool X) =  $1 \/ $2;
   consider j being BinOp of bool X such that
A1:  for x,y being Element of bool X holds j.(x,y) = U(x,y)
      from BinOpLambda;
   deffunc U(Element of bool X,Element of bool X) =  $1 /\ $2;
   consider m being BinOp of bool X such that
A2:  for x,y being Element of bool X holds m.(x,y) = U(x,y)
      from BinOpLambda;
   take LattStr(#bool X, j, m#);
   thus thesis by A1,A2;
  end;
 uniqueness
  proof let L1, L2 be strict LattStr such that
A3: the carrier of L1 = bool X &
    for Y,Z being Element of bool X holds
     join(L1).(Y,Z) = Y \/ Z & met(L1).(Y,Z) = Y /\ Z and
A4: the carrier of L2 = bool X &
    for Y,Z being Element of bool X holds
     join(L2).(Y,Z) = Y \/ Z & met(L2).(Y,Z) = Y /\ Z;
   reconsider j1 = join(L1), j2 = join(L2), m1 = met(L1), m2 = met(L2) as
      BinOp of bool X by A3,A4;
      now let x,y be Element of bool X;
     thus j1.(x,y) = x \/ y by A3 .= j2.(x,y) by A4;
    end;
then A5:  j1 = j2 by BINOP_1:2;
      now let x,y be Element of bool X;
     thus m1.(x,y) = x /\ y by A3 .= m2.(x,y) by A4;
    end;
   hence thesis by A3,A4,A5,BINOP_1:2;
  end;
end;

reserve X for set,
        x,y,z for Element of BooleLatt X, s for set;

definition let X be set;
 cluster BooleLatt X -> non empty;
 coherence
  proof
     the carrier of BooleLatt X = bool X by Def1;
   hence the carrier of BooleLatt X is non empty;
  end;
end;

theorem Th1:
 x "\/" y = x \/ y & x "/\" y = x /\ y
  proof set B = BooleLatt X;
   reconsider x' = x, y' = y as Element of bool X by Def1;
   thus x "\/" y = join(B).(x',y') by LATTICES:def 1 .= x \/ y by Def1;
   thus x "/\" y = met(B).(x',y') by LATTICES:def 2 .= x /\ y by Def1;
  end;

theorem Th2:
 x [= y iff x c= y
  proof (x [= y iff x "\/" y = y) & x "\/" y = x \/ y by Th1,LATTICES:def 3;
   hence thesis by XBOOLE_1:7,12;
  end;

definition let X;
 cluster BooleLatt X -> Lattice-like;
  coherence
   proof
A1:  now let x,y;
      thus x"\/"y = y \/ x by Th1 .= y"\/"x by Th1;
     end;
A2:  now let x,y,z;
      thus x"\/"(y"\/"z) = x \/ (y"\/"z) by Th1 .= x \/ (y \/ z) by Th1
              .= x \/ y \/ z by XBOOLE_1:4 .= (x"\/"y) \/ z by Th1
              .= (x"\/"y)"\/"z by Th1;
     end;
A3:  now let x,y;
      thus (x"/\"y)"\/"y = (x"/\"y) \/ y by Th1 .= (x /\ y) \/ y by Th1
              .= y by XBOOLE_1:22;
     end;
A4:  now let x,y;
      thus x"/\"y = y /\ x by Th1 .= y"/\"x by Th1;
     end;
A5:  now let x,y,z;
      thus x"/\"(y"/\"z) = x /\ (y"/\"z) by Th1 .= x /\ (y /\ z) by Th1
              .= x /\ y /\ z by XBOOLE_1:16 .= (x"/\"y) /\ z by Th1
              .= (x"/\"y)"/\"z by Th1;
     end;
       now let x,y;
      thus x"/\"(x"\/"y) = x /\ (x"\/"y) by Th1 .= x /\ (x \/ y) by Th1
              .= x by XBOOLE_1:21;
     end;
    then BooleLatt X is join-commutative join-associative meet-absorbing
         meet-commutative meet-associative join-absorbing
    by A1,A2,A3,A4,A5,LATTICES:def 4,def 5,def 6,def 7,def 8,def 9;
    hence thesis by LATTICES:def 10;
   end;
end;

reserve y for Element of BooleLatt X;

theorem Th3:
 BooleLatt X is lower-bounded & Bottom BooleLatt X = {}
  proof {} c= X by XBOOLE_1:2;
   then reconsider x = {} as Element of BooleLatt X by Def1;
A1:now let y; thus x"/\"y = x /\ y by Th1 .= x; hence y"/\"x = x; end;
   thus A2:BooleLatt X is lower-bounded proof take x; thus thesis by A1; end;
   thus thesis by A1,A2,LATTICES:def 16;
  end;

theorem Th4:
 BooleLatt X is upper-bounded & Top BooleLatt X = X
  proof
A1:  X in bool X & bool X = carr(BooleLatt X) by Def1,ZFMISC_1:def 1;
   then reconsider x = X as Element of BooleLatt X;
A2:  now let y;
     thus x"\/"y = x \/ y by Th1 .= x by A1,XBOOLE_1:12;
     hence y"\/"x = x;
    end;
   thus BooleLatt X is upper-bounded proof take x; thus thesis by A2; end;
   hence thesis by A2,LATTICES:def 17;
  end;

definition let X;
 cluster BooleLatt X -> Boolean Lattice-like;
  coherence
   proof set B = BooleLatt X;
       B is 0_Lattice & B is 1_Lattice by Th3,Th4;
    then reconsider B as 01_Lattice by LATTICES:def 15;
A1:   B is complemented
      proof let x be Element of B;
A2:      (X \ x) c= X & carr(B) = bool X by Def1,XBOOLE_1:36;
       then reconsider y = X \ x as Element of B;
       take y;
       thus y"\/"x = y \/ x by Th1 .= X \/ x by XBOOLE_1:39 .= X by A2,XBOOLE_1
:12
                .= Top B by Th4;
       hence x"\/"y = Top B;
A3:     y misses x by XBOOLE_1:79;
       thus y"/\"x = y /\ x by Th1 .= {} by A3,XBOOLE_0:def 7
 .= Bottom B by Th3;
       hence thesis;
      end;
       B is distributive
      proof let x,y,z be Element of B;
       thus x"/\"(y"\/"z) = x /\ (y"\/"z) by Th1 .= x /\ (y \/ z) by Th1
               .= x/\y \/ x/\z by XBOOLE_1:23 .= (x"/\"y)\/(x/\z) by Th1
               .= (x"/\"y)\/(x"/\"z) by Th1 .= (x"/\"y)"\/"(x"/\"z) by Th1;
      end;
    hence thesis by A1,LATTICES:def 20;
   end;
end;

theorem
   for x being Element of BooleLatt X holds x` = X \ x
  proof set B = BooleLatt X; let x be Element of B;
A1:  x`"/\"x = Bottom B & x"\/"x` = Top B & Bottom B = {} & Top B = X &
    x`"/\"x = x` /\ x &
    x"\/"x` = x \/ x` by Th1,Th3,Th4,LATTICES:47,48;
    then x` misses x by XBOOLE_0:def 7;
    then X \ x = (x \ x) \/ (x` \ x) & x \ x = {} & x` \ x = x`
    by A1,XBOOLE_1:37,42,83;
   hence thesis;
  end;

begin :: Correspondence Between Lattices and Posets

definition let L be Lattice;
 redefine func LattRel L -> Order of the carrier of L;
  coherence
   proof
A1:   LattRel L = { [p,q] where p is Element of L,
                          q is Element of L: p [= q }
         by FILTER_1:def 8;
       LattRel L c= [:carr(L),carr(L):]
      proof let x be set; assume x in LattRel L;
        then ex p,q being Element of L st x = [p,q] & p [= q
                  by A1;
       hence thesis by ZFMISC_1:106;
      end;
    then reconsider R = LattRel L as Relation of carr(L) by RELSET_1:def 1;
A2:   R is_reflexive_in carr(L)
      proof let x be set; assume x in carr(L);
       then reconsider x as Element of L;
          x [= x;
       hence thesis by FILTER_1:32;
      end;
A3:   R is_antisymmetric_in carr(L)
      proof let x,y be set; assume x in carr(L) & y in carr(L);
       then reconsider x' = x, y' = y as Element of L;
       assume [x,y] in R & [y,x] in R;
        then x' [= y' & y' [= x' by FILTER_1:32;
       hence thesis by LATTICES:26;
      end;
A4:  R is_transitive_in carr(L)
      proof let x,y,z be set; assume
          x in carr(L) & y in carr(L) & z in carr(L);
       then reconsider x' = x, y' = y, z' = z as Element of L;
       assume [x,y] in R & [y,z] in R;
        then x' [= y' & y' [= z' by FILTER_1:32;
        then x' [= z' by LATTICES:25;
       hence thesis by FILTER_1:32;
      end;
A5:  dom R = carr(L) by A2,ORDERS_1:98;
A6:  field R = carr(L) by A2,ORDERS_1:98;
A7:  R is total by A5,PARTFUN1:def 4;
A8:  R is reflexive by A2,A6,RELAT_2:def 9;
A9:  R is antisymmetric by A3,A6,RELAT_2:def 12;
     R is transitive by A4,A6,RELAT_2:def 16;
    hence thesis by A7,A8,A9;
   end;
end;

definition let L be Lattice;
 func LattPOSet L -> strict Poset equals :Def2:
    RelStr(#the carrier of L, LattRel L#);
  correctness;
end;

definition let L be Lattice;
  cluster LattPOSet L -> non empty;
  coherence
  proof
     LattPOSet L = RelStr(#the carrier of L, LattRel L#) by Def2;
   hence the carrier of LattPOSet L is non empty;
  end;
end;

theorem Th6:
 for L1,L2 being Lattice st LattPOSet L1 = LattPOSet L2 holds
   the LattStr of L1 = the LattStr of L2
  proof let L1,L2 be Lattice such that
A1:  LattPOSet L1 = LattPOSet L2;
A2:  LattPOSet L1 = RelStr(#carr(L1), LattRel L1#) &
    LattPOSet L2 = RelStr(#carr(L2), LattRel L2#) by Def2;
   then reconsider j = join(L2), m = met(L2) as BinOp of carr(L1) by A1;
      now let a,b be Element of L1;
     reconsider x = a, y = b, xy = a"\/"
b as Element of L2 by A1,A2;
     reconsider ab = x"\/"y as Element of L1 by A1,A2;
        a [= a"\/"b & b [= b"\/"a & b"\/"a = a"\/"b &
      x [= x"\/"y & y [= y"\/"x & y"\/"x = x"\/"y by LATTICES:22;
      then [x,xy] in LattRel L2 & [y,xy] in LattRel L2 &
      [a,ab] in LattRel L1 & [b,ab] in LattRel L1 by A1,A2,FILTER_1:32;
      then a [= ab & b [= ab & x [= xy & y [= xy by FILTER_1:32;
then A3:    a"\/"b [= ab & x"\/"y [= xy by FILTER_0:6;
      then [ab,a"\/"b] in LattRel L1 by A1,A2,FILTER_1:32;
      then ab [= a"\/"b & join(L1).(a,b) = a"\/"b & j.(x,y) = x"\/"y
       by FILTER_1:32,LATTICES:def 1;
     hence join(L1).(a,b) = j.(a,b) by A3,LATTICES:26;
    end;
then A4:  join(L1) = j by BINOP_1:2;
      now let a,b be Element of L1;
     reconsider x = a, y = b, xy = a"/\"
b as Element of L2 by A1,A2;
     reconsider ab = x"/\"y as Element of L1 by A1,A2;
        a"/\"b [= a & b"/\"a [= b & b"/\"a = a"/\"b &
      x"/\"y [= x & y"/\"x [= y & y"/\"x = x"/\"y by LATTICES:23;
      then [xy,x] in LattRel L2 & [xy,y] in LattRel L2 &
      [ab,a] in LattRel L1 & [ab,b] in LattRel L1 by A1,A2,FILTER_1:32;
      then ab [= a & ab [= b & xy [= x & xy [= y by FILTER_1:32;
then A5:    ab [= a"/\"b & xy [= x"/\"y by FILTER_0:7;
      then [a"/\"b,ab] in LattRel L1 by A1,A2,FILTER_1:32;
      then a"/\"b [= ab & met(L1).(a,b) = a"/\"b & m.(x,y) = x"/\"y
       by FILTER_1:32,LATTICES:def 2;
     hence met(L1).(a,b) = m.(a,b) by A5,LATTICES:26;
    end;
   hence thesis by A1,A2,A4,BINOP_1:2;
  end;

definition let L be Lattice, p be Element of L;
 func p% -> Element of LattPOSet L equals:
Def3:   p;
  correctness
   proof LattPOSet L = RelStr(#the carrier of L, LattRel L#) by Def2;
     hence thesis;
   end;
end;

definition let L be Lattice, p be Element of LattPOSet L;
 func %p -> Element of L equals:
Def4:   p;
  correctness
   proof LattPOSet L = RelStr(#the carrier of L, LattRel L#) by Def2;
    hence thesis;
   end;
end;

reserve L for Lattice, p,q for Element of L;

theorem Th7:
 p [= q iff p% <= q%
  proof
      (p [= q iff [p,q] in LattRel L) & p = p% & q = q% &
    LattPOSet L = RelStr(#carr(L), LattRel L#)
     by Def2,Def3,FILTER_1:32;
   hence thesis by ORDERS_1:def 9;
  end;

 definition let X be set, O be Order of X;
  redefine func O~ -> Order of X;
   coherence
    proof
A1:    O~ is reflexive by RELAT_2:27;
      dom O = dom(O~) & dom O = X by PARTFUN1:def 4,RELAT_2:29;
      then O~ is total by PARTFUN1:def 4;
     hence thesis by A1,RELAT_2:40,42;
    end;
 end;

definition let A be RelStr;
 func A~ -> strict RelStr equals:
Def5:
   RelStr(#the carrier of A, (the InternalRel of A)~#);
  correctness;
end;

definition let A be Poset;
 cluster A~ -> reflexive transitive antisymmetric;
 coherence
  proof A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) by Def5;
   hence thesis;
  end;
end;

definition let A be non empty RelStr;
 cluster A~ -> non empty;
 coherence
 proof A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) by Def5;
  hence the carrier of A~ is non empty;
 end;
end;

reserve A for RelStr, a,b,c for Element of A;

theorem
   A~~ = the RelStr of A
  proof A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) by Def5;
   hence A~~ = RelStr(#the carrier of A, (the InternalRel of A)~~#) by Def5
           .= the RelStr of A;
  end;

definition let A be RelStr, a be Element of A;
 func a~ -> Element of A~ equals:
Def6:    a;
  correctness
   proof
       the RelStr of A = RelStr(#the carrier of A, the InternalRel of A#) &
     A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) by Def5;
hence thesis;
   end;
end;

definition let A be RelStr, a be Element of A~;
 func ~a -> Element of A equals:
Def7:    a;
  correctness
   proof
       the RelStr of A = RelStr(#the carrier of A, the InternalRel of A#) &
     A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) by Def5;
     hence thesis;
   end;
end;

theorem Th9:
 a <= b iff b~ <= a~
  proof
      the RelStr of A = RelStr(#the carrier of A, the InternalRel of A#) &
    A~ = RelStr(#the carrier of A, (the InternalRel of A)~#) &
    (a <= b iff [a,b] in the InternalRel of A) &
    (b~ <= a~ iff [b~,a~] in the InternalRel of A~) &
    ([a,b] in the InternalRel of A iff [b,a] in (the InternalRel of A)~) &
    a = a~ & b = b~ by Def5,Def6,ORDERS_1:def 9,RELAT_1:def 7;
   hence thesis;
  end;

definition let A be RelStr, X be set, a be Element of A;
 pred a is_<=_than X means for b being Element of A st b in X
   holds a <= b;
  synonym X is_>=_than a;
 pred X is_<=_than a means:
Def9:
  for b being Element of A st b in X holds b <= a;
  synonym a is_>=_than X;
end;

definition let IT be RelStr;
 attr IT is with_suprema means:
Def10:
  for x,y being Element of IT
   ex z being Element of IT st x <= z & y <= z &
    for z' being Element of IT st x <= z' & y <= z' holds z <= z';
 attr IT is with_infima means:
Def11:
  for x,y being Element of IT
   ex z being Element of IT st z <= x & z <= y &
    for z' being Element of IT st z' <= x & z' <= y holds z' <= z;
end;

definition
 cluster with_suprema -> non empty RelStr;
 coherence
  proof let A be RelStr such that
A1:  for x,y being Element of A
     ex z being Element of A st x <= z & y <= z &
      for z' being Element of A st x <= z' & y <= z' holds z <= z';
   consider x,y being Element of A;
   consider z being Element of A such that
A2:  x <= z & y <= z and
      for z' being Element of A st x <= z' & y <= z' holds z <= z'
      by A1;
      [x,z] in the InternalRel of A by A2,ORDERS_1:def 9;
    then x in the carrier of A by ZFMISC_1:106;
   hence thesis by STRUCT_0:def 1;
  end;
 cluster with_infima -> non empty RelStr;
 coherence
  proof let A be RelStr such that
A3:  for x,y being Element of A
     ex z being Element of A st x >= z & y >= z &
      for z' being Element of A st x >= z' & y >= z' holds z >= z';
   consider x,y being Element of A;
   consider z being Element of A such that
A4:  x >= z & y >= z and
      for z' being Element of A st x >= z' & y >= z' holds z >= z'
      by A3;
      [z,x] in the InternalRel of A by A4,ORDERS_1:def 9;
    then x in the carrier of A by ZFMISC_1:106;
   hence thesis by STRUCT_0:def 1;
  end;
end;

theorem
   A is with_suprema iff A~ is with_infima
  proof
   thus A is with_suprema implies A~ is with_infima
     proof assume
A1:     for a,b ex c st a <= c & b <= c &
        for c' being Element of A st a <= c' & b <= c'
          holds c <= c';
      let x,y be Element of A~;
      consider c such that
A2:     ~x <= c & ~y <= c &
        for c' being Element of A st ~x <= c' & ~y <= c'
          holds c <= c' by A1;
      take z = c~;
A3:     c~ = c & ~(c~) = c~ & ~x = x & (~x)~ = ~x & ~y = y & (~y)~ = ~y
        by Def6,Def7;
      hence z <= x & z <= y by A2,Th9;
      let z' be Element of A~;
A4:     ~z' = z' & (~z')~ = ~z' by Def6,Def7;
      assume z' <= x & z' <= y;
       then ~x <= ~z' & ~y <= ~z' by A3,A4,Th9;
       then c <= ~z' by A2;
      hence thesis by A4,Th9;
     end;
   assume
A5:  for x,y being Element of A~
      ex z being Element of A~ st z <= x & z <= y &
     for z' being Element of A~ st z' <= x & z' <= y holds z' <= z;
   let a,b; consider z  being Element of A~ such that
A6:  z <= a~ & z <= b~ &
     for z' being Element of A~
       st z' <= a~ & z' <= b~ holds z' <= z by A5;
   take c = ~z;
A7:  ~z = z & (~z)~ = ~z & a~ = a & ~(a~) = a~ & b~ = b & ~(b~) = b~
     by Def6,Def7;
   hence a <= c & b <= c by A6,Th9;
   let c' be Element of A;
   assume a <= c' & b <= c';
    then c'~ <= a~ & c'~ <= b~ by Th9;
    then c'~ <= z by A6;
   hence thesis by A7,Th9;
  end;

theorem
   for L being Lattice holds LattPOSet L is with_suprema with_infima
  proof let L;
   thus LattPOSet L is with_suprema
     proof let x,y be Element of LattPOSet L;
      take z = (%x"\/"%y)%;
A1:     %x [= %x"\/"%y & %y [= %y"\/"%x & %y"\/"%x = %x"\/"%y & %x = x &
       (%x)% = %x & %y = y & (%y)% = %y by Def3,Def4,LATTICES:22;
      hence x <= z & y <= z by Th7;
      let z' be Element of LattPOSet L;
A2:     %z' = z' & (%z')% = %z' by Def3,Def4;
      assume x <= z' & y <= z';
       then %x [= %z' & %y [= %z' by A1,A2,Th7;
       then %x"\/"%y [= %z' by FILTER_0:6;
      hence thesis by A2,Th7;
     end;
   let x,y be Element of LattPOSet L;
   take z = (%x"/\"%y)%;
A3:  %x"/\"%y [= %x & %y"/\"%x [= %y & %y"/\"%x = %x"/\"%y & %x = x &
    (%x)% = %x & %y = y & (%y)% = %y by Def3,Def4,LATTICES:23;
   hence z <= x & z <= y by Th7;
   let z' be Element of LattPOSet L;
A4:  %z' = z' & (%z')% = %z' by Def3,Def4;
   assume z' <= x & z' <= y;
    then %z' [= %x & %z' [= %y by A3,A4,Th7;
    then %z' [= %x"/\"%y by FILTER_0:7;
   hence thesis by A4,Th7;
  end;

definition let IT be RelStr;
 attr IT is complete means:
Def12:
  for X being set ex a being Element of IT st X is_<=_than a &
   for b being Element of IT st X is_<=_than b holds a <= b;
end;

definition
 cluster strict complete non empty Poset;
  existence
   proof consider s; set D = {s}; consider R being Order of D;
    take A = RelStr(#D, R#);
    thus A is strict;
   hereby
    let X be set;
      s is Element of A by TARSKI:def 1;
    then reconsider s as Element of A;
    take s;
    thus X is_<=_than s
      proof let a be Element of A such that a in
 X; thus a <= s by TARSKI:def 1;
      end;
    let b be Element of A such that X is_<=_than b; thus s <= b by TARSKI:def 1
;
   end;
thus thesis;
end;
end;

reserve A for non empty RelStr, a,b,c,c' for Element of A;

theorem Th12:
 A is complete implies A is with_suprema with_infima
  proof assume
A1:  for X being set ex a st X is_<=_than a &
     for b st X is_<=_than b holds a <= b;
   thus A is with_suprema
     proof let a,b; consider c such that
A2:     {a,b} is_<=_than c & for c' st {a,b} is_<=_than c' holds c <= c'
        by A1;
      take c; a in {a,b} & b in {a,b} by TARSKI:def 2;
      hence a <= c & b <= c by A2,Def9;
      let c' such that
A3:     a <= c' & b <= c';
         {a,b} is_<=_than c'
        proof let d be Element of A; assume d in {a,b};
         hence thesis by A3,TARSKI:def 2;
        end;
      hence c <= c' by A2;
     end;
   let a,b; set X = {c: c <= a & c <= b};
   consider c such that
A4:  X is_<=_than c & for c' st X is_<=_than c' holds c <= c' by A1;
   take c;
      X is_<=_than a
     proof let c; assume c in X;
       then ex c' st c = c' & c' <= a & c' <= b;
      hence thesis;
     end;
   hence c <= a by A4;
      X is_<=_than b
     proof let c; assume c in X;
       then ex c' st c = c' & c' <= a & c' <= b;
      hence thesis;
     end;
   hence c <= b by A4;
   let c'; assume
      c' <= a & c' <= b; then c' in X;
   hence c' <= c by A4,Def9;
  end;

definition
 cluster complete with_suprema with_infima strict non empty Poset;
  existence
    proof consider A being complete strict non empty Poset;
     take A; thus thesis by Th12;
    end;
end;

definition let A be RelStr such that
A1: A is antisymmetric;
 let a,b be Element of A such that
A2: ex x being Element of A st a <= x & b <= x &
   for c being Element of A st a <= c & b <= c holds x <= c;
 func a"\/"b -> Element of A means :Def13:
   a <= it & b <= it &
   for c being Element of A st a <= c & b <= c holds it <= c;
  existence by A2;
  uniqueness
   proof let c1,c2 be Element of A such that
A3:  a <= c1 & b <= c1 &
      for c being Element of A st a <= c & b <= c holds c1 <= c and
A4:  a <= c2 & b <= c2 &
      for c being Element of A st a <= c & b <= c holds c2 <= c;
       c1 <= c2 & c2 <= c1 by A3,A4;
    hence thesis by A1,ORDERS_1:25;
   end;
end;

Lm1:
now let A be non empty antisymmetric with_suprema RelStr;
 let a,b be Element of A;
    ex x being Element of A st a <= x & b <= x &
   for c being Element of A st a <= c & b <= c holds x <= c
     by Def10;
 hence for c being Element of A holds c = a"\/"b iff
   a <= c & b <= c & for d being Element of A st a <= d & b <= d
    holds c <= d
    by Def13;
end;

definition let A be RelStr such that
A1: A is antisymmetric;
 let a,b be Element of A such that
A2: ex x being Element of A st a >= x & b >= x &
   for c being Element of A st a >= c & b >= c holds x >= c;
 func a"/\"b -> Element of A means:Def14:
   it <= a & it <= b &
   for c being Element of A st c <= a & c <= b holds c <= it;
  existence by A2;
  uniqueness
   proof let c1,c2 be Element of A such that
A3:  c1 <= a & c1 <= b &
      for c being Element of A st c <= a & c <= b holds c <= c1 and
A4:  c2 <= a & c2 <= b &
      for c being Element of A st c <= a & c <= b holds c <= c2;
       c1 <= c2 & c2 <= c1 by A3,A4;
    hence thesis by A1,ORDERS_1:25;
   end;
end;

Lm2:
now let A be non empty antisymmetric with_infima RelStr;
 let a,b be Element of A;
    ex x being Element of A st a >= x & b >= x &
   for c being Element of A st a >= c & b >= c holds x >= c
    by Def11;
 hence for c being Element of A holds c = a"/\"b iff
   a >= c & b >= c & for d being Element of A st a >= d & b >= d
    holds c >= d
    by Def14;
end;

reserve V for with_suprema antisymmetric RelStr,
 u1,u2,u3,u4 for Element of V;
reserve N for with_infima antisymmetric RelStr,
 n1,n2,n3,n4 for Element of N;
reserve K for with_suprema with_infima reflexive antisymmetric RelStr,
  k1,k2,k3 for Element of K;

theorem Th13:
 u1 "\/" u2 = u2 "\/" u1
  proof
A1:  u1 <= u1"\/"u2 & u2 <= u1"\/"u2 &
    for u3 st u1 <= u3 & u2 <= u3 holds u1"\/"u2 <= u3 by Lm1;
      for u3 st u2 <= u3 & u1 <= u3 holds u1"\/"u2 <= u3 by Lm1;
   hence thesis by A1,Def13;
  end;

theorem Th14:
 V is transitive implies (u1 "\/" u2) "\/" u3 = u1 "\/" (u2 "\/" u3)
  proof assume
A1:  V is transitive;
A2:  u1 <= u1"\/"u2 & u2 <= u1"\/"u2 & u2 <= u2"\/"u3 & u3 <= u2"\/"u3 &
    u1"\/"u2 <= (u1"\/"u2)"\/"u3 & u3 <= (u1"\/"u2)"\/"u3 by Lm1;
then A3:  u1 <= (u1"\/"u2)"\/"u3 & u2 <= (u1"\/"u2)"\/"u3 by A1,ORDERS_1:26;
then A4:  u2"\/"u3 <= (u1"\/"u2)"\/"u3 by A2,Lm1;
      now let u4; assume
A5:    u1 <= u4 & u2"\/"u3 <= u4;
then A6:    u2 <= u4 & u3 <= u4 by A1,A2,ORDERS_1:26;
      then u1"\/"u2 <= u4 by A5,Lm1;
     hence (u1"\/"u2)"\/"u3 <= u4 by A6,Lm1;
    end;
   hence thesis by A3,A4,Def13;
  end;

theorem Th15:
 n1 "/\" n2 = n2 "/\" n1
  proof
A1:  n1"/\"n2 <= n1 & n1"/\"n2 <= n2 &
    for n3 st n3 <= n1 & n3 <= n2 holds n3 <= n1"/\"n2 by Lm2;
      for n3 st n3 <= n2 & n3 <= n1 holds n3 <= n1"/\"n2 by Lm2;
   hence thesis by A1,Def14;
  end;

theorem Th16:
 N is transitive implies (n1 "/\" n2) "/\" n3 = n1 "/\" (n2 "/\" n3)
  proof assume
A1:  N is transitive;
A2:  n1"/\"n2 <= n1 & n1"/\"n2 <= n2 & n2"/\"n3 <= n2 & n2"/\"n3 <= n3 &
    (n1"/\"n2)"/\"n3 <= n1"/\"n2 & (n1"/\"n2)"/\"n3 <= n3 by Lm2;
then A3:  (n1"/\"n2)"/\"n3 <= n1 & (n1"/\"n2)"/\"n3 <= n2 by A1,ORDERS_1:26;
then A4:  (n1"/\"n2)"/\"n3 <= n2"/\"n3 by A2,Lm2;
      now let n4; assume
A5:    n4 <= n1 & n4 <= n2"/\"n3;
then A6:    n4 <= n2 & n4 <= n3 by A1,A2,ORDERS_1:26;
      then n4 <= n1"/\"n2 by A5,Lm2;
     hence n4 <= (n1"/\"n2)"/\"n3 by A6,Lm2;
    end;
   hence thesis by A3,A4,Def14;
  end;

definition let L be with_infima antisymmetric RelStr,
               x, y be Element of L;
 redefine func x "/\" y;
 commutativity by Th15;
end;

definition let L be with_suprema antisymmetric RelStr,
               x, y be Element of L;
 redefine func x "\/" y;
commutativity by Th13;
end;

theorem Th17:
 (k1 "/\" k2) "\/" k2 = k2
  proof
      k1"/\"k2 <= k2 & k2 <= k2 & for k3 st k1"/\"
k2 <= k3 & k2 <= k3 holds k2 <= k3
     by Lm2;
   hence thesis by Def13;
  end;

theorem Th18:
 k1 "/\" (k1 "\/" k2) = k1
  proof
      k1 <= k1 & k1 <= k1"\/"k2 & for k3 st k3 <= k1 & k3 <= k1"\/"
k2 holds k3 <= k1
     by Lm1;
   hence thesis by Def14;
  end;

theorem Th19:
 for A being with_suprema with_infima Poset
   ex L being strict Lattice st the RelStr of A = LattPOSet L
  proof let A be with_suprema with_infima Poset;
   defpred X[Element of A,Element of A,set] means
     for x',y' being Element of A st x' = $1 & y' = $2
         holds $3 = x'"\/"y';
A1:  for x,y being Element of A
       ex u being Element of A st X[x,y,u]
     proof let x,y be Element of A;
       reconsider x' = x, y' = y as Element of A
        ;
       take x'"\/"y';
       thus thesis;
     end;
   consider j being BinOp of the carrier of A such that
A2:  for x,y being Element of A holds X[x,y,j.[x,y]]
        from FuncEx2D(A1);
   defpred X[Element of A,Element of A,set] means
     for x',y' being Element of A st x' = $1 & y' = $2
         holds $3 = x'"/\"y';
A3:  for x,y being Element of A
       ex u being Element of A st X[x,y,u]
     proof let x,y be Element of A;
       reconsider x' = x, y' = y as Element of A
        ;
       take x'"/\"y';
       thus thesis;
     end;
   consider m being BinOp of the carrier of A such that
A4:  for x,y being Element of A holds X[x,y,m.[x,y]]
        from FuncEx2D(A3);
   set L = LattStr(#the carrier of A, j, m#);
A5: now let a,b be Element of L;
      reconsider x = a, y = b as Element of A;
      j.(y,x) = j.[y,x] & j.(x,y) = j.[x,y] by BINOP_1:def 1;
      then x"\/"y = y"\/"x & a"\/"b = j.(a,b) & b"\/"a = j.(b,a) & j.(x,y) = x
"\/"y &
      j.(y,x) = y"\/"x by A2,LATTICES:def 1;
     hence a"\/"b = b"\/"a;
    end;
A6: now let a,b,c be Element of L;
     reconsider x = a, y = b, z = c as Element of A
      ;
     thus a"\/"(b"\/"c) = j.(a,b"\/"c) by LATTICES:def 1
           .= j.(a,j.(b,c)) by LATTICES:def 1
           .= j.(a,j.[b,c]) by BINOP_1:def 1
           .= j.(x,y"\/"z) by A2
           .= j.[x,y"\/"z] by BINOP_1:def 1
           .= x"\/"(y"\/"z) by A2
           .= x"\/"y"\/"z by Th14
           .= j.[x"\/"y,z] by A2
           .= j.(x"\/"y,z) by BINOP_1:def 1
           .= j.(j.[x,y],z) by A2
           .= j.(j.(x,y),z) by BINOP_1:def 1
           .= j.(a"\/"b,c) by LATTICES:def 1
           .= (a"\/"b)"\/"c by LATTICES:def 1;
    end;
A7: now let a,b be Element of L;
     reconsider x = a, y = b as Element of A;
     thus (a"/\"b)"\/"b = j.(a"/\"b,b) by LATTICES:def 1
           .= j.(m.(x,y),y) by LATTICES:def 2
           .= j.(m.[x,y],y) by BINOP_1:def 1
           .= j.(x"/\"y,y) by A4
           .= j.[x"/\"y,y] by BINOP_1:def 1
           .= (x"/\"y)"\/"y by A2
           .= b by Th17;
    end;
A8: now let a,b be Element of L;
      reconsider x = a, y = b as Element of A;
      m.(y,x) = m.[y,x] & m.(x,y) = m.[x,y] by BINOP_1:def 1;
      then x"/\"y = y"/\"x & a"/\"b = m.(a,b) & b"/\"a = m.(b,a) & m.(x,y) = x
"/\"y &
      m.(y,x) = y"/\"x by A4,LATTICES:def 2;
     hence a"/\"b = b"/\"a;
    end;
A9: now let a,b,c be Element of L;
     reconsider x = a, y = b, z = c as Element of A;
     thus a"/\"(b"/\"c) = m.(a,b"/\"c) by LATTICES:def 2
           .= m.(a,m.(b,c)) by LATTICES:def 2
           .= m.(a,m.[b,c]) by BINOP_1:def 1
           .= m.(x,y"/\"z) by A4
           .= m.[x,y"/\"z] by BINOP_1:def 1
           .= x"/\"(y"/\"z) by A4
           .= x"/\"y"/\"z by Th16
           .= m.[x"/\"y,z] by A4
           .= m.(x"/\"y,z) by BINOP_1:def 1
           .= m.(m.[x,y],z) by A4
           .= m.(m.(x,y),z) by BINOP_1:def 1
           .= m.(a"/\"b,c) by LATTICES:def 2
           .= (a"/\"b)"/\"c by LATTICES:def 2;
    end;
      now let a,b be Element of L;
     reconsider x = a, y = b as Element of A;
     thus a"/\"(a"\/"b) = m.(a,a"\/"b) by LATTICES:def 2
           .= m.(x,j.(x,y)) by LATTICES:def 1
           .= m.(x,j.[x,y]) by BINOP_1:def 1
           .= m.(x,x"\/"y) by A2
           .= m.[x,x"\/"y] by BINOP_1:def 1
           .= x"/\"(x"\/"y) by A4
           .= a by Th18;
    end;
    then L is join-commutative join-associative meet-absorbing
         meet-commutative meet-associative join-absorbing
    by A5,A6,A7,A8,A9,LATTICES:def 4,def 5,def 6,def 7,def 8,def 9;
   then reconsider L as strict Lattice by LATTICES:def 10;
   take L;
A10:  LattRel L = {[p,q] where p is Element of L,
                             q is Element of L: p [= q}
     by FILTER_1:def 8;
      LattRel L = the InternalRel of A
     proof let x,y be set;
      thus [x,y] in LattRel L implies [x,y] in the InternalRel of A
        proof assume [x,y] in LattRel L;
         then consider p,q being Element of L such that
A11:        [x,y] = [p,q] & p [= q by A10;
         reconsider p' = p, q' = q as Element of A;
            p'"\/"q' = j.[p',q'] by A2
                .= j.(p',q') by BINOP_1:def 1
                .= p"\/"q by LATTICES:def 1
                .= q by A11,LATTICES:def 3;
          then p' <= q' by Lm1;
         hence thesis by A11,ORDERS_1:def 9;
        end;
      assume
A12:     [x,y] in the InternalRel of A;
      then consider x1,x2 being set such that
A13:     x1 in the carrier of A & x2 in the carrier of A & [x,y] = [x1,x2]
        by ZFMISC_1:103;
      reconsider x1, x2 as Element of A by A13;
      reconsider y1 = x1, y2 = x2 as Element of L;
         x1 <= x2 & x2 <= x2 by A12,A13,ORDERS_1:def 9;
       then x1"\/"x2 <= x2 & x2 <= x1"\/"x2 by Lm1;
       then x2 = x1"\/"x2 by ORDERS_1:25
         .= j.[x1,x2] by A2
         .= j.(x1,x2) by BINOP_1:def 1
         .= y1"\/"y2 by LATTICES:def 1;
       then y1 [= y2 by LATTICES:def 3;
      hence thesis by A10,A13;
     end;
   hence thesis by Def2;
  end;

definition let A be RelStr such that
A1:  A is with_suprema with_infima Poset;
 func latt A -> strict Lattice means:
Def15:
  the RelStr of A = LattPOSet it;
  existence by A1,Th19;
  uniqueness by Th6;
end;

theorem
   (LattRel L)~ = LattRel (L.:) & (LattPOSet L)~ = LattPOSet (L.:)
  proof
A1:  LattRel L = {[p,q]: p [= q} & LattRel (L.:) = {[p',q']
       where p' is Element of L.:,
             q' is Element of L.: : p' [= q'} &
    L.: = LattStr(#carr(L), met(L), join(L)#) &
    the LattStr of L = LattStr(#carr(L), join(L), met(L)#)
      by FILTER_1:def 8,LATTICE2:def 2;
A2:  LattPOSet L = RelStr(#carr(L), LattRel L#) &
    LattPOSet (L.:) = RelStr(#carr(L.:), LattRel (L.:)#) by Def2;
   thus (LattRel L)~ = LattRel (L.:)
     proof let x,y be set;
      thus [x,y] in (LattRel L)~ implies [x,y] in LattRel (L.:)
        proof assume [x,y] in (LattRel L)~;
          then [y,x] in LattRel L by RELAT_1:def 7;
         then consider p,q such that
A3:        [y,x] = [p,q] & p [= q by A1;
         reconsider p' = p, q' = q as Element of L.: by A1;
            x = q & y = p & q' [= p' by A3,LATTICE2:53,ZFMISC_1:33;
         hence [x,y] in LattRel (L.:) by A1;
        end;
      assume [x,y] in LattRel (L.:);
      then consider p', q' being Element of L.: such that
A4:     [x,y] = [p',q'] & p' [= q' by A1;
      reconsider p = p', q = q' as Element of L by A1;
         x = p & y = q & q [= p by A4,LATTICE2:54,ZFMISC_1:33;
       then [y,x] in LattRel L by A1;
      hence thesis by RELAT_1:def 7;
     end;
   hence thesis by A1,A2,Def5;
  end;

begin :: Complete Lattice

definition
 let L be non empty LattStr, p be Element of L, X be set;
 pred p is_less_than X means :Def16:
   for q being Element of L st q in X holds p [= q;
  synonym X is_great_than p;

 pred X is_less_than p means :Def17:
   for q being Element of L st q in X holds q [= p;
  synonym p is_great_than X;
end;

theorem
   for L being Lattice, p,q,r being Element of L holds
   p is_less_than {q,r} iff p [= q"/\"r
  proof let L be Lattice, p,q,r be Element of L;
A1:  q in {q,r} & r in {q,r} by TARSKI:def 2;
   thus p is_less_than {q,r} implies p [= q"/\"r
     proof assume p is_less_than {q,r};
       then p [= q & p [= r by A1,Def16;
      hence thesis by FILTER_0:7;
     end;
   assume
A2:  p [= q"/\"r;
   let a be Element of L; assume a in {q,r};
    then (a = q or a = r) & q"/\"r [= q & r"/\"q [= r & q"/\"r = r"/\"q
     by LATTICES:23,TARSKI:def 2;
   hence thesis by A2,LATTICES:25;
  end;

theorem
   for L being Lattice, p,q,r being Element of L holds
  p is_great_than {q,r} iff q"\/"r [= p
  proof let L be Lattice, p,q,r be Element of L;
A1:  q in {q,r} & r in {q,r} by TARSKI:def 2;
   thus p is_great_than {q,r} implies q"\/"r [= p
     proof assume p is_great_than {q,r};
       then q [= p & r [= p by A1,Def17;
      hence thesis by FILTER_0:6;
     end;
   assume
A2:  q"\/"r [= p;
   let a be Element of L; assume a in {q,r};
    then (a = q or a = r) & q [= q"\/"r & r [= r"\/"q & q"\/"r = r"\/"q
     by LATTICES:22,TARSKI:def 2;
   hence thesis by A2,LATTICES:25;
  end;

definition let IT be non empty LattStr;
 attr IT is complete means :Def18:
  for X being set ex p being Element of IT st X is_less_than p &
    for r being Element of IT st X is_less_than r holds p [= r;

 attr IT is \/-distributive means :Def19:
  for X for a,b,c being Element of IT st X is_less_than a &
   (for d being Element of IT st X is_less_than d holds a [= d)
    & {b"/\"a' where a' is Element of IT: a' in
 X} is_less_than c &
   for d being Element of IT st
    {b"/\"a' where a' is Element of IT: a' in X} is_less_than d
    holds c [= d
   holds b"/\"a [= c;

 attr IT is /\-distributive means
    for X for a,b,c being Element of IT st X is_great_than a &
   (for d being Element of IT st X is_great_than d holds d [= a)
   & {b"\/"a' where a' is Element of IT: a' in
 X} is_great_than c &
   for d being Element of IT st
    {b"\/"a' where a' is Element of IT: a' in X} is_great_than d
    holds d [= c
   holds c [= b"\/"a;
end;

theorem
   for B being B_Lattice, a being Element of B holds
   X is_less_than a iff {b` where b is Element of B: b in X}
    is_great_than a`
  proof let B be B_Lattice, a be Element of B;
   set Y = {b` where b is Element of B: b in X};
   thus X is_less_than a implies Y is_great_than a`
     proof assume
A1:     for b being Element of B st b in X holds b [= a;
      let b be Element of B; assume
         b in Y;
      then consider c being Element of B such that
A2:     b = c` & c in X;
         c [= a by A1,A2;
      hence thesis by A2,LATTICES:53;
     end;
   assume
A3:  for b being Element of B st b in Y holds a` [= b;
   let b be Element of B; assume
      b in X;
    then b` in Y;
    then a` [= b` & a`` = a & b`` = b by A3,LATTICES:49;
   hence thesis by LATTICES:53;
  end;

theorem Th24:
 for B being B_Lattice, a being Element of B holds
   X is_great_than a iff {b` where b is Element of B: b in X}
    is_less_than a`
  proof let B be B_Lattice, a be Element of B;
   set Y = {b` where b is Element of B: b in X};
   thus X is_great_than a implies Y is_less_than a`
     proof assume
A1:     for b being Element of B st b in X holds a [= b;
      let b be Element of B; assume
         b in Y;
      then consider c being Element of B such that
A2:     b = c` & c in X;
         a [= c by A1,A2;
      hence thesis by A2,LATTICES:53;
     end;
   assume
A3:  for b being Element of B st b in Y holds b [= a`;
   let b be Element of B; assume
      b in X;
    then b` in Y;
    then b` [= a` & a`` = a & b`` = b by A3,LATTICES:49;
   hence thesis by LATTICES:53;
  end;

theorem Th25:
 BooleLatt X is complete
  proof set B = BooleLatt X;
   let x be set; set p = union (x /\ bool X);
      x /\ bool X c= bool X by XBOOLE_1:17;
    then A1: p c= union bool X & union bool X = X by ZFMISC_1:95,99;
then A2:  p in bool X & carr(B) = bool X by Def1;
   reconsider p as Element of B by A1,Def1;
   take p;
   thus x is_less_than p
     proof let q be Element of B; assume q in x;
       then q in x /\ bool X by A2,XBOOLE_0:def 3;
       then q c= p by ZFMISC_1:92;
      hence thesis by Th2;
     end;
   let r be Element of B such that
A3:  for q being Element of B st q in x holds q [= r;
      now let z be set; assume
A4:    z in x /\ bool X;
then A5:    z in x & z in bool X by XBOOLE_0:def 3;
     reconsider z' = z as Element of B by A2,A4,XBOOLE_0:def 3;
        z' [= r by A3,A5;
     hence z c= r by Th2;
    end;
    then p c= r by ZFMISC_1:94;
   hence thesis by Th2;
  end;

theorem Th26:
 BooleLatt X is \/-distributive
  proof let x be set; set B = BooleLatt X;
   let a,b,c be Element of B such that
A1: x is_less_than a and
A2: for d being Element of B st x is_less_than d holds a [= d
     and
A3: {b"/\"
a' where a' is Element of B: a' in x} is_less_than c and
A4: for d being Element of B st
     {b"/\"a' where a' is Element of B: a' in x} is_less_than d
     holds c [= d;
   set Y = {b"/\"a' where a' is Element of B: a' in x};
A5:  carr(B) = bool X by Def1;
A6:  Y c= bool X
     proof let z be set; assume z in Y;
       then ex a' being Element of B st z = b"/\"a' & a' in x;
      hence thesis by A5;
     end;
      x /\ bool X c= bool X by XBOOLE_1:17;
    then (union (x /\ bool X)) c= union bool X & (union Y)
 c= union bool X & union bool X = X
     by A6,ZFMISC_1:95,99;
   then reconsider p = union (x /\ bool X),q = union Y
     as Element of B by Def1;
      now let y be set; assume
A7:    y in x /\ bool X;
then A8:    y in x & y in bool X by XBOOLE_0:def 3;
     reconsider y' = y as Element of B by A5,A7,XBOOLE_0:def 3;
        y' [= a by A1,A8,Def17;
     hence y c= a by Th2;
    end;
then A9:  p c= a by ZFMISC_1:94;
      x is_less_than p
     proof let q be Element of B; assume q in x;
       then q in x /\ bool X by A5,XBOOLE_0:def 3;
       then q c= p by ZFMISC_1:92;
      hence q [= p by Th2;
     end;
    then p [= a & a [= p by A2,A9,Th2;
then A10:  a = p by LATTICES:26;
      now let y be set; assume
A11:    y in Y;
     then consider a' being Element of B such that
A12:    y = b"/\"a' & a' in x;
        b"/\"a' [= c by A3,A11,A12,Def17;
     hence y c= c by A12,Th2;
    end;
then A13:  q c= c by ZFMISC_1:94;
      Y is_less_than q
     proof let p be Element of B; assume p in Y;
       then p c= q by ZFMISC_1:92;
      hence p [= q by Th2;
     end;
    then q [= c & c [= q by A4,A13,Th2;
then A14:  c = q & b /\ a = b"/\"a by Th1,LATTICES:26;
      b /\ a c= c
     proof let z be set; assume z in b /\ a;
then A15:     z in b & z in a by XBOOLE_0:def 3;
      then consider y being set such that
A16:     z in y & y in x /\ bool X by A10,TARSKI:def 4;
A17:     y in x & y in bool X by A16,XBOOLE_0:def 3;
      reconsider y as Element of B by A5,A16,XBOOLE_0:def 3;
         b"/\"y in Y & b"/\"
y = b /\ y & z in b /\ y by A15,A16,A17,Th1,XBOOLE_0:def 3;
      hence thesis by A14,TARSKI:def 4;
     end;
   hence b"/\"a [= c by A14,Th2;
  end;

theorem Th27:
 BooleLatt X is /\-distributive
  proof let x be set; set B = BooleLatt X;
   let a,b,c be Element of B such that
A1: x is_great_than a and
A2: for d being Element of B st x is_great_than d holds d [= a
    and
A3: {b"\/"a' where a' is Element of B: a' in
 x} is_great_than c and
A4: for d being Element of B st
     {b"\/"a' where a' is Element of B: a' in x} is_great_than d
     holds d [= c;
   set x' = {e` where e is Element of B: e in x},
       y = {b"\/"e where e is Element of B: e in x},
       y' = {e` where e is Element of B: e in y},
       z = {b`"/\"e where e is Element of B: e in x'};
A5:  z = y'
     proof
      thus z c= y'
        proof let s; assume s in z;
         then consider e being Element of B such that
A6:       s = b`"/\"e & e in x';
         consider i being Element of B such that
A7:       e = i` & i in x by A6;
            b"\/"i in y & (b"\/"i)` = s by A6,A7,LATTICES:51;
         hence thesis;
        end;
      let s; assume s in y';
      then consider e being Element of B such that
A8:    s = e` & e in y;
      consider i being Element of B such that
A9:    e = b"\/"i & i in x by A8;
         i` in x' & s = b`"/\"i` by A8,A9,LATTICES:51;
      hence thesis;
     end;
A10: a`` = a & b`` = b & c`` = c by LATTICES:49;
A11: x' is_less_than a` by A1,Th24;
A12: for d being Element of B st x' is_less_than d holds a` [= d
     proof let d be Element of B;
A13:    d`` = d by LATTICES:49;
      assume x' is_less_than d;
       then x is_great_than d` by A13,Th24;
       then d` [= a by A2;
      hence thesis by A13,LATTICES:53;
     end;
A14: z is_less_than c` by A3,A5,Th24;
A15: for d being Element of B st z is_less_than d holds c` [= d
     proof let d be Element of B;
A16:    d`` = d by LATTICES:49;
      assume z is_less_than d;
       then y is_great_than d` by A5,A16,Th24;
       then d` [= c by A4;
      hence thesis by A16,LATTICES:53;
     end;
      B is \/-distributive by Th26;
    then b`"/\"a` [= c` & (b`"/\"a`)` = b``"\/"
a`` by A11,A12,A14,A15,Def19,LATTICES:50;
   hence c [= b"\/"a by A10,LATTICES:53;
  end;

definition
 cluster complete \/-distributive /\-distributive strict Lattice;
  existence
   proof consider X;
       BooleLatt X is complete \/-distributive /\-distributive by Th25,Th26,
Th27
;
    hence thesis;
   end;
end;

reserve p',q' for Element of LattPOSet L;

theorem Th28:
 p is_less_than X iff p% is_<=_than X
  proof
   thus p is_less_than X implies p% is_<=_than X
     proof assume
A1:     for q st q in X holds p [= q;
      let p';
A2:     p' = %p' & (%p')% = %p' by Def3,Def4;
      assume p' in X; then p [= %p' by A1,A2;
      hence thesis by A2,Th7;
     end;
   assume
A3:  for q' st q' in X holds p% <= q';
   let q;
A4:  q = q% by Def3;
   assume q in X; then p% <= q% by A3,A4;
   hence thesis by Th7;
  end;

theorem
   p' is_<=_than X iff %p' is_less_than X
  proof (%p')% = %p' & %p' = p' by Def3,Def4;
   hence thesis by Th28;
  end;

theorem Th30:
 X is_less_than p iff X is_<=_than p%
  proof
   thus X is_less_than p implies X is_<=_than p%
     proof assume
A1:     for q st q in X holds q [= p;
      let p';
A2:     p' = %p' & (%p')% = %p' by Def3,Def4;
      assume p' in X; then %p' [= p by A1,A2;
      hence thesis by A2,Th7;
     end;
   assume
A3:  for q' st q' in X holds q' <= p%;
   let q;
A4:  q = q% by Def3;
   assume q in X; then q% <= p% by A3,A4;
   hence thesis by Th7;
  end;

theorem Th31:
 X is_<=_than p' iff X is_less_than %p'
  proof (%p')% = %p' & %p' = p' by Def3,Def4;
   hence thesis by Th30;
  end;

 definition let A be complete (non empty Poset);
  cluster latt A -> complete;
   coherence
    proof A is with_suprema with_infima by Th12;
then A1:    the RelStr of A = LattPOSet latt A by Def15; set B = LattPOSet latt
A;
        latt A is complete
       proof let X; consider a being Element of A such that
A2:       X is_<=_than a &
         for b being Element of A st X is_<=_than b
          holds a <= b by Def12;
        reconsider a' = a as Element of B by A1;
        take p = %a';
A3:       p% = p & p = a by Def3,Def4;
        thus X is_less_than p
          proof let q be Element of latt A;
A4:          q% = q by Def3;
           then reconsider b = q as Element of A by A1;
           assume q in X; then b <= a by A2,Def9;
            then [b,a] in the InternalRel of A by ORDERS_1:def 9;
            then q% <= a' by A1,A4,ORDERS_1:def 9;
           hence q [= p by A3,Th7;
          end;
        let q be Element of latt A; assume X is_less_than q;
        then A5:       X is_<=_than q% by Th30;
        reconsider b = q% as Element of A by A1;
           X is_<=_than b
          proof let c be Element of A;
           reconsider c' = c as Element of B by A1;
           assume c in X; then c' <= q% by A5,Def9;
            then [c,b] in the InternalRel of the RelStr of A by A1,ORDERS_1:def
9;
           hence c <= b by ORDERS_1:def 9;
          end;
         then a <= b by A2;
         then [a,b] in the InternalRel of A by ORDERS_1:def 9;
         then a' <= q% by A1,ORDERS_1:def 9;
        hence thesis by A3,Th7;
       end;
     hence thesis;
    end;
 end;

definition let L be non empty LattStr such that
A1: L is complete Lattice;
 let X be set;
 func "\/"(X,L) -> Element of L means:
Def21:
  X is_less_than it &
   for r being Element of L st X is_less_than r holds it [= r;
  existence by A1,Def18;
  uniqueness
   proof let p1, p2 be Element of L such that
A2:  X is_less_than p1 &
      for r being Element of L st X is_less_than r
        holds p1 [= r and
A3:  X is_less_than p2 &
      for r being Element of L st X is_less_than r
        holds p2 [= r;
       p1 [= p2 & p2 [= p1 by A2,A3;
    hence thesis by A1,LATTICES:26;
   end;
end;

definition let L be non empty LattStr, X be set;
 func "/\"(X,L) -> Element of L equals :Def22:
   "\/"({p where p is Element of L: p is_less_than X},L);
  correctness;
end;

definition let L be non empty LattStr, X be Subset of L;
 redefine func "\/"(X,L); synonym "\/" X; func "/\"(X,L); synonym "/\" X;
end;

reserve C for complete Lattice,
        a,a',b,b',c,d for Element of C, X,Y for set;

theorem Th32:
 "\/"({a"/\"b: b in X}, C) [= a"/\""\/"(X,C)
  proof set Y = {a"/\"b: b in X};
      Y is_less_than a"/\""\/"(X,C)
     proof let c; assume c in Y;
      then consider b such that
A1:     c = a"/\"b & b in X;
         X is_less_than "\/"(X,C) by Def21;
       then b [= "\/"(X,C) by A1,Def17;
      hence thesis by A1,LATTICES:27;
     end;
   hence thesis by Def21;
  end;

theorem Th33:
 C is \/-distributive iff for X, a holds a"/\""\/"(X,C) [= "\/"({a"/\"
b: b in X}, C)
  proof
   thus C is \/-distributive implies for X, a holds
       a"/\""\/"(X,C) [= "\/"({a"/\"b: b in X}, C)
     proof assume
A1:     for X for a,b,c st X is_less_than a &
       (for d st X is_less_than d holds a [= d) &
       {b"/\"a': a' in X} is_less_than c &
       for d st {b"/\"b': b' in X} is_less_than d holds c [= d
        holds b"/\"a [= c;
      let X, a; set Y = {a"/\"b: b in X};
         X is_less_than "\/"(X,C) &
       (for d st X is_less_than d holds "\/"(X,C) [= d) &
       Y is_less_than "\/"(Y,C) &
       (for d st Y is_less_than d holds "\/"(Y,C) [= d) by Def21;
      hence thesis by A1;
     end;
   assume
A2:  for X, a holds a"/\""\/"(X,C) [= "\/"({a"/\"b: b in X}, C);
   let X; let a,b,c;
   assume
      X is_less_than a &
    (for d st X is_less_than d holds a [= d) &
    {b"/\"a': a' in X} is_less_than c &
    for d st {b"/\"b': b' in X} is_less_than d holds c [= d;
    then a = "\/"(X,C) & c = "\/"({b"/\"a': a' in X}, C) by Def21;
   hence b"/\"a [= c by A2;
  end;

theorem Th34:
 a = "/\"(X,C) iff a is_less_than X & for b st b is_less_than X holds b [= a
  proof set Y = {b: b is_less_than X};
A1:    "/\"(X,C) = "\/"(Y, C) by Def22;
then A2:  a = "/\"(X,C) iff Y is_less_than a &
     for c st Y is_less_than c holds a [= c by Def21;
   thus a = "/\"(X,C) implies a is_less_than X &
      for b st b is_less_than X holds b [= a
     proof assume A3: a = "/\"(X,C);
then A4:     Y is_less_than a & for c st Y is_less_than c holds a [= c by A1,
Def21;
      thus a is_less_than X
        proof let b such that
A5:        b in X;
            Y is_less_than b
           proof let c; assume c in Y;
             then ex d being Element of C st c = d &
                   d is_less_than X;
            hence thesis by A5,Def16;
           end;
         hence thesis by A1,A3,Def21;
        end;
      let b; assume b is_less_than X; then b in Y;
      hence thesis by A4,Def17;
     end;
   assume
A6:  a is_less_than X & for b st b is_less_than X holds b [= a;
A7:  Y is_less_than a
     proof let b; assume b in Y;
       then ex c st b = c & c is_less_than X;
      hence thesis by A6;
     end;
      a in Y by A6;
   hence thesis by A2,A7,Def17;
  end;

theorem Th35:
 a"\/""/\"(X,C) [= "/\"({a"\/"b: b in X}, C)
  proof set Y = {a"\/"b: b in X};
      Y is_great_than a"\/""/\"(X,C)
     proof let c; assume c in Y;
      then consider b such that
A1:     c = a"\/"b & b in X;
         X is_great_than "/\"(X,C) by Th34;
       then "/\"(X,C) [= b by A1,Def16;
      hence thesis by A1,FILTER_0:1;
     end;
   hence thesis by Th34;
  end;

theorem Th36:
 C is /\-distributive iff for X, a holds "/\"({a"\/"b: b in X}, C) [= a"\/""/\"
(X,C)
  proof
   thus C is /\-distributive implies for X, a holds
       "/\"({a"\/"b: b in X}, C) [= a"\/""/\"(X,C)
     proof assume
A1:     for X for a,b,c st X is_great_than a &
       (for d st X is_great_than d holds d [= a) &
       {b"\/"a': a' in X} is_great_than c &
       for d st {b"\/"b': b' in X} is_great_than d holds d [= c
        holds c [= b"\/"a;
      let X, a; set Y = {a"\/"b: b in X};
         X is_great_than "/\"(X,C) &
       (for d st X is_great_than d holds d [= "/\"(X,C)) &
       Y is_great_than "/\"(Y,C) &
       (for d st Y is_great_than d holds d [= "/\"(Y,C)) by Th34;
      hence thesis by A1;
     end;
   assume
A2:  for X, a holds "/\"({a"\/"b: b in X}, C) [= a"\/""/\"(X,C);
   let X; let a,b,c; assume
      X is_great_than a &
    (for d st X is_great_than d holds d [= a) &
    {b"\/"a': a' in X} is_great_than c &
    for d st {b"\/"b': b' in X} is_great_than d holds d [= c;
    then a = "/\"(X,C) & c = "/\"({b"\/"a': a' in X}, C) by Th34;
   hence c [= b"\/"a by A2;
  end;

theorem
   "\/"(X,C) = "/\"({a: a is_great_than X}, C)
  proof set Y = {a: a is_great_than X};
A1:  "\/"(X,C) is_less_than Y
     proof let a; assume a in Y;
       then ex b st a = b & b is_great_than X;
      hence thesis by Def21;
     end;
      X is_less_than "\/"(X,C) by Def21;
    then "\/"(X,C) in Y;
    then for b st b is_less_than Y holds b [= "\/"(X,C) by Def16;
   hence thesis by A1,Th34;
  end;

theorem Th38:
 a in X implies a [= "\/"(X,C) & "/\"(X,C) [= a
  proof assume
A1:  a in X;
      X is_less_than "\/"(X,C) by Def21;
   hence a [= "\/"(X,C) by A1,Def17;
      {b: b is_less_than X} is_less_than a
     proof let c; assume c in {b: b is_less_than X};
       then ex b st c = b & b is_less_than X;
      hence c [= a by A1,Def16;
     end;
    then "\/"({b: b is_less_than X}, C) [= a by Def21;
   hence thesis by Def22;
  end;

canceled;

theorem Th40:
 a is_less_than X implies a [= "/\"(X,C)
  proof assume a is_less_than X;
    then a in {b: b is_less_than X};
    then a [= "\/"({b: b is_less_than X}, C) by Th38;
   hence thesis by Def22;
  end;

theorem Th41:
 a in X & X is_less_than a implies "\/"(X,C) = a
  proof assume a in X & X is_less_than a;
    then "\/"(X,C) [= a & a [= "\/"(X,C) by Def21,Th38;
   hence thesis by LATTICES:26;
  end;

theorem Th42:
 a in X & a is_less_than X implies "/\"(X,C) = a
  proof assume a in X & a is_less_than X;
    then "/\"(X,C) [= a & a [= "/\"(X,C) by Th38,Th40;
   hence thesis by LATTICES:26;
  end;

theorem
   "\/"{a} = a & "/\"{a} = a
  proof
A1:  a in {a} by TARSKI:def 1;
      {a} is_less_than a
     proof let b; assume b in {a};
      hence b [= a by TARSKI:def 1;
     end;
   hence "\/"{a} = a by A1,Th41;
      a is_less_than {a}
     proof let b; assume b in {a};
      hence a [= b by TARSKI:def 1;
     end;
   hence thesis by A1,Th42;
  end;

theorem
    a"\/"b = "\/"{a,b} & a"/\"b = "/\"{a,b}
  proof
A1:  {a,b} is_less_than a"\/"b
     proof let c; assume c in {a,b};
       then a [= a"\/"b & b [= b"\/"a & b"\/"a = a"\/"b & (c = a or c = b)
        by LATTICES:22,TARSKI:def 2;
      hence thesis;
     end;
A2:  a in {a,b} & b in {a,b} by TARSKI:def 2;
      now let c; assume {a,b} is_less_than c;
      then a [= c & b [= c by A2,Def17;
     hence a"\/"b [= c by FILTER_0:6;
    end;
   hence a"\/"b = "\/"{a,b} by A1,Def21;
      a"/\"b is_less_than {a,b}
     proof let c; assume c in {a,b};
       then c = a or c = b & b"/\"a = a"/\"b by TARSKI:def 2;
      hence thesis by LATTICES:23;
     end;
then A3:  a"/\"b in { c: c is_less_than {a,b}};
      { c: c is_less_than {a,b}} is_less_than a"/\"b
     proof let d be Element of C; assume
         d in { c: c is_less_than {a,b}};
       then ex c st d = c & c is_less_than {a,b};
       then d [= a & d [= b by A2,Def16;
      hence thesis by FILTER_0:7;
     end;
   hence a"/\"b = "\/"({c: c is_less_than {a,b}}, C) by A3,Th41
             .= "/\"{a,b} by Def22;
  end;

theorem
   a = "\/"({b: b [= a}, C) & a = "/\"({c: a [= c}, C)
  proof set X = {b: b [= a}, Y = {c: a [= c};
A1:  a in X & a in Y;
      X is_less_than a
     proof let b; assume b in X;
       then ex c st b = c & c [= a;
      hence thesis;
     end;
   hence a = "\/"(X,C) by A1,Th41;
      a is_less_than Y
     proof let b; assume b in Y;
       then ex c st b = c & a [= c;
      hence thesis;
     end;
   hence thesis by A1,Th42;
  end;

theorem Th46:
 X c= Y implies "\/"(X,C) [= "\/"(Y,C) & "/\"(Y,C) [= "/\"(X,C)
  proof assume
A1:  X c= Y;
      X is_less_than "\/"(Y,C)
     proof let a; assume a in X;
       then a in Y & Y is_less_than "\/"(Y,C) by A1,Def21;
      hence thesis by Def17;
     end;
   hence "\/"(X,C) [= "\/"(Y,C) by Def21;
      "/\"(Y,C) is_less_than X
     proof let a; assume a in X;
       then a in Y & "/\"(Y,C) is_less_than Y by A1,Th34;
      hence thesis by Def16;
     end;
   hence thesis by Th34;
  end;

theorem Th47:
 "\/"(X,C) = "\/"({a: ex b st a [= b & b in X}, C) &
   "/\"(X,C) = "/\"({b: ex a st a [= b & a in X}, C)
  proof set Y = {a: ex b st a [= b & b in X}, Z = {a: ex b st b [= a & b in X};
      X is_less_than "\/"(Y,C)
     proof let a;
      assume a in X; then a in Y;
      hence thesis by Th38;
     end;
then A1:  "\/"(X,C) [= "\/"(Y,C) by Def21;
      Y is_less_than "\/"(X,C)
     proof let a; assume a in Y;
       then ex b st a = b & ex c st b [= c & c in X;
      then consider c such that
A2:     a [= c & c in X;
         c [= "\/"(X,C) by A2,Th38;
      hence thesis by A2,LATTICES:25;
     end;
    then "\/"(Y,C) [= "\/"(X,C) by Def21;
   hence "\/"(X,C) = "\/"(Y,C) by A1,LATTICES:26;
      X is_great_than "/\"(Z,C)
     proof let a;
      assume a in X; then a in Z;
      hence thesis by Th38;
     end;
then A3:  "/\"(Z,C) [= "/\"(X,C) by Th34;
      Z is_great_than "/\"(X,C)
     proof let a; assume a in Z;
       then ex b st a = b & ex c st c [= b & c in X;
      then consider c such that
A4:     c [= a & c in X;
         "/\"(X,C) [= c by A4,Th38;
      hence thesis by A4,LATTICES:25;
     end;
    then "/\"(X,C) [= "/\"(Z,C) by Th34;
   hence "/\"(X,C) = "/\"(Z,C) by A3,LATTICES:26;
  end;

theorem
    (for a st a in X ex b st a [= b & b in Y) implies "\/"(X,C) [= "\/"(Y,C)
  proof assume
A1:  for a st a in X ex b st a [= b & b in Y;
      X is_less_than "\/"(Y,C)
     proof let a; assume a in X;
      then consider b such that
A2:     a [= b & b in Y by A1;
         b [= "\/"(Y,C) by A2,Th38;
      hence thesis by A2,LATTICES:25;
     end;
   hence thesis by Def21;
  end;

theorem
   X c= bool the carrier of C implies
   "\/"(union X, C) = "\/"({"\/"
Y where Y is Subset of C: Y in X}, C)
  proof set Z = {"\/"Y where Y is Subset of C: Y in X};
      Z is_less_than "\/"(union X, C)
     proof let a; assume a in Z;
      then consider Y being Subset of C such that
A1:     a = "\/"Y & Y in X;
         Y c= union X by A1,ZFMISC_1:92;
      hence thesis by A1,Th46;
     end;
then A2:  "\/"(Z,C) [= "\/"(union X, C) by Def21;
   set V = {a: ex b st a [= b & b in Z};
   assume
A3:  X c= bool the carrier of C;
      union X c= V
     proof let x be set; assume x in union X;
      then consider Y such that
A4:     x in Y & Y in X by TARSKI:def 4;
      reconsider Y as Subset of C by A3,A4;
      reconsider a = x as Element of C by A3,A4;
         a [= "\/"Y & "\/"Y in Z by A4,Th38;
      hence x in V;
     end;
    then "\/"(union X, C) [= "\/"(V,C) by Th46;
    then "\/"(union X, C) [= "\/"(Z,C) by Th47;
   hence thesis by A2,LATTICES:26;
  end;

theorem
   C is 0_Lattice & Bottom C = "\/"({},C)
  proof
A1:  now let a;
        {} is_less_than ("\/"({},C))"/\"a
       proof let b; thus thesis; end;
      then A2: "\/"({},C) [= ("\/"({},C))"/\"a & ("\/"({},C))"/\"a [= "\/"({},C
)
      by Def21,LATTICES:23;
     hence ("\/"({},C))"/\"a = "\/"({},C) by LATTICES:26;
     thus a"/\"("\/"({},C)) = "\/"({},C) by A2,LATTICES:26;
    end;
   then C is lower-bounded by LATTICES:def 13;
   hence thesis by A1,LATTICES:def 16;
  end;

theorem
   C is 1_Lattice & Top C = "\/"(the carrier of C, C)
  proof set j = "\/"(the carrier of C, C);
A1: now let a;
      A2: j [= j"\/"a & j"\/"a [= j by Th38,LATTICES:22;
     hence j"\/"a = j by LATTICES:26;
     thus a"\/"j = j by A2,LATTICES:26;
    end;
   then C is upper-bounded by LATTICES:def 14;
   hence thesis by A1,LATTICES:def 17;
  end;

theorem Th52:
 C is I_Lattice implies a => b = "\/"({c: a"/\"c [= b}, C)
  proof set X = {a': a"/\"a' [= b};
   assume
A1:  C is I_Lattice;
    then a"/\"(a=>b) [= b by FILTER_0:def 8;
then A2:  a=>b in X;
      X is_less_than a=>b
     proof let c; assume c in X;
       then ex a' st c = a' & a"/\"a' [= b;
      hence c [= a=>b by A1,FILTER_0:def 8;
     end;
   hence thesis by A2,Th41;
  end;

theorem
   C is I_Lattice implies C is \/-distributive
  proof assume
A1:  C is I_Lattice;
      now let X,a;
     set Y = {a"/\"a': a' in X}, b = "\/"(X,C), c = "\/"(Y,C), Z = {b': a"/\"
b' [= c};
        X is_less_than a=>c
       proof let b'; assume b' in X;
         then a"/\"b' in Y;
         then a"/\"b' [= c by Th38;
         then b' in Z & a=>c = "\/"(Z,C) by A1,Th52;
        hence thesis by Th38;
       end;
      then b [= a=>c by Def21;
      then a"/\"b [= a"/\"(a=>c) & a"/\"
(a=>c) [= c by A1,FILTER_0:def 8,LATTICES:27;
     hence a"/\"b [= c by LATTICES:25;
    end;
   hence thesis by Th33;
  end;

theorem
   for D being complete \/-distributive Lattice,
     a being Element of D holds
  a "/\" "\/"(X,D) = "\/"({a"/\"
b1 where b1 is Element of D: b1 in
 X}, D) &
  "\/"(X,D) "/\" a = "\/"({b2"/\"
a where b2 is Element of D: b2 in
 X}, D)
 proof let D be complete \/-distributive Lattice,
           a be Element of D;
   A1: "\/"({a"/\"b where b is Element of D: b in X}, D) [= a
"/\"
"\/"(X,D) &
   a"/\""\/"(X,D) [= "\/"({a"/\"
b where b is Element of D: b in X}, D)
      by Th32,Th33;
  hence
  a"/\""\/"(X,D) = "\/"({a"/\"
b where b is Element of D: b in X}, D)
    by LATTICES:26;
  deffunc U(Element of D) = $1"/\"a;
  deffunc V(Element of D) = a"/\"$1;
  defpred X[set] means $1 in X;
A2: for b being Element of D holds V(b) = U(b);
     {V(b) where b is Element of D: X[b]} =
     {U(c) where c is Element of D: X[c]}
       from FraenkelF'(A2);
  hence thesis by A1,LATTICES:26;
 end;

theorem
   for D being complete /\-distributive Lattice,
     a being Element of D holds
  a "\/" "/\"(X,D)
    = "/\"({a"\/"b1 where b1 is Element of D: b1 in X}, D) &
  "/\"(X,D) "\/" a = "/\"({b2"\/"
a where b2 is Element of D: b2 in
 X}, D)
 proof let D be complete /\-distributive Lattice,
           a be Element of D;
  deffunc U(Element of D) = $1"/\"a;
  deffunc V(Element of D) = a"/\"$1;
  defpred X[set] means $1 in X;
   A1: "/\"({a"\/"b where b is Element of D: b in X}, D) [= a
"\/"
"/\"(X,D) &
   a"\/""/\"(X,D) [= "/\"({a"\/"
b where b is Element of D: b in X}, D)
    by Th35,Th36;
  hence
  a"\/""/\"(X,D) = "/\"({a"\/"b
       where b is Element of D: b in X}, D)
   by LATTICES:26;
  deffunc U(Element of D) = $1"\/"a;
  deffunc V(Element of D) = a"\/"$1;
A2: for b being Element of D holds V(b) = U(b);
     {V(b) where b is Element of D: X[b]} =
     {U(c) where c is Element of D: X[c]}
        from FraenkelF'(A2);
   then {a"\/"b where b is Element of D: b in X} =
     {c"\/" a where c is Element of D: c in X};
  hence thesis by A1,LATTICES:26;
 end;

scheme SingleFraenkel{A()->set, B()->non empty set, P[set]}:
  {A() where a is Element of B(): P[a]} = {A()}
  provided
A1: ex a being Element of B() st P[a]
  proof
   thus {A() where a is Element of B(): P[a]} c= {A()}
     proof let x be set; assume
         x in {A() where a is Element of B(): P[a]};
       then ex a being Element of B() st x = A() & P[a];
      hence thesis by TARSKI:def 1;
     end;
   let x be set; assume x in {A()};
    then x = A() by TARSKI:def 1;
   hence thesis by A1;
  end;

scheme FuncFraenkel{B()->non empty set, C()->non empty set,
        A(set)->Element of C(),f()->Function, P[set]}:
  f().:{A(x) where x is Element of B(): P[x]} =
   {f().A(x) where x is Element of B(): P[x]}
  provided
A1:  C() c= dom f()
  proof set f = f();
   thus f.:{A(x) where x is Element of B(): P[x]} c=
      {f.A(x) where x is Element of B(): P[x]}
     proof let y be set; assume
         y in f.:{A(x) where x is Element of B(): P[x]};
      then consider z being set such that
A2:     z in dom f & z in {A(x) where x is Element of B(): P[x]}
       & y = f.z
        by FUNCT_1:def 12;
         ex x being Element of B() st z = A(x) & P[x] by A2;
      hence thesis by A2;
     end;
   let y be set;
   assume y in {f.A(x) where x is Element of B(): P[x]};
   then consider x being Element of B() such that
A3:  y = f.A(x) & P[x];
      A(x) in dom f & A(x) in {A(z) where z is Element of B(): P[z]}
     by A1,A3,TARSKI:def 3;
   hence thesis by A3,FUNCT_1:def 12;
  end;

  Lm3:
 now let D be non empty set, f be Function of bool D, D such that
A1: for a being Element of D holds f.{a} = a and
A2: for X being Subset of bool D holds f.(f.:X) = f.(union X);
  defpred X[set,set] means f.{$1,$2} = $2;
  consider R being Relation of D such that
A3: for x,y being set holds [x,y] in R iff x in D & y in D & X[x,y]
     from Rel_On_Set_Ex;
A4: dom f = bool D by FUNCT_2:def 1;
A5: now let x,y be Subset of D;
    thus f.{f.x,f.y} = f.(f.:{x,y}) by A4,FUNCT_1:118
             .= f.union{x,y} by A2
             .= f.(x \/ y) by ZFMISC_1:93;
   end;
A6: for x,y being Element of D,
       X being Subset of D st y in X holds
     f.(X \/ {x}) = f.{f.{t,x} where t is Element of D: t in X}
    proof let x,y be Element of D,
              X be Subset of D such that
A7:   y in X; set Y = {{t,x} where t is Element of D: t in X};
A8:   X \/ {x} = union Y
       proof
        thus X \/ {x} c= union Y
          proof let s; assume s in X \/ {x};
            then s in X & X c= D or s in {x} by XBOOLE_0:def 2;
            then s in X & s is Element of D or s = x
            by TARSKI:def 1;
            then s in {s,x} & {s,x} in Y or s in {y,x} & {y,x} in
 Y by A7,TARSKI:def 2;
           hence thesis by TARSKI:def 4;
          end;
        let s; assume s in union Y;
        then consider Z being set such that
A9:      s in Z & Z in Y by TARSKI:def 4;
        consider t being Element of D such that
A10:      Z = {t,x} & t in X by A9;
           s = t or s = x & x in {x} by A9,A10,TARSKI:def 1,def 2;
        hence thesis by A10,XBOOLE_0:def 2;
       end;
        Y c= bool D
       proof let s; assume s in Y;
         then s c= X \/ {x} & X \/ {x} c= D by A8,ZFMISC_1:92;
         then s c= D by XBOOLE_1:1;
        hence thesis;
       end;
     then reconsider Y as Subset of bool D;
     defpred X[set] means $1 in X;
     deffunc U(Element of D) = {$1,x};
A11:   bool D c= dom f by FUNCT_2:def 1;
        f.:{U(t) where t is Element of D: X[t]} =
        {f.U(t) where t is Element of D: X[t]}
        from FuncFraenkel(A11);
      then f.union Y = f.{f.{t,x} where t is Element of D: t in X}
       by A2;
     hence thesis by A8;
    end;
A12:   R is_reflexive_in D
       proof let x be set; assume
A13:      x in D;
         then x = f.{x} by A1 .= f.{x,x} by ENUMSET1:69;
        hence thesis by A3,A13;
       end;
A14:   R is_antisymmetric_in D
       proof let x,y be set;
        assume x in D & y in D & [x,y] in R & [y,x] in R;
         then f.{x,y} = y & f.{y,x} = x by A3;
        hence x = y;
       end;
A15:   R is_transitive_in D
     proof
     let x,y,z be set; assume
A16:   x in D & y in D & z in D & [x,y] in R & [y,z] in R;
     then reconsider a = x, b = y, c = z as Element of D;
A17:   f.{x,y} = y & f.{y,z} = z by A3,A16;
      then f.{a,c} = f.{f.{a},f.{b,c}} by A1
             .= f.({a}\/{b,c}) by A5
             .= f.{a,b,c} by ENUMSET1:42
             .= f.({a,b}\/{c}) by ENUMSET1:43
             .= f.{f.{a,b},f.{c}} by A5
             .= c by A1,A17;
     hence thesis by A3;
    end;
A18:  dom R = D by A12,ORDERS_1:98;
A19:  field R = D by A12,ORDERS_1:98;
A20:  R is total by A18,PARTFUN1:def 4;
A21:  R is reflexive by A12,A19,RELAT_2:def 9;
A22:  R is antisymmetric by A14,A19,RELAT_2:def 12;
     R is transitive by A15,A19,RELAT_2:def 16;
    then reconsider R as Order of D by A20,A21,A22;
    set A = RelStr(#D,R#);
     A is complete
    proof let X;
    reconsider Y = X /\ D as Subset of D by XBOOLE_1:17;
    reconsider a = (f.Y) as Element of A;
     take a;
     thus X is_<=_than a
       proof let b be Element of A;
        assume b in X; then b in Y by XBOOLE_0:def 3;
         then {b} \/ Y = Y by ZFMISC_1:46;
         then a = f.{f.{b},a} by A5 .= f.{b,a} by A1;
        hence [b,a] in the InternalRel of A by A3;
       end;
     let b be Element of A such that
A23:    X is_<=_than b;
A24:    f.{a,b} = f.{a,f.{b}} by A1 .= f.(Y \/ {b}) by A5;
        now per cases; suppose
A25:    Y <> {};
        consider s being Element of Y;
        reconsider s as Element of D by A25,TARSKI:def 3;
  deffunc U(Element of D) = f.{$1,b};
  deffunc V(Element of D) = b;
  defpred X[set] means $1 in Y;
A26:     for t being Element of D st X[t] holds U(t) = V(t)
         proof let t be Element of D;
          reconsider s = t as Element of A;
          reconsider y = b as Element of D;
          assume t in Y; then t in X by XBOOLE_0:def 3
; then s <= b by A23,Def9;
          then [t,y] in R by ORDERS_1:def 9;
          hence thesis by A3;
         end;
A27:     s in Y by A25;
then A28:     ex t being Element of D st X[t];
       {U(t) where t is Element of D: X[t]}
          = {V(t) where t is Element of D: X[t]} from FraenkelF'R(A26)
         .= {b where t is Element of D: X[t]}
         .= {b} from SingleFraenkel(A28);
       hence f.{a,b} = f.{b} by A6,A24,A27 .= b by A1;
       suppose Y = {};
       hence f.{a,b} = b by A1,A24;
      end;
     hence [a,b] in the InternalRel of A by A3;
    end;
  then reconsider A as complete strict (non empty Poset);
  take L = latt A;
A29:   A is with_suprema with_infima by Th12;
then A30: A = LattPOSet L & LattPOSet L = RelStr(#carr(L), LattRel L#)
    by Def2,Def15;
  hence
  carr(L) = D;
  let X be Subset of L;
   reconsider Y = X as Subset of D by A30;
A31:   the RelStr of A = LattPOSet L by A29,Def15;
  then reconsider a = f.Y as Element of LattPOSet L
  ;
   set p = %a;
     X is_<=_than a
    proof let b be Element of LattPOSet L;
     reconsider y = b as Element of D by A29,Def15;
     assume b in X;
then A32:   X = {b} \/ X by ZFMISC_1:46;
        f.{y,f.Y} = f.{f.{y},f.Y} by A1 .= a by A5,A32;
     hence [b,a] in the InternalRel of LattPOSet L by A3,A30;
    end;
then A33: X is_less_than p by Th31;
     now let q be Element of L;
    reconsider y = q as Element of D by A30;
    reconsider b = y as Element of LattPOSet L by A31;
    assume X is_less_than q;
then A34:  X is_<=_than q% & b = q% by Def3,Th30;
A35:  f.{f.Y,b} = f.{f.Y,f.{y}} by A1 .= f.(Y \/ {b}) by A5;
       now per cases; suppose
A36:    Y <> {};
      consider s being Element of Y;
      reconsider s as Element of D by A36,TARSKI:def 3;
  deffunc U(Element of D) = f.{$1,b};
  deffunc V(Element of D) = b;
  defpred X[set] means $1 in Y;
A37:    for t being Element of D st X[t] holds U(t) = V(t)
        proof let t be Element of D;
         reconsider s = t as Element of LattPOSet L
          by A31;
         assume t in Y; then s <= b by A34,Def9;
          then [t,y] in R by A30,ORDERS_1:def 9;
         hence thesis by A3;
        end;
A38:    s in Y by A36;
then A39:    ex t being Element of D st X[t];
      {U(t) where t is Element of D: X[t]}
         = {V(t) where t is Element of D: X[t]} from FraenkelF'R(A37)
        .= {b where t is Element of D: X[t]}
        .= {b} from SingleFraenkel(A39);
      hence f.{a,b} = f.{b} by A6,A35,A38 .= b by A1;
      suppose Y = {};
      hence f.{a,b} = b by A1,A35;
     end;
     then [a,b] in the InternalRel of LattPOSet L by A3,A30;
     then a <= b & p% = p & a = p & q% = b by Def3,Def4,ORDERS_1:def 9;
    hence p [= q by Th7;
   end;
  hence "\/"X = p by A33,Def21 .= f.X by Def4;
 end;

theorem
   for D being non empty set, f being Function of bool D, D st
   (for a being Element of D holds f.{a} = a) &
   for X being Subset of bool D holds f.(f.:X) = f.(union X)
  ex L being complete strict Lattice st the carrier of L = D &
   for X being Subset of L holds "\/" X = f.X by Lm3;


Back to top