deffunc H1( 1-sorted ) -> set = the carrier of $1;
deffunc H2( multMagma ) -> Element of bool [:[: the carrier of $1, the carrier of $1:], the carrier of $1:] = the multF of $1;
Lm1:
for G being non empty multMagma holds
( G is associative iff for a, b, c being Element of G holds (a * b) * c = a * (b * c) )
;
Lm2:
for G being non empty multMagma holds
( G is invertible iff ( G is left-invertible & G is right-invertible ) )
by Th1;
Lm3:
for G being non empty multMagma holds
( G is cancelable iff ( G is left-cancelable & G is right-cancelable ) )
Lm4:
for G being non empty multMagma st G is associative & G is invertible holds
G is Group-like
deffunc H3( multLoopStr ) -> Element of the carrier of $1 = 1. $1;
:: INT.Group is unital commutative associative cancelable invertible;