let A, B be category; :: thesis: for F, G being contravariant Functor of A,B st ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds
for f being Morphism of a,b holds F . f = G . f ) holds
FunctorStr(# the ObjectMap of F,the MorphMap of F #) = FunctorStr(# the ObjectMap of G,the MorphMap of G #)

let F, G be contravariant Functor of A,B; :: thesis: ( ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds
for f being Morphism of a,b holds F . f = G . f ) implies FunctorStr(# the ObjectMap of F,the MorphMap of F #) = FunctorStr(# the ObjectMap of G,the MorphMap of G #) )

assume that
A1: for a being object of A holds F . a = G . a and
A2: for a, b being object of A st <^a,b^> <> {} holds
for f being Morphism of a,b holds F . f = G . f ; :: thesis: FunctorStr(# the ObjectMap of F,the MorphMap of F #) = FunctorStr(# the ObjectMap of G,the MorphMap of G #)
the ObjectMap of F is Contravariant by FUNCTOR0:def 14;
then consider ff being Function of the carrier of A,the carrier of B such that
A3: the ObjectMap of F = ~ [:ff,ff:] by FUNCTOR0:def 3;
the ObjectMap of G is Contravariant by FUNCTOR0:def 14;
then consider gg being Function of the carrier of A,the carrier of B such that
A4: the ObjectMap of G = ~ [:gg,gg:] by FUNCTOR0:def 3;
now
let a, b be Element of A; :: thesis: the ObjectMap of F . a,b = the ObjectMap of G . a,b
reconsider x = a, y = b as object of A ;
A5: ( dom ff = the carrier of A & dom gg = the carrier of A ) by FUNCT_2:def 1;
A6: dom [:ff,ff:] = [:the carrier of A,the carrier of A:] by FUNCT_2:def 1;
then A7: ( [b,a] in dom [:ff,ff:] & [a,a] in dom [:ff,ff:] & [b,b] in dom [:ff,ff:] ) by ZFMISC_1:def 2;
dom [:gg,gg:] = [:the carrier of A,the carrier of A:] by FUNCT_2:def 1;
then A8: ( [b,a] in dom [:gg,gg:] & [a,a] in dom [:gg,gg:] & [b,b] in dom [:gg,gg:] ) by ZFMISC_1:def 2;
then ( the ObjectMap of F . x,x = [:ff,ff:] . x,x & the ObjectMap of F . y,y = [:ff,ff:] . y,y & the ObjectMap of G . x,x = [:gg,gg:] . x,x & the ObjectMap of G . y,y = [:gg,gg:] . y,y ) by A3, A4, A6, FUNCT_4:def 2;
then ( the ObjectMap of F . x,x = [(ff . x),(ff . x)] & the ObjectMap of F . y,y = [(ff . y),(ff . y)] & the ObjectMap of G . x,x = [(gg . x),(gg . x)] & the ObjectMap of G . y,y = [(gg . y),(gg . y)] ) by A5, FUNCT_3:def 9;
then A9: ( F . x = ff . x & F . y = ff . y & G . x = gg . x & G . y = gg . y ) by MCART_1:7;
A10: ( F . x = G . x & F . y = G . y ) by A1;
thus the ObjectMap of F . a,b = [:ff,ff:] . b,a by A3, A7, FUNCT_4:def 2
.= [(ff . b),(ff . a)] by A5, FUNCT_3:def 9
.= [:gg,gg:] . b,a by A5, A9, A10, FUNCT_3:def 9
.= the ObjectMap of G . a,b by A4, A8, FUNCT_4:def 2 ; :: thesis: verum
end;
then A11: the ObjectMap of F = the ObjectMap of G by BINOP_1:2;
now
let i be set ; :: thesis: ( i in [:the carrier of A,the carrier of A:] implies the MorphMap of F . i = the MorphMap of G . i )
assume i in [:the carrier of A,the carrier of A:] ; :: thesis: the MorphMap of F . i = the MorphMap of G . i
then consider a, b being set such that
A12: ( a in the carrier of A & b in the carrier of A & i = [a,b] ) by ZFMISC_1:def 2;
reconsider x = a, y = b as object of A by A12;
A13: ( ( <^x,y^> <> {} implies <^(F . y),(F . x)^> <> {} ) & ( <^x,y^> <> {} implies <^(G . y),(G . x)^> <> {} ) ) by FUNCTOR0:def 20;
then A14: ( dom (Morph-Map F,x,y) = <^x,y^> & dom (Morph-Map G,x,y) = <^x,y^> ) by FUNCT_2:def 1;
now
let z be set ; :: thesis: ( z in <^x,y^> implies (Morph-Map F,x,y) . z = (Morph-Map G,x,y) . z )
assume A15: z in <^x,y^> ; :: thesis: (Morph-Map F,x,y) . z = (Morph-Map G,x,y) . z
then reconsider f = z as Morphism of x,y ;
thus (Morph-Map F,x,y) . z = F . f by A13, A15, FUNCTOR0:def 17
.= G . f by A2, A15
.= (Morph-Map G,x,y) . z by A13, A15, FUNCTOR0:def 17 ; :: thesis: verum
end;
hence the MorphMap of F . i = the MorphMap of G . i by A12, A14, FUNCT_1:9; :: thesis: verum
end;
hence FunctorStr(# the ObjectMap of F,the MorphMap of F #) = FunctorStr(# the ObjectMap of G,the MorphMap of G #) by A11, PBOOLE:3; :: thesis: verum