let L be non empty multLoopStr ; :: thesis: ( L is multGroup iff ( ( for a being Element of L holds a * (1. L) = a ) & ( for a being Element of L ex x being Element of L st a * x = 1. L ) & ( for a, b, c being Element of L holds (a * b) * c = a * (b * c) ) ) )
thus ( L is multGroup implies ( ( for a being Element of L holds a * (1. L) = a ) & ( for a being Element of L ex x being Element of L st a * x = 1. L ) & ( for a, b, c being Element of L holds (a * b) * c = a * (b * c) ) ) ) by ; :: thesis: ( ( for a being Element of L holds a * (1. L) = a ) & ( for a being Element of L ex x being Element of L st a * x = 1. L ) & ( for a, b, c being Element of L holds (a * b) * c = a * (b * c) ) implies L is multGroup )
assume that
A1: for a being Element of L holds a * (1. L) = a and
A2: for a being Element of L ex x being Element of L st a * x = 1. L and
A3: for a, b, c being Element of L holds (a * b) * c = a * (b * c) ; :: thesis: L is multGroup
A4: for a, b being Element of L ex x being Element of L st x * a = b
proof
let a, b be Element of L; :: thesis: ex x being Element of L st x * a = b
consider y being Element of L such that
A5: y * a = 1. L by A1, A2, A3, Lm13;
take x = b * y; :: thesis: x * a = b
thus x * a = b * (1. L) by A3, A5
.= b by A1 ; :: thesis: verum
end;
A6: for a being Element of L holds (1. L) * a = a
proof
let a be Element of L; :: thesis: (1. L) * a = a
thus (1. L) * a = a * (1. L) by A1, A2, A3, Lm12
.= a by A1 ; :: thesis: verum
end;
A7: L is left_mult-cancelable
proof
let a be Element of L; :: according to ALGSTR_0:def 23 :: thesis:
let x be Element of L; :: according to ALGSTR_0:def 20 :: thesis: for b1 being Element of the carrier of L holds
( not a * x = a * b1 or x = b1 )

let y be Element of L; :: thesis: ( not a * x = a * y or x = y )
consider z being Element of L such that
A8: z * a = 1. L by A1, A2, A3, Lm13;
assume a * x = a * y ; :: thesis: x = y
then (z * a) * x = z * (a * y) by A3
.= (z * a) * y by A3 ;
hence x = (1. L) * y by A6, A8
.= y by A6 ;
:: thesis: verum
end;
A9: L is right_mult-cancelable
proof
let a be Element of L; :: according to ALGSTR_0:def 24 :: thesis:
let x be Element of L; :: according to ALGSTR_0:def 21 :: thesis: for b1 being Element of the carrier of L holds
( not x * a = b1 * a or x = b1 )

let y be Element of L; :: thesis: ( not x * a = y * a or x = y )
consider z being Element of L such that
A10: a * z = 1. L by A2;
assume x * a = y * a ; :: thesis: x = y
then x * (a * z) = (y * a) * z by A3
.= y * (a * z) by A3 ;
hence x = y * (1. L) by
.= y by A1 ;
:: thesis: verum
end;
for a, b being Element of L ex x being Element of L st a * x = b
proof
let a, b be Element of L; :: thesis: ex x being Element of L st a * x = b
consider y being Element of L such that
A11: a * y = 1. L by A2;
take x = y * b; :: thesis: a * x = b
thus a * x = (1. L) * b by
.= b by A6 ; :: thesis: verum
end;
hence L is multGroup by ; :: thesis: verum