Article PBOOLE, MML version 4.99.1005

:: PBOOLE:th 1
theorem
for b1 being Relation-like Function-like set
      st b1 is non-empty
   holds proj2 b1 is with_non-empty_elements;

:: PBOOLE:th 2
theorem
for b1 being Relation-like Function-like set holds
      b1 is empty-yielding
   iff
      (b1 = {} or proj2 b1 = {{}});

:: PBOOLE:modenot 1 => PBOOLE:mode 1
definition
  let a1 be set;
  mode ManySortedSet of A1 -> Relation-like Function-like set means
    proj1 it = a1;
end;

:: PBOOLE:dfs 1
definiens
  let a1 be set;
  let a2 be Relation-like Function-like set;
To prove
     a2 is ManySortedSet of a1
it is sufficient to prove
  thus proj1 a2 = a1;

:: PBOOLE:def 3
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
      b2 is ManySortedSet of b1
   iff
      proj1 b2 = b1;

:: PBOOLE:sch 1
scheme PBOOLE:sch 1
{F1 -> set,
  F2 -> set}:
ex b1 being ManySortedSet of F1() st
   for b2 being set
         st b2 in F1()
      holds b1 . b2 in F2(b2)
provided
   for b1 being set
         st b1 in F1()
      holds F2(b1) <> {};


:: PBOOLE:prednot 1 => PBOOLE:pred 1
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  pred A2 in A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 in a3 . b1;
end;

:: PBOOLE:dfs 2
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 in a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 in a3 . b1;

:: PBOOLE:def 4
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 in b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 in b3 . b4;

:: PBOOLE:prednot 2 => PBOOLE:pred 2
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  pred A2 c= A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 c= a3 . b1;
  reflexivity;
::  for a1 being set
::  for a2 being ManySortedSet of a1 holds
::     a2 c= a2;
end;

:: PBOOLE:dfs 3
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 c= a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 c= a3 . b1;

:: PBOOLE:def 5
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 c= b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 c= b3 . b4;

:: PBOOLE:prednot 3 => PBOOLE:pred 3
definition
  let a1 be non empty set;
  let a2, a3 be ManySortedSet of a1;
  redefine pred a2 in a3;
  asymmetry;
::  for a1 being non empty set
::  for a2, a3 being ManySortedSet of a1
::        st a2 in a3
::     holds not a3 in a2;
end;

:: PBOOLE:sch 2
scheme PBOOLE:sch 2
{F1 -> set,
  F2 -> ManySortedSet of F1()}:
ex b1 being ManySortedSet of F1() st
   for b2 being set
      st b2 in F1()
   for b3 being set holds
         b3 in b1 . b2
      iff
         b3 in F2() . b2 & P1[b2, b3]


:: PBOOLE:th 3
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st for b4 being set
              st b4 in b1
           holds b2 . b4 = b3 . b4
   holds b2 = b3;

:: PBOOLE:funcnot 1 => PBOOLE:func 1
definition
  let a1 be set;
  func [0] A1 -> ManySortedSet of a1 equals
    a1 --> {};
end;

:: PBOOLE:def 6
theorem
for b1 being set holds
   [0] b1 = b1 --> {};

:: PBOOLE:funcnot 2 => PBOOLE:func 2
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func A2 \/ A3 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a2 . b1) \/ (a3 . b1);
  commutativity;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1 holds
::  a2 \/ a3 = a3 \/ a2;
  idempotence;
::  for a1 being set
::  for a2 being ManySortedSet of a1 holds
::     a2 \/ a2 = a2;
end;

:: PBOOLE:def 7
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 = b2 \/ b3
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = (b2 . b5) \/ (b3 . b5);

:: PBOOLE:funcnot 3 => PBOOLE:func 3
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func A2 /\ A3 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a2 . b1) /\ (a3 . b1);
  commutativity;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1 holds
::  a2 /\ a3 = a3 /\ a2;
  idempotence;
::  for a1 being set
::  for a2 being ManySortedSet of a1 holds
::     a2 /\ a2 = a2;
end;

:: PBOOLE:def 8
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 = b2 /\ b3
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = (b2 . b5) /\ (b3 . b5);

:: PBOOLE:funcnot 4 => PBOOLE:func 4
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func A2 \ A3 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a2 . b1) \ (a3 . b1);
end;

