Article FUNCT_4, MML version 4.99.1005

:: FUNCT_4:th 1
theorem
for b1 being set
      st for b2 being set
              st b2 in b1
           holds ex b3, b4 being set st
              b2 = [b3,b4]
   holds ex b2, b3 being set st
      b1 c= [:b2,b3:];

:: FUNCT_4:th 2
theorem
for b1, b2 being Relation-like Function-like set holds
b2 * b1 = b2 * (b1 | proj2 b2);

:: FUNCT_4:th 4
theorem
for b1, b2 being set holds
   id b1 c= id b2
iff
   b1 c= b2;

:: FUNCT_4:th 5
theorem
for b1, b2, b3 being set
      st b1 c= b2
   holds b1 --> b3 c= b2 --> b3;

:: FUNCT_4:th 6
theorem
for b1, b2, b3, b4 being set
      st b1 --> b2 c= b3 --> b4
   holds b1 c= b3;

:: FUNCT_4:th 7
theorem
for b1, b2, b3, b4 being set
      st b1 <> {} & b1 --> b2 c= b3 --> b4
   holds b2 = b4;

:: FUNCT_4:th 8
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 in proj1 b2
   holds {b1} --> (b2 . b1) c= b2;

:: FUNCT_4:prednot 1 => TARSKI:pred 1
notation
  let a1, a2 be Relation-like Function-like set;
  synonym a1 <= a2 for a1 c= a2;
end;

:: FUNCT_4:th 9
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
   (b1 | b3) | b2 c= b3;

:: FUNCT_4:th 10
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set
      st b3 c= b4
   holds (b1 | b3) | b2 c= (b1 | b4) | b2;

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

:: FUNCT_4:def 1
theorem
for b1, b2, b3 being Relation-like Function-like set holds
   b3 = b1 +* b2
iff
   proj1 b3 = (proj1 b1) \/ proj1 b2 &
    (for b4 being set
          st b4 in (proj1 b1) \/ proj1 b2
       holds (b4 in proj1 b2 implies b3 . b4 = b2 . b4) &
        (b4 in proj1 b2 or b3 . b4 = b1 . b4));

:: FUNCT_4:th 11
theorem
for b1, b2 being Relation-like Function-like set holds
proj1 b1 c= proj1 (b1 +* b2) & proj1 b2 c= proj1 (b1 +* b2);

:: FUNCT_4:th 12
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
      st not b1 in proj1 b2
   holds (b3 +* b2) . b1 = b3 . b1;

:: FUNCT_4:th 13
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set holds
   b1 in proj1 (b2 +* b3)
iff
   (b1 in proj1 b2 or b1 in proj1 b3);

:: FUNCT_4:th 14
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
      st b1 in proj1 b2
   holds (b3 +* b2) . b1 = b2 . b1;

:: FUNCT_4:th 15
theorem
for b1, b2, b3 being Relation-like Function-like set holds
(b1 +* b2) +* b3 = b1 +* (b2 +* b3);

:: FUNCT_4:th 16
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
      st b2 tolerates b3 & b1 in proj1 b2
   holds (b2 +* b3) . b1 = b2 . b1;

:: FUNCT_4:th 17
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
      st proj1 b2 misses proj1 b3 & b1 in proj1 b2
   holds (b2 +* b3) . b1 = b2 . b1;

:: FUNCT_4:th 18
theorem
for b1, b2 being Relation-like Function-like set holds
proj2 (b1 +* b2) c= (proj2 b1) \/ proj2 b2;

:: FUNCT_4:th 19
theorem
for b1, b2 being Relation-like Function-like set holds
proj2 b1 c= proj2 (b2 +* b1);

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

:: FUNCT_4:th 21
theorem
for b1 being Relation-like Function-like set holds
   {} +* b1 = b1;

:: FUNCT_4:th 22
theorem
for b1 being Relation-like Function-like set holds
   b1 +* {} = b1;

:: FUNCT_4:th 23
theorem
for b1, b2 being set holds
(id b1) +* id b2 = id (b1 \/ b2);

:: FUNCT_4:th 24
theorem
for b1, b2 being Relation-like Function-like set holds
(b1 +* b2) | proj1 b2 = b2;

