:: ALTCAT_4 semantic presentation

registration
let c1 be non empty with_units AltCatStr ;
let c2 be object of c1;
cluster <^a2,a2^> -> non empty ;
coherence
not <^c2,c2^> is empty
by ALTCAT_1:23;
end;

theorem E1: :: ALTCAT_4:1
for b1 being category
for b2, b3, b4 being object of b1
for b5 being Morphism of b2,b3
for b6 being Morphism of b2,b4
for b7 being Morphism of b3,b4 holds
( ( b6 = b7 * b5 & (b7 " ) * b7 = idm b3 ) implies ( not <^b2,b3^> <> {} or not <^b3,b4^> <> {} or not <^b4,b3^> <> {} or b5 = (b7 " ) * b6 ) )
proof
let c1 be category;
let c2, c3, c4 be object of c1;
let c5 be Morphism of c2,c3;
let c6 be Morphism of c2,c4;
let c7 be Morphism of c3,c4;
assume that E2: c6 = c7 * c5
and E3: (c7 " ) * c7 = idm c3
and E4: ( <^c2,c3^> <> {} & <^c3,c4^> <> {} & <^c4,c3^> <> {} ) ;
thus (c7 " ) * c6 = ((c7 " ) * c7) * c5 by E2, E4, ALTCAT_1:25
.= c5 by E3, E4, ALTCAT_1:24 ;
end;

theorem E2: :: ALTCAT_4:2
for b1 being category
for b2, b3, b4 being object of b1
for b5 being Morphism of b2,b3
for b6 being Morphism of b4,b3
for b7 being Morphism of b4,b2 holds
( ( b6 = b5 * b7 & b7 * (b7 " ) = idm b2 ) implies ( not <^b4,b2^> <> {} or not <^b2,b4^> <> {} or not <^b2,b3^> <> {} or b5 = b6 * (b7 " ) ) )
proof
let c1 be category;
let c2, c3, c4 be object of c1;
let c5 be Morphism of c2,c3;
let c6 be Morphism of c4,c3;
let c7 be Morphism of c4,c2;
assume that E3: c6 = c5 * c7
and E4: c7 * (c7 " ) = idm c2
and E5: ( <^c4,c2^> <> {} & <^c2,c4^> <> {} & <^c2,c3^> <> {} ) ;
thus c6 * (c7 " ) = c5 * (c7 * (c7 " )) by E3, E5, ALTCAT_1:25
.= c5 by E4, E5, ALTCAT_1:def 19 ;
end;