:: PBOOLE:def 9
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 = b2 \ b3
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = (b2 . b5) \ (b3 . b5);

:: PBOOLE:prednot 4 => PBOOLE:pred 4
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  pred A2 overlaps A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 meets a3 . b1;
  symmetry;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1
::        st a2 overlaps a3
::     holds a3 overlaps a2;
end;

:: PBOOLE:dfs 8
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 overlaps a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 meets a3 . b1;

:: PBOOLE:def 10
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 overlaps b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 meets b3 . b4;

:: PBOOLE:prednot 5 => PBOOLE:pred 5
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  pred A2 misses A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 misses a3 . b1;
  symmetry;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1
::        st a2 misses a3
::     holds a3 misses a2;
end;

:: PBOOLE:dfs 9
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 misses a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 misses a3 . b1;

:: PBOOLE:def 11
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 misses b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 misses b3 . b4;

:: PBOOLE:prednot 6 => not PBOOLE:pred 4
notation
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  antonym a2 does_not_overlap a3 for a2 overlaps a3;
end;

:: PBOOLE:prednot 7 => not PBOOLE:pred 5
notation
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  antonym a2 meets a3 for a2 misses a3;
end;

:: PBOOLE:funcnot 5 => PBOOLE:func 5
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func A2 \+\ A3 -> ManySortedSet of a1 equals
    (a2 \ a3) \/ (a3 \ a2);
  commutativity;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1 holds
::  a2 \+\ a3 = a3 \+\ a2;
end;

:: PBOOLE:def 12
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \+\ b3 = (b2 \ b3) \/ (b3 \ b2);

:: PBOOLE:th 4
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
for b4 being set
      st b4 in b1
   holds (b2 \+\ b3) . b4 = (b2 . b4) \+\ (b3 . b4);

:: PBOOLE:th 5
theorem
for b1, b2 being set holds
([0] b2) . b1 = {};

:: PBOOLE:th 6
theorem
for b1 being set
for b2 being ManySortedSet of b1
      st for b3 being set
              st b3 in b1
           holds b2 . b3 = {}
   holds b2 = [0] b1;

:: PBOOLE:th 7
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st (b2 in b3 or b2 in b4)
   holds b2 in b3 \/ b4;

:: PBOOLE:th 8
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b2 in b3 /\ b4
iff
   b2 in b3 & b2 in b4;

:: PBOOLE:th 9
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 in b3 & b3 c= b4
   holds b2 in b4;

:: PBOOLE:th 10
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 in b3 & b2 in b4
   holds b3 overlaps b4;

:: PBOOLE:th 11
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 overlaps b3
   holds ex b4 being ManySortedSet of b1 st
      b4 in b2 & b4 in b3;

:: PBOOLE:th 12
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 in b3 \ b4
   holds b2 in b3;

:: PBOOLE:prednot 8 => PBOOLE:pred 6
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  redefine pred A2 = A3 means
    a2 c= a3 & a3 c= a2;
  symmetry;
::  for a1 being set
::  for a2, a3 being ManySortedSet of a1
::        st a2 = a3
::     holds a3 = a2;
  reflexivity;
::  for a1 being set
::  for a2 being ManySortedSet of a1 holds
::     a2 = a2;
end;

:: PBOOLE:dfs 11
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 = a3
it is sufficient to prove
  thus a2 c= a3 & a3 c= a2;

:: PBOOLE:def 13
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 = b3
iff
   b2 c= b3 & b3 c= b2;

:: PBOOLE:th 15
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b3 c= b4
   holds b2 c= b4;

:: PBOOLE:th 16
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 c= b2 \/ b3 & b3 c= b2 \/ b3;

:: PBOOLE:th 17
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ b3 c= b2 & b2 /\ b3 c= b3;

:: PBOOLE:th 18
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b4 c= b3
   holds b2 \/ b4 c= b3;

:: PBOOLE:th 19
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b2 c= b4
   holds b2 c= b3 /\ b4;

:: PBOOLE:th 20
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3
   holds b2 \/ b4 c= b3 \/ b4 & b4 \/ b2 c= b4 \/ b3;

:: PBOOLE:th 21
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3
   holds b2 /\ b4 c= b3 /\ b4 & b4 /\ b2 c= b4 /\ b3;

