Article BINOP_1, MML version 4.99.1005

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

:: BINOP_1:def 1
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
b1 .(b2,b3) = b1 . [b2,b3];

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

:: BINOP_1:th 1
theorem
for b1, b2, b3 being set
for b4, b5 being Function-like quasi_total Relation of [:b1,b2:],b3
      st for b6, b7 being set
              st b6 in b1 & b7 in b2
           holds b4 .(b6,b7) = b5 .(b6,b7)
   holds b4 = b5;

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

:: BINOP_1:modenot 1
definition
  let a1 be set;
  mode UnOp of a1 is Function-like quasi_total Relation of a1,a1;
end;

:: BINOP_1:modenot 2
definition
  let a1 be set;
  mode BinOp of a1 is Function-like quasi_total Relation of [:a1,a1:],a1;
end;

:: BINOP_1:sch 1
scheme BINOP_1:sch 1
{F1 -> set,
  F2 -> set,
  F3 -> set}:
ex b1 being Function-like quasi_total Relation of [:F1(),F2():],F3() st
   for b2, b3 being set
         st b2 in F1() & b3 in F2()
      holds P1[b2, b3, b1 .(b2,b3)]
provided
   for b1, b2 being set
         st b1 in F1() & b2 in F2()
      holds ex b3 being set st
         b3 in F3() & P1[b1, b2, b3];


:: BINOP_1:sch 2
scheme BINOP_1:sch 2
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
ex b1 being Function-like quasi_total Relation of [:F1(),F2():],F3() st
   for b2, b3 being set
         st b2 in F1() & b3 in F2()
      holds b1 .(b2,b3) = F4(b2, b3)
provided
   for b1, b2 being set
         st b1 in F1() & b2 in F2()
      holds F4(b1, b2) in F3();


:: BINOP_1:sch 3
scheme BINOP_1:sch 3
{F1 -> non empty set,
  F2 -> non empty set,
  F3 -> non empty set}:
ex b1 being Function-like quasi_total Relation of [:F1(),F2():],F3() st
   for b2 being Element of F1()
   for b3 being Element of F2() holds
      P1[b2, b3, b1 .(b2,b3)]
provided
   for b1 being Element of F1()
   for b2 being Element of F2() holds
      ex b3 being Element of F3() st
         P1[b1, b2, b3];


:: BINOP_1:sch 4
scheme BINOP_1:sch 4
{F1 -> non empty set,
  F2 -> non empty set,
  F3 -> non empty set,
  F4 -> Element of F3()}:
ex b1 being Function-like quasi_total Relation of [:F1(),F2():],F3() st
   for b2 being Element of F1()
   for b3 being Element of F2() holds
      b1 .(b2,b3) = F4(b2, b3)


:: BINOP_1:attrnot 1 => BINOP_1:attr 1
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is commutative means
    for b1, b2 being Element of a1 holds
    a2 .(b1,b2) = a2 .(b2,b1);
end;

:: BINOP_1:dfs 2
definiens
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is commutative
it is sufficient to prove
  thus for b1, b2 being Element of a1 holds
    a2 .(b1,b2) = a2 .(b2,b1);

:: BINOP_1:def 2
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is commutative(b1)
   iff
      for b3, b4 being Element of b1 holds
      b2 .(b3,b4) = b2 .(b4,b3);

:: BINOP_1:attrnot 2 => BINOP_1:attr 2
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is associative means
    for b1, b2, b3 being Element of a1 holds
    a2 .(b1,a2 .(b2,b3)) = a2 .(a2 .(b1,b2),b3);
end;

:: BINOP_1:dfs 3
definiens
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is associative
it is sufficient to prove
  thus for b1, b2, b3 being Element of a1 holds
    a2 .(b1,a2 .(b2,b3)) = a2 .(a2 .(b1,b2),b3);

:: BINOP_1:def 3
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is associative(b1)
   iff
      for b3, b4, b5 being Element of b1 holds
      b2 .(b3,b2 .(b4,b5)) = b2 .(b2 .(b3,b4),b5);

:: BINOP_1:attrnot 3 => BINOP_1:attr 3
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is idempotent means
    for b1 being Element of a1 holds
       a2 .(b1,b1) = b1;
end;

:: BINOP_1:dfs 4
definiens
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is idempotent
it is sufficient to prove
  thus for b1 being Element of a1 holds
       a2 .(b1,b1) = b1;

:: BINOP_1:def 4
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is idempotent(b1)
   iff
      for b3 being Element of b1 holds
         b2 .(b3,b3) = b3;

