Article FUNCOP_1, MML version 4.99.1005

:: FUNCOP_1:th 2
theorem
for b1 being set holds
   delta b1 = <:id b1,id b1:>;

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

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

:: FUNCOP_1:th 6
theorem
for b1, b2 being Relation-like Function-like set holds
<:b1,b2:> = <:b2,b1:> ~;

:: FUNCOP_1:th 7
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
   (b1 | b2) ~ = b1 ~ | b2;

:: FUNCOP_1:th 9
theorem
for b1 being set holds
   (delta b1) ~ = delta b1;

:: FUNCOP_1:th 10
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   <:b1,b2:> | b3 = <:b1 | b3,b2:>;

:: FUNCOP_1:th 11
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   <:b1,b2:> | b3 = <:b1,b2 | b3:>;

:: FUNCOP_1:funcnot 2 => FUNCOP_1:func 2
definition
  let a1, a2 be set;
  func A1 --> A2 -> set equals
    [:a1,{a2}:];
end;

:: FUNCOP_1:def 2
theorem
for b1, b2 being set holds
b1 --> b2 = [:b1,{b2}:];

:: FUNCOP_1:funcreg 1
registration
  let a1, a2 be set;
  cluster a1 --> a2 -> Relation-like Function-like;
end;

:: FUNCOP_1:th 13
theorem
for b1, b2, b3 being set
      st b2 in b1
   holds (b1 --> b3) . b2 = b3;

:: FUNCOP_1:th 14
theorem
for b1, b2 being set
      st b1 <> {}
   holds proj2 (b1 --> b2) = {b2};

:: FUNCOP_1:th 15
theorem
for b1 being Relation-like Function-like set
for b2 being set
      st proj2 b1 = {b2}
   holds b1 = (proj1 b1) --> b2;

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

:: FUNCOP_1:funcreg 3
registration
  let a1 be set;
  let a2 be empty set;
  cluster a2 --> a1 -> empty;
end;

:: FUNCOP_1:th 16
theorem
for b1 being set holds
   proj1 ({} --> b1) = {} & proj2 ({} --> b1) = {};

:: FUNCOP_1:th 17
theorem
for b1 being Relation-like Function-like set
for b2 being set
      st for b3 being set
              st b3 in proj1 b1
           holds b1 . b3 = b2
   holds b1 = (proj1 b1) --> b2;

:: FUNCOP_1:th 18
theorem
for b1, b2, b3 being set holds
(b1 --> b2) | b3 = (b1 /\ b3) --> b2;

:: FUNCOP_1:th 19
theorem
for b1, b2 being set holds
proj1 (b1 --> b2) = b1 & proj2 (b1 --> b2) c= {b2};

:: FUNCOP_1:th 20
theorem
for b1, b2, b3 being set
      st b2 in b3
   holds (b1 --> b2) " b3 = b1;

:: FUNCOP_1:th 21
theorem
for b1, b2 being set holds
(b1 --> b2) " {b2} = b1;

:: FUNCOP_1:th 22
theorem
for b1, b2, b3 being set
      st not b2 in b3
   holds (b1 --> b2) " b3 = {};

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

:: FUNCOP_1:th 24
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
      st b2 <> {} & b3 in proj1 b1
   holds proj1 ((b2 --> b3) * b1) <> {};

:: FUNCOP_1:th 25
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
b1 * (b2 --> b3) = (b1 " b2) --> b3;

:: FUNCOP_1:th 26
theorem
for b1, b2, b3 being set holds
(b1 --> [b2,b3]) ~ = b1 --> [b3,b2];

:: FUNCOP_1:funcnot 3 => FUNCOP_1:func 3
definition
  let a1, a2, a3 be Relation-like Function-like set;
  func A1 .:(A2,A3) -> set equals
    <:a2,a3:> * a1;
end;

:: FUNCOP_1:def 3
theorem
for b1, b2, b3 being Relation-like Function-like set holds
b1 .:(b2,b3) = <:b2,b3:> * b1;

:: FUNCOP_1:funcreg 4
registration
  let a1, a2, a3 be Relation-like Function-like set;
  cluster a1 .:(a2,a3) -> Relation-like Function-like;
end;

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

:: FUNCOP_1:th 28
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
      st b4 in proj1 (b3 .:(b1,b2))
   holds (b3 .:(b1,b2)) . b4 = b3 .(b1 . b4,b2 . b4);

:: FUNCOP_1:th 29
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
for b5 being Relation-like Function-like set
      st b1 | b4 = b2 | b4
   holds (b5 .:(b1,b3)) | b4 = (b5 .:(b2,b3)) | b4;

:: FUNCOP_1:th 30
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
for b5 being Relation-like Function-like set
      st b1 | b4 = b2 | b4
   holds (b5 .:(b3,b1)) | b4 = (b5 .:(b3,b2)) | b4;

:: FUNCOP_1:th 31
theorem
for b1, b2, b3, b4 being Relation-like Function-like set holds
b3 * (b4 .:(b1,b2)) = b4 .:(b3 * b1,b3 * b2);

:: FUNCOP_1:funcnot 4 => FUNCOP_1:func 4
definition
  let a1, a2 be Relation-like Function-like set;
  let a3 be set;
  func A1 [:](A2,A3) -> set equals
    <:a2,(proj1 a2) --> a3:> * a1;
end;

:: FUNCOP_1:def 4
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   b1 [:](b2,b3) = <:b2,(proj1 b2) --> b3:> * b1;

:: FUNCOP_1:funcreg 5
registration
  let a1, a2 be Relation-like Function-like set;
  let a3 be set;
  cluster a1 [:](a2,a3) -> Relation-like Function-like;
end;

:: FUNCOP_1:th 34
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   b2 [:](b1,b3) = b2 .:(b1,(proj1 b1) --> b3);

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

:: FUNCOP_1:th 36
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
for b4 being Relation-like Function-like set
for b5 being set
      st b1 | b3 = b2 | b3
   holds (b4 [:](b1,b5)) | b3 = (b4 [:](b2,b5)) | b3;

:: FUNCOP_1:th 37
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set holds
   b2 * (b3 [:](b1,b4)) = b3 [:](b2 * b1,b4);

:: FUNCOP_1:th 39
theorem
for b1 being Relation-like Function-like set
for b2 being set
for b3 being Relation-like Function-like set
for b4 being set holds
   (id b2) * (b3 [:](b1,b4)) = b3 [:](b1 | b2,b4);

:: FUNCOP_1:funcnot 5 => FUNCOP_1:func 5
definition
  let a1 be Relation-like Function-like set;
  let a2 be set;
  let a3 be Relation-like Function-like set;
  func A1 [;](A2,A3) -> set equals
    <:(proj1 a3) --> a2,a3:> * a1;
end;

:: FUNCOP_1:def 5
theorem
for b1 being Relation-like Function-like set
for b2 being set
for b3 being Relation-like Function-like set holds
   b1 [;](b2,b3) = <:(proj1 b3) --> b2,b3:> * b1;

:: FUNCOP_1:funcreg 6
registration
  let a1 be Relation-like Function-like set;
  let a2 be set;
  let a3 be Relation-like Function-like set;
  cluster a1 [;](a2,a3) -> Relation-like Function-like;
end;

:: FUNCOP_1:th 41
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
   b2 [;](b3,b1) = b2 .:((proj1 b1) --> b3,b1);

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

:: FUNCOP_1:th 43
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
for b4 being Relation-like Function-like set
for b5 being set
      st b1 | b3 = b2 | b3
   holds (b4 [;](b5,b1)) | b3 = (b4 [;](b5,b2)) | b3;

:: FUNCOP_1:th 44
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set holds
   b2 * (b3 [;](b4,b1)) = b3 [;](b4,b2 * b1);

:: FUNCOP_1:th 46
theorem
for b1 being Relation-like Function-like set
for b2 being set
for b3 being Relation-like Function-like set
for b4 being set holds
   (id b2) * (b3 [;](b4,b1)) = b3 [;](b4,b1 | b2);

:: FUNCOP_1:th 47
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4, b5 being Function-like quasi_total Relation of b1,b2 holds
b3 .:(b4,b5) is Function-like quasi_total Relation of b1,b2;

:: FUNCOP_1:funcnot 6 => FUNCOP_1:func 6
definition
  let a1, a2 be non empty set;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a4, a5 be Function-like quasi_total Relation of a2,a1;
  redefine func a3 .:(a4,a5) -> Function-like quasi_total Relation of a2,a1;
end;

:: FUNCOP_1:th 48
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4, b5 being Function-like quasi_total Relation of b2,b1
for b6 being Element of b2 holds
   (b3 .:(b4,b5)) . b6 = b3 .(b4 . b6,b5 . b6);

:: FUNCOP_1:th 49
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4, b5, b6 being Function-like quasi_total Relation of b1,b2
      st for b7 being Element of b1 holds
           b6 . b7 = b3 .(b4 . b7,b5 . b7)
   holds b6 = b3 .:(b4,b5);

:: FUNCOP_1:th 51
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b2,b2 holds
   (b3 .:(id b2,b5)) * b4 = b3 .:(b4,b5 * b4);

:: FUNCOP_1:th 52
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b2,b2 holds
   (b3 .:(b5,id b2)) * b4 = b3 .:(b5 * b4,b4);

:: FUNCOP_1:th 53
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2 holds
   (b3 .:(id b2,id b2)) * b4 = b3 .:(b4,b4);

:: FUNCOP_1:th 54
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
for b4 being Function-like quasi_total Relation of b1,b1 holds
   (b2 .:(id b1,b4)) . b3 = b2 .(b3,b4 . b3);

:: FUNCOP_1:th 55
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
for b4 being Function-like quasi_total Relation of b1,b1 holds
   (b2 .:(b4,id b1)) . b3 = b2 .(b4 . b3,b3);

:: FUNCOP_1:th 56
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1 holds
   (b2 .:(id b1,id b1)) . b3 = b2 .(b3,b3);

:: FUNCOP_1:th 57
theorem
for b1, b2, b3 being set
      st b3 in b2
   holds b1 --> b3 is Function-like quasi_total Relation of b1,b2;

:: FUNCOP_1:funcnot 7 => FUNCOP_1:func 7
definition
  let a1, a2 be set;
  redefine func a1 --> a2 -> Function-like quasi_total Relation of a1,{a2};
end;

:: FUNCOP_1:funcnot 8 => FUNCOP_1:func 8
definition
  let a1 be non empty set;
  let a2 be set;
  let a3 be Element of a1;
  redefine func a2 --> a3 -> Function-like quasi_total Relation of a2,a1;
end;

:: FUNCOP_1:th 58
theorem
for b1 being set
for b2 being non empty set
for b3 being Element of b2 holds
   b1 --> b3 is Function-like quasi_total Relation of b1,b2;

:: FUNCOP_1:th 59
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of b2 holds
   b3 [:](b4,b5) is Function-like quasi_total Relation of b1,b2;

:: FUNCOP_1:funcnot 9 => FUNCOP_1:func 9
definition
  let a1, a2 be non empty set;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a4 be Function-like quasi_total Relation of a2,a1;
  let a5 be Element of a1;
  redefine func a3 [:](a4,a5) -> Function-like quasi_total Relation of a2,a1;
end;

:: FUNCOP_1:th 60
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4 being Function-like quasi_total Relation of b2,b1
for b5 being Element of b1
for b6 being Element of b2 holds
   (b3 [:](b4,b5)) . b6 = b3 .(b4 . b6,b5);

:: FUNCOP_1:th 61
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4, b5 being Function-like quasi_total Relation of b2,b1
for b6 being Element of b1
      st for b7 being Element of b2 holds
           b4 . b7 = b3 .(b5 . b7,b6)
   holds b4 = b3 [:](b5,b6);

:: FUNCOP_1:th 63
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of b2 holds
   (b3 [:](id b2,b5)) * b4 = b3 [:](b4,b5);

:: FUNCOP_1:th 64
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1 holds
   (b2 [:](id b1,b3)) . b3 = b2 .(b3,b3);

:: FUNCOP_1:th 65
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of b2 holds
   b3 [;](b5,b4) is Function-like quasi_total Relation of b1,b2;

:: FUNCOP_1:funcnot 10 => FUNCOP_1:func 10
definition
  let a1, a2 be non empty set;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a4 be Element of a1;
  let a5 be Function-like quasi_total Relation of a2,a1;
  redefine func a3 [;](a4,a5) -> Function-like quasi_total Relation of a2,a1;
end;

:: FUNCOP_1:th 66
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4 being Function-like quasi_total Relation of b2,b1
for b5 being Element of b1
for b6 being Element of b2 holds
   (b3 [;](b5,b4)) . b6 = b3 .(b5,b4 . b6);

:: FUNCOP_1:th 67
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4, b5 being Function-like quasi_total Relation of b2,b1
for b6 being Element of b1
      st for b7 being Element of b2 holds
           b4 . b7 = b3 .(b6,b5 . b7)
   holds b4 = b3 [;](b6,b5);

:: FUNCOP_1:th 69
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of b2 holds
   (b3 [;](b5,id b2)) * b4 = b3 [;](b5,b4);

:: FUNCOP_1:th 70
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1 holds
   (b2 [;](b3,id b1)) . b3 = b2 .(b3,b3);

:: FUNCOP_1:th 71
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,[:b2,b3:]
for b5 being Element of b1 holds
   b4 ~ . b5 = [(b4 . b5) `2,(b4 . b5) `1];

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

:: FUNCOP_1:funcnot 11 => FUNCOP_1:func 11
definition
  let a1, a2, a3 be non empty set;
  let a4 be Function-like quasi_total Relation of a1,[:a2,a3:];
  redefine func rng a4 -> Relation of a2,a3;
end;

:: FUNCOP_1:funcnot 12 => FUNCOP_1:func 12
definition
  let a1, a2, a3 be non empty set;
  let a4 be Function-like quasi_total Relation of a1,[:a2,a3:];
  redefine func a4 ~ -> Function-like quasi_total Relation of a1,[:a3,a2:];
  involutiveness;
::  for a1, a2, a3 being non empty set
::  for a4 being Function-like quasi_total Relation of a1,[:a2,a3:] holds
::     a4 ~ ~ = a4;
end;

:: FUNCOP_1:th 73
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,[:b2,b3:] holds
   rng (b4 ~) = (rng b4) ~;

:: FUNCOP_1:th 74
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5, b6 being Element of b2
      st b3 is associative(b2)
   holds b3 [:](b3 [;](b5,b4),b6) = b3 [;](b5,b3 [:](b4,b6));

:: FUNCOP_1:th 75
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4, b5 being Function-like quasi_total Relation of b1,b2
for b6 being Element of b2
      st b3 is associative(b2)
   holds b3 .:(b3 [:](b4,b6),b5) = b3 .:(b4,b3 [;](b6,b5));

:: FUNCOP_1:th 76
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4, b5, b6 being Function-like quasi_total Relation of b1,b2
      st b3 is associative(b2)
   holds b3 .:(b3 .:(b4,b5),b6) = b3 .:(b4,b3 .:(b5,b6));

:: FUNCOP_1:th 77
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5, b6 being Element of b2
      st b3 is associative(b2)
   holds b3 [;](b3 .(b5,b6),b4) = b3 [;](b5,b3 [;](b6,b4));

:: FUNCOP_1:th 78
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5, b6 being Element of b2
      st b3 is associative(b2)
   holds b3 [:](b4,b3 .(b5,b6)) = b3 [:](b3 [:](b4,b5),b6);

:: FUNCOP_1:th 79
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Element of b2
      st b3 is commutative(b2)
   holds b3 [;](b5,b4) = b3 [:](b4,b5);

:: FUNCOP_1:th 80
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4, b5 being Function-like quasi_total Relation of b1,b2
      st b3 is commutative(b2)
   holds b3 .:(b4,b5) = b3 .:(b5,b4);

:: FUNCOP_1:th 81
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b2,b2:],b2
for b4 being Function-like quasi_total Relation of b1,b2
      st b3 is idempotent(b2)
   holds b3 .:(b4,b4) = b4;

