Article XBOOLE_0, MML version 4.99.1005

:: XBOOLE_0:sch 1
scheme XBOOLE_0:sch 1
{F1 -> set}:
ex b1 being set st
   for b2 being set holds
         b2 in b1
      iff
         b2 in F1() & P1[b2]


:: XBOOLE_0:funcnot 1 => XBOOLE_0:func 1
definition
  func {} -> set means
    for b1 being set holds
       not b1 in it;
end;

:: XBOOLE_0:def 1
theorem
for b1 being set holds
      b1 = {}
   iff
      for b2 being set holds
         not b2 in b1;

:: XBOOLE_0:funcnot 2 => XBOOLE_0:func 2
definition
  let a1, a2 be set;
  func A1 \/ A2 -> set means
    for b1 being set holds
          b1 in it
       iff
          (b1 in a1 or b1 in a2);
  commutativity;
::  for a1, a2 being set holds
::  a1 \/ a2 = a2 \/ a1;
  idempotence;
::  for a1 being set holds
::     a1 \/ a1 = a1;
end;

:: XBOOLE_0:def 2
theorem
for b1, b2, b3 being set holds
   b3 = b1 \/ b2
iff
   for b4 being set holds
         b4 in b3
      iff
         (b4 in b1 or b4 in b2);

:: XBOOLE_0:funcnot 3 => XBOOLE_0:func 3
definition
  let a1, a2 be set;
  func A1 /\ A2 -> set means
    for b1 being set holds
          b1 in it
       iff
          b1 in a1 & b1 in a2;
  commutativity;
::  for a1, a2 being set holds
::  a1 /\ a2 = a2 /\ a1;
  idempotence;
::  for a1 being set holds
::     a1 /\ a1 = a1;
end;

:: XBOOLE_0:def 3
theorem
for b1, b2, b3 being set holds
   b3 = b1 /\ b2
iff
   for b4 being set holds
         b4 in b3
      iff
         b4 in b1 & b4 in b2;

:: XBOOLE_0:funcnot 4 => XBOOLE_0:func 4
definition
  let a1, a2 be set;
  func A1 \ A2 -> set means
    for b1 being set holds
          b1 in it
       iff
          b1 in a1 & not b1 in a2;
end;

:: XBOOLE_0:def 4
theorem
for b1, b2, b3 being set holds
   b3 = b1 \ b2
iff
   for b4 being set holds
         b4 in b3
      iff
         b4 in b1 & not b4 in b2;

:: XBOOLE_0:attrnot 1 => XBOOLE_0:attr 1
definition
  let a1 be set;
  attr a1 is empty means
    a1 = {};
end;

:: XBOOLE_0:dfs 5
definiens
  let a1 be set;
To prove
     a1 is empty
it is sufficient to prove
  thus a1 = {};

:: XBOOLE_0:def 5
theorem
for b1 being set holds
      b1 is empty
   iff
      b1 = {};

:: XBOOLE_0:funcnot 5 => XBOOLE_0:func 5
definition
  let a1, a2 be set;
  func A1 \+\ A2 -> set equals
    (a1 \ a2) \/ (a2 \ a1);
  commutativity;
::  for a1, a2 being set holds
::  a1 \+\ a2 = a2 \+\ a1;
end;

:: XBOOLE_0:def 6
theorem
for b1, b2 being set holds
b1 \+\ b2 = (b1 \ b2) \/ (b2 \ b1);

:: XBOOLE_0:prednot 1 => XBOOLE_0:pred 1
definition
  let a1, a2 be set;
  pred A1 misses A2 means
    a1 /\ a2 = {};
  symmetry;
::  for a1, a2 being set
::        st a1 misses a2
::     holds a2 misses a1;
end;

:: XBOOLE_0:dfs 7
definiens
  let a1, a2 be set;
To prove
     a1 misses a2
it is sufficient to prove
  thus a1 /\ a2 = {};

:: XBOOLE_0:def 7
theorem
for b1, b2 being set holds
   b1 misses b2
iff
   b1 /\ b2 = {};

:: XBOOLE_0:prednot 2 => XBOOLE_0:pred 2
definition
  let a1, a2 be set;
  pred A1 c< A2 means
    a1 c= a2 & a1 <> a2;
  irreflexivity;
::  for a1 being set holds
::     not a1 c< a1;
  asymmetry;
::  for a1, a2 being set
::        st a1 c< a2
::     holds not a2 c< a1;
end;

:: XBOOLE_0:dfs 8
definiens
  let a1, a2 be set;
To prove
     a1 c< a2
it is sufficient to prove
  thus a1 c= a2 & a1 <> a2;