:: BINOP_1:condreg 1
registration
  cluster Function-like quasi_total -> empty commutative associative (Relation of [:{},{}:],{});
end;

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

:: BINOP_1:dfs 5
definiens
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is_a_left_unity_wrt a3
it is sufficient to prove
  thus for b1 being Element of a1 holds
       a3 .(a2,b1) = b1;

:: BINOP_1:def 5
theorem
for b1 being set
for b2 being Element of b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is_a_left_unity_wrt b3
   iff
      for b4 being Element of b1 holds
         b3 .(b2,b4) = b4;

:: BINOP_1:prednot 2 => BINOP_1:pred 2
definition
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_a_right_unity_wrt A3 means
    for b1 being Element of a1 holds
       a3 .(b1,a2) = b1;
end;

:: BINOP_1:dfs 6
definiens
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is_a_right_unity_wrt a3
it is sufficient to prove
  thus for b1 being Element of a1 holds
       a3 .(b1,a2) = b1;

:: BINOP_1:def 6
theorem
for b1 being set
for b2 being Element of b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is_a_right_unity_wrt b3
   iff
      for b4 being Element of b1 holds
         b3 .(b4,b2) = b4;

:: BINOP_1:prednot 3 => BINOP_1:pred 3
definition
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_a_unity_wrt A3 means
    a2 is_a_left_unity_wrt a3 & a2 is_a_right_unity_wrt a3;
end;

:: BINOP_1:dfs 7
definiens
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is_a_unity_wrt a3
it is sufficient to prove
  thus a2 is_a_left_unity_wrt a3 & a2 is_a_right_unity_wrt a3;

:: BINOP_1:def 7
theorem
for b1 being set
for b2 being Element of b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is_a_unity_wrt b3
   iff
      b2 is_a_left_unity_wrt b3 & b2 is_a_right_unity_wrt b3;

:: BINOP_1:th 11
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1 holds
      b3 is_a_unity_wrt b2
   iff
      for b4 being Element of b1 holds
         b2 .(b3,b4) = b4 & b2 .(b4,b3) = b4;

:: BINOP_1:th 12
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
      st b2 is commutative(b1)
   holds    b3 is_a_unity_wrt b2
   iff
      for b4 being Element of b1 holds
         b2 .(b3,b4) = b4;

:: BINOP_1:th 13
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
      st b2 is commutative(b1)
   holds    b3 is_a_unity_wrt b2
   iff
      for b4 being Element of b1 holds
         b2 .(b4,b3) = b4;

:: BINOP_1:th 14
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
      st b2 is commutative(b1)
   holds    b3 is_a_unity_wrt b2
   iff
      b3 is_a_left_unity_wrt b2;

:: BINOP_1:th 15
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
      st b2 is commutative(b1)
   holds    b3 is_a_unity_wrt b2
   iff
      b3 is_a_right_unity_wrt b2;

:: BINOP_1:th 16
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1
      st b2 is commutative(b1)
   holds    b3 is_a_left_unity_wrt b2
   iff
      b3 is_a_right_unity_wrt b2;

:: BINOP_1:th 17
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3, b4 being Element of b1
      st b3 is_a_left_unity_wrt b2 & b4 is_a_right_unity_wrt b2
   holds b3 = b4;

:: BINOP_1:th 18
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3, b4 being Element of b1
      st b3 is_a_unity_wrt b2 & b4 is_a_unity_wrt b2
   holds b3 = b4;

:: BINOP_1:funcnot 3 => BINOP_1:func 3
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  assume ex b1 being Element of a1 st
       b1 is_a_unity_wrt a2;
  func the_unity_wrt A2 -> Element of a1 means
    it is_a_unity_wrt a2;
end;

:: BINOP_1:def 8
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
   st ex b3 being Element of b1 st
        b3 is_a_unity_wrt b2
for b3 being Element of b1 holds
      b3 = the_unity_wrt b2
   iff
      b3 is_a_unity_wrt b2;

:: BINOP_1:prednot 4 => BINOP_1:pred 4
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_left_distributive_wrt A3 means
    for b1, b2, b3 being Element of a1 holds
    a2 .(b1,a3 .(b2,b3)) = a3 .(a2 .(b1,b2),a2 .(b1,b3));
end;

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

:: BINOP_1:def 9
theorem
for b1 being set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
   b2 is_left_distributive_wrt b3
iff
   for b4, b5, b6 being Element of b1 holds
   b2 .(b4,b3 .(b5,b6)) = b3 .(b2 .(b4,b5),b2 .(b4,b6));

