let A, B be non empty transitive with_units AltCatStr ; :: thesis: for F being feasible FunctorStr over A,B st F is bijective & F is Contravariant holds
F " is Contravariant

let F be feasible FunctorStr over A,B; :: thesis: ( F is bijective & F is Contravariant implies F " is Contravariant )
assume A1: ( F is bijective & F is Contravariant ) ; :: thesis: F " is Contravariant
then F is injective ;
then F is one-to-one ;
then A2: the ObjectMap of F is one-to-one ;
F is surjective by A1;
then F is onto ;
then A3: the ObjectMap of F is onto ;
the ObjectMap of F is Contravariant by A1;
then consider f being Function of the carrier of A, the carrier of B such that
A4: the ObjectMap of F = ~ [:f,f:] ;
[:f,f:] is one-to-one by A2, A4, Th9;
then A5: f is one-to-one by Th7;
then A6: dom (f ") = rng f by FUNCT_1:33;
A7: rng (f ") = dom f by A5, FUNCT_1:33;
[:f,f:] is onto by A3, A4, Th13;
then A8: rng [:f,f:] = [: the carrier of B, the carrier of B:] ;
rng [:f,f:] = [:(rng f),(rng f):] by FUNCT_3:67;
then rng f = the carrier of B by A8, ZFMISC_1:92;
then reconsider g = f " as Function of the carrier of B, the carrier of A by A6, A7, FUNCT_2:def 1, RELSET_1:4;
take g ; :: according to FUNCTOR0:def 2,FUNCTOR0:def 13 :: thesis: the ObjectMap of (F ") = ~ [:g,g:]
A9: [:f,f:] " = [:g,g:] by A5, Th6;
thus the ObjectMap of (F ") = the ObjectMap of F " by A1, Def38
.= ~ [:g,g:] by A4, A5, A9, Th10 ; :: thesis: verum