theorem E3: :: ALTCAT_4:3
for b1 being category
for b2, b3 being object of b1
for b4 being Morphism of b2,b3 holds
( ( b4 is iso ) implies ( not <^b2,b3^> <> {} or not <^b3,b2^> <> {} or b4 " is iso ) )
proof
let c1 be category;
let c2, c3 be object of c1;
let c4 be Morphism of c2,c3;
assume E4: ( <^c2,c3^> <> {} & <^c3,c2^> <> {} ) ;
assume c4 is iso ;
then E5: ( c4 is retraction & c4 is coretraction ) by ALTCAT_3:5;
hence (c4 " ) * ((c4 " ) " ) = (c4 " ) * c4 by E4, ALTCAT_3:3
.= idm c2 by E4, E5, ALTCAT_3:2 ;
:: uses ALTCAT_3:def 5
thus ((c4 " ) " ) * (c4 " ) = c4 * (c4 " ) by E4, E5, ALTCAT_3:3
.= idm c3 by E4, E5, ALTCAT_3:2 ;
end;

theorem E4: :: ALTCAT_4:4
for b1 being non empty with_units AltCatStr
for b2 being object of b1 holds
( idm b2 is epi & idm b2 is mono )
proof
let c1 be non empty with_units AltCatStr ;
let c2 be object of c1;
thus idm c2 is epi
proof
let c3 be object of c1; :: uses ALTCAT_3:def 8
assume E5: <^c2,c3^> <> {} ;
let c4, c5 be Morphism of c2,c3;
assume E6: c4 * (idm c2) = c5 * (idm c2) ;
thus c4 = c4 * (idm c2) by E5, ALTCAT_1:def 19
.= c5 by E5, E6, ALTCAT_1:def 19 ;
end;
let c3 be object of c1; :: uses ALTCAT_3:def 7
assume E5: <^c3,c2^> <> {} ;
let c4, c5 be Morphism of c3,c2;
assume E6: (idm c2) * c4 = (idm c2) * c5 ;
thus c4 = (idm c2) * c4 by E5, ALTCAT_1:24
.= c5 by E5, E6, ALTCAT_1:24 ;
end;

registration
let c1 be non empty with_units AltCatStr ;
let c2 be object of c1;
cluster idm a2 -> retraction coretraction mono epi ;
coherence
( idm c2 is epi & idm c2 is mono & idm c2 is retraction & idm c2 is coretraction )
by E4, ALTCAT_3:1;
end;

registration
let c1 be category;
let c2 be object of c1;
cluster idm a2 -> retraction coretraction iso mono epi ;
coherence
idm c2 is iso
by ALTCAT_3:6;
end;

theorem :: ALTCAT_4:5
for b1 being category
for b2, b3 being object of b1
for b4 being Morphism of b2,b3
for b5, b6 being Morphism of b3,b2 holds
( ( b6 * b4 = idm b2 & b4 * b5 = idm b3 ) implies ( not <^b2,b3^> <> {} or not <^b3,b2^> <> {} or b5 = b6 ) )
proof
let c1 be category;
let c2, c3 be object of c1;
let c4 be Morphism of c2,c3;
let c5, c6 be Morphism of c3,c2;
assume that E5: c6 * c4 = idm c2
and E6: c4 * c5 = idm c3
and E7: ( <^c2,c3^> <> {} & <^c3,c2^> <> {} ) ;
thus c5 = (c6 * c4) * c5 by E5, E7, ALTCAT_1:24
.= c6 * (idm c3) by E6, E7, ALTCAT_1:25
.= c6 by E7, ALTCAT_1:def 19 ;
end;

theorem :: ALTCAT_4:6
for b1 being category holds
( for b2, b3 being object of b1
for b4 being Morphism of b2,b3 holds b4 is coretraction implies for b2, b3 being object of b1
for b4 being Morphism of b2,b3 holds
( ( ) implies ( not <^b2,b3^> <> {} or not <^b3,b2^> <> {} or b4 is iso ) ) )
proof
let c1 be category;
assume E5: for b1, b2 being object of c1
for b3 being Morphism of b1,b2 holds b3 is coretraction ;
let c2, c3 be object of c1;
let c4 be Morphism of c2,c3;
assume E6: ( <^c2,c3^> <> {} & <^c3,c2^> <> {} ) ;
E7: c4 is coretraction by E5;
c4 is retraction
proof
consider c5 being Morphism of c3,c2 such that
E8: c5 is_left_inverse_of c4 by E7, ALTCAT_3:def 3;
take c5 ; :: uses ALTCAT_3:def 2
c5 is coretraction by E5;
then E9: c5 is mono by E6, ALTCAT_3:16;
c5 * (c4 * c5) = (c5 * c4) * c5 by E6, ALTCAT_1:25
.= (idm c2) * c5 by E8, ALTCAT_3:def 1
.= c5 by E6, ALTCAT_1:24
.= c5 * (idm c3) by E6, ALTCAT_1:def 19 ;
hence c4 * c5 = idm c3 by E9, ALTCAT_3:def 7; :: uses ALTCAT_3:def 1
end;
hence c4 is iso by E6, E7, ALTCAT_3:6;
end;

theorem :: ALTCAT_4:7
for b1 being category
for b2, b3 being object of b1
for b4, b5 being Morphism of b2,b3 holds
( ( b4 is _zero & b5 is _zero ) implies ( for b6 being object of b1 holds
not b6 is _zero or b4 = b5 ) )
proof
let c1 be category;
let c2, c3 be object of c1;
let c4, c5 be Morphism of c2,c3;
assume that E5: c4 is _zero
and E6: c5 is _zero ;
given c6 being object of c1 such that E7: c6 is _zero ;
consider c7 being Morphism of c2,c6;
consider c8 being Morphism of c6,c3;
consider c9 being Morphism of c6,c6;
thus c4 = (c8 * ((c9 " ) * c9)) * c7 by E5, E7, ALTCAT_3:def 12
.= c5 by E6, E7, ALTCAT_3:def 12 ;
end;

theorem :: ALTCAT_4:8
for b1 being non empty AltCatStr
for b2, b3 being object of b1
for b4 being Morphism of b2,b3 holds
( b2 is terminal implies b4 is mono )
proof
let c1 be non empty AltCatStr ;
let c2, c3 be object of c1;
let c4 be Morphism of c2,c3;
assume E5: c2 is terminal ;
let c5 be object of c1; :: uses ALTCAT_3:def 7
assume E6: <^c5,c2^> <> {} ;
let c6, c7 be Morphism of c5,c2;
assume c4 * c6 = c4 * c7 ;
consider c8 being Morphism of c5,c2 such that
c8 in <^c5,c2^>
and E7: for b1 being Morphism of c5,c2 holds
( b1 in <^c5,c2^> implies c8 = b1 ) by E5, ALTCAT_3:27;
thus c6 = c8 by E6, E7
.= c7 by E6, E7 ;
end;

theorem :: ALTCAT_4:9
for b1 being non empty AltCatStr
for b2, b3 being object of b1
for b4 being Morphism of b3,b2 holds
( b2 is initial implies b4 is epi )
proof
let c1 be non empty AltCatStr ;
let c2, c3 be object of c1;
let c4 be Morphism of c3,c2;
assume E5: c2 is initial ;
let c5 be object of c1; :: uses ALTCAT_3:def 8
assume E6: <^c2,c5^> <> {} ;
let c6, c7 be Morphism of c2,c5;
assume c6 * c4 = c7 * c4 ;
consider c8 being Morphism of c2,c5 such that
c8 in <^c2,c5^>
and E7: for b1 being Morphism of c2,c5 holds
( b1 in <^c2,c5^> implies c8 = b1 ) by E5, ALTCAT_3:25;
thus c6 = c8 by E6, E7
.= c7 by E6, E7 ;
end;

theorem :: ALTCAT_4:10
for b1 being category
for b2, b3 being object of b1 holds
( ( b2 is terminal & b3,b2 are_iso ) implies ( b3 is terminal ) )
proof
let c1 be category;
let c2, c3 be object of c1;
assume that E5: c2 is terminal
and E6: c3,c2 are_iso ;
for b1 being object of c1 holds
ex b2 being Morphism of b1,c3 st
( b2 in <^b1,c3^> & for b3 being Morphism of b1,c3 holds
( b3 in <^b1,c3^> implies b2 = b3 ) )
proof
let c4 be object of c1;
consider c5 being Morphism of c4,c2 such that
E7: c5 in <^c4,c2^>
and E8: for b1 being Morphism of c4,c2 holds
( b1 in <^c4,c2^> implies c5 = b1 ) by E5, ALTCAT_3:27;
consider c6 being Morphism of c3,c2 such that
E9: c6 is iso by E6, ALTCAT_3:def 6;
E10: (c6 " ) * c6 = idm c3 by E9, ALTCAT_3:def 5;
take (c6 " ) * c5 ;
E11: ( <^c3,c2^> <> {} & <^c2,c3^> <> {} ) by E6, ALTCAT_3:def 6;
then E12: <^c4,c3^> <> {} by E7, ALTCAT_1:def 4;
hence (c6 " ) * c5 in <^c4,c3^> ;
let c7 be Morphism of c4,c3;
assume c7 in <^c4,c3^> ;
c6 * c7 = c5 by E7, E8;
hence (c6 " ) * c5 = c7 by E10, E11, E12, E1;
end;
hence c3 is terminal by ALTCAT_3:27;
end;

theorem :: ALTCAT_4:11
for b1 being category
for b2, b3 being object of b1 holds
( ( b2 is initial & b2,b3 are_iso ) implies ( b3 is initial ) )
proof
let c1 be category;
let c2, c3 be object of c1;
assume that E5: c2 is initial
and E6: c2,c3 are_iso ;
for b1 being object of c1 holds
ex b2 being Morphism of c3,b1 st
( b2 in <^c3,b1^> & for b3 being Morphism of c3,b1 holds
( b3 in <^c3,b1^> implies b2 = b3 ) )
proof
let c4 be object of c1;
consider c5 being Morphism of c2,c4 such that
E7: c5 in <^c2,c4^>
and E8: for b1 being Morphism of c2,c4 holds
( b1 in <^c2,c4^> implies c5 = b1 ) by E5, ALTCAT_3:25;
consider c6 being Morphism of c2,c3 such that
E9: c6 is iso by E6, ALTCAT_3:def 6;
E10: c6 * (c6 " ) = idm c3 by E9, ALTCAT_3:def 5;
take c5 * (c6 " ) ;
E11: ( <^c2,c3^> <> {} & <^c3,c2^> <> {} ) by E6, ALTCAT_3:def 6;
then E12: <^c3,c4^> <> {} by E7, ALTCAT_1:def 4;
hence c5 * (c6 " ) in <^c3,c4^> ;
let c7 be Morphism of c3,c4;
assume c7 in <^c3,c4^> ;
c7 * c6 = c5 by E7, E8;
hence c5 * (c6 " ) = c7 by E10, E11, E12, E2;
end;
hence c3 is initial by ALTCAT_3:25;
end;

theorem :: ALTCAT_4:12
for b1 being category
for b2, b3 being object of b1 holds
( ( b2 is initial & b3 is terminal ) implies ( not <^b3,b2^> <> {} or ( b3 is initial & b2 is terminal ) ) )
proof
let c1 be category;
let c2, c3 be object of c1;
assume that E5: c2 is initial
and E6: c3 is terminal ;
assume <^c3,c2^> <> {} ;
then consider c4 being set such that
E7: c4 in <^c3,c2^> by XBOOLE_0:def 1;
reconsider c5 = c4 as Morphism of c3,c2 by E7;
consider c6 being Morphism of c2,c3 such that
E8: c6 in <^c2,c3^>
and for b1 being Morphism of c2,c3 holds
( b1 in <^c2,c3^> implies c6 = b1 ) by E5, ALTCAT_3:25;
for b1 being object of c1 holds
ex b2 being Morphism of c3,b1 st
( b2 in <^c3,b1^> & for b3 being Morphism of c3,b1 holds
( b3 in <^c3,b1^> implies b2 = b3 ) )
proof
let c7 be object of c1;
consider c8 being Morphism of c2,c7 such that
E9: ( c8 in <^c2,c7^> & for b1 being Morphism of c2,c7 holds
( b1 in <^c2,c7^> implies c8 = b1 ) ) by E5, ALTCAT_3:25;
take c8 * c5 ;
<^c3,c7^> <> {} by E7, E9, ALTCAT_1:def 4;
hence c8 * c5 in <^c3,c7^> ;
let c9 be Morphism of c3,c7;
assume E10: c9 in <^c3,c7^> ;
consider c10 being Morphism of c3,c3 such that
c10 in <^c3,c3^>
and E11: for b1 being Morphism of c3,c3 holds
( b1 in <^c3,c3^> implies c10 = b1 ) by E6, ALTCAT_3:27;
thus c8 * c5 = (c9 * c6) * c5 by E9
.= c9 * (c6 * c5) by E7, E8, E10, ALTCAT_1:25
.= c9 * c10 by E11
.= c9 * (idm c3) by E11
.= c9 by E10, ALTCAT_1:def 19 ;
end;
hence c3 is initial by ALTCAT_3:25;
for b1 being object of c1 holds
ex b2 being Morphism of b1,c2 st
( b2 in <^b1,c2^> & for b3 being Morphism of b1,c2 holds
( b3 in <^b1,c2^> implies b2 = b3 ) )
proof
let c7 be object of c1;
consider c8 being Morphism of c7,c3 such that
E9: ( c8 in <^c7,c3^> & for b1 being Morphism of c7,c3 holds
( b1 in <^c7,c3^> implies c8 = b1 ) ) by E6, ALTCAT_3:27;
take c5 * c8 ;
<^c7,c2^> <> {} by E7, E9, ALTCAT_1:def 4;
hence c5 * c8 in <^c7,c2^> ;
let c9 be Morphism of c7,c2;
assume E10: c9 in <^c7,c2^> ;
consider c10 being Morphism of c2,c2 such that
c10 in <^c2,c2^>
and E11: for b1 being Morphism of c2,c2 holds
( b1 in <^c2,c2^> implies c10 = b1 ) by E5, ALTCAT_3:25;
thus c5 * c8 = c5 * (c6 * c9) by E9
.= (c5 * c6) * c9 by E7, E8, E10, ALTCAT_1:25
.= c10 * c9 by E11
.= (idm c2) * c9 by E11
.= c9 by E10, ALTCAT_1:24 ;
end;
hence c2 is terminal by ALTCAT_3:27;
end;

theorem E5: :: ALTCAT_4:13
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4 being object of b1 holds b3 . (idm b4) = idm (b3 . b4)
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be contravariant Functor of c1,c2;
let c4 be object of c1;
thus c3 . (idm c4) = (Morph-Map c3,c4,c4) . (idm c4) by FUNCTOR0:def 17
.= idm (c3 . c4) by FUNCTOR0:def 21 ;
end;

theorem E6: :: ALTCAT_4:14
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr of b1,b2 holds
( b3 is full iff for b4, b5 being object of b1 holds Morph-Map b3,b5,b4 is onto )
proof
let c1, c2 be non empty AltCatStr ;
let c3 be Contravariant FunctorStr of c1,c2;
set c4 = [:the carrier of c1,the carrier of c1:];
hereby
assume E7: c3 is full ;
let c5, c6 be object of c1;
thus Morph-Map c3,c6,c5 is onto
proof
consider c7 being ManySortedFunction of the Arrows of c1,the Arrows of c2 * the ObjectMap of c3 such that
E8: ( c7 = the MorphMap of c3 & c7 is "onto" ) by E7, FUNCTOR0:def 33;
E9: [c6,c5] in [:the carrier of c1,the carrier of c1:] by ZFMISC_1:106;
E10: the MorphMap of c3 . [c6,c5] = the MorphMap of c3 . c6,c5 by BINOP_1:def 1;
E11: [c6,c5] in dom the ObjectMap of c3 by E9, FUNCT_2:def 1;
rng (c7 . [c6,c5]) = (the Arrows of c2 * the ObjectMap of c3) . [c6,c5] by E8, E9, MSUALG_3:def 3;
hence rng (Morph-Map c3,c6,c5) = (the Arrows of c2 * the ObjectMap of c3) . [c6,c5] by E8, E10
.= the Arrows of c2 . (the ObjectMap of c3 . [c6,c5]) by E11, FUNCT_1:23
.= the Arrows of c2 . (the ObjectMap of c3 . c6,c5) by BINOP_1:def 1
.= the Arrows of c2 . [(c3 . c5),(c3 . c6)] by FUNCTOR0:24
.= the Arrows of c2 . (c3 . c5),(c3 . c6) by BINOP_1:def 1
.= <^(c3 . c5),(c3 . c6)^> ;
:: uses FUNCT_2:def 3
end;
end; assume E7: for b1, b2 being object of c1 holds Morph-Map c3,b2,b1 is onto ;
consider c5 being non empty set , c6 being ManySortedSet of c5, c7 being Function of [:the carrier of c1,the carrier of c1:],c5 such that
E8: the ObjectMap of c3 = c7
and E9: ( the Arrows of c2 = c6 & the MorphMap of c3 is ManySortedFunction of the Arrows of c1,c6 * c7 ) by FUNCTOR0:def 4;
reconsider c8 = the MorphMap of c3 as ManySortedFunction of the Arrows of c1,the Arrows of c2 * the ObjectMap of c3 by E8, E9;
take c8 ; :: uses FUNCTOR0:def 33
thus c8 = the MorphMap of c3 ;
let c9 be set ; :: uses MSUALG_3:def 3
assume c9 in [:the carrier of c1,the carrier of c1:] ;
then consider c10, c11 being set such that
E10: ( c10 in the carrier of c1 & c11 in the carrier of c1 & c9 = [c10,c11] ) by ZFMISC_1:103;
reconsider c12 = c11, c13 = c10 as object of c1 by E10;
E11: [c13,c12] in [:the carrier of c1,the carrier of c1:] by ZFMISC_1:106;
E12: the MorphMap of c3 . [c13,c12] = the MorphMap of c3 . c13,c12 by BINOP_1:def 1;
E13: [c13,c12] in dom the ObjectMap of c3 by E11, FUNCT_2:def 1;
Morph-Map c3,c13,c12 is onto by E7;
then rng (Morph-Map c3,c13,c12) = <^(c3 . c12),(c3 . c13)^> by FUNCT_2:def 3
.= the Arrows of c2 . (c3 . c12),(c3 . c13)
.= the Arrows of c2 . [(c3 . c12),(c3 . c13)] by BINOP_1:def 1
.= the Arrows of c2 . (the ObjectMap of c3 . c13,c12) by FUNCTOR0:24
.= the Arrows of c2 . (the ObjectMap of c3 . [c13,c12]) by BINOP_1:def 1
.= (the Arrows of c2 * the ObjectMap of c3) . [c13,c12] by E13, FUNCT_1:23 ;
hence rng (c8 . c9) = (the Arrows of c2 * the ObjectMap of c3) . c9 by E10, E12;
end;

theorem E7: :: ALTCAT_4:15
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr of b1,b2 holds
( b3 is faithful iff for b4, b5 being object of b1 holds Morph-Map b3,b5,b4 is one-to-one )
proof
let c1, c2 be non empty AltCatStr ;
let c3 be Contravariant FunctorStr of c1,c2;
set c4 = [:the carrier of c1,the carrier of c1:];
hereby
assume E8: c3 is faithful ;
let c5, c6 be object of c1;
E9: the MorphMap of c3 is "1-1" by E8, FUNCTOR0:def 31;
E10: [c6,c5] in [:the carrier of c1,the carrier of c1:] by ZFMISC_1:106;
E11: the MorphMap of c3 . [c6,c5] = the MorphMap of c3 . c6,c5 by BINOP_1:def 1;
reconsider c7 = the MorphMap of c3 . [c6,c5] as Function ;
dom the MorphMap of c3 = [:the carrier of c1,the carrier of c1:] by PBOOLE:def 3;
then c7 is one-to-one by E9, E10, MSUALG_3:def 2;
hence Morph-Map c3,c6,c5 is one-to-one by E11;
end; assume E8: for b1, b2 being object of c1 holds Morph-Map c3,b2,b1 is one-to-one ;
let c5 be set ; :: uses FUNCTOR0:def 31,MSUALG_3:def 2
let c6 be Function;
assume E9: ( c5 in dom the MorphMap of c3 & the MorphMap of c3 . c5 = c6 ) ;
dom the MorphMap of c3 = [:the carrier of c1,the carrier of c1:] by PBOOLE:def 3;
then consider c7, c8 being set such that
E10: ( c7 in the carrier of c1 & c8 in the carrier of c1 & c5 = [c7,c8] ) by E9, ZFMISC_1:103;
reconsider c9 = c7, c10 = c8 as object of c1 by E10;
E11: the MorphMap of c3 . c9,c10 = Morph-Map c3,c9,c10 ;
the MorphMap of c3 . [c9,c10] = the MorphMap of c3 . c9,c10 by BINOP_1:def 1;
hence c6 is one-to-one by E8, E9, E10, E11;
end;

theorem E8: :: ALTCAT_4:16
for b1, b2 being non empty AltCatStr
for b3 being Covariant FunctorStr of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of (b3 . b4),(b3 . b5) holds
not ( <^b4,b5^> <> {} & b3 is full & b3 is feasible & for b7 being Morphism of b4,b5 holds
not b6 = b3 . b7 )
proof
let c1, c2 be non empty AltCatStr ;
let c3 be Covariant FunctorStr of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of (c3 . c4),(c3 . c5);
assume E9: <^c4,c5^> <> {} ;
assume c3 is full ;
then Morph-Map c3,c4,c5 is onto by FUNCTOR1:18;
then E10: rng (Morph-Map c3,c4,c5) = <^(c3 . c4),(c3 . c5)^> by FUNCT_2:def 3;
assume c3 is feasible ;
then E11: <^(c3 . c4),(c3 . c5)^> <> {} by E9, FUNCTOR0:def 19;
then consider c7 being set such that
E12: c7 in dom (Morph-Map c3,c4,c5)
and E13: c6 = (Morph-Map c3,c4,c5) . c7 by E10, FUNCT_1:def 5;
reconsider c8 = c7 as Morphism of c4,c5 by E11, E12, FUNCT_2:def 1;
take c8 ;
thus c6 = c3 . c8 by E9, E11, E13, FUNCTOR0:def 16;
end;

theorem E9: :: ALTCAT_4:17
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of (b3 . b5),(b3 . b4) holds
not ( <^b4,b5^> <> {} & b3 is full & b3 is feasible & for b7 being Morphism of b4,b5 holds
not b6 = b3 . b7 )
proof
let c1, c2 be non empty AltCatStr ;
let c3 be Contravariant FunctorStr of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of (c3 . c5),(c3 . c4);
assume E10: <^c4,c5^> <> {} ;
assume c3 is full ;
then Morph-Map c3,c4,c5 is onto by E6;
then E11: rng (Morph-Map c3,c4,c5) = <^(c3 . c5),(c3 . c4)^> by FUNCT_2:def 3;
assume c3 is feasible ;
then E12: <^(c3 . c5),(c3 . c4)^> <> {} by E10, FUNCTOR0:def 20;
then consider c7 being set such that
E13: c7 in dom (Morph-Map c3,c4,c5)
and E14: c6 = (Morph-Map c3,c4,c5) . c7 by E11, FUNCT_1:def 5;
reconsider c8 = c7 as Morphism of c4,c5 by E12, E13, FUNCT_2:def 1;
take c8 ;
thus c6 = c3 . c8 by E10, E12, E14, FUNCTOR0:def 17;
end;

theorem E10: :: ALTCAT_4:18
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is retraction ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is retraction ) )
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be covariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume E11: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) ;
assume c6 is retraction ;
then consider c7 being Morphism of c5,c4 such that
E12: c7 is_right_inverse_of c6 by ALTCAT_3:def 2;
take c3 . c7 ; :: uses ALTCAT_3:def 2
c6 * c7 = idm c5 by E12, ALTCAT_3:def 1;
hence (c3 . c6) * (c3 . c7) = c3 . (idm c5) by E11, FUNCTOR0:def 24
.= idm (c3 . c5) by FUNCTOR2:2 ;
:: uses ALTCAT_3:def 1
end;

theorem E11: :: ALTCAT_4:19
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is coretraction ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is coretraction ) )
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be covariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume E12: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) ;
assume c6 is coretraction ;
then consider c7 being Morphism of c5,c4 such that
E13: c6 is_right_inverse_of c7 by ALTCAT_3:def 3;
take c3 . c7 ; :: uses ALTCAT_3:def 3
c7 * c6 = idm c4 by E13, ALTCAT_3:def 1;
hence (c3 . c7) * (c3 . c6) = c3 . (idm c4) by E12, FUNCTOR0:def 24
.= idm (c3 . c4) by FUNCTOR2:2 ;
:: uses ALTCAT_3:def 1
end;

theorem E12: :: ALTCAT_4:20
for b1, b2 being category
for b3 being covariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is iso ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is iso ) )
proof
let c1, c2 be category;
let c3 be covariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume that E13: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} )
and E14: c6 is iso ;
E15: ( <^(c3 . c4),(c3 . c5)^> <> {} & <^(c3 . c5),(c3 . c4)^> <> {} ) by E13, FUNCTOR0:def 19;
( c6 is retraction & c6 is coretraction ) by E13, E14, ALTCAT_3:6;
then ( c3 . c6 is retraction & c3 . c6 is coretraction ) by E13, E10, E11;
hence c3 . c6 is iso by E15, ALTCAT_3:6;
end;

theorem :: ALTCAT_4:21
for b1, b2 being category
for b3 being covariant Functor of b1,b2
for b4, b5 being object of b1 holds
( b4,b5 are_iso implies b3 . b4,b3 . b5 are_iso )
proof
let c1, c2 be category;
let c3 be covariant Functor of c1,c2;
let c4, c5 be object of c1;
assume E13: c4,c5 are_iso ;
then E14: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) by ALTCAT_3:def 6;
hence ( <^(c3 . c4),(c3 . c5)^> <> {} & <^(c3 . c5),(c3 . c4)^> <> {} ) by FUNCTOR0:def 19; :: uses ALTCAT_3:def 6
consider c6 being Morphism of c4,c5 such that
E15: c6 is iso by E13, ALTCAT_3:def 6;
take c3 . c6 ;
thus c3 . c6 is iso by E14, E15, E12;
end;

theorem E13: :: ALTCAT_4:22
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is retraction ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is coretraction ) )
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be contravariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume E14: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) ;
assume c6 is retraction ;
then consider c7 being Morphism of c5,c4 such that
E15: c7 is_right_inverse_of c6 by ALTCAT_3:def 2;
take c3 . c7 ; :: uses ALTCAT_3:def 3
c6 * c7 = idm c5 by E15, ALTCAT_3:def 1;
hence (c3 . c7) * (c3 . c6) = c3 . (idm c5) by E14, FUNCTOR0:def 25
.= idm (c3 . c5) by E5 ;
:: uses ALTCAT_3:def 1
end;

