deffunc H1( set , set , set , set , set ) -> set = $4 (#) $5;
A4: now
let a, b be Element of F1(); :: thesis: for f being set st f in F2(a,b) holds
f is Function

let f be set ; :: thesis: ( f in F2(a,b) implies f is Function )
assume A5: f in F2(a,b) ; :: thesis: f is Function
F2(a,b) c= Funcs (F3(a),F3(b)) by A2;
hence f is Function by A5; :: thesis: verum
end;
A6: for a, b, c being Element of F1()
for f, g being set st f in F2(a,b) & g in F2(b,c) holds
H1(a,b,c,f,g) in F2(a,c)
proof
let a, b, c be Element of F1(); :: thesis: for f, g being set st f in F2(a,b) & g in F2(b,c) holds
H1(a,b,c,f,g) in F2(a,c)

let f, g be set ; :: thesis: ( f in F2(a,b) & g in F2(b,c) implies H1(a,b,c,f,g) in F2(a,c) )
assume that
A7: f in F2(a,b) and
A8: g in F2(b,c) ; :: thesis: H1(a,b,c,f,g) in F2(a,c)
reconsider f = f, g = g as Function by A4, A7, A8;
g * f = f (#) g by YELLOW16:1;
hence H1(a,b,c,f,g) in F2(a,c) by A1, A7, A8; :: thesis: verum
end;
A9: for a, b, c, d being Element of F1()
for f, g, h being set st f in F2(a,b) & g in F2(b,c) & h in F2(c,d) holds
H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h))
proof
let a, b, c, d be Element of F1(); :: thesis: for f, g, h being set st f in F2(a,b) & g in F2(b,c) & h in F2(c,d) holds
H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h))

let f, g, h be set ; :: thesis: ( f in F2(a,b) & g in F2(b,c) & h in F2(c,d) implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) )
assume that
A10: f in F2(a,b) and
A11: g in F2(b,c) and
A12: h in F2(c,d) ; :: thesis: H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h))
reconsider f = f, g = g, h = h as Function by A4, A10, A11, A12;
(f (#) g) (#) h = (g * f) (#) h by YELLOW16:1
.= h * (g * f) by YELLOW16:1
.= (h * g) * f by RELAT_1:36
.= f (#) (h * g) by YELLOW16:1 ;
hence H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) by YELLOW16:1; :: thesis: verum
end;
A13: for a being Element of F1() ex f being set st
( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(a,b) holds
H1(a,a,b,f,g) = g ) )
proof
let a be Element of F1(); :: thesis: ex f being set st
( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(a,b) holds
H1(a,a,b,f,g) = g ) )

take f = id F3(a); :: thesis: ( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(a,b) holds
H1(a,a,b,f,g) = g ) )

thus f in F2(a,a) by A3; :: thesis: for b being Element of F1()
for g being set st g in F2(a,b) holds
H1(a,a,b,f,g) = g

let b be Element of F1(); :: thesis: for g being set st g in F2(a,b) holds
H1(a,a,b,f,g) = g

let g be set ; :: thesis: ( g in F2(a,b) implies H1(a,a,b,f,g) = g )
assume A14: g in F2(a,b) ; :: thesis: H1(a,a,b,f,g) = g
F2(a,b) c= Funcs (F3(a),F3(b)) by A2;
then consider h being Function such that
A15: g = h and
A16: dom h = F3(a) and
rng h c= F3(b) by A14, FUNCT_2:def 2;
thus f (#) g = h * f by A15, YELLOW16:1
.= g by A15, A16, RELAT_1:52 ; :: thesis: verum
end;
A17: for a being Element of F1() ex f being set st
( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(b,a) holds
H1(b,a,a,g,f) = g ) )
proof
let a be Element of F1(); :: thesis: ex f being set st
( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(b,a) holds
H1(b,a,a,g,f) = g ) )

take f = id F3(a); :: thesis: ( f in F2(a,a) & ( for b being Element of F1()
for g being set st g in F2(b,a) holds
H1(b,a,a,g,f) = g ) )

thus f in F2(a,a) by A3; :: thesis: for b being Element of F1()
for g being set st g in F2(b,a) holds
H1(b,a,a,g,f) = g

let b be Element of F1(); :: thesis: for g being set st g in F2(b,a) holds
H1(b,a,a,g,f) = g