:: FUNCT_4:th 25
theorem
for b1, b2 being Relation-like Function-like set holds
(b1 +* b2) | ((proj1 b1) \ proj1 b2) c= b1;

:: FUNCT_4:th 26
theorem
for b1, b2 being Relation-like Function-like set holds
b1 c= b2 +* b1;

:: FUNCT_4:th 27
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 tolerates b2 +* b3
   holds b1 | ((proj1 b1) \ proj1 b3) tolerates b2;

:: FUNCT_4:th 28
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 tolerates b2 +* b3
   holds b1 tolerates b3;

:: FUNCT_4:th 29
theorem
for b1, b2 being Relation-like Function-like set holds
   b1 tolerates b2
iff
   b1 c= b1 +* b2;

:: FUNCT_4:th 30
theorem
for b1, b2 being Relation-like Function-like set holds
b1 +* b2 c= b1 \/ b2;

:: FUNCT_4:th 31
theorem
for b1, b2 being Relation-like Function-like set holds
   b1 tolerates b2
iff
   b1 \/ b2 = b1 +* b2;

:: FUNCT_4:th 32
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 misses proj1 b2
   holds b1 \/ b2 = b1 +* b2;

:: FUNCT_4:th 33
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 misses proj1 b2
   holds b1 c= b1 +* b2;

:: FUNCT_4:th 34
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 misses proj1 b2
   holds (b1 +* b2) | proj1 b1 = b1;

:: FUNCT_4:th 35
theorem
for b1, b2 being Relation-like Function-like set holds
   b1 tolerates b2
iff
   b1 +* b2 = b2 +* b1;

:: FUNCT_4:th 36
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 misses proj1 b2
   holds b1 +* b2 = b2 +* b1;

:: FUNCT_4:th 37
theorem
for b1, b2 being set
for b3, b4 being Function-like Relation of b1,b2
      st b4 is total(b1, b2)
   holds b3 +* b4 = b4;

:: FUNCT_4:th 38
theorem
for b1, b2 being set
for b3, b4 being Function-like quasi_total Relation of b1,b2
      st (b2 = {} implies b1 = {})
   holds b3 +* b4 = b4;

:: FUNCT_4:th 39
theorem
for b1 being set
for b2, b3 being Function-like quasi_total Relation of b1,b1 holds
b2 +* b3 = b3;

:: FUNCT_4:th 40
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2 holds
b3 +* b4 = b4;

:: FUNCT_4:th 41
theorem
for b1, b2 being set
for b3, b4 being Function-like Relation of b1,b2 holds
b3 +* b4 is Function-like Relation of b1,b2;

:: FUNCT_4:funcnot 2 => FUNCT_4:func 2
definition
  let a1 be Relation-like Function-like set;
  func ~ A1 -> Relation-like Function-like set means
    (for b1 being set holds
           b1 in proj1 it
        iff
           ex b2, b3 being set st
              b1 = [b3,b2] & [b2,b3] in proj1 a1) &
     (for b1, b2 being set
           st [b1,b2] in proj1 a1
        holds it .(b2,b1) = a1 .(b1,b2));
end;

:: FUNCT_4:def 2
theorem
for b1, b2 being Relation-like Function-like set holds
   b2 = ~ b1
iff
   (for b3 being set holds
          b3 in proj1 b2
       iff
          ex b4, b5 being set st
             b3 = [b5,b4] & [b4,b5] in proj1 b1) &
    (for b3, b4 being set
          st [b3,b4] in proj1 b1
       holds b2 .(b4,b3) = b1 .(b3,b4));

:: FUNCT_4:th 42
theorem
for b1 being Relation-like Function-like set holds
   proj2 ~ b1 c= proj2 b1;

:: FUNCT_4:th 43
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
      [b1,b2] in proj1 b3
   iff
      [b2,b1] in proj1 ~ b3;

:: FUNCT_4:th 44
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st [b1,b2] in proj1 ~ b3
   holds (~ b3) .(b1,b2) = b3 .(b2,b1);

:: FUNCT_4:th 45
theorem
for b1 being Relation-like Function-like set holds
   ex b2, b3 being set st
      proj1 ~ b1 c= [:b2,b3:];

