let C, D be non empty set ; :: thesis: for f being Function of C,D

for F being BinOp of D st F is having_a_unity & F is associative & F is having_an_inverseOp holds

( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

let f be Function of C,D; :: thesis: for F being BinOp of D st F is having_a_unity & F is associative & F is having_an_inverseOp holds

( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

let F be BinOp of D; :: thesis: ( F is having_a_unity & F is associative & F is having_an_inverseOp implies ( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) ) )

set u = the_inverseOp_wrt F;

reconsider g = C --> (the_unity_wrt F) as Function of C,D ;

assume A1: ( F is having_a_unity & F is associative & F is having_an_inverseOp ) ; :: thesis: ( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

for F being BinOp of D st F is having_a_unity & F is associative & F is having_an_inverseOp holds

( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

let f be Function of C,D; :: thesis: for F being BinOp of D st F is having_a_unity & F is associative & F is having_an_inverseOp holds

( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

let F be BinOp of D; :: thesis: ( F is having_a_unity & F is associative & F is having_an_inverseOp implies ( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) ) )

set u = the_inverseOp_wrt F;

reconsider g = C --> (the_unity_wrt F) as Function of C,D ;

assume A1: ( F is having_a_unity & F is associative & F is having_an_inverseOp ) ; :: thesis: ( F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F) & F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F) )

now :: thesis: for c being Element of C holds (F .: (f,((the_inverseOp_wrt F) * f))) . c = g . c

hence
F .: (f,((the_inverseOp_wrt F) * f)) = C --> (the_unity_wrt F)
by FUNCT_2:63; :: thesis: F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F)let c be Element of C; :: thesis: (F .: (f,((the_inverseOp_wrt F) * f))) . c = g . c

thus (F .: (f,((the_inverseOp_wrt F) * f))) . c = F . ((f . c),(((the_inverseOp_wrt F) * f) . c)) by FUNCOP_1:37

.= F . ((f . c),((the_inverseOp_wrt F) . (f . c))) by FUNCT_2:15

.= the_unity_wrt F by A1, Th59

.= g . c ; :: thesis: verum

end;thus (F .: (f,((the_inverseOp_wrt F) * f))) . c = F . ((f . c),(((the_inverseOp_wrt F) * f) . c)) by FUNCOP_1:37

.= F . ((f . c),((the_inverseOp_wrt F) . (f . c))) by FUNCT_2:15

.= the_unity_wrt F by A1, Th59

.= g . c ; :: thesis: verum

now :: thesis: for c being Element of C holds (F .: (((the_inverseOp_wrt F) * f),f)) . c = g . c

hence
F .: (((the_inverseOp_wrt F) * f),f) = C --> (the_unity_wrt F)
by FUNCT_2:63; :: thesis: verumlet c be Element of C; :: thesis: (F .: (((the_inverseOp_wrt F) * f),f)) . c = g . c

thus (F .: (((the_inverseOp_wrt F) * f),f)) . c = F . ((((the_inverseOp_wrt F) * f) . c),(f . c)) by FUNCOP_1:37

.= F . (((the_inverseOp_wrt F) . (f . c)),(f . c)) by FUNCT_2:15

.= the_unity_wrt F by A1, Th59

.= g . c ; :: thesis: verum

end;thus (F .: (((the_inverseOp_wrt F) * f),f)) . c = F . ((((the_inverseOp_wrt F) * f) . c),(f . c)) by FUNCOP_1:37

.= F . (((the_inverseOp_wrt F) . (f . c)),(f . c)) by FUNCT_2:15

.= the_unity_wrt F by A1, Th59

.= g . c ; :: thesis: verum