let g be set ; :: thesis: ( g in F2(b,a) implies H1(b,a,a,g,f) = g )
assume A18: g in F2(b,a) ; :: thesis: H1(b,a,a,g,f) = g
F2(b,a) c= Funcs (F3(b),F3(a)) by A2;
then consider h being Function such that
A19: g = h and
dom h = F3(b) and
A20: rng h c= F3(a) by A18, FUNCT_2:def 2;
thus g (#) f = f * h by A19, YELLOW16:1
.= g by A19, A20, RELAT_1:53 ; :: thesis: verum
end;
consider C being strict category such that
A21: the carrier of C = F1() and
A22: for a, b being object of C holds <^a,b^> = F2(a,b) and
A23: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds
for f being Morphism of a,b
for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) from YELLOW18:sch 4(A6, A9, A13, A17);
consider D being ManySortedSet of C such that
A24: for x being Element of C holds D . x = F3(x) from PBOOLE:sch 5();
A25: C is para-functional
proof
take D ; :: according to YELLOW18:def 7 :: thesis: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((D . a1),(D . a2))
let a1, a2 be object of C; :: thesis: <^a1,a2^> c= Funcs ((D . a1),(D . a2))
A26: <^a1,a2^> = F2(a1,a2) by A22;
A27: F3(a1) = D . a1 by A24;
F3(a2) = D . a2 by A24;
hence <^a1,a2^> c= Funcs ((D . a1),(D . a2)) by A2, A21, A26, A27; :: thesis: verum
end;
A28: C is semi-functional
proof
let a1, a2, a3 be object of C; :: according to ALTCAT_1:def 12 :: thesis: ( <^a1,a2^> = {} or <^a2,a3^> = {} or <^a1,a3^> = {} or for b1 being Element of <^a1,a2^>
for b2 being Element of <^a2,a3^>
for b3, b4 being set holds
( not b1 = b3 or not b2 = b4 or b2 * b1 = b3 * b4 ) )

assume that
A29: <^a1,a2^> <> {} and
A30: <^a2,a3^> <> {} and
<^a1,a3^> <> {} ; :: thesis: for b1 being Element of <^a1,a2^>
for b2 being Element of <^a2,a3^>
for b3, b4 being set holds
( not b1 = b3 or not b2 = b4 or b2 * b1 = b3 * b4 )

let f be Morphism of a1,a2; :: thesis: for b1 being Element of <^a2,a3^>
for b2, b3 being set holds
( not f = b2 or not b1 = b3 or b1 * f = b2 * b3 )

let g be Morphism of a2,a3; :: thesis: for b1, b2 being set holds
( not f = b1 or not g = b2 or g * f = b1 * b2 )

let f9, g9 be Function; :: thesis: ( not f = f9 or not g = g9 or g * f = f9 * g9 )
assume that
A31: f = f9 and
A32: g = g9 ; :: thesis: g * f = f9 * g9
thus g * f = f9 (#) g9 by A23, A29, A30, A31, A32
.= g9 * f9 by YELLOW16:1 ; :: thesis: verum
end;
A33: now
let a be object of C; :: thesis: idm a = id F3(a)
id F3(a) in F2(a,a) by A3, A21;
then reconsider e = id F3(a) as Morphism of a,a by A22;
now
let b be object of C; :: thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds f * e = f )
assume A34: <^a,b^> <> {} ; :: thesis: for f being Morphism of a,b holds f * e = f
let f be Morphism of a,b; :: thesis: f * e = f
A35: <^a,b^> = F2(a,b) by A22;
A36: F2(a,b) c= Funcs (F3(a),F3(b)) by A2, A21;
f in <^a,b^> by A34;
then consider h being Function such that
A37: f = h and
A38: dom h = F3(a) and
rng h c= F3(b) by A35, A36, FUNCT_2:def 2;
thus f * e = h * (id F3(a)) by A28, A34, A37, ALTCAT_1:def 12
.= f by A37, A38, RELAT_1:52 ; :: thesis: verum
end;
hence idm a = id F3(a) by ALTCAT_1:def 17; :: thesis: verum
end;
A39: now
let i be set ; :: thesis: ( i in the carrier of C implies C -carrier_of i = D . i )
assume i in the carrier of C ; :: thesis: C -carrier_of i = D . i
then reconsider a = i as object of C ;
thus C -carrier_of i = proj1 (idm a) by Def8
.= proj1 (id F3(a)) by A33
.= dom (id F3(a))
.= F3(a) by RELAT_1:45
.= D . i by A24 ; :: thesis: verum
end;
C is set-id-inheriting
proof
let a be object of C; :: according to YELLOW18:def 10 :: thesis: idm a = id (the_carrier_of a)
thus idm a = id F3(a) by A33
.= id (D . a) by A24
.= id (the_carrier_of a) by A39 ; :: thesis: verum
end;
then reconsider C = C as strict semi-functional para-functional set-id-inheriting category by A25, A28;
take C ; :: thesis: ( the carrier of C = F1() & ( for a being object of C holds the_carrier_of a = F3(a) ) & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) )
thus the carrier of C = F1() by A21; :: thesis: ( ( for a being object of C holds the_carrier_of a = F3(a) ) & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) )
hereby :: thesis: for a, b being object of C holds <^a,b^> = F2(a,b)
let a be object of C; :: thesis: the_carrier_of a = F3(a)
thus the_carrier_of a = D . a by A39
.= F3(a) by A24 ; :: thesis: verum
end;
thus for a, b being object of C holds <^a,b^> = F2(a,b) by A22; :: thesis: verum