reserve x,y,z, X,Y,Z for set,
  n for Element of NAT;
reserve A for set,
  D for non empty set,
  a,b,c,l,r for Element of D,
  o,o9 for BinOp of D,
  f,g,h for Function of A,D;

theorem Th5:
  a is_a_unity_wrt o implies o[;](a,f) = f & o[:](f,a) = f
proof
  assume
A1: a is_a_unity_wrt o;
A2: dom f = A by FUNCT_2:def 1;
A3: dom (o[;](a,f)) = A by FUNCT_2:def 1;
  now
    let x be object;
    assume
A4: x in A;
    then f.x in rng f by A2,FUNCT_1:def 3;
    then reconsider b = f.x as Element of D;
    thus (o[;](a,f)).x = o.(a,b) by A3,A4,FUNCOP_1:32
      .= f.x by A1,BINOP_1:3;
  end;
  hence o[;](a,f) = f by A3,A2,FUNCT_1:2;
A5: dom (o[:](f,a)) = A by FUNCT_2:def 1;
  now
    let x be object;
    assume
A6: x in A;
    then f.x in rng f by A2,FUNCT_1:def 3;
    then reconsider b = f.x as Element of D;
    thus (o[:](f,a)).x = o.(b,a) by A5,A6,FUNCOP_1:27
      .= f.x by A1,BINOP_1:3;
  end;
  hence thesis by A5,A2,FUNCT_1:2;
end;
