consider O being Function such that
A5: dom O = the carrier of F1() and
A6: for x being object st x in the carrier of F1() holds
O . x = F3(x) from FUNCT_1:sch 3();
rng O c= the carrier of F2()
proof
let y be object ; :: according to TARSKI:def 3 :: thesis: ( not y in rng O or y in the carrier of F2() )
assume y in rng O ; :: thesis: y in the carrier of F2()
then consider x being object such that
A7: x in dom O and
A8: y = O . x by FUNCT_1:def 3;
reconsider x = x as Object of F1() by A5, A7;
A9: y = F3(x) by A6, A8;
F3(x) is Object of F2() by A1;
hence y in the carrier of F2() by A9; :: thesis: verum
end;
then reconsider O = O as Function of the carrier of F1(), the carrier of F2() by A5, FUNCT_2:2;
reconsider OM = ~ [:O,O:] as bifunction of the carrier of F1(), the carrier of F2() ;
dom [:O,O:] = [: the carrier of F1(), the carrier of F1():] by A5, FUNCT_3:def 8;
then A10: dom OM = [: the carrier of F1(), the carrier of F1():] by FUNCT_4:46;
defpred S1[ object , object , object ] means $1 = F4(($3 `1),($3 `2),$2);
A11: for i being object st i in [: the carrier of F1(), the carrier of F1():] holds
for x being object st x in the Arrows of F1() . i holds
ex y being object st
( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] )
proof
let i be object ; :: thesis: ( i in [: the carrier of F1(), the carrier of F1():] implies for x being object st x in the Arrows of F1() . i holds
ex y being object st
( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) )

assume A12: i in [: the carrier of F1(), the carrier of F1():] ; :: thesis: for x being object st x in the Arrows of F1() . i holds
ex y being object st
( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] )

then consider a, b being object such that
A13: a in the carrier of F1() and
A14: b in the carrier of F1() and
A15: [a,b] = i by ZFMISC_1:def 2;
reconsider a = a, b = b as Object of F1() by A13, A14;
let x be object ; :: thesis: ( x in the Arrows of F1() . i implies ex y being object st
( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) )

assume A16: x in the Arrows of F1() . i ; :: thesis: ex y being object st
( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] )

