let A be non empty AltCatStr ; :: thesis: for B being non empty SubCatStr of A holds
( B is full iff incl B is full )

let B be non empty SubCatStr of A; :: thesis: ( B is full iff incl B is full )
hereby :: thesis: ( incl B is full implies B is full )
ex I29 being non empty set ex B9 being ManySortedSet of I29 ex f9 being Function of [:the carrier of B,the carrier of B:],I29 st
( the ObjectMap of (incl B) = f9 & the Arrows of A = B9 & the MorphMap of (incl B) is ManySortedFunction of the Arrows of B,B9 * f9 ) by FUNCTOR0:def 4;
then reconsider f = the MorphMap of (incl B) as ManySortedFunction of the Arrows of B,the Arrows of A * the ObjectMap of (incl B) ;
set I = [:the carrier of B,the carrier of B:];
( the carrier of B c= the carrier of A & dom the Arrows of A = [:the carrier of A,the carrier of A:] ) by ALTCAT_2:def 11, PARTFUN1:def 4;
then A1: (dom the Arrows of A) /\ [:the carrier of B,the carrier of B:] = [:the carrier of B,the carrier of B:] by XBOOLE_1:28, ZFMISC_1:119;
assume A2: B is full ; :: thesis: incl B is full
f is "onto"
proof
let i be set ; :: according to MSUALG_3:def 3 :: thesis: ( not i in [:the carrier of B,the carrier of B:] or proj2 (f . i) = (the Arrows of A * the ObjectMap of (incl B)) . i )
assume A3: i in [:the carrier of B,the carrier of B:] ; :: thesis: proj2 (f . i) = (the Arrows of A * the ObjectMap of (incl B)) . i
the Arrows of B = the Arrows of A || the carrier of B by A2, ALTCAT_2:def 13;
then A4: the Arrows of B . i = the Arrows of A . i by A3, FUNCT_1:72;
rng (f . i) = rng ((id the Arrows of B) . i) by FUNCTOR0:def 29
.= rng (id (the Arrows of B . i)) by A3, MSUALG_3:def 1
.= the Arrows of A . i by A4, RELAT_1:71
.= (the Arrows of A * (id [:the carrier of B,the carrier of B:])) . i by A1, A3, FUNCT_1:38
.= (the Arrows of A * the ObjectMap of (incl B)) . i by FUNCTOR0:def 29 ;
hence proj2 (f . i) = (the Arrows of A * the ObjectMap of (incl B)) . i ; :: thesis: verum
end;
hence incl B is full by FUNCTOR0:def 33; :: thesis: verum
end;
set I = [:the carrier of B,the carrier of B:];
A5: the carrier of B c= the carrier of A by ALTCAT_2:def 11;
then A6: [:the carrier of B,the carrier of B:] c= [:the carrier of A,the carrier of A:] by ZFMISC_1:119;
dom the Arrows of A = [:the carrier of A,the carrier of A:] by PARTFUN1:def 4;
then A7: (dom the Arrows of A) /\ [:the carrier of B,the carrier of B:] = [:the carrier of B,the carrier of B:] by A5, XBOOLE_1:28, ZFMISC_1:119;
then dom (the Arrows of A | [:the carrier of B,the carrier of B:]) = [:the carrier of B,the carrier of B:] by RELAT_1:90;
then reconsider XX = the Arrows of A || the carrier of B as ManySortedSet of [:the carrier of B,the carrier of B:] by PARTFUN1:def 4;
assume A8: incl B is full ; :: thesis: B is full
A9: XX c= the Arrows of B
proof
let i be set ; :: according to PBOOLE:def 5 :: thesis: ( not i in [:the carrier of B,the carrier of B:] or XX . i c= the Arrows of B . i )
assume A10: i in [:the carrier of B,the carrier of B:] ; :: thesis: XX . i c= the Arrows of B . i
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in XX . i or x in the Arrows of B . i )
assume A11: x in XX . i ; :: thesis: x in the Arrows of B . i
x in the Arrows of B . i
proof
consider f being ManySortedFunction of the Arrows of B,the Arrows of A * the ObjectMap of (incl B) such that
A12: f = the MorphMap of (incl B) and
A13: f is "onto" by A8, FUNCTOR0:def 33;
f = id the Arrows of B by A12, FUNCTOR0:def 29;
then A14: rng ((id the Arrows of B) . i) = (the Arrows of A * the ObjectMap of (incl B)) . i by A10, A13, MSUALG_3:def 3
.= (the Arrows of A * (id [:the carrier of B,the carrier of B:])) . i by FUNCTOR0:def 29
.= the Arrows of A . i by A7, A10, FUNCT_1:38 ;
consider y, z being set such that
y in the carrier of A and
z in the carrier of A and
A15: i = [y,z] by A6, A10, ZFMISC_1:103;
( y in the carrier of B & z in the carrier of B ) by A10, A15, ZFMISC_1:106;
then A16: XX . y,z = the Arrows of A . y,z by A5, ALTCAT_1:7;
rng ((id the Arrows of B) . i) = rng (id (the Arrows of B . i)) by A10, MSUALG_3:def 1
.= the Arrows of B . i by RELAT_1:71 ;
hence x in the Arrows of B . i by A11, A15, A16, A14; :: thesis: verum
end;
hence x in the Arrows of B . i ; :: thesis: verum
end;
the Arrows of B c= XX
proof
let i be set ; :: according to PBOOLE:def 5 :: thesis: ( not i in [:the carrier of B,the carrier of B:] or the Arrows of B . i c= XX . i )
assume A17: i in [:the carrier of B,the carrier of B:] ; :: thesis: the Arrows of B . i c= XX . i
then consider y, z being set such that
y in the carrier of A and
z in the carrier of A and
A18: i = [y,z] by A6, ZFMISC_1:103;
( y in the carrier of B & z in the carrier of B ) by A17, A18, ZFMISC_1:106;
then A19: XX . y,z = the Arrows of A . y,z by A5, ALTCAT_1:7;
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in the Arrows of B . i or x in XX . i )
assume A20: x in the Arrows of B . i ; :: thesis: x in XX . i
the Arrows of B cc= the Arrows of A by ALTCAT_2:def 11;
then the Arrows of B . y,z c= the Arrows of A . y,z by A17, A18, ALTCAT_2:def 2;
hence x in XX . i by A18, A20, A19; :: thesis: verum
end;
hence the Arrows of B = the Arrows of A || the carrier of B by A9, PBOOLE:def 13; :: according to ALTCAT_2:def 13 :: thesis: verum