defpred S1[ set , set ] means for x being set holds
( x in $2 iff ex o1, o2 being object of C ex m being Morphism of o1,o2 st
( $1 = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso ) );
set I = the carrier of C;
A1: for i being set st i in [: the carrier of C, the carrier of C:] holds
ex X being set st S1[i,X]
proof
let i be set ; :: thesis: ( i in [: the carrier of C, the carrier of C:] implies ex X being set st S1[i,X] )
assume i in [: the carrier of C, the carrier of C:] ; :: thesis: ex X being set st S1[i,X]
then consider o1, o2 being set such that
A2: ( o1 in the carrier of C & o2 in the carrier of C ) and
A3: i = [o1,o2] by ZFMISC_1:84;
reconsider o1 = o1, o2 = o2 as object of C by A2;
defpred S2[ set ] means ex m being Morphism of o1,o2 st
( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m = $1 & m is iso );
consider X being set such that
A4: for x being set holds
( x in X iff ( x in the Arrows of C . (o1,o2) & S2[x] ) ) from XBOOLE_0:sch 1();
take X ; :: thesis: S1[i,X]
let x be set ; :: thesis: ( x in X iff ex o1, o2 being object of C ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso ) )

thus ( x in X implies ex o1, o2 being object of C ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso ) ) :: thesis: ( ex o1, o2 being object of C ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso ) implies x in X )
proof
assume x in X ; :: thesis: ex o1, o2 being object of C ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso )

then consider m being Morphism of o1,o2 such that
A5: ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m = x & m is iso ) by A4;
take o1 ; :: thesis: ex o2 being object of C ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso )

take o2 ; :: thesis: ex m being Morphism of o1,o2 st
( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso )

take m ; :: thesis: ( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso )
thus ( i = [o1,o2] & <^o1,o2^> <> {} & <^o2,o1^> <> {} & x = m & m is iso ) by A3, A5; :: thesis: verum
end;
given p1, p2 being object of C, m being Morphism of p1,p2 such that A6: i = [p1,p2] and
A7: ( <^p1,p2^> <> {} & <^p2,p1^> <> {} & x = m & m is iso ) ; :: thesis: x in X
( o1 = p1 & o2 = p2 ) by A3, A6, ZFMISC_1:27;
hence x in X by A4, A7; :: thesis: verum
end;
consider Ar being ManySortedSet of [: the carrier of C, the carrier of C:] such that
A8: for i being set st i in [: the carrier of C, the carrier of C:] holds
S1[i,Ar . i] from PBOOLE:sch 3(A1);
defpred S2[ set , set ] means ex p1, p2, p3 being object of C st
( $1 = [p1,p2,p3] & $2 = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] );
A9: for i being set st i in [: the carrier of C, the carrier of C, the carrier of C:] holds
ex j being set st S2[i,j]
proof
let i be set ; :: thesis: ( i in [: the carrier of C, the carrier of C, the carrier of C:] implies ex j being set st S2[i,j] )
assume i in [: the carrier of C, the carrier of C, the carrier of C:] ; :: thesis: ex j being set st S2[i,j]
then consider p1, p2, p3 being set such that
A10: ( p1 in the carrier of C & p2 in the carrier of C & p3 in the carrier of C ) and
A11: i = [p1,p2,p3] by MCART_1:68;
reconsider p1 = p1, p2 = p2, p3 = p3 as object of C by A10;
take ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] ; :: thesis: S2[i,( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):]]
take p1 ; :: thesis: ex p2, p3 being object of C st
( i = [p1,p2,p3] & ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] )

take p2 ; :: thesis: ex p3 being object of C st
( i = [p1,p2,p3] & ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] )