:: BINOP_1:prednot 5 => BINOP_1:pred 5
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_right_distributive_wrt A3 means
    for b1, b2, b3 being Element of a1 holds
    a2 .(a3 .(b1,b2),b3) = a3 .(a2 .(b1,b3),a2 .(b2,b3));
end;

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

:: BINOP_1:def 10
theorem
for b1 being set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
   b2 is_right_distributive_wrt b3
iff
   for b4, b5, b6 being Element of b1 holds
   b2 .(b3 .(b4,b5),b6) = b3 .(b2 .(b4,b6),b2 .(b5,b6));

:: BINOP_1:prednot 6 => BINOP_1:pred 6
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_distributive_wrt A3 means
    a2 is_left_distributive_wrt a3 & a2 is_right_distributive_wrt a3;
end;

:: BINOP_1:dfs 11
definiens
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
To prove
     a2 is_distributive_wrt a3
it is sufficient to prove
  thus a2 is_left_distributive_wrt a3 & a2 is_right_distributive_wrt a3;

:: BINOP_1:def 11
theorem
for b1 being set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
   b2 is_distributive_wrt b3
iff
   b2 is_left_distributive_wrt b3 & b2 is_right_distributive_wrt b3;

:: BINOP_1:th 23
theorem
for b1 being set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
   b2 is_distributive_wrt b3
iff
   for b4, b5, b6 being Element of b1 holds
   b2 .(b4,b3 .(b5,b6)) = b3 .(b2 .(b4,b5),b2 .(b4,b6)) &
    b2 .(b3 .(b4,b5),b6) = b3 .(b2 .(b4,b6),b2 .(b5,b6));

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

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

:: BINOP_1:th 26
theorem
for b1 being non empty set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1
      st b3 is commutative(b1)
   holds    b3 is_distributive_wrt b2
   iff
      b3 is_left_distributive_wrt b2;

:: BINOP_1:th 27
theorem
for b1 being non empty set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1
      st b3 is commutative(b1)
   holds    b3 is_distributive_wrt b2
   iff
      b3 is_right_distributive_wrt b2;

:: BINOP_1:th 28
theorem
for b1 being non empty set
for b2, b3 being Function-like quasi_total Relation of [:b1,b1:],b1
      st b3 is commutative(b1)
   holds    b3 is_right_distributive_wrt b2
   iff
      b3 is_left_distributive_wrt b2;

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

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

:: BINOP_1:def 12
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of b1,b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is_distributive_wrt b3
   iff
      for b4, b5 being Element of b1 holds
      b2 . (b3 .(b4,b5)) = b3 .(b2 . b4,b2 . b5);

:: BINOP_1:attrnot 4 => BINOP_1:attr 1
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is commutative means
    for b1, b2 being Element of a1 holds
    a2 .(b1,b2) = a2 .(b2,b1);
end;

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

:: BINOP_1:def 13
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is commutative(b1)
   iff
      for b3, b4 being Element of b1 holds
      b2 .(b3,b4) = b2 .(b4,b3);

:: BINOP_1:attrnot 5 => BINOP_1:attr 2
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is associative means
    for b1, b2, b3 being Element of a1 holds
    a2 .(b1,a2 .(b2,b3)) = a2 .(a2 .(b1,b2),b3);
end;

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

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

:: BINOP_1:attrnot 6 => BINOP_1:attr 3
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  attr a2 is idempotent means
    for b1 being Element of a1 holds
       a2 .(b1,b1) = b1;
end;

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

:: BINOP_1:def 15
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1 holds
      b2 is idempotent(b1)
   iff
      for b3 being Element of b1 holds
         b2 .(b3,b3) = b3;

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

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

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

:: BINOP_1:prednot 9 => BINOP_1:pred 2
definition
  let a1 be set;
  let a2 be Element of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_a_right_unity_wrt A3 means
    for b1 being Element of a1 holds
       a3 .(b1,a2) = b1;
end;

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

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

:: BINOP_1:prednot 10 => BINOP_1:pred 4
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_left_distributive_wrt A3 means
    for b1, b2, b3 being Element of a1 holds
    a2 .(b1,a3 .(b2,b3)) = a3 .(a2 .(b1,b2),a2 .(b1,b3));
end;

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

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

:: BINOP_1:prednot 11 => BINOP_1:pred 5
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_right_distributive_wrt A3 means
    for b1, b2, b3 being Element of a1 holds
    a2 .(a3 .(b1,b2),b3) = a3 .(a2 .(b1,b3),a2 .(b2,b3));
end;

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

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