theorem E14: :: ALTCAT_4:23
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is coretraction ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is retraction ) )
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be contravariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume E15: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) ;
assume c6 is coretraction ;
then consider c7 being Morphism of c5,c4 such that
E16: c6 is_right_inverse_of c7 by ALTCAT_3:def 3;
take c3 . c7 ; :: uses ALTCAT_3:def 2
c7 * c6 = idm c4 by E16, ALTCAT_3:def 1;
hence (c3 . c6) * (c3 . c7) = c3 . (idm c4) by E15, FUNCTOR0:def 25
.= idm (c3 . c4) by E5 ;
:: uses ALTCAT_3:def 1
end;

theorem E15: :: ALTCAT_4:24
for b1, b2 being category
for b3 being contravariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b6 is iso ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b3 . b6 is iso ) )
proof
let c1, c2 be category;
let c3 be contravariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume that E16: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} )
and E17: c6 is iso ;
E18: ( <^(c3 . c4),(c3 . c5)^> <> {} & <^(c3 . c5),(c3 . c4)^> <> {} ) by E16, FUNCTOR0:def 20;
( c6 is retraction & c6 is coretraction ) by E16, E17, ALTCAT_3:6;
then ( c3 . c6 is retraction & c3 . c6 is coretraction ) by E16, E13, E14;
hence c3 . c6 is iso by E18, ALTCAT_3:6;
end;