then reconsider f = x as Morphism of a,b by A15;
take y = F4(a,b,f); :: thesis: ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] )
A17: y in the Arrows of F2() . (F3(b),F3(a)) by A2, A15, A16;
A18: F3(a) = O . a by A6;
( the Arrows of F2() * OM) . i = the Arrows of F2() . (OM . (a,b)) by A10, A12, A15, FUNCT_1:13
.= the Arrows of F2() . ([:O,O:] . (b,a)) by A10, A12, A15, FUNCT_4:43
.= the Arrows of F2() . ((O . b),(O . a)) by A5, FUNCT_3:def 8 ;
hence y in ( the Arrows of F2() * OM) . i by A6, A17, A18; :: thesis: S1[y,x,i]
thus S1[y,x,i] by A15; :: thesis: verum
end;
consider M being ManySortedFunction of the Arrows of F1(), the Arrows of F2() * OM such that
A19: for i being object st i in [: the carrier of F1(), the carrier of F1():] holds
ex f being Function of ( the Arrows of F1() . i),(( the Arrows of F2() * OM) . i) st
( f = M . i & ( for x being object st x in the Arrows of F1() . i holds
S1[f . x,x,i] ) ) from MSSUBFAM:sch 1(A11);
reconsider M = M as MSUnTrans of OM, the Arrows of F1(), the Arrows of F2() by FUNCTOR0:def 4;
FunctorStr(# OM,M #) is Contravariant
proof
take O ; :: according to FUNCTOR0:def 2,FUNCTOR0:def 13 :: thesis: the ObjectMap of FunctorStr(# OM,M #) = ~ [:O,O:]
thus the ObjectMap of FunctorStr(# OM,M #) = ~ [:O,O:] ; :: thesis: verum
end;
then reconsider F = FunctorStr(# OM,M #) as Contravariant FunctorStr over F1(),F2() ;
A20: now :: thesis: for a being Object of F1() holds F . a = F3(a)
let a be Object of F1(); :: thesis: F . a = F3(a)
[a,a] in dom OM by A10, ZFMISC_1:def 2;
hence F . a = ([:O,O:] . (a,a)) `1 by FUNCT_4:43
.= [(O . a),(O . a)] `1 by A5, FUNCT_3:def 8
.= O . a
.= F3(a) by A6 ;
:: thesis: verum
end;
A21: now :: thesis: for o1, o2 being Object of F1() st <^o1,o2^> <> {} holds
for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g)
let o1, o2 be Object of F1(); :: thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) )
assume A22: <^o1,o2^> <> {} ; :: thesis: for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g)
let g be Morphism of o1,o2; :: thesis: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g)
[o1,o2] in [: the carrier of F1(), the carrier of F1():] by ZFMISC_1:def 2;
then consider f being Function of ( the Arrows of F1() . [o1,o2]),(( the Arrows of F2() * OM) . [o1,o2]) such that
A23: f = M . [o1,o2] and
A24: for x being object st x in the Arrows of F1() . [o1,o2] holds
f . x = F4(([o1,o2] `1),([o1,o2] `2),x) by A19;
f . g = F4(([o1,o2] `1),([o1,o2] `2),g) by A22, A24
.= F4(o1,([o1,o2] `2),g)
.= F4(o1,o2,g) ;
hence (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A23; :: thesis: verum
end;
A25: F is feasible
proof
let o1, o2 be Object of F1(); :: according to FUNCTOR0:def 19 :: thesis: ( <^o1,o2^> = {} or not <^(F . o2),(F . o1)^> = {} )
set g = the Morphism of o1,o2;
assume A26: <^o1,o2^> <> {} ; :: thesis: not <^(F . o2),(F . o1)^> = {}
then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 = F4(o1,o2, the Morphism of o1,o2) by A21;
then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . (F3(o2),F3(o1)) by A2, A26;
then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . ((F . o2),F3(o1)) by A20;
hence not <^(F . o2),(F . o1)^> = {} by A20; :: thesis: verum
end;
A27: now :: thesis: for o1, o2 being Object of F1() st <^o1,o2^> <> {} holds
for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g)
let o1, o2 be Object of F1(); :: thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g) )
assume A28: <^o1,o2^> <> {} ; :: thesis: for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g)
let g be Morphism of o1,o2; :: thesis: F . g = F4(o1,o2,g)
A29: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A21, A28;
<^(F . o2),(F . o1)^> <> {} by A25, A28;
hence F . g = F4(o1,o2,g) by A28, A29, FUNCTOR0:def 16; :: thesis: verum
end;
A30: F is comp-reversing
proof
let o1, o2, o3 be Object of F1(); :: according to FUNCTOR0:def 22 :: thesis: ( <^o1,o2^> = {} or <^o2,o3^> = {} or for b1 being Element of <^o1,o2^>
for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o2),(F . o1)^> ex b4 being Element of <^(F . o3),(F . o2)^> st
( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b3 * b4 ) )

assume that
A31: <^o1,o2^> <> {} and
A32: <^o2,o3^> <> {} ; :: thesis: for b1 being Element of <^o1,o2^>
for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o2),(F . o1)^> ex b4 being Element of <^(F . o3),(F . o2)^> st
( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b3 * b4 )

let f be Morphism of o1,o2; :: thesis: for b1 being Element of <^o2,o3^> ex b2 being Element of <^(F . o2),(F . o1)^> ex b3 being Element of <^(F . o3),(F . o2)^> st
( b2 = (Morph-Map (F,o1,o2)) . f & b3 = (Morph-Map (F,o2,o3)) . b1 & (Morph-Map (F,o1,o3)) . (b1 * f) = b2 * b3 )

let g be Morphism of o2,o3; :: thesis: ex b1 being Element of <^(F . o2),(F . o1)^> ex b2 being Element of <^(F . o3),(F . o2)^> st
( b1 = (Morph-Map (F,o1,o2)) . f & b2 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = b1 * b2 )

set a = O . o1;
set b = O . o2;
set c = O . o3;
A33: O . o1 = F3(o1) by A6;
A34: O . o2 = F3(o2) by A6;
A35: O . o3 = F3(o3) by A6;
reconsider f9 = F4(o1,o2,f) as Morphism of (O . o2),(O . o1) by A2, A31, A33, A34;
reconsider g9 = F4(o2,o3,g) as Morphism of (O . o3),(O . o2) by A2, A32, A34, A35;
A36: O . o1 = F . o1 by A20, A33;
A37: O . o2 = F . o2 by A20, A34;
A38: O . o3 = F . o3 by A20, A35;
reconsider ff = f9 as Morphism of (F . o2),(F . o1) by A20, A33, A37;
reconsider gg = g9 as Morphism of (F . o3),(F . o2) by A20, A35, A37;
take ff ; :: thesis: ex b1 being Element of <^(F . o3),(F . o2)^> st
( ff = (Morph-Map (F,o1,o2)) . f & b1 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * b1 )

take gg ; :: thesis: ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * gg )
A39: <^o1,o3^> <> {} by A31, A32, ALTCAT_1:def 2;
F4(o1,o3,(g * f)) = ff * gg by A3, A31, A32, A33, A34, A35, A36, A37, A38;
hence ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * gg ) by A21, A31, A32, A39; :: thesis: verum
end;
F is Functor of F1(),F2()
proof
thus F is feasible by A25; :: according to FUNCTOR0:def 25 :: thesis: ( F is id-preserving & ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) )
hereby :: according to FUNCTOR0:def 20 :: thesis: ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) )
let o be Object of F1(); :: thesis: (Morph-Map (F,o,o)) . (idm o) = idm (F . o)
A40: F . o = F3(o) by A20;
thus (Morph-Map (F,o,o)) . (idm o) = F4(o,o,(idm o)) by A21
.= idm (F . o) by A4, A40 ; :: thesis: verum
end;
thus ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) by A30; :: thesis: verum
end;
then reconsider F = F as strict contravariant Functor of F1(),F2() by A30;
take F ; :: thesis: ( ( for a being Object of F1() holds F . a = F3(a) ) & ( for a, b being Object of F1() st <^a,b^> <> {} holds
for f being Morphism of a,b holds F . f = F4(a,b,f) ) )

thus ( ( for a being Object of F1() holds F . a = F3(a) ) & ( for a, b being Object of F1() st <^a,b^> <> {} holds
for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) by A20, A27; :: thesis: verum