take p3 ; :: thesis: ( i = [p1,p2,p3] & ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] )
thus i = [p1,p2,p3] by A11; :: thesis: ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):]
thus ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] ; :: thesis: verum
end;
consider Co being ManySortedSet of [: the carrier of C, the carrier of C, the carrier of C:] such that
A12: for i being set st i in [: the carrier of C, the carrier of C, the carrier of C:] holds
S2[i,Co . i] from PBOOLE:sch 3(A9);
A13: Ar cc= the Arrows of C
proof
thus [: the carrier of C, the carrier of C:] c= [: the carrier of C, the carrier of C:] ; :: according to ALTCAT_2:def 2 :: thesis: for b1 being set holds
( not b1 in [: the carrier of C, the carrier of C:] or Ar . b1 c= the Arrows of C . b1 )

let i be set ; :: thesis: ( not i in [: the carrier of C, the carrier of C:] or Ar . i c= the Arrows of C . i )
assume A14: i in [: the carrier of C, the carrier of C:] ; :: thesis: Ar . i c= the Arrows of C . i
let q be set ; :: according to TARSKI:def 3 :: thesis: ( not q in Ar . i or q in the Arrows of C . i )
assume q in Ar . i ; :: thesis: q in the Arrows of C . i
then ex p1, p2 being object of C ex m being Morphism of p1,p2 st
( i = [p1,p2] & <^p1,p2^> <> {} & <^p2,p1^> <> {} & q = m & m is iso ) by A8, A14;
hence q in the Arrows of C . i ; :: thesis: verum
end;
Co is ManySortedFunction of {|Ar,Ar|},{|Ar|}
proof
let i be set ; :: according to PBOOLE:def 15 :: thesis: ( not i in [: the carrier of C, the carrier of C, the carrier of C:] or Co . i is M2( bool [:({|Ar,Ar|} . i),({|Ar|} . i):]) )
assume i in [: the carrier of C, the carrier of C, the carrier of C:] ; :: thesis: Co . i is M2( bool [:({|Ar,Ar|} . i),({|Ar|} . i):])
then consider p1, p2, p3 being object of C such that
A15: i = [p1,p2,p3] and
A16: Co . i = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] by A12;
A17: [p1,p2] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then A18: Ar . [p1,p2] c= the Arrows of C . (p1,p2) by A13, ALTCAT_2:def 2;
A19: [p2,p3] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then Ar . [p2,p3] c= the Arrows of C . (p2,p3) by A13, ALTCAT_2:def 2;
then A20: [:(Ar . (p2,p3)),(Ar . (p1,p2)):] c= [:( the Arrows of C . (p2,p3)),( the Arrows of C . (p1,p2)):] by A18, ZFMISC_1:96;
( the Arrows of C . (p1,p3) = {} implies [:( the Arrows of C . (p2,p3)),( the Arrows of C . (p1,p2)):] = {} ) by Lm1;
then reconsider f = Co . i as Function of [:(Ar . (p2,p3)),(Ar . (p1,p2)):],( the Arrows of C . (p1,p3)) by A16, A20, FUNCT_2:32;
A21: Ar . [p1,p2] c= the Arrows of C . [p1,p2] by A13, A17, ALTCAT_2:def 2;
A22: Ar . [p2,p3] c= the Arrows of C . [p2,p3] by A13, A19, ALTCAT_2:def 2;
A23: ( the Arrows of C . (p1,p3) = {} implies [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = {} )
proof
assume A24: the Arrows of C . (p1,p3) = {} ; :: thesis: [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = {}
assume [:(Ar . (p2,p3)),(Ar . (p1,p2)):] <> {} ; :: thesis: contradiction
then consider k being set such that
A25: k in [:(Ar . (p2,p3)),(Ar . (p1,p2)):] by XBOOLE_0:def 1;
consider u1, u2 being set such that
A26: ( u1 in Ar . (p2,p3) & u2 in Ar . (p1,p2) ) and
k = [u1,u2] by A25, ZFMISC_1:def 2;
( u1 in <^p2,p3^> & u2 in <^p1,p2^> ) by A22, A21, A26;
then <^p1,p3^> <> {} by ALTCAT_1:def 2;
hence contradiction by A24; :: thesis: verum
end;
A27: {|Ar|} . (p1,p2,p3) = Ar . (p1,p3) by ALTCAT_1:def 3;
A28: rng f c= {|Ar|} . i
proof
let q be set ; :: according to TARSKI:def 3 :: thesis: ( not q in rng f or q in {|Ar|} . i )
assume q in rng f ; :: thesis: q in {|Ar|} . i
then consider x being set such that
A29: x in dom f and
A30: q = f . x by FUNCT_1:def 3;
A31: dom f = [:(Ar . (p2,p3)),(Ar . (p1,p2)):] by A23, FUNCT_2:def 1;
then consider m1, m2 being set such that
A32: m1 in Ar . (p2,p3) and
A33: m2 in Ar . (p1,p2) and
A34: x = [m1,m2] by A29, ZFMISC_1:84;
[p2,p3] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then consider q2, q3 being object of C, qq being Morphism of q2,q3 such that
A35: [p2,p3] = [q2,q3] and
A36: <^q2,q3^> <> {} and
A37: <^q3,q2^> <> {} and
A38: m1 = qq and
A39: qq is iso by A8, A32;
[p1,p2] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then consider r1, r2 being object of C, rr being Morphism of r1,r2 such that
A40: [p1,p2] = [r1,r2] and
A41: <^r1,r2^> <> {} and
A42: <^r2,r1^> <> {} and
A43: m2 = rr and
A44: rr is iso by A8, A33;
A45: ex o1, o3 being object of C ex m being Morphism of o1,o3 st
( [p1,p3] = [o1,o3] & <^o1,o3^> <> {} & <^o3,o1^> <> {} & q = m & m is iso )
proof
A46: p2 = q2 by A35, ZFMISC_1:27;
then reconsider mm = qq as Morphism of r2,q3 by A40, ZFMISC_1:27;
take r1 ; :: thesis: ex o3 being object of C ex m being Morphism of r1,o3 st
( [p1,p3] = [r1,o3] & <^r1,o3^> <> {} & <^o3,r1^> <> {} & q = m & m is iso )

take q3 ; :: thesis: ex m being Morphism of r1,q3 st
( [p1,p3] = [r1,q3] & <^r1,q3^> <> {} & <^q3,r1^> <> {} & q = m & m is iso )

take mm * rr ; :: thesis: ( [p1,p3] = [r1,q3] & <^r1,q3^> <> {} & <^q3,r1^> <> {} & q = mm * rr & mm * rr is iso )
A47: p1 = r1 by A40, ZFMISC_1:27;
hence [p1,p3] = [r1,q3] by A35, ZFMISC_1:27; :: thesis: ( <^r1,q3^> <> {} & <^q3,r1^> <> {} & q = mm * rr & mm * rr is iso )
A48: r2 = p2 by A40, ZFMISC_1:27;
hence A49: ( <^r1,q3^> <> {} & <^q3,r1^> <> {} ) by A36, A37, A41, A42, A46, ALTCAT_1:def 2; :: thesis: ( q = mm * rr & mm * rr is iso )
A50: p3 = q3 by A35, ZFMISC_1:27;
thus q = ( the Comp of C . (p1,p2,p3)) . (mm,rr) by A16, A29, A30, A31, A34, A38, A43, FUNCT_1:49
.= mm * rr by A35, A36, A41, A48, A47, A50, ALTCAT_1:def 8 ; :: thesis: mm * rr is iso
thus mm * rr is iso by A36, A39, A41, A44, A48, A46, A49, ALTCAT_3:7; :: thesis: verum
end;
[p1,p3] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then q in Ar . [p1,p3] by A8, A45;
hence q in {|Ar|} . i by A15, A27, MULTOP_1:def 1; :: thesis: verum
end;
{|Ar,Ar|} . (p1,p2,p3) = [:(Ar . (p2,p3)),(Ar . (p1,p2)):] by ALTCAT_1:def 4;
then [:(Ar . (p2,p3)),(Ar . (p1,p2)):] = {|Ar,Ar|} . i by A15, MULTOP_1:def 1;
hence Co . i is M2( bool [:({|Ar,Ar|} . i),({|Ar|} . i):]) by A23, A28, FUNCT_2:6; :: thesis: verum
end;
then reconsider Co = Co as BinComp of Ar ;
set IT = AltCatStr(# the carrier of C,Ar,Co #);
set J = the carrier of AltCatStr(# the carrier of C,Ar,Co #);
AltCatStr(# the carrier of C,Ar,Co #) is SubCatStr of C
proof
thus the carrier of AltCatStr(# the carrier of C,Ar,Co #) c= the carrier of C ; :: according to ALTCAT_2:def 11 :: thesis: ( the Arrows of AltCatStr(# the carrier of C,Ar,Co #) cc= the Arrows of C & the Comp of AltCatStr(# the carrier of C,Ar,Co #) cc= the Comp of C )
thus the Arrows of AltCatStr(# the carrier of C,Ar,Co #) cc= the Arrows of C by A13; :: thesis: the Comp of AltCatStr(# the carrier of C,Ar,Co #) cc= the Comp of C
thus [: the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #):] c= [: the carrier of C, the carrier of C, the carrier of C:] ; :: according to ALTCAT_2:def 2 :: thesis: for b1 being set holds
( not b1 in [: the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #):] or the Comp of AltCatStr(# the carrier of C,Ar,Co #) . b1 c= the Comp of C . b1 )

let i be set ; :: thesis: ( not i in [: the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #):] or the Comp of AltCatStr(# the carrier of C,Ar,Co #) . i c= the Comp of C . i )
assume i in [: the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #), the carrier of AltCatStr(# the carrier of C,Ar,Co #):] ; :: thesis: the Comp of AltCatStr(# the carrier of C,Ar,Co #) . i c= the Comp of C . i
then consider p1, p2, p3 being object of C such that
A51: i = [p1,p2,p3] and
A52: Co . i = ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] by A12;
A53: ( the Comp of C . (p1,p2,p3)) | [:(Ar . (p2,p3)),(Ar . (p1,p2)):] c= the Comp of C . (p1,p2,p3) by RELAT_1:59;
let q be set ; :: according to TARSKI:def 3 :: thesis: ( not q in the Comp of AltCatStr(# the carrier of C,Ar,Co #) . i or q in the Comp of C . i )
assume q in the Comp of AltCatStr(# the carrier of C,Ar,Co #) . i ; :: thesis: q in the Comp of C . i
then q in the Comp of C . (p1,p2,p3) by A52, A53;
hence q in the Comp of C . i by A51, MULTOP_1:def 1; :: thesis: verum
end;
then reconsider IT = AltCatStr(# the carrier of C,Ar,Co #) as non empty strict SubCatStr of C ;
IT is transitive
proof
let p1, p2, p3 be object of IT; :: according to ALTCAT_1:def 2 :: thesis: ( <^p1,p2^> = {} or <^p2,p3^> = {} or not <^p1,p3^> = {} )
assume that
A54: <^p1,p2^> <> {} and
A55: <^p2,p3^> <> {} ; :: thesis: not <^p1,p3^> = {}
consider m2 being set such that
A56: m2 in <^p1,p2^> by A54, XBOOLE_0:def 1;
consider m1 being set such that
A57: m1 in <^p2,p3^> by A55, XBOOLE_0:def 1;
[p2,p3] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then consider q2, q3 being object of C, qq being Morphism of q2,q3 such that
A58: [p2,p3] = [q2,q3] and
A59: <^q2,q3^> <> {} and
A60: <^q3,q2^> <> {} and
m1 = qq and
A61: qq is iso by A8, A57;
[p1,p2] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
then consider r1, r2 being object of C, rr being Morphism of r1,r2 such that
A62: [p1,p2] = [r1,r2] and
A63: <^r1,r2^> <> {} and
A64: <^r2,r1^> <> {} and
m2 = rr and
A65: rr is iso by A8, A56;
A66: p2 = q2 by A58, ZFMISC_1:27;
then reconsider mm = qq as Morphism of r2,q3 by A62, ZFMISC_1:27;
A67: r2 = p2 by A62, ZFMISC_1:27;
A68: ex o1, o3 being object of C ex m being Morphism of o1,o3 st
( [p1,p3] = [o1,o3] & <^o1,o3^> <> {} & <^o3,o1^> <> {} & mm * rr = m & m is iso )
proof
take r1 ; :: thesis: ex o3 being object of C ex m being Morphism of r1,o3 st
( [p1,p3] = [r1,o3] & <^r1,o3^> <> {} & <^o3,r1^> <> {} & mm * rr = m & m is iso )

take q3 ; :: thesis: ex m being Morphism of r1,q3 st
( [p1,p3] = [r1,q3] & <^r1,q3^> <> {} & <^q3,r1^> <> {} & mm * rr = m & m is iso )

take mm * rr ; :: thesis: ( [p1,p3] = [r1,q3] & <^r1,q3^> <> {} & <^q3,r1^> <> {} & mm * rr = mm * rr & mm * rr is iso )
p1 = r1 by A62, ZFMISC_1:27;
hence [p1,p3] = [r1,q3] by A58, ZFMISC_1:27; :: thesis: ( <^r1,q3^> <> {} & <^q3,r1^> <> {} & mm * rr = mm * rr & mm * rr is iso )
thus A69: ( <^r1,q3^> <> {} & <^q3,r1^> <> {} ) by A59, A60, A63, A64, A67, A66, ALTCAT_1:def 2; :: thesis: ( mm * rr = mm * rr & mm * rr is iso )
thus mm * rr = mm * rr ; :: thesis: mm * rr is iso
thus mm * rr is iso by A59, A61, A63, A65, A67, A66, A69, ALTCAT_3:7; :: thesis: verum
end;
[p1,p3] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
hence not <^p1,p3^> = {} by A8, A68; :: thesis: verum
end;
then reconsider IT = IT as non empty transitive strict SubCatStr of C ;
take IT ; :: thesis: ( the carrier of IT = the carrier of C & the Arrows of IT cc= the Arrows of C & ( for o1, o2 being object of C
for m being Morphism of o1,o2 holds
( m in the Arrows of IT . (o1,o2) iff ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) ) ) )

thus the carrier of IT = the carrier of C ; :: thesis: ( the Arrows of IT cc= the Arrows of C & ( for o1, o2 being object of C
for m being Morphism of o1,o2 holds
( m in the Arrows of IT . (o1,o2) iff ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) ) ) )

thus the Arrows of IT cc= the Arrows of C by A13; :: thesis: for o1, o2 being object of C
for m being Morphism of o1,o2 holds
( m in the Arrows of IT . (o1,o2) iff ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) )

let o1, o2 be object of C; :: thesis: for m being Morphism of o1,o2 holds
( m in the Arrows of IT . (o1,o2) iff ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) )

let m be Morphism of o1,o2; :: thesis: ( m in the Arrows of IT . (o1,o2) iff ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) )
A70: [o1,o2] in [: the carrier of C, the carrier of C:] by ZFMISC_1:def 2;
thus ( m in the Arrows of IT . (o1,o2) implies ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) ) :: thesis: ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso implies m in the Arrows of IT . (o1,o2) )
proof
assume m in the Arrows of IT . (o1,o2) ; :: thesis: ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso )
then consider p1, p2 being object of C, n being Morphism of p1,p2 such that
A71: [o1,o2] = [p1,p2] and
A72: ( <^p1,p2^> <> {} & <^p2,p1^> <> {} & m = n & n is iso ) by A8, A70;
( o1 = p1 & o2 = p2 ) by A71, ZFMISC_1:27;
hence ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) by A72; :: thesis: verum
end;
assume ( <^o1,o2^> <> {} & <^o2,o1^> <> {} & m is iso ) ; :: thesis: m in the Arrows of IT . (o1,o2)
hence m in the Arrows of IT . (o1,o2) by A8, A70; :: thesis: verum