Article LATTICE2, MML version 4.99.1005

:: LATTICE2:th 2
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of bool b1
for b4 being Function-like quasi_total Relation of b1,b2 holds
   proj1 (b4 | b3) = b3;

:: LATTICE2:th 5
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of bool b1
for b4, b5 being Function-like quasi_total Relation of b1,b2 holds
   b4 | b3 = b5 | b3
iff
   for b6 being Element of b1
         st b6 in b3
      holds b5 . b6 = b4 . b6;

:: LATTICE2:th 6
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2
for b5 being set holds
   b3 +* (b4 | b5) is Function-like quasi_total Relation of b1,b2;

:: LATTICE2:th 7
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of bool b1
for b4, b5 being Function-like quasi_total Relation of b1,b2 holds
(b4 | b3) +* b5 = b5;

:: LATTICE2:th 8
theorem
for b1, b2 being Relation-like Function-like set
      st b2 c= b1
   holds b1 +* b2 = b1;

:: LATTICE2:th 9
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of bool b1
for b4 being Function-like quasi_total Relation of b1,b2 holds
   b4 +* (b4 | b3) = b4;

:: LATTICE2:th 10
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of bool b1
for b4, b5 being Function-like quasi_total Relation of b1,b2
      st for b6 being Element of b1
              st b6 in b3
           holds b4 . b6 = b5 . b6
   holds b5 +* (b4 | b3) = b5;

:: LATTICE2:th 12
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of Fin b1 holds
   (b3 | b5) +* b4 = b4;

:: LATTICE2:th 13
theorem
for b1 being set
for b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
for b4 being Element of Fin b1 holds
   proj1 (b3 | b4) = b4;

:: LATTICE2:th 14
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of Fin b1
      st for b6 being Element of b1
              st b6 in b5
           holds b3 . b6 = b4 . b6
   holds b4 +* (b3 | b5) = b4;

:: LATTICE2:th 16
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of Fin b1
      st b3 | b5 = b4 | b5
   holds b3 .: b5 = b4 .: b5;

:: LATTICE2:prednot 1 => LATTICE2:pred 1
definition
  let a1 be non empty set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 absorbs A3 means
    for b1, b2 being Element of a1 holds
    a2 .(b1,a3 .(b1,b2)) = b1;
end;

:: LATTICE2:dfs 1
definiens
  let a1 be non empty set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 absorbs a3
it is sufficient to prove
  thus for b1, b2 being Element of a1 holds
    a2 .(b1,a3 .(b1,b2)) = b1;

:: LATTICE2:def 1
theorem
for b1 being non empty set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
   b2 absorbs b3
iff
   for b4, b5 being Element of b1 holds
   b2 .(b4,b3 .(b4,b5)) = b4;

:: LATTICE2:prednot 2 => not LATTICE2:pred 1
notation
  let a1 be non empty set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  antonym a2 doesn't_absorb a3 for a2 absorbs a3;
end;

:: LATTICE2:th 17
theorem
for b1 being non empty LattStr
      st the L_join of b1 is commutative(the carrier of b1) & the L_join of b1 is associative(the carrier of b1) & the L_meet of b1 is commutative(the carrier of b1) & the L_meet of b1 is associative(the carrier of b1) & the L_join of b1 absorbs the L_meet of b1 & the L_meet of b1 absorbs the L_join of b1
   holds b1 is Lattice-like;