:: PBOOLE:th 22
theorem
for b1 being set
for b2, b3, b4, b5 being ManySortedSet of b1
      st b2 c= b3 & b4 c= b5
   holds b2 \/ b4 c= b3 \/ b5;

:: PBOOLE:th 23
theorem
for b1 being set
for b2, b3, b4, b5 being ManySortedSet of b1
      st b2 c= b3 & b4 c= b5
   holds b2 /\ b4 c= b3 /\ b5;

:: PBOOLE:th 24
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3
   holds b2 \/ b3 = b3 & b3 \/ b2 = b3;

:: PBOOLE:th 25
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3
   holds b2 /\ b3 = b2 & b3 /\ b2 = b2;

:: PBOOLE:th 26
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 /\ b3 c= b2 \/ b4;

:: PBOOLE:th 27
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3
   holds b2 \/ (b4 /\ b3) = (b2 \/ b4) /\ b3;

:: PBOOLE:th 28
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b2 = b3 \/ b4
iff
   b3 c= b2 &
    b4 c= b2 &
    (for b5 being ManySortedSet of b1
          st b3 c= b5 & b4 c= b5
       holds b2 c= b5);

:: PBOOLE:th 29
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b2 = b3 /\ b4
iff
   b2 c= b3 &
    b2 c= b4 &
    (for b5 being ManySortedSet of b1
          st b5 c= b3 & b5 c= b4
       holds b5 c= b2);

:: PBOOLE:th 34
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \/ b3) \/ b4 = b2 \/ (b3 \/ b4);

:: PBOOLE:th 35
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 /\ b3) /\ b4 = b2 /\ (b3 /\ b4);

:: PBOOLE:th 36
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ (b2 \/ b3) = b2 & (b2 \/ b3) /\ b2 = b2 & b2 /\ (b3 \/ b2) = b2 & (b3 \/ b2) /\ b2 = b2;

:: PBOOLE:th 37
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ (b2 /\ b3) = b2 & (b2 /\ b3) \/ b2 = b2 & b2 \/ (b3 /\ b2) = b2 & (b3 /\ b2) \/ b2 = b2;

:: PBOOLE:th 38
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 /\ (b3 \/ b4) = (b2 /\ b3) \/ (b2 /\ b4);

:: PBOOLE:th 39
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 \/ (b3 /\ b4) = (b2 \/ b3) /\ (b2 \/ b4) &
 (b3 /\ b4) \/ b2 = (b3 \/ b2) /\ (b4 \/ b2);

:: PBOOLE:th 40
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st (b2 /\ b3) \/ (b2 /\ b4) = b2
   holds b2 c= b3 \/ b4;

:: PBOOLE:th 41
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st (b2 \/ b3) /\ (b2 \/ b4) = b2
   holds b3 /\ b4 c= b2;

:: PBOOLE:th 42
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
((b2 /\ b3) \/ (b3 /\ b4)) \/ (b4 /\ b2) = ((b2 \/ b3) /\ (b3 \/ b4)) /\ (b4 \/ b2);

:: PBOOLE:th 43
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 \/ b3 c= b4
   holds b2 c= b4 & b3 c= b4;

:: PBOOLE:th 44
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 /\ b4
   holds b2 c= b3 & b2 c= b4;

:: PBOOLE:th 45
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \/ b3) \/ b4 = (b2 \/ b4) \/ (b3 \/ b4) &
 b2 \/ (b3 \/ b4) = (b2 \/ b3) \/ (b2 \/ b4);

:: PBOOLE:th 46
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 /\ b3) /\ b4 = (b2 /\ b4) /\ (b3 /\ b4) &
 b2 /\ (b3 /\ b4) = (b2 /\ b3) /\ (b2 /\ b4);

:: PBOOLE:th 47
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ (b2 \/ b3) = b2 \/ b3 & (b2 \/ b3) \/ b3 = b2 \/ b3;

:: PBOOLE:th 48
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ (b2 /\ b3) = b2 /\ b3 & (b2 /\ b3) /\ b3 = b2 /\ b3;

:: PBOOLE:th 49
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   [0] b1 c= b2;

:: PBOOLE:th 50
theorem
for b1 being set
for b2 being ManySortedSet of b1
      st b2 c= [0] b1
   holds b2 = [0] b1;

