A1: ( not X is empty implies ex f being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] )
proof
assume A2: not X is empty ; :: thesis: ex f being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)]

defpred S1[ set , set , set ] means for n, m being Nat st n = $1 `2 & m = $2 `2 holds
$3 = [[[($1 `1),($2 `1)],($1 `2)],(n + m)];
reconsider Y = free_magma_carrier X as non empty set by A2;
A3: for x, y being Element of Y ex z being Element of Y st S1[x,y,z]
proof
let x, y be Element of Y; :: thesis: ex z being Element of Y st S1[x,y,z]
reconsider X9 = X as non empty set by A2;
reconsider v = x as Element of free_magma_carrier X9 ;
reconsider w = y as Element of free_magma_carrier X9 ;
reconsider z = [[[(v `1),(w `1)],(v `2)],((v `2) + (w `2))] as Element of Y by Th26;
take z ; :: thesis: S1[x,y,z]
thus S1[x,y,z] ; :: thesis: verum
end;
consider f being Function of [:Y,Y:],Y such that
A4: for x, y being Element of Y holds S1[x,y,f . (x,y)] from BINOP_1:sch 3(A3);
reconsider f = f as BinOp of (free_magma_carrier X) ;
take f ; :: thesis: for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)]

thus for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] by A4; :: thesis: verum
end;
A5: ( X is empty implies ex f being BinOp of (free_magma_carrier X) st f = {} )
proof
assume A6: X is empty ; :: thesis: ex f being BinOp of (free_magma_carrier X) st f = {}
then A7: free_magma_carrier X = {} ;
{} c= [:{},{}:] ;
then reconsider f = {} as Relation of [:{},{}:],{} ;
( ( [:{},{}:] = {} implies {} = {} ) & dom f = [:{},{}:] ) ;
then reconsider f = {} as BinOp of {} ;
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 & v in free_magma_carrier X & w in free_magma_carrier X holds
f . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] by A6;
hence ex f being BinOp of (free_magma_carrier X) st f = {} by A7; :: thesis: verum
end;
now :: thesis: for f1, f2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies f1 = f2 ) & ( X is empty & f1 = {} & f2 = {} implies ( ( for b3 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b3 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b3 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b3 being BinOp of (free_magma_carrier X) st b3 = {} ) & ( for b3, b4 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b3 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b4 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b3 = b4 ) & ( X is empty & b3 = {} & b4 = {} implies b3 = b4 ) ) ) ) ) )
let f1, f2 be BinOp of (free_magma_carrier X); :: thesis: ( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies f1 = f2 ) & ( X is empty & f1 = {} & f2 = {} implies ( ( for b1 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b1 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b1 being BinOp of (free_magma_carrier X) st b1 = {} ) & ( for b1, b2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b1 = b2 ) & ( X is empty & b1 = {} & b2 = {} implies b1 = b2 ) ) ) ) ) )

thus ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies f1 = f2 ) :: thesis: ( X is empty & f1 = {} & f2 = {} implies ( ( for b1 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b1 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b1 being BinOp of (free_magma_carrier X) st b1 = {} ) & ( for b1, b2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b1 = b2 ) & ( X is empty & b1 = {} & b2 = {} implies b1 = b2 ) ) ) ) )
proof
assume A8: not X is empty ; :: thesis: ( ex v, w being Element of free_magma_carrier X ex n, m being Nat st
( n = v `2 & m = w `2 & not f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) or ex v, w being Element of free_magma_carrier X ex n, m being Nat st
( n = v `2 & m = w `2 & not f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) or f1 = f2 )

assume A9: for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ; :: thesis: ( ex v, w being Element of free_magma_carrier X ex n, m being Nat st
( n = v `2 & m = w `2 & not f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) or f1 = f2 )

assume A10: for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
f2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ; :: thesis: f1 = f2
for v, w being Element of free_magma_carrier X holds f1 . (v,w) = f2 . (v,w)
proof
let v, w be Element of free_magma_carrier X; :: thesis: f1 . (v,w) = f2 . (v,w)
set n = v `2 ;
set m = w `2 ;
reconsider n = v `2 , m = w `2 as Nat by A8;
thus f1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] by A9
.= f2 . (v,w) by A10 ; :: thesis: verum
end;
hence f1 = f2 by BINOP_1:2; :: thesis: verum
end;
assume ( X is empty & f1 = {} & f2 = {} ) ; :: thesis: ( ( for b1 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b1 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b1 being BinOp of (free_magma_carrier X) st b1 = {} ) & ( for b1, b2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b1 = b2 ) & ( X is empty & b1 = {} & b2 = {} implies b1 = b2 ) ) ) )

hence ( ( for b1 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b1 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b1 being BinOp of (free_magma_carrier X) st b1 = {} ) & ( for b1, b2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b1 = b2 ) & ( X is empty & b1 = {} & b2 = {} implies b1 = b2 ) ) ) ) ; :: thesis: verum
end;
hence ( ( for b1 being BinOp of (free_magma_carrier X) holds verum ) & ( not X is empty implies ex b1 being BinOp of (free_magma_carrier X) st
for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( X is empty implies ex b1 being BinOp of (free_magma_carrier X) st b1 = {} ) & ( for b1, b2 being BinOp of (free_magma_carrier X) holds
( ( not X is empty & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b1 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) & ( for v, w being Element of free_magma_carrier X
for n, m being Nat st n = v `2 & m = w `2 holds
b2 . (v,w) = [[[(v `1),(w `1)],(v `2)],(n + m)] ) implies b1 = b2 ) & ( X is empty & b1 = {} & b2 = {} implies b1 = b2 ) ) ) ) by A1, A5; :: thesis: verum