:: FUNCT_4:th 46
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st proj1 b3 c= [:b1,b2:]
   holds proj1 ~ b3 c= [:b2,b1:];

:: FUNCT_4:th 47
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st proj1 b3 = [:b1,b2:]
   holds proj1 ~ b3 = [:b2,b1:];

:: FUNCT_4:th 48
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st proj1 b3 c= [:b1,b2:]
   holds proj2 ~ b3 = proj2 b3;

:: FUNCT_4:th 49
theorem
for b1, b2, b3 being set
for b4 being Function-like Relation of [:b1,b2:],b3 holds
   ~ b4 is Function-like Relation of [:b2,b1:],b3;

:: FUNCT_4:th 50
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of [:b1,b2:],b3
      st b3 <> {}
   holds ~ b4 is Function-like quasi_total Relation of [:b2,b1:],b3;

:: FUNCT_4:th 51
theorem
for b1, b2 being set
for b3 being non empty set
for b4 being Function-like quasi_total Relation of [:b1,b2:],b3 holds
   ~ b4 is Function-like quasi_total Relation of [:b2,b1:],b3;

:: FUNCT_4:th 52
theorem
for b1 being Relation-like Function-like set holds
   ~ ~ b1 c= b1;

:: FUNCT_4:th 53
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st proj1 b3 c= [:b1,b2:]
   holds ~ ~ b3 = b3;

:: FUNCT_4:th 54
theorem
for b1, b2, b3 being set
for b4 being Function-like Relation of [:b1,b2:],b3 holds
   ~ ~ b4 = b4;

:: FUNCT_4:funcnot 3 => FUNCT_4:func 3
definition
  let a1, a2 be Relation-like Function-like set;
  func |:A1,A2:| -> Relation-like Function-like set means
    (for b1 being set holds
           b1 in proj1 it
        iff
           ex b2, b3, b4, b5 being set st
              b1 = [[b2,b4],[b3,b5]] &
               [b2,b3] in proj1 a1 &
               [b4,b5] in proj1 a2) &
     (for b1, b2, b3, b4 being set
           st [b1,b2] in proj1 a1 & [b3,b4] in proj1 a2
        holds it .([b1,b3],[b2,b4]) = [a1 .(b1,b2),a2 .(b3,b4)]);
end;

:: FUNCT_4:def 3
theorem
for b1, b2, b3 being Relation-like Function-like set holds
   b3 = |:b1,b2:|
iff
   (for b4 being set holds
          b4 in proj1 b3
       iff
          ex b5, b6, b7, b8 being set st
             b4 = [[b5,b7],[b6,b8]] &
              [b5,b6] in proj1 b1 &
              [b7,b8] in proj1 b2) &
    (for b4, b5, b6, b7 being set
          st [b4,b5] in proj1 b1 & [b6,b7] in proj1 b2
       holds b3 .([b4,b6],[b5,b7]) = [b1 .(b4,b5),b2 .(b6,b7)]);

:: FUNCT_4:th 57
theorem
for b1, b2, b3, b4 being set
for b5, b6 being Relation-like Function-like set holds
   [[b1,b2],[b3,b4]] in proj1 |:b5,b6:|
iff
   [b1,b3] in proj1 b5 & [b2,b4] in proj1 b6;

:: FUNCT_4:th 58
theorem
for b1, b2, b3, b4 being set
for b5, b6 being Relation-like Function-like set
      st [[b1,b2],[b3,b4]] in proj1 |:b5,b6:|
   holds |:b5,b6:| .([b1,b2],[b3,b4]) = [b5 .(b1,b3),b6 .(b2,b4)];

:: FUNCT_4:th 59
theorem
for b1, b2 being Relation-like Function-like set holds
proj2 |:b1,b2:| c= [:proj2 b1,proj2 b2:];

:: FUNCT_4:th 60
theorem
for b1, b2, b3, b4 being set
for b5, b6 being Relation-like Function-like set
      st proj1 b5 c= [:b1,b2:] & proj1 b6 c= [:b3,b4:]
   holds proj1 |:b5,b6:| c= [:[:b1,b3:],[:b2,b4:]:];