:: LATTICE2:funcnot 1 => LATTICE2:func 1
definition
  let a1 be LattStr;
  func A1 .: -> strict LattStr equals
    LattStr(#the carrier of a1,the L_meet of a1,the L_join of a1#);
end;

:: LATTICE2:def 2
theorem
for b1 being LattStr holds
   b1 .: = LattStr(#the carrier of b1,the L_meet of b1,the L_join of b1#);

:: LATTICE2:funcreg 1
registration
  let a1 be non empty LattStr;
  cluster a1 .: -> non empty strict;
end;

:: LATTICE2:th 18
theorem
for b1 being non empty LattStr holds
   the carrier of b1 = the carrier of b1 .: & the L_join of b1 = the L_meet of b1 .: & the L_meet of b1 = the L_join of b1 .:;

:: LATTICE2:th 19
theorem
for b1 being non empty strict LattStr holds
   b1 .: .: = b1;

:: LATTICE2:th 21
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
      st for b3 being Element of the carrier of b1 holds
           b2 "\/" b3 = b3
   holds b2 = Bottom b1;

:: LATTICE2:th 22
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
      st for b3 being Element of the carrier of b1 holds
           (the L_join of b1) .(b2,b3) = b3
   holds b2 = Bottom b1;

:: LATTICE2:th 24
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
      st for b3 being Element of the carrier of b1 holds
           b2 "/\" b3 = b3
   holds b2 = Top b1;

:: LATTICE2:th 25
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
      st for b3 being Element of the carrier of b1 holds
           (the L_meet of b1) .(b2,b3) = b3
   holds b2 = Top b1;

:: LATTICE2:th 26
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_join of b1 is idempotent(the carrier of b1);

:: LATTICE2:th 27
theorem
for b1 being non empty join-commutative \/-SemiLattStr holds
   the L_join of b1 is commutative(the carrier of b1);

:: LATTICE2:th 28
theorem
for b1 being non empty Lattice-like LattStr
      st the L_join of b1 is having_a_unity(the carrier of b1)
   holds Bottom b1 = the_unity_wrt the L_join of b1;

:: LATTICE2:th 29
theorem
for b1 being non empty join-associative \/-SemiLattStr holds
   the L_join of b1 is associative(the carrier of b1);

:: LATTICE2:th 30
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_meet of b1 is idempotent(the carrier of b1);

:: LATTICE2:th 31
theorem
for b1 being non empty meet-commutative /\-SemiLattStr holds
   the L_meet of b1 is commutative(the carrier of b1);

:: LATTICE2:th 32
theorem
for b1 being non empty meet-associative /\-SemiLattStr holds
   the L_meet of b1 is associative(the carrier of b1);

:: LATTICE2:funcreg 2
registration
  let a1 be non empty join-commutative \/-SemiLattStr;
  cluster the L_join of a1 -> Function-like quasi_total commutative;
end;

:: LATTICE2:funcreg 3
registration
  let a1 be non empty join-associative \/-SemiLattStr;
  cluster the L_join of a1 -> Function-like quasi_total associative;
end;

:: LATTICE2:funcreg 4
registration
  let a1 be non empty meet-commutative /\-SemiLattStr;
  cluster the L_meet of a1 -> Function-like quasi_total commutative;
end;

:: LATTICE2:funcreg 5
registration
  let a1 be non empty meet-associative /\-SemiLattStr;
  cluster the L_meet of a1 -> Function-like quasi_total associative;
end;

:: LATTICE2:th 33
theorem
for b1 being non empty Lattice-like LattStr
      st the L_meet of b1 is having_a_unity(the carrier of b1)
   holds Top b1 = the_unity_wrt the L_meet of b1;

:: LATTICE2:th 34
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_join of b1 is_distributive_wrt the L_join of b1;

:: LATTICE2:th 35
theorem
for b1 being non empty Lattice-like LattStr
      st b1 is non empty Lattice-like distributive LattStr
   holds the L_join of b1 is_distributive_wrt the L_meet of b1;

:: LATTICE2:th 36
theorem
for b1 being non empty Lattice-like LattStr
      st the L_join of b1 is_distributive_wrt the L_meet of b1
   holds b1 is distributive;

:: LATTICE2:th 37
theorem
for b1 being non empty Lattice-like LattStr
      st b1 is non empty Lattice-like distributive LattStr
   holds the L_meet of b1 is_distributive_wrt the L_join of b1;

:: LATTICE2:th 38
theorem
for b1 being non empty Lattice-like LattStr
      st the L_meet of b1 is_distributive_wrt the L_join of b1
   holds b1 is distributive;

:: LATTICE2:th 39
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_meet of b1 is_distributive_wrt the L_meet of b1;

:: LATTICE2:th 40
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_join of b1 absorbs the L_meet of b1;

:: LATTICE2:th 41
theorem
for b1 being non empty Lattice-like LattStr holds
   the L_meet of b1 absorbs the L_join of b1;

:: LATTICE2:funcnot 2 => LATTICE2:func 2
definition
  let a1 be non empty set;
  let a2 be non empty Lattice-like LattStr;
  let a3 be Element of Fin a1;
  let a4 be Function-like quasi_total Relation of a1,the carrier of a2;
  func FinJoin(A3,A4) -> Element of the carrier of a2 equals
    (the L_join of a2) $$(a3,a4);
end;

:: LATTICE2:def 3
theorem
for b1 being non empty set
for b2 being non empty Lattice-like LattStr
for b3 being Element of Fin b1
for b4 being Function-like quasi_total Relation of b1,the carrier of b2 holds
   FinJoin(b3,b4) = (the L_join of b2) $$(b3,b4);

:: LATTICE2:funcnot 3 => LATTICE2:func 3
definition
  let a1 be non empty set;
  let a2 be non empty Lattice-like LattStr;
  let a3 be Element of Fin a1;
  let a4 be Function-like quasi_total Relation of a1,the carrier of a2;
  func FinMeet(A3,A4) -> Element of the carrier of a2 equals
    (the L_meet of a2) $$(a3,a4);
end;

:: LATTICE2:def 4
theorem
for b1 being non empty set
for b2 being non empty Lattice-like LattStr
for b3 being Element of Fin b1
for b4 being Function-like quasi_total Relation of b1,the carrier of b2 holds
   FinMeet(b3,b4) = (the L_meet of b2) $$(b3,b4);

:: LATTICE2:th 43
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of b2
for b4 being Element of Fin b2
for b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 in b4
   holds b5 . b3 [= FinJoin(b4,b5);

:: LATTICE2:th 44
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st ex b6 being Element of b3 st
           b6 in b4 & b2 [= b5 . b6
   holds b2 [= FinJoin(b4,b5);

:: LATTICE2:th 45
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st (for b6 being Element of b3
               st b6 in b4
            holds b5 . b6 = b2) &
         b4 <> {}
   holds FinJoin(b4,b5) = b2;

:: LATTICE2:th 46
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
   st FinJoin(b4,b5) [= b2
for b6 being Element of b3
      st b6 in b4
   holds b5 . b6 [= b2;

:: LATTICE2:th 47
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st b4 <> {} &
         (for b6 being Element of b3
               st b6 in b4
            holds b5 . b6 [= b2)
   holds FinJoin(b4,b5) [= b2;

:: LATTICE2:th 48
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of Fin b2
for b4, b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 <> {} &
         (for b6 being Element of b2
               st b6 in b3
            holds b4 . b6 [= b5 . b6)
   holds FinJoin(b3,b4) [= FinJoin(b3,b5);

:: LATTICE2:th 49
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of Fin b2
for b4, b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 <> {} & b4 | b3 = b5 | b3
   holds FinJoin(b3,b4) = FinJoin(b3,b5);

:: LATTICE2:th 50
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st b4 <> {}
   holds b2 "\/" FinJoin(b4,b5) = FinJoin(b4,(the L_join of b1) [;](b2,b5));

:: LATTICE2:funcreg 6
registration
  let a1 be non empty Lattice-like LattStr;
  cluster a1 .: -> strict Lattice-like;
end;

:: LATTICE2:th 51
theorem
for b1 being non empty set
for b2 being non empty Lattice-like LattStr
for b3 being Element of Fin b1
for b4 being Function-like quasi_total Relation of b1,the carrier of b2
for b5 being Function-like quasi_total Relation of b1,the carrier of b2 .:
      st b4 = b5
   holds FinJoin(b3,b4) = FinMeet(b3,b5) & FinMeet(b3,b4) = FinJoin(b3,b5);

:: LATTICE2:th 52
theorem
for b1 being non empty Lattice-like LattStr
for b2, b3 being Element of the carrier of b1
for b4, b5 being Element of the carrier of b1 .:
      st b2 = b4 & b3 = b5
   holds b2 "/\" b3 = b4 "\/" b5 & b2 "\/" b3 = b4 "/\" b5;

:: LATTICE2:th 53
theorem
for b1 being non empty Lattice-like LattStr
for b2, b3 being Element of the carrier of b1
   st b2 [= b3
for b4, b5 being Element of the carrier of b1 .:
      st b2 = b4 & b3 = b5
   holds b5 [= b4;

:: LATTICE2:th 54
theorem
for b1 being non empty Lattice-like LattStr
for b2, b3 being Element of the carrier of b1
for b4, b5 being Element of the carrier of b1 .:
      st b4 [= b5 & b2 = b4 & b3 = b5
   holds b3 [= b2;

:: LATTICE2:th 55
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of b2
for b4 being Element of Fin b2
for b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 in b4
   holds FinMeet(b4,b5) [= b5 . b3;

:: LATTICE2:th 56
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st ex b6 being Element of b3 st
           b6 in b4 & b5 . b6 [= b2
   holds FinMeet(b4,b5) [= b2;

:: LATTICE2:th 57
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st (for b6 being Element of b3
               st b6 in b4
            holds b5 . b6 = b2) &
         b4 <> {}
   holds FinMeet(b4,b5) = b2;

:: LATTICE2:th 58
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st b4 <> {}
   holds b2 "/\" FinMeet(b4,b5) = FinMeet(b4,(the L_meet of b1) [;](b2,b5));

:: LATTICE2:th 59
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
   st b2 [= FinMeet(b4,b5)
for b6 being Element of b3
      st b6 in b4
   holds b2 [= b5 . b6;

:: LATTICE2:th 60
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of Fin b2
for b4, b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 <> {} & b4 | b3 = b5 | b3
   holds FinMeet(b3,b4) = FinMeet(b3,b5);

:: LATTICE2:th 61
theorem
for b1 being non empty Lattice-like LattStr
for b2 being Element of the carrier of b1
for b3 being non empty set
for b4 being Element of Fin b3
for b5 being Function-like quasi_total Relation of b3,the carrier of b1
      st b4 <> {} &
         (for b6 being Element of b3
               st b6 in b4
            holds b2 [= b5 . b6)
   holds b2 [= FinMeet(b4,b5);

:: LATTICE2:th 62
theorem
for b1 being non empty Lattice-like LattStr
for b2 being non empty set
for b3 being Element of Fin b2
for b4, b5 being Function-like quasi_total Relation of b2,the carrier of b1
      st b3 <> {} &
         (for b6 being Element of b2
               st b6 in b3
            holds b4 . b6 [= b5 . b6)
   holds FinMeet(b3,b4) [= FinMeet(b3,b5);

:: LATTICE2:th 63
theorem
for b1 being non empty Lattice-like LattStr holds
      b1 is lower-bounded
   iff
      b1 .: is upper-bounded;

:: LATTICE2:th 64
theorem
for b1 being non empty Lattice-like LattStr holds
      b1 is upper-bounded
   iff
      b1 .: is lower-bounded;

:: LATTICE2:th 65
theorem
for b1 being non empty Lattice-like LattStr holds
      b1 is non empty Lattice-like distributive LattStr
   iff
      b1 .: is non empty Lattice-like distributive LattStr;

:: LATTICE2:th 66
theorem
for b1 being non empty Lattice-like lower-bounded LattStr holds
   Bottom b1 is_a_unity_wrt the L_join of b1;

:: LATTICE2:th 67
theorem
for b1 being non empty Lattice-like lower-bounded LattStr holds
   the L_join of b1 is having_a_unity(the carrier of b1);

:: LATTICE2:th 68
theorem
for b1 being non empty Lattice-like lower-bounded LattStr holds
   Bottom b1 = the_unity_wrt the L_join of b1;

:: LATTICE2:th 69
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like lower-bounded LattStr
for b4, b5 being Function-like quasi_total Relation of b1,the carrier of b3
      st b4 | b2 = b5 | b2
   holds FinJoin(b2,b4) = FinJoin(b2,b5);

:: LATTICE2:th 70
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like lower-bounded LattStr
for b4 being Function-like quasi_total Relation of b1,the carrier of b3
for b5 being Element of the carrier of b3
      st for b6 being Element of b1
              st b6 in b2
           holds b4 . b6 [= b5
   holds FinJoin(b2,b4) [= b5;

:: LATTICE2:th 71
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like lower-bounded LattStr
for b4, b5 being Function-like quasi_total Relation of b1,the carrier of b3
      st for b6 being Element of b1
              st b6 in b2
           holds b4 . b6 [= b5 . b6
   holds FinJoin(b2,b4) [= FinJoin(b2,b5);

:: LATTICE2:th 72
theorem
for b1 being non empty Lattice-like upper-bounded LattStr holds
   Top b1 is_a_unity_wrt the L_meet of b1;

:: LATTICE2:th 73
theorem
for b1 being non empty Lattice-like upper-bounded LattStr holds
   the L_meet of b1 is having_a_unity(the carrier of b1);

:: LATTICE2:th 74
theorem
for b1 being non empty Lattice-like upper-bounded LattStr holds
   Top b1 = the_unity_wrt the L_meet of b1;

:: LATTICE2:th 75
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like upper-bounded LattStr
for b4, b5 being Function-like quasi_total Relation of b1,the carrier of b3
      st b4 | b2 = b5 | b2
   holds FinMeet(b2,b4) = FinMeet(b2,b5);

:: LATTICE2:th 76
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like upper-bounded LattStr
for b4 being Function-like quasi_total Relation of b1,the carrier of b3
for b5 being Element of the carrier of b3
      st for b6 being Element of b1
              st b6 in b2
           holds b5 [= b4 . b6
   holds b5 [= FinMeet(b2,b4);

:: LATTICE2:th 77
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like upper-bounded LattStr
for b4, b5 being Function-like quasi_total Relation of b1,the carrier of b3
      st for b6 being Element of b1
              st b6 in b2
           holds b4 . b6 [= b5 . b6
   holds FinMeet(b2,b4) [= FinMeet(b2,b5);

:: LATTICE2:th 78
theorem
for b1 being non empty Lattice-like lower-bounded LattStr holds
   Bottom b1 = Top (b1 .:);

:: LATTICE2:th 79
theorem
for b1 being non empty Lattice-like upper-bounded LattStr holds
   Top b1 = Bottom (b1 .:);

:: LATTICE2:modenot 1
definition
  mode D0_Lattice is non empty Lattice-like distributive lower-bounded LattStr;
end;

:: LATTICE2:th 80
theorem
for b1 being non empty Lattice-like distributive lower-bounded LattStr holds
   the L_meet of b1 is_distributive_wrt the L_join of b1;

:: LATTICE2:th 81
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like distributive lower-bounded LattStr
for b4 being Function-like quasi_total Relation of b1,the carrier of b3
for b5 being Element of the carrier of b3 holds
   (the L_meet of b3) .(b5,FinJoin(b2,b4)) = FinJoin(b2,(the L_meet of b3) [;](b5,b4));

:: LATTICE2:th 82
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like distributive lower-bounded LattStr
for b4, b5 being Function-like quasi_total Relation of b1,the carrier of b3
for b6 being Element of the carrier of b3
      st for b7 being Element of b1
              st b7 in b2
           holds b4 . b7 = b6 "/\" (b5 . b7)
   holds b6 "/\" FinJoin(b2,b5) = FinJoin(b2,b4);

:: LATTICE2:th 83
theorem
for b1 being non empty set
for b2 being Element of Fin b1
for b3 being non empty Lattice-like distributive lower-bounded LattStr
for b4 being Function-like quasi_total Relation of b1,the carrier of b3
for b5 being Element of the carrier of b3 holds
   b5 "/\" FinJoin(b2,b4) = FinJoin(b2,(the L_meet of b3) [;](b5,b4));

:: LATTICE2:attrnot 1 => LATTICE2:attr 1
definition
  let a1 be non empty Lattice-like LattStr;
  attr a1 is Heyting means
    a1 is implicative & a1 is lower-bounded;
end;

:: LATTICE2:dfs 5
definiens
  let a1 be non empty Lattice-like LattStr;
To prove
     a1 is Heyting
it is sufficient to prove
  thus a1 is implicative & a1 is lower-bounded;

:: LATTICE2:def 6
theorem
for b1 being non empty Lattice-like LattStr holds
      b1 is Heyting
   iff
      b1 is implicative & b1 is lower-bounded;

:: LATTICE2:exreg 1
registration
  cluster non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing Lattice-like Heyting LattStr;
end;

:: LATTICE2:condreg 1
registration
  cluster non empty Lattice-like Heyting -> lower-bounded implicative (LattStr);
end;

:: LATTICE2:condreg 2
registration
  cluster non empty Lattice-like lower-bounded implicative -> Heyting (LattStr);
end;

:: LATTICE2:modenot 2
definition
  mode H_Lattice is non empty Lattice-like Heyting LattStr;
end;

:: LATTICE2:exreg 2
registration
  cluster non empty strict join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing Lattice-like Heyting LattStr;
end;

:: LATTICE2:th 84
theorem
for b1 being non empty Lattice-like lower-bounded LattStr holds
      b1 is non empty Lattice-like Heyting LattStr
   iff
      for b2, b3 being Element of the carrier of b1 holds
      ex b4 being Element of the carrier of b1 st
         b2 "/\" b4 [= b3 &
          (for b5 being Element of the carrier of b1
                st b2 "/\" b5 [= b3
             holds b5 [= b4);

:: LATTICE2:th 85
theorem
for b1 being non empty Lattice-like LattStr holds
      b1 is finite
   iff
      b1 .: is finite;

:: LATTICE2:condreg 3
registration
  cluster non empty finite Lattice-like -> lower-bounded (LattStr);
end;

:: LATTICE2:condreg 4
registration
  cluster non empty finite Lattice-like -> upper-bounded (LattStr);
end;

:: LATTICE2:condreg 5
registration
  cluster non empty finite Lattice-like -> bounded (LattStr);
end;

:: LATTICE2:condreg 6
registration
  cluster non empty finite Lattice-like distributive -> Heyting (LattStr);
end;