:: PBOOLE:th 51
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b2 c= b4 & b3 /\ b4 = [0] b1
   holds b2 = [0] b1;

:: PBOOLE:th 52
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b3 /\ b4 = [0] b1
   holds b2 /\ b4 = [0] b1;

:: PBOOLE:th 53
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 \/ [0] b1 = b2 & ([0] b1) \/ b2 = b2;

:: PBOOLE:th 54
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 \/ b3 = [0] b1
   holds b2 = [0] b1 & b3 = [0] b1;

:: PBOOLE:th 55
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 /\ [0] b1 = [0] b1 & ([0] b1) /\ b2 = [0] b1;

:: PBOOLE:th 56
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 \/ b4 & b2 /\ b4 = [0] b1
   holds b2 c= b3;

:: PBOOLE:th 57
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3 & b3 /\ b2 = [0] b1
   holds b2 = [0] b1;

:: PBOOLE:th 58
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 \ b3 = [0] b1
iff
   b2 c= b3;

:: PBOOLE:th 59
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3
   holds b2 \ b4 c= b3 \ b4;

:: PBOOLE:th 60
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3
   holds b4 \ b3 c= b4 \ b2;

:: PBOOLE:th 61
theorem
for b1 being set
for b2, b3, b4, b5 being ManySortedSet of b1
      st b2 c= b3 & b4 c= b5
   holds b2 \ b5 c= b3 \ b4;

:: PBOOLE:th 62
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ b3 c= b2;

:: PBOOLE:th 63
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3 \ b2
   holds b2 = [0] b1;

:: PBOOLE:th 64
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 \ b2 = [0] b1;

:: PBOOLE:th 65
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 \ [0] b1 = b2;

:: PBOOLE:th 66
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   ([0] b1) \ b2 = [0] b1;

:: PBOOLE:th 67
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ (b2 \/ b3) = [0] b1 & b2 \ (b3 \/ b2) = [0] b1;

:: PBOOLE:th 68
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 /\ (b3 \ b4) = (b2 /\ b3) \ b4;

:: PBOOLE:th 69
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
(b2 \ b3) /\ b3 = [0] b1 & b3 /\ (b2 \ b3) = [0] b1;

:: PBOOLE:th 70
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 \ (b3 \ b4) = (b2 \ b3) \/ (b2 /\ b4);

:: PBOOLE:th 71
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
(b2 \ b3) \/ (b2 /\ b3) = b2 & (b2 /\ b3) \/ (b2 \ b3) = b2;

:: PBOOLE:th 72
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3
   holds b3 = b2 \/ (b3 \ b2) & b3 = (b3 \ b2) \/ b2;

:: PBOOLE:th 73
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ (b3 \ b2) = b2 \/ b3 & (b3 \ b2) \/ b2 = b3 \/ b2;

:: PBOOLE:th 74
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ (b2 \ b3) = b2 /\ b3;

:: PBOOLE:th 75
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 \ (b3 /\ b4) = (b2 \ b3) \/ (b2 \ b4);

:: PBOOLE:th 76
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ (b2 /\ b3) = b2 \ b3 & b2 \ (b3 /\ b2) = b2 \ b3;

:: PBOOLE:th 77
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 /\ b3 = [0] b1
iff
   b2 \ b3 = b2;

:: PBOOLE:th 78
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \/ b3) \ b4 = (b2 \ b4) \/ (b3 \ b4);

:: PBOOLE:th 79
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \ b3) \ b4 = b2 \ (b3 \/ b4);

:: PBOOLE:th 80
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 /\ b3) \ b4 = (b2 \ b4) /\ (b3 \ b4);

:: PBOOLE:th 81
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
(b2 \/ b3) \ b3 = b2 \ b3;

:: PBOOLE:th 82
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 \/ b4
   holds b2 \ b3 c= b4 & b2 \ b4 c= b3;

:: PBOOLE:th 83
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
(b2 \/ b3) \ (b2 /\ b3) = (b2 \ b3) \/ (b3 \ b2);

:: PBOOLE:th 84
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
(b2 \ b3) \ b3 = b2 \ b3;

:: PBOOLE:th 85
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 \ (b3 \/ b4) = (b2 \ b3) /\ (b2 \ b4);

:: PBOOLE:th 86
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 \ b3 = b3 \ b2
   holds b2 = b3;