:: FUNCT_4:th 61
theorem
for b1, b2, b3, b4 being set
for b5, b6 being Relation-like Function-like set
      st proj1 b5 = [:b1,b2:] & proj1 b6 = [:b3,b4:]
   holds proj1 |:b5,b6:| = [:[:b1,b3:],[:b2,b4:]:];

:: FUNCT_4:th 62
theorem
for b1, b2, b3, b4, b5, b6 being set
for b7 being Function-like Relation of [:b1,b2:],b3
for b8 being Function-like Relation of [:b4,b5:],b6 holds
   |:b7,b8:| is Function-like Relation of [:[:b1,b4:],[:b2,b5:]:],[:b3,b6:];

:: FUNCT_4:th 63
theorem
for b1, b2, b3, b4, b5, b6 being set
for b7 being Function-like quasi_total Relation of [:b1,b2:],b3
for b8 being Function-like quasi_total Relation of [:b4,b5:],b6
      st b3 <> {} & b6 <> {}
   holds |:b7,b8:| is Function-like quasi_total Relation of [:[:b1,b4:],[:b2,b5:]:],[:b3,b6:];

:: FUNCT_4:th 64
theorem
for b1, b2, b3, b4 being set
for b5, b6 being non empty set
for b7 being Function-like quasi_total Relation of [:b1,b2:],b5
for b8 being Function-like quasi_total Relation of [:b3,b4:],b6 holds
   |:b7,b8:| is Function-like quasi_total Relation of [:[:b1,b3:],[:b2,b4:]:],[:b5,b6:];

:: FUNCT_4:funcnot 4 => FUNCT_4:func 4
definition
  let a1, a2, a3, a4 be set;
  func (A1,A2)-->(A3,A4) -> set equals
    ({a1} --> a3) +* ({a2} --> a4);
end;

:: FUNCT_4:def 4
theorem
for b1, b2, b3, b4 being set holds
(b1,b2)-->(b3,b4) = ({b1} --> b3) +* ({b2} --> b4);

:: FUNCT_4:funcreg 1
registration
  let a1, a2, a3, a4 be set;
  cluster (a1,a2)-->(a3,a4) -> Relation-like Function-like;
end;

:: FUNCT_4:th 65
theorem
for b1, b2, b3, b4 being set holds
proj1 ((b1,b2)-->(b3,b4)) = {b1,b2} &
 proj2 ((b1,b2)-->(b3,b4)) c= {b3,b4};

:: FUNCT_4:th 66
theorem
for b1, b2, b3, b4 being set holds
(b1 = b2 or ((b1,b2)-->(b3,b4)) . b1 = b3) &
 ((b1,b2)-->(b3,b4)) . b2 = b4;

:: FUNCT_4:th 67
theorem
for b1, b2, b3, b4 being set
      st b1 <> b2
   holds proj2 ((b1,b2)-->(b3,b4)) = {b3,b4};

:: FUNCT_4:th 68
theorem
for b1, b2, b3 being set holds
(b1,b2)-->(b3,b3) = {b1,b2} --> b3;

:: FUNCT_4:funcnot 5 => FUNCT_4:func 5
definition
  let a1 be non empty set;
  let a2, a3 be set;
  let a4, a5 be Element of a1;
  redefine func (a2,a3)-->(a4,a5) -> Function-like quasi_total Relation of {a2,a3},a1;
end;

:: FUNCT_4:th 69
theorem
for b1, b2, b3, b4 being set
for b5 being Relation-like Function-like set
      st proj1 b5 = {b1,b2} & b5 . b1 = b3 & b5 . b2 = b4
   holds b5 = (b1,b2)-->(b3,b4);

:: FUNCT_4:th 71
theorem
for b1, b2, b3, b4 being set
      st b1 <> b3
   holds (b1,b3)-->(b2,b4) = {[b1,b2],[b3,b4]};

:: FUNCT_4:th 72
theorem
for b1, b2, b3, b4, b5, b6 being set
      st b1 <> b2 & (b1,b2)-->(b3,b4) = (b1,b2)-->(b5,b6)
   holds b3 = b5 & b4 = b6;

:: FUNCT_4:th 73
theorem
for b1, b2, b3, b4 being Relation-like Function-like set
      st proj2 b3 c= proj1 b1 & proj2 b4 c= proj1 b2 & b1 tolerates b2
   holds (b3 +* b4) * (b1 +* b2) = (b3 * b1) +* (b4 * b2);