:: XBOOLE_0:def 8
theorem
for b1, b2 being set holds
   b1 c< b2
iff
   b1 c= b2 & b1 <> b2;

:: XBOOLE_0:prednot 3 => XBOOLE_0:pred 3
definition
  let a1, a2 be set;
  pred A1,A2 are_c=-comparable means
    (not a1 c= a2) implies a2 c= a1;
  symmetry;
::  for a1, a2 being set
::        st a1,a2 are_c=-comparable
::     holds a2,a1 are_c=-comparable;
  reflexivity;
::  for a1 being set holds
::     a1,a1 are_c=-comparable;
end;

:: XBOOLE_0:dfs 9
definiens
  let a1, a2 be set;
To prove
     a1,a2 are_c=-comparable
it is sufficient to prove
  thus (not a1 c= a2) implies a2 c= a1;

:: XBOOLE_0:def 9
theorem
for b1, b2 being set holds
   b1,b2 are_c=-comparable
iff
   (b1 c= b2 or b2 c= b1);

:: XBOOLE_0:prednot 4 => HIDDEN:pred 1
definition
  let a1, a2 be set;
  pred A1 = A2 means
    a1 c= a2 & a2 c= a1;
  symmetry;
::  for a1, a2 being set
::        st a1 = a2
::     holds a2 = a1;
  reflexivity;
::  for a1 being set holds
::     a1 = a1;
end;

:: XBOOLE_0:dfs 10
definiens
  let a1, a2 be set;
To prove
     a1 = a2
it is sufficient to prove
  thus a1 c= a2 & a2 c= a1;

:: XBOOLE_0:def 10
theorem
for b1, b2 being set holds
   b1 = b2
iff
   b1 c= b2 & b2 c= b1;

:: XBOOLE_0:prednot 5 => not XBOOLE_0:pred 1
notation
  let a1, a2 be set;
  antonym a1 meets a2 for a1 misses a2;
end;

:: XBOOLE_0:th 1
theorem
for b1, b2, b3 being set holds
   b1 in b2 \+\ b3
iff
   (b1 in b2 & not b1 in b3 or b1 in b3 & not b1 in b2);

:: XBOOLE_0:th 2
theorem
for b1, b2, b3 being set
      st for b4 being set holds
              not b4 in b1
           iff
                 b4 in b2
              iff
                 b4 in b3
   holds b1 = b2 \+\ b3;

:: XBOOLE_0:funcreg 1
registration
  cluster {} -> empty;
end;

:: XBOOLE_0:exreg 1
registration
  cluster empty set;
end;

:: XBOOLE_0:funcreg 2
registration
  let a1 be set;
  cluster {a1} -> non empty;
end;

:: XBOOLE_0:funcreg 3
registration
  let a1, a2 be set;
  cluster {a1,a2} -> non empty;
end;

:: XBOOLE_0:exreg 2
registration
  cluster non empty set;
end;

:: XBOOLE_0:funcreg 4
registration
  let a1 be non empty set;
  let a2 be set;
  cluster a1 \/ a2 -> non empty;
end;

:: XBOOLE_0:funcreg 5
registration
  let a1 be non empty set;
  let a2 be set;
  cluster a2 \/ a1 -> non empty;
end;

:: XBOOLE_0:th 3
theorem
for b1, b2 being set holds
   b1 meets b2
iff
   ex b3 being set st
      b3 in b1 & b3 in b2;

:: XBOOLE_0:th 4
theorem
for b1, b2 being set holds
   b1 meets b2
iff
   ex b3 being set st
      b3 in b1 /\ b2;

:: XBOOLE_0:th 5
theorem
for b1, b2, b3 being set
      st b1 misses b2 & b3 in b1 \/ b2 & (b3 in b1 implies b3 in b2)
   holds b3 in b2 & not b3 in b1;

:: XBOOLE_0:sch 2
scheme XBOOLE_0:sch 2
{F1 -> set,
  F2 -> set}:
F1() = F2()
provided
   for b1 being set holds
         b1 in F1()
      iff
         P1[b1]
and
   for b1 being set holds
         b1 in F2()
      iff
         P1[b1];


:: XBOOLE_0:sch 3
scheme XBOOLE_0:sch 3
for b1, b2 being set
      st (for b3 being set holds
               b3 in b1
            iff
               P1[b3]) &
         (for b3 being set holds
               b3 in b2
            iff
               P1[b3])
   holds b1 = b2


:: XBOOLE_0:th 6
theorem
for b1, b2 being set
      st b1 c< b2
   holds ex b3 being set st
      b3 in b2 & not b3 in b1;