:: PBOOLE:th 87
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 /\ (b3 \ b4) = (b2 /\ b3) \ (b2 /\ b4);

:: PBOOLE:th 88
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 \ b3 c= b4
   holds b2 c= b3 \/ b4;

:: PBOOLE:th 89
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ b3 c= b2 \+\ b3;

:: PBOOLE:th 91
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 \+\ [0] b1 = b2 & ([0] b1) \+\ b2 = b2;

:: PBOOLE:th 92
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   b2 \+\ b2 = [0] b1;

:: PBOOLE:th 94
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ b3 = (b2 \+\ b3) \/ (b2 /\ b3);

:: PBOOLE:th 95
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \+\ b3 = (b2 \/ b3) \ (b2 /\ b3);

:: PBOOLE:th 96
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \+\ b3) \ b4 = (b2 \ (b3 \/ b4)) \/ (b3 \ (b2 \/ b4));

:: PBOOLE:th 97
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b2 \ (b3 \+\ b4) = (b2 \ (b3 \/ b4)) \/ ((b2 /\ b3) /\ b4);

:: PBOOLE:th 98
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
(b2 \+\ b3) \+\ b4 = b2 \+\ (b3 \+\ b4);

:: PBOOLE:th 99
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 \ b3 c= b4 & b3 \ b2 c= b4
   holds b2 \+\ b3 c= b4;

:: PBOOLE:th 100
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ b3 = b2 \+\ (b3 \ b2);

:: PBOOLE:th 101
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ b3 = b2 \+\ (b2 \ b3);

:: PBOOLE:th 102
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ b3 = b2 \+\ (b2 /\ b3);

:: PBOOLE:th 103
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ b3 = b3 \+\ (b3 \/ b2);

:: PBOOLE:th 104
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \/ b3 = (b2 \+\ b3) \+\ (b2 /\ b3);

:: PBOOLE:th 105
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ b3 = (b2 \+\ b3) \+\ (b2 \/ b3);

:: PBOOLE:th 106
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st (b2 overlaps b3 or b2 overlaps b4)
   holds b2 overlaps b3 \/ b4;

:: PBOOLE:th 108
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 & b3 c= b4
   holds b2 overlaps b4;

:: PBOOLE:th 109
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 & b2 c= b4
   holds b4 overlaps b3;

:: PBOOLE:th 110
theorem
for b1 being set
for b2, b3, b4, b5 being ManySortedSet of b1
      st b2 c= b3 & b4 c= b5 & b2 overlaps b4
   holds b3 overlaps b5;

:: PBOOLE:th 111
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 /\ b4
   holds b2 overlaps b3 & b2 overlaps b4;

:: PBOOLE:th 112
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 & b2 c= b4
   holds b2 overlaps b3 /\ b4;

:: PBOOLE:th 113
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 \ b4
   holds b2 overlaps b3;

:: PBOOLE:th 114
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 does_not_overlap b3
   holds b4 /\ b2 does_not_overlap b4 /\ b3;

:: PBOOLE:th 115
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 overlaps b3 \ b4
   holds b3 overlaps b2 \ b4;

:: PBOOLE:th 116
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 meets b3 & b3 c= b4
   holds b2 meets b4;

:: PBOOLE:th 118
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 misses b3 \ b2;

:: PBOOLE:th 119
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ b3 misses b2 \ b3;

:: PBOOLE:th 120
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 /\ b3 misses b2 \+\ b3;

:: PBOOLE:th 121
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 misses b3
   holds b2 /\ b3 = [0] b1;

:: PBOOLE:th 122
theorem
for b1 being set
for b2 being ManySortedSet of b1
      st b2 <> [0] b1
   holds b2 meets b2;

:: PBOOLE:th 123
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 c= b3 & b2 c= b4 & b3 misses b4
   holds b2 = [0] b1;

:: PBOOLE:th 124
theorem
for b1 being set
for b2, b3, b4, b5 being ManySortedSet of b1
      st b2 \/ b3 = b4 \/ b5 & b4 misses b2 & b5 misses b3
   holds b4 = b3 & b5 = b2;

:: PBOOLE:th 126
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 misses b3
   holds b2 \ b3 = b2;

:: PBOOLE:th 127
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 misses b3
   holds (b2 \/ b3) \ b3 = b2;