:: FUNCT_4:th 74
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
      st proj1 b1 c= b2 \/ b3
   holds (b1 | b2) +* (b1 | b3) = b1;

:: FUNCT_4:th 75
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   (b1 +* b2) | b3 = (b1 | b3) +* (b2 | b3);

:: FUNCT_4:th 76
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st b3 misses proj1 b2
   holds (b1 +* b2) | b3 = b1 | b3;

:: FUNCT_4:th 77
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st proj1 b1 misses b3
   holds (b1 +* b2) | b3 = b2 | b3;

:: FUNCT_4:th 78
theorem
for b1, b2, b3 being Relation-like Function-like set
      st proj1 b2 = proj1 b3
   holds (b1 +* b2) +* b3 = b1 +* b3;

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

:: FUNCT_4:th 80
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
   b1 +* (b1 | b2) = b1;

:: FUNCT_4:th 81
theorem
for b1, b2 being Relation-like Function-like set
for b3, b4 being set
      st proj1 b1 c= b3 & proj1 b2 c= b4 & b3 misses b4
   holds (b1 +* b2) | b3 = b1 & (b1 +* b2) | b4 = b2;

:: FUNCT_4:th 82
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st proj1 b1 c= b3 & proj1 b2 misses b3
   holds (b1 +* b2) | b3 = b1;

:: FUNCT_4:th 83
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
b1 | (b2 \/ b3) = (b1 | b2) +* (b1 | b3);

:: FUNCT_4:th 84
theorem
for b1, b2, b3 being set holds
(b1,b2):-> b3 = [b1,b2] .--> b3;

:: FUNCT_4:th 85
theorem
for b1, b2, b3 being set holds
((b1,b2):-> b3) .(b1,b2) = b3;

:: FUNCT_4:th 86
theorem
for b1, b2, b3 being set holds
(b1,b1)-->(b2,b3) = b1 .--> b3;

:: FUNCT_4:th 87
theorem
for b1, b2 being set holds
b1 .--> b2 = {[b1,b2]};

:: FUNCT_4:th 88
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set
      st b2 <> b4
   holds (b1 +* (b2 .--> b3)) . b4 = b1 . b4;

:: FUNCT_4:th 89
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5 being set
      st b2 <> b3
   holds (b1 +* ((b2,b3)-->(b4,b5))) . b2 = b4 & (b1 +* ((b2,b3)-->(b4,b5))) . b3 = b5;

:: FUNCT_4:th 90
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st b1 in proj1 b3 & b3 . b1 = b2
   holds b1 .--> b2 c= b3;

:: FUNCT_4:th 91
theorem
for b1, b2, b3, b4 being set
for b5 being Relation-like Function-like set
      st b1 in proj1 b5 & b3 in proj1 b5 & b5 . b1 = b2 & b5 . b3 = b4
   holds (b1,b3)-->(b2,b4) c= b5;

:: FUNCT_4:th 92
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 c= b3 & b2 c= b3
   holds b1 +* b2 c= b3;

:: FUNCT_4:th 93
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st b3 /\ proj1 b1 c= b3 /\ proj1 b2
   holds (b1 +* (b2 | b3)) | b3 = b2 | b3;

:: FUNCT_4:th 94
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st proj1 b2 misses b3
   holds (b1 +* b2) | b3 = b1 | b3;

:: FUNCT_4:th 95
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5 being set holds
((b1 +* (b2 .--> b3)) +* (b5 .--> b4)) . b5 = b4;

:: FUNCT_4:th 96
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
((b1 +* (b2 .--> b3)) +* (b3 .--> b2)) . b2 = b3;

:: FUNCT_4:th 97
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5, b6 being set
      st b6 <> b5 & b6 <> b2
   holds ((b1 +* (b2 .--> b3)) +* (b5 .--> b4)) . b6 = b1 . b6;

:: FUNCT_4:th 98
theorem
for b1, b2 being Relation-like Function-like set
      st b1 is one-to-one & b2 is one-to-one & proj2 b1 misses proj2 b2
   holds b1 +* b2 is one-to-one;