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