reconsider g = id X as PartFunc of X,X ;
set D = PFuncs X,X;
defpred S1[ Element of PFuncs X,X, Element of PFuncs X,X, Element of PFuncs X,X] means ex f, g being PartFunc of X,X st
( $1 = f & $2 = g & $3 = f (*) g );
A1: for a, b being Element of PFuncs X,X ex c being Element of PFuncs X,X st S1[a,b,c]
proof
let a, b be Element of PFuncs X,X; :: thesis: ex c being Element of PFuncs X,X st S1[a,b,c]
reconsider f = a, g = b as PartFunc of X,X by PARTFUN1:120;
reconsider c = f * g as Element of PFuncs X,X by PARTFUN1:119;
take c ; :: thesis: S1[a,b,c]
take f ; :: thesis: ex g being PartFunc of X,X st
( a = f & b = g & c = f (*) g )

take g ; :: thesis: ( a = f & b = g & c = f (*) g )
thus ( a = f & b = g & c = f (*) g ) ; :: thesis: verum
end;
consider f being BinOp of (PFuncs X,X) such that
A2: for a, b being Element of PFuncs X,X holds S1[a,b,f . a,b] from BINOP_1:sch 3(A1);
set G = multMagma(# (PFuncs X,X),f #);
multMagma(# (PFuncs X,X),f #) is constituted-Functions
proof
let x be Element of multMagma(# (PFuncs X,X),f #); :: according to MONOID_0:def 1 :: thesis: x is Function
thus x is Function ; :: thesis: verum
end;
then reconsider G = multMagma(# (PFuncs X,X),f #) as non empty strict constituted-Functions multMagma ;
A3: now
let a, b be Element of G; :: thesis: a [*] b = a (*) b
ex g, h being PartFunc of X,X st
( a = g & b = h & f . a,b = g (*) h ) by A2;
hence a [*] b = a (*) b ; :: thesis: verum
end;
A4: now
let f9, g, h be Element of G; :: thesis: (f9 [*] g) [*] h = f9 [*] (g [*] h)
reconsider fg = f9 [*] g, gh = g [*] h as Element of G ;
thus (f9 [*] g) [*] h = fg (*) h by A3
.= (f9 (*) g) (*) h by A3
.= f9 (*) (g (*) h) by RELAT_1:55
.= f9 (*) gh by A3
.= f9 [*] (g [*] h) by A3 ; :: thesis: verum
end;
reconsider f1 = g as Element of G by PARTFUN1:119;
now
let h be Element of G; :: thesis: ( f1 [*] h = h & h [*] f1 = h )
reconsider j = h as PartFunc of X,X by PARTFUN1:120;
thus f1 [*] h = g (*) j by A3
.= h by PARTFUN1:37 ; :: thesis: h [*] f1 = h
thus h [*] f1 = j (*) g by A3
.= h by PARTFUN1:36 ; :: thesis: verum
end;
then reconsider G = G as non empty strict unital associative constituted-Functions multMagma by A4, Lm2, Th6;
take G ; :: thesis: ( the carrier of G = PFuncs X,X & ( for f, g being Element of G holds f [*] g = f (*) g ) )
thus H1(G) = PFuncs X,X ; :: thesis: for f, g being Element of G holds f [*] g = f (*) g
let g, h be Element of G; :: thesis: g [*] h = g (*) h
reconsider g9 = g, h9 = h as Element of PFuncs X,X ;
ex g, h being PartFunc of X,X st
( g9 = g & h9 = h & f . g9,h9 = g (*) h ) by A2;
hence g [*] h = g (*) h ; :: thesis: verum