:: PBOOLE:th 128
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 \ b3 = b2
   holds b2 misses b3;

:: PBOOLE:th 129
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 \ b3 misses b3 \ b2;

:: PBOOLE:prednot 9 => PBOOLE:pred 7
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  pred A2 [= A3 means
    for b1 being ManySortedSet of a1
          st b1 in a2
       holds b1 in a3;
  reflexivity;
::  for a1 being set
::  for a2 being ManySortedSet of a1 holds
::     a2 [= a2;
end;

:: PBOOLE:dfs 12
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a2 [= a3
it is sufficient to prove
  thus for b1 being ManySortedSet of a1
          st b1 in a2
       holds b1 in a3;

:: PBOOLE:def 14
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b2 [= b3
iff
   for b4 being ManySortedSet of b1
         st b4 in b2
      holds b4 in b3;

:: PBOOLE:th 130
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 c= b3
   holds b2 [= b3;

:: PBOOLE:th 132
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 [= b3 & b3 [= b4
   holds b2 [= b4;

:: PBOOLE:th 133
theorem
[0] {} in [0] {};

:: PBOOLE:th 134
theorem
for b1 being ManySortedSet of {} holds
   b1 = {};

:: PBOOLE:th 135
theorem
for b1 being non empty set
for b2, b3 being ManySortedSet of b1
      st b2 overlaps b3
   holds b2 meets b3;

:: PBOOLE:th 136
theorem
for b1 being non empty set
for b2 being ManySortedSet of b1 holds
   not b2 in [0] b1;

:: PBOOLE:th 137
theorem
for b1 being non empty set
for b2, b3, b4 being ManySortedSet of b1
      st b2 in b3 & b2 in b4
   holds b3 /\ b4 <> [0] b1;

:: PBOOLE:th 138
theorem
for b1 being non empty set
for b2 being ManySortedSet of b1 holds
   b2 does_not_overlap [0] b1 & [0] b1 does_not_overlap b2;

:: PBOOLE:th 139
theorem
for b1 being non empty set
for b2, b3 being ManySortedSet of b1
      st b2 /\ b3 = [0] b1
   holds b2 does_not_overlap b3;

:: PBOOLE:th 140
theorem
for b1 being non empty set
for b2 being ManySortedSet of b1
      st b2 overlaps b2
   holds b2 <> [0] b1;

:: PBOOLE:attrnot 1 => PBOOLE:attr 1
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  redefine attr a2 is empty-yielding means
    for b1 being set
          st b1 in a1
       holds a2 . b1 is empty;
end;

:: PBOOLE:dfs 13
definiens
  let a1 be set;
  let a2 be ManySortedSet of a1;
To prove
     a1 is empty-yielding
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 is empty;

:: PBOOLE:def 15
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
      b2 is empty-yielding
   iff
      for b3 being set
            st b3 in b1
         holds b2 . b3 is empty;

:: PBOOLE:attrnot 2 => PBOOLE:attr 2
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  redefine attr a2 is non-empty means
    for b1 being set
          st b1 in a1
       holds a2 . b1 is not empty;
end;

:: PBOOLE:dfs 14
definiens
  let a1 be set;
  let a2 be ManySortedSet of a1;
To prove
     a1 is non-empty
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 is not empty;

:: PBOOLE:def 16
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
      b2 is non-empty
   iff
      for b3 being set
            st b3 in b1
         holds b2 . b3 is not empty;

:: PBOOLE:exreg 1
registration
  let a1 be set;
  cluster Relation-like empty-yielding Function-like ManySortedSet of a1;
end;

:: PBOOLE:exreg 2
registration
  let a1 be set;
  cluster Relation-like non-empty Function-like ManySortedSet of a1;
end;

:: PBOOLE:condreg 1
registration
  let a1 be non empty set;
  cluster non-empty -> non empty-yielding (ManySortedSet of a1);
end;

:: PBOOLE:condreg 2
registration
  let a1 be non empty set;
  cluster empty-yielding -> non non-empty (ManySortedSet of a1);
end;

:: PBOOLE:th 141
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
      b2 is empty-yielding
   iff
      b2 = [0] b1;

:: PBOOLE:th 142
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 is empty-yielding & b3 c= b2
   holds b3 is empty-yielding;

:: PBOOLE:th 143
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 is non-empty & b2 c= b3
   holds b3 is non-empty;

:: PBOOLE:th 144
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 is non-empty & b2 [= b3
   holds b2 c= b3;

:: PBOOLE:th 145
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 is non-empty & b2 [= b3
   holds b3 is non-empty;

:: PBOOLE:th 146
theorem
for b1 being set
for b2 being non-empty ManySortedSet of b1 holds
   ex b3 being ManySortedSet of b1 st
      b3 in b2;

:: PBOOLE:th 147
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being non-empty ManySortedSet of b1
      st for b4 being ManySortedSet of b1 holds
              b4 in b3
           iff
              b4 in b2
   holds b3 = b2;

:: PBOOLE:th 148
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
for b4 being non-empty ManySortedSet of b1
      st for b5 being ManySortedSet of b1 holds
              b5 in b4
           iff
              b5 in b2 & b5 in b3
   holds b4 = b2 /\ b3;

:: PBOOLE:sch 3
scheme PBOOLE:sch 3
{F1 -> set}:
ex b1 being ManySortedSet of F1() st
   for b2 being set
         st b2 in F1()
      holds P1[b2, b1 . b2]
provided
   for b1 being set
         st b1 in F1()
      holds ex b2 being set st
         P1[b1, b2];


:: PBOOLE:sch 4
scheme PBOOLE:sch 4
{F1 -> set,
  F2 -> set}:
ex b1 being ManySortedSet of F1() st
   for b2 being set
         st b2 in F1()
      holds b1 . b2 = F2(b2)


:: PBOOLE:exreg 3
registration
  let a1 be set;
  cluster Relation-like Function-like Function-yielding ManySortedSet of a1;
end;

:: PBOOLE:modenot 2
definition
  let a1 be set;
  mode ManySortedFunction of a1 is Function-yielding ManySortedSet of a1;
end;

:: PBOOLE:th 149
theorem
for b1 being set
for b2 being non-empty ManySortedSet of b1 holds
   not {} in proj2 b2;

:: PBOOLE:modenot 3
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  mode Component of a2 is Element of proj2 a2;
end;

:: PBOOLE:th 150
theorem
for b1 being non empty set
for b2 being ManySortedSet of b1
for b3 being Element of proj2 b2 holds
   ex b4 being set st
      b4 in b1 & b3 = b2 . b4;

:: PBOOLE:th 151
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being set
      st b3 in b1
   holds b2 . b3 is Element of proj2 b2;

:: PBOOLE:modenot 4 => PBOOLE:mode 2
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  mode Element of A2 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 is Element of a2 . b1;
end;

:: PBOOLE:dfs 15
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a3 is Element of a2
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a3 . b1 is Element of a2 . b1;

:: PBOOLE:def 17
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b3 is Element of b2
iff
   for b4 being set
         st b4 in b1
      holds b3 . b4 is Element of b2 . b4;

:: PBOOLE:modenot 5 => PBOOLE:mode 3
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  mode ManySortedFunction of A2,A3 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 is Function-like quasi_total Relation of a2 . b1,a3 . b1;
end;

:: PBOOLE:dfs 16
definiens
  let a1 be set;
  let a2, a3, a4 be ManySortedSet of a1;
To prove
     a4 is ManySortedFunction of a2,a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a4 . b1 is Function-like quasi_total Relation of a2 . b1,a3 . b1;

:: PBOOLE:def 18
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 is ManySortedFunction of b2,b3
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 is Function-like quasi_total Relation of b2 . b5,b3 . b5;

:: PBOOLE:condreg 3
registration
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  cluster -> Function-yielding (ManySortedFunction of a2,a3);
end;

:: PBOOLE:funcnot 6 => PBOOLE:func 6
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  func A2 # -> ManySortedSet of a1 * means
    for b1 being Element of a1 * holds
       it . b1 = product (b1 * a2);
end;

:: PBOOLE:def 19
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being ManySortedSet of b1 * holds
      b3 = b2 #
   iff
      for b4 being Element of b1 * holds
         b3 . b4 = product (b4 * b2);

:: PBOOLE:funcreg 1
registration
  let a1 be set;
  let a2 be non-empty ManySortedSet of a1;
  cluster a2 # -> non-empty;
end;

:: PBOOLE:funcnot 7 => PBOOLE:func 7
definition
  let a1 be set;
  let a2 be non empty set;
  let a3 be Function-like quasi_total Relation of a1,a2;
  let a4 be ManySortedSet of a2;
  redefine func a4 * a3 -> ManySortedSet of a1;
end;

:: PBOOLE:funcnot 8 => PBOOLE:func 8
definition
  let a1 be set;
  func *--> A1 -> Function-like quasi_total Relation of NAT,{a1} * means
    for b1 being Element of NAT holds
       it . b1 = b1 |-> a1;
end;

:: PBOOLE:def 20
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of NAT,{b1} * holds
      b2 = *--> b1
   iff
      for b3 being Element of NAT holds
         b2 . b3 = b3 |-> b1;

:: PBOOLE:th 152
theorem
for b1 being Element of NAT
for b2, b3 being set holds
(b1 |-> b2) * ({b2} --> b3) = b1 |-> b3;

:: PBOOLE:th 153
theorem
for b1 being non empty set
for b2 being Element of NAT
for b3 being set
for b4 being ManySortedSet of {b3}
      st b4 = {b3} --> b1
   holds (b4 # * *--> b3) . b2 = Funcs(Seg b2,b1);

:: PBOOLE:sch 5
scheme PBOOLE:sch 5
{F1 -> non empty set,
  F2 -> set}:
ex b1 being ManySortedSet of F1() st
   for b2 being Element of F1() holds
      b1 . b2 = F2(b2)


:: PBOOLE:funcreg 2
registration
  let a1 be non empty set;
  let a2 be non-empty ManySortedSet of a1;
  let a3 be Element of a1;
  cluster a2 . a3 -> non empty;
end;

:: PBOOLE:funcnot 9 => PBOOLE:func 9
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func [|A2,A3|] -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = [:a2 . b1,a3 . b1:];
end;

:: PBOOLE:def 21
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 = [|b2,b3|]
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = [:b2 . b5,b3 . b5:];

:: PBOOLE:funcnot 10 => PBOOLE:func 10
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  func MSFuncs(A2,A3) -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = Funcs(a2 . b1,a3 . b1);
end;

:: PBOOLE:def 22
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
   b4 = MSFuncs(b2,b3)
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = Funcs(b2 . b5,b3 . b5);

:: PBOOLE:modenot 6 => PBOOLE:mode 4
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  mode ManySortedSubset of A2 -> ManySortedSet of a1 means
    it c= a2;
end;

:: PBOOLE:dfs 21
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
To prove
     a3 is ManySortedSubset of a2
it is sufficient to prove
  thus a3 c= a2;

:: PBOOLE:def 23
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
   b3 is ManySortedSubset of b2
iff
   b3 c= b2;

:: PBOOLE:exreg 4
registration
  let a1 be set;
  let a2 be non-empty ManySortedSet of a1;
  cluster Relation-like non-empty Function-like ManySortedSubset of a2;
end;

:: PBOOLE:funcnot 11 => PBOOLE:func 11
definition
  let a1, a2 be Relation-like Function-like Function-yielding set;
  func A2 ** A1 -> Relation-like Function-like Function-yielding set means
    proj1 it = (proj1 a1) /\ proj1 a2 &
     (for b1 being set
           st b1 in proj1 it
        holds it . b1 = (a1 . b1) * (a2 . b1));
end;

:: PBOOLE:def 24
theorem
for b1, b2, b3 being Relation-like Function-like Function-yielding set holds
   b3 = b2 ** b1
iff
   proj1 b3 = (proj1 b1) /\ proj1 b2 &
    (for b4 being set
          st b4 in proj1 b3
       holds b3 . b4 = (b1 . b4) * (b2 . b4));

:: PBOOLE:funcnot 12 => PBOOLE:func 12
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  let a3 be Function-yielding ManySortedSet of a1;
  func A3 .:.: A2 -> ManySortedSet of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a3 . b1) .: (a2 . b1);
end;

:: PBOOLE:def 25
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being Function-yielding ManySortedSet of b1
for b4 being ManySortedSet of b1 holds
      b4 = b3 .:.: b2
   iff
      for b5 being set
            st b5 in b1
         holds b4 . b5 = (b3 . b5) .: (b2 . b5);

:: PBOOLE:funcreg 3
registration
  let a1 be set;
  cluster [0] a1 -> empty-yielding;
end;