theorem :: ALTCAT_4:25
for b1, b2 being category
for b3 being contravariant Functor of b1,b2
for b4, b5 being object of b1 holds
( b4,b5 are_iso implies b3 . b5,b3 . b4 are_iso )
proof
let c1, c2 be category;
let c3 be contravariant Functor of c1,c2;
let c4, c5 be object of c1;
assume E16: c4,c5 are_iso ;
then E17: ( <^c4,c5^> <> {} & <^c5,c4^> <> {} ) by ALTCAT_3:def 6;
hence ( <^(c3 . c5),(c3 . c4)^> <> {} & <^(c3 . c4),(c3 . c5)^> <> {} ) by FUNCTOR0:def 20; :: uses ALTCAT_3:def 6
consider c6 being Morphism of c4,c5 such that
E18: c6 is iso by E16, ALTCAT_3:def 6;
take c3 . c6 ;
thus c3 . c6 is iso by E17, E18, E15;
end;

theorem E16: :: ALTCAT_4:26
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being object of b1
for b6 being Morphism of b4,b5 holds
( ( b3 is full & b3 is faithful & b3 . b6 is retraction ) implies ( not <^b4,b5^> <> {} or not <^b5,b4^> <> {} or b6 is retraction ) )
proof
let c1, c2 be non empty transitive with_units AltCatStr ;
let c3 be covariant Functor of c1,c2;
let c4, c5 be object of c1;
let c6 be Morphism of c4,c5;
assume that E17: ( c3 is full & c3 is faithful )
and E18: <^c4,c5^> <> {}
and E19: <^c5,c4^> <> {} ;
assume c3 . c6 is retraction ;
then consider c7 being Morphism of (c3 . c5),(c3 . c4) such that
E20: c7 is_right_inverse_of c3 . c6 by ALTCAT_3:def 2;
E21: (c3 . c6) * c7 = idm (c3 . c5) by E20, ALTCAT_3:def 1;