:: FUNCOP_1:th 82
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4 being Function-like quasi_total Relation of b2,b1
for b5 being Element of b2
      st b3 is idempotent(b1)
   holds (b3 [;](b4 . b5,b4)) . b5 = b4 . b5;

:: FUNCOP_1:th 83
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4 being Function-like quasi_total Relation of b2,b1
for b5 being Element of b2
      st b3 is idempotent(b1)
   holds (b3 [:](b4,b4 . b5)) . b5 = b4 . b5;

:: FUNCOP_1:th 84
theorem
for b1, b2, b3 being Relation-like Function-like set
      st [:proj2 b2,proj2 b3:] c= proj1 b1
   holds proj1 (b1 .:(b2,b3)) = (proj1 b2) /\ proj1 b3;

:: FUNCOP_1:attrnot 1 => FUNCOP_1:attr 1
definition
  let a1 be Relation-like Function-like set;
  attr a1 is Function-yielding means
    for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is Relation-like Function-like set;
end;

:: FUNCOP_1:dfs 6
definiens
  let a1 be Relation-like Function-like set;
To prove
     a1 is Function-yielding
it is sufficient to prove
  thus for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is Relation-like Function-like set;

:: FUNCOP_1:def 6
theorem
for b1 being Relation-like Function-like set holds
      b1 is Function-yielding
   iff
      for b2 being set
            st b2 in proj1 b1
         holds b1 . b2 is Relation-like Function-like set;

:: FUNCOP_1:exreg 1
registration
  cluster Relation-like Function-like Function-yielding set;
end;

:: FUNCOP_1:funcreg 7
registration
  let a1 be Relation-like Function-like Function-yielding set;
  let a2 be set;
  cluster a1 . a2 -> Relation-like Function-like;
end;

:: FUNCOP_1:funcreg 8
registration
  let a1 be Relation-like Function-like Function-yielding set;
  let a2 be Relation-like Function-like set;
  cluster a2 * a1 -> Relation-like Function-yielding;
end;

:: FUNCOP_1:funcreg 9
registration
  let a1 be set;
  let a2 be non empty set;
  cluster a1 --> a2 -> non-empty;
end;

:: FUNCOP_1:th 85
theorem
for b1 being set
for b2, b3 being non empty set
for b4 being Element of b2
for b5 being Element of b3 holds
   ([:b2,b3:] --> b1) .(b4,b5) = b1;

:: FUNCOP_1:funcnot 13 => FUNCOP_1:func 13
definition
  let a1, a2, a3 be set;
  func (A1,A2).--> A3 -> Relation-like Function-like set equals
    {[a1,a2]} --> a3;
end;

:: FUNCOP_1:def 7
theorem
for b1, b2, b3 being set holds
(b1,b2).--> b3 = {[b1,b2]} --> b3;

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

:: FUNCOP_1:funcnot 14 => FUNCOP_1:func 14
definition
  let a1, a2, a3, a4 be set;
  func IFEQ(A1,A2,A3,A4) -> set equals
    a3
    if a1 = a2
    otherwise a4;
end;

:: FUNCOP_1:def 8
theorem
for b1, b2, b3, b4 being set holds
(b1 = b2 implies IFEQ(b1,b2,b3,b4) = b3) & (b1 = b2 or IFEQ(b1,b2,b3,b4) = b4);

:: FUNCOP_1:funcnot 15 => FUNCOP_1:func 15
definition
  let a1, a2, a3 be set;
  let a4, a5 be Element of a1;
  redefine func IFEQ(a2,a3,a4,a5) -> Element of a1;
end;

:: FUNCOP_1:funcnot 16 => FUNCOP_1:func 16
definition
  let a1, a2 be set;
  func A1 .--> A2 -> set equals
    {a1} --> a2;
end;

:: FUNCOP_1:def 9
theorem
for b1, b2 being set holds
b1 .--> b2 = {b1} --> b2;

:: FUNCOP_1:funcreg 10
registration
  let a1, a2 be set;
  cluster a1 .--> a2 -> Relation-like Function-like;
end;

:: FUNCOP_1:funcreg 11
registration
  let a1, a2 be set;
  cluster a1 .--> a2 -> one-to-one;
end;

:: FUNCOP_1:th 87
theorem
for b1, b2 being set holds
(b1 .--> b2) . b1 = b2;

:: FUNCOP_1:th 88
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
      b1 .--> b2 c= b3
   iff
      b1 in proj1 b3 & b3 . b1 = b2;

:: FUNCOP_1:funcnot 17 => FUNCOP_1:func 13
notation
  let a1, a2, a3 be set;
  synonym (a1,a2):-> a3 for (a1,a2).--> a3;
end;

:: FUNCOP_1:funcnot 18 => FUNCOP_1:func 17
definition
  let a1, a2, a3 be set;
  redefine func (A1,A2):-> A3 -> Function-like quasi_total Relation of [:{a1},{a2}:],{a3} means
    TRUE;
end;

:: FUNCOP_1:def 10
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of [:{b1},{b2}:],{b3} holds
   (b4 = (b1,b2):-> b3 implies TRUE) & b4 = (b1,b2):-> b3;