:: BINOP_1:prednot 12 => BINOP_1:pred 7
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of a1,a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  pred A2 is_distributive_wrt A3 means
    for b1, b2 being Element of a1 holds
    a2 . (a3 .(b1,b2)) = a3 .(a2 . b1,a2 . b2);
end;

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

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

:: BINOP_1:th 29
theorem
for b1, b2, b3, b4, b5 being set
for b6 being Function-like quasi_total Relation of [:b1,b2:],b3
      st b4 in b1 & b5 in b2 & b3 <> {}
   holds b6 .(b4,b5) in b3;

:: BINOP_1:th 30
theorem
for b1, b2, b3, b4, b5 being set
for b6 being Function-like quasi_total Relation of [:b3,b4:],b5
for b7 being Relation-like Function-like set
      st b5 <> {} & b1 in b3 & b2 in b4
   holds (b6 * b7) .(b1,b2) = b7 . (b6 .(b1,b2));

:: BINOP_1:th 31
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st proj1 b3 = [:b1,b2:]
   holds    b3 is constant
   iff
      for b4, b5, b6, b7 being set
            st b4 in b1 & b5 in b1 & b6 in b2 & b7 in b2
         holds b3 .(b4,b6) = b3 .(b5,b7);

:: BINOP_1:th 32
theorem
for b1, b2, b3 being set
for b4, b5 being Function-like Relation of [:b1,b2:],b3
      st dom b4 = dom b5 &
         (for b6, b7 being set
               st [b6,b7] in dom b4
            holds b4 .(b6,b7) = b5 .(b6,b7))
   holds b4 = b5;

:: BINOP_1:sch 5
scheme BINOP_1:sch 5
{F1 -> set,
  F2 -> set,
  F3 -> set}:
ex b1 being Function-like Relation of [:F1(),F2():],F3() st
   (for b2, b3 being set holds
       [b2,b3] in dom b1
    iff
       b2 in F1() &
        b3 in F2() &
        (ex b4 being set st
           P1[b2, b3, b4])) &
    (for b2, b3 being set
          st [b2,b3] in dom b1
       holds P1[b2, b3, b1 .(b2,b3)])
provided
   for b1, b2, b3 being set
         st b1 in F1() & b2 in F2() & P1[b1, b2, b3]
      holds b3 in F3()
and
   for b1, b2, b3, b4 being set
         st b1 in F1() & b2 in F2() & P1[b1, b2, b3] & P1[b1, b2, b4]
      holds b3 = b4;


:: BINOP_1:sch 6
scheme BINOP_1:sch 6
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
ex b1 being Function-like Relation of [:F1(),F2():],F3() st
   (for b2, b3 being set holds
       [b2,b3] in dom b1
    iff
       b2 in F1() & b3 in F2() & P1[b2, b3]) &
    (for b2, b3 being set
          st [b2,b3] in dom b1
       holds b1 .(b2,b3) = F4(b2, b3))
provided
   for b1, b2 being set
         st P1[b1, b2]
      holds F4(b1, b2) in F3();


:: BINOP_1:sch 7
scheme BINOP_1:sch 7
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
ex b1 being Function-like Relation of [:F1(),F2():],F3() st
   (for b2, b3 being set holds
       [b2,b3] in dom b1
    iff
       b2 in F1() & b3 in F2() & P1[b2, b3]) &
    (for b2, b3 being set
          st [b2,b3] in dom b1
       holds b1 .(b2,b3) = F4(b2, b3))
provided
   for b1, b2 being set
         st b1 in F1() & b2 in F2() & P1[b1, b2]
      holds F4(b1, b2) in F3();


:: BINOP_1:sch 8
scheme BINOP_1:sch 8
{F1 -> non empty set,
  F2 -> non empty set,
  F3 -> set,
  F4 -> set}:
ex b1 being Function-like Relation of [:F1(),F2():],F3() st
   (for b2 being Element of F1()
    for b3 being Element of F2() holds
          [b2,b3] in dom b1
       iff
          P1[b2, b3]) &
    (for b2 being Element of F1()
    for b3 being Element of F2()
          st [b2,b3] in dom b1
       holds b1 .(b2,b3) = F4(b2, b3))
provided
   for b1 being Element of F1()
   for b2 being Element of F2()
         st P1[b1, b2]
      holds F4(b1, b2) in F3();


:: BINOP_1:funcnot 4 => BINOP_1:func 4
definition
  let a1 be set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a3, a4 be Element of a1;
  redefine func a2 .(a3,a4) -> Element of a1;
end;