let C, D be non empty set ; :: thesis: for f, f9 being Function of C,D
for F being BinOp of D st F is associative & F is having_an_inverseOp & F is having_a_unity & F .: (f,f9) = C --> (the_unity_wrt F) holds
( f = (the_inverseOp_wrt F) * f9 & (the_inverseOp_wrt F) * f = f9 )

let f, f9 be Function of C,D; :: thesis: for F being BinOp of D st F is associative & F is having_an_inverseOp & F is having_a_unity & F .: (f,f9) = C --> (the_unity_wrt F) holds
( f = (the_inverseOp_wrt F) * f9 & (the_inverseOp_wrt F) * f = f9 )

let F be BinOp of D; :: thesis: ( F is associative & F is having_an_inverseOp & F is having_a_unity & F .: (f,f9) = C --> (the_unity_wrt F) implies ( f = (the_inverseOp_wrt F) * f9 & (the_inverseOp_wrt F) * f = f9 ) )
assume that
A1: ( F is associative & F is having_an_inverseOp & F is having_a_unity ) and
A2: F .: (f,f9) = C --> (the_unity_wrt F) ; :: thesis: ( f = (the_inverseOp_wrt F) * f9 & (the_inverseOp_wrt F) * f = f9 )
set u = the_inverseOp_wrt F;
set e = the_unity_wrt F;
reconsider g = C --> (the_unity_wrt F) as Function of C,D ;
now :: thesis: for c being Element of C holds f . c = ((the_inverseOp_wrt F) * f9) . c
let c be Element of C; :: thesis: f . c = ((the_inverseOp_wrt F) * f9) . c
F . ((f . c),(f9 . c)) = g . c by A2, FUNCOP_1:37
.= the_unity_wrt F ;
hence f . c = (the_inverseOp_wrt F) . (f9 . c) by A1, Th60
.= ((the_inverseOp_wrt F) * f9) . c by FUNCT_2:15 ;
:: thesis: verum
end;
hence f = (the_inverseOp_wrt F) * f9 by FUNCT_2:63; :: thesis: (the_inverseOp_wrt F) * f = f9
now :: thesis: for c being Element of C holds ((the_inverseOp_wrt F) * f) . c = f9 . c
let c be Element of C; :: thesis: ((the_inverseOp_wrt F) * f) . c = f9 . c
F . ((f . c),(f9 . c)) = g . c by A2, FUNCOP_1:37
.= the_unity_wrt F ;
then f9 . c = (the_inverseOp_wrt F) . (f . c) by A1, Th60;
hence ((the_inverseOp_wrt F) * f) . c = f9 . c by FUNCT_2:15; :: thesis: verum
end;
hence (the_inverseOp_wrt F) * f = f9 by FUNCT_2:63; :: thesis: verum