set M = { [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } ;
consider a0 being Element of F1();
consider f0 being Element of F2() such that
A4: ( P1[a0,a0,f0] & ( for b being Element of F1()
for g being Element of F2() holds
( ( P1[a0,b,g] implies F3(g,f0) = g ) & ( P1[b,a0,g] implies F3(f0,g) = g ) ) ) ) by A2;
A5: [[a0,a0],f0] in { [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } by A4;
{ [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } c= [:[:F1(),F1():],F2():]
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in { [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } or x in [:[:F1(),F1():],F2():] )
assume x in { [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } ; :: thesis: x in [:[:F1(),F1():],F2():]
then ex a, b being Element of F1() ex f being Element of F2() st
( x = [[a,b],f] & P1[a,b,f] ) ;
hence x in [:[:F1(),F1():],F2():] ; :: thesis: verum
end;
then reconsider M = { [[a,b],f] where a, b is Element of F1(), f is Element of F2() : P1[a,b,f] } as non empty Subset of [:[:F1(),F1():],F2():] by A5;
A6: now
let m be Element of M; :: thesis: ( m = [[(m `11 ),(m `12 )],(m `2 )] & P1[m `11 ,m `12 ,m `2 ] )
m in M ;
then consider a, b being Element of F1(), f being Element of F2() such that
A7: ( m = [[a,b],f] & P1[a,b,f] ) ;
( m `11 = a & m `12 = b & m `2 = f ) by A7, MCART_1:7, MCART_1:89;
hence ( m = [[(m `11 ),(m `12 )],(m `2 )] & P1[m `11 ,m `12 ,m `2 ] ) by A7; :: thesis: verum
end;
deffunc H1( Element of M) -> Element of F1() = $1 `11 ;
consider DM being Function of M,F1() such that
A8: for m being Element of M holds DM . m = H1(m) from FUNCT_2:sch 4();
deffunc H2( Element of M) -> Element of F1() = $1 `12 ;
consider CM being Function of M,F1() such that
A9: for m being Element of M holds CM . m = H2(m) from FUNCT_2:sch 4();
deffunc H3( set , set ) -> set = [[($2 `11 ),($1 `12 )],F3(($1 `2 ),($2 `2 ))];
defpred S1[ set , set ] means ( $1 `11 = $2 `12 & $1 in M & $2 in M );
A10: now
let x, y be set ; :: thesis: ( S1[x,y] implies H3(x,y) in M )
assume A11: S1[x,y] ; :: thesis: H3(x,y) in M
then consider ax, bx being Element of F1(), fx being Element of F2() such that
A12: ( x = [[ax,bx],fx] & P1[ax,bx,fx] ) ;
consider ay, b2 being Element of F1(), fy being Element of F2() such that
A13: ( y = [[ay,b2],fy] & P1[ay,b2,fy] ) by A11;
A14: ( x `11 = ax & x `12 = bx & y `11 = ay & y `12 = b2 & x `2 = fx & y `2 = fy ) by A12, A13, MCART_1:7, MCART_1:89;
then ( F3(fx,fy) in F2() & P1[ay,bx,F3(fx,fy)] ) by A1, A11, A12, A13;
hence H3(x,y) in M by A14; :: thesis: verum
end;
consider CC being PartFunc of [:M,M:],M such that
A15: for x, y being set holds
( [x,y] in dom CC iff ( x in M & y in M & S1[x,y] ) ) and
A16: for x, y being set st [x,y] in dom CC holds
CC . x,y = H3(x,y) from BINOP_1:sch 6(A10);
defpred S2[ Element of F1(), set ] means ex f being Element of F2() st
( $2 = [[$1,$1],f] & P1[$1,$1,f] & ( for b being Element of F1()
for g being Element of F2() holds
( ( P1[$1,b,g] implies F3(g,f) = g ) & ( P1[b,$1,g] implies F3(f,g) = g ) ) ) );
A17: now
let a be Element of F1(); :: thesis: ex y being Element of M st S2[a,y]
consider f being Element of F2() such that
A18: ( P1[a,a,f] & ( for b being Element of F1()
for g being Element of F2() holds
( ( P1[a,b,g] implies F3(g,f) = g ) & ( P1[b,a,g] implies F3(f,g) = g ) ) ) ) by A2;
[[a,a],f] in M by A18;
then reconsider y = [[a,a],f] as Element of M ;
take y = y; :: thesis: S2[a,y]
thus S2[a,y] by A18; :: thesis: verum
end;
consider I being Function of F1(),M such that
A19: for o being Element of F1() holds S2[o,I . o] from FUNCT_2:sch 3(A17);
set C = CatStr(# F1(),M,DM,CM,CC,I #);
CatStr(# F1(),M,DM,CM,CC,I #) is Category-like
proof
hereby :: according to CAT_1:def 8 :: thesis: ( ( for b1, b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 or ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,b1) = the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b1 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,b1) = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 ) ) ) & ( for b1, b2, b3 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b3 = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 or not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b3,(the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,b1) = the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b3,b2),b1 ) ) & ( for b1 being Element of the carrier of CatStr(# F1(),M,DM,CM,CC,I #) holds
( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1),b2 = b2 ) ) & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b2 ) ) ) ) )
let f, g be Morphism of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( [g,f] in dom the Comp of CatStr(# F1(),M,DM,CM,CC,I #) iff the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f )
( ( [g,f] in dom CC implies ( g in M & f in M & g `11 = f `12 & g in M & f in M ) ) & ( g in M & f in M & g `11 = f `12 & g in M & f in M implies [g,f] in dom CC ) & DM . g = g `11 & CM . f = f `12 ) by A8, A9, A15;
hence ( [g,f] in dom the Comp of CatStr(# F1(),M,DM,CM,CC,I #) iff the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f ) ; :: thesis: verum
end;
hereby :: thesis: ( ( for b1, b2, b3 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b3 = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 or not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b3,(the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,b1) = the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b3,b2),b1 ) ) & ( for b1 being Element of the carrier of CatStr(# F1(),M,DM,CM,CC,I #) holds
( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1),b2 = b2 ) ) & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b2 ) ) ) ) )
let f, g be Morphism of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f implies ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g ) )
A20: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f = f `11 & the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = g `11 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f = f `12 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g = g `12 ) by A8, A9;
assume the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f ; :: thesis: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g )
then [g,f] in dom CC by A15, A20;
then ( CC . g,f = [[(f `11 ),(g `12 )],F3((g `2 ),(f `2 ))] & CC . g,f in rng CC & rng CC c= M ) by A16, FUNCT_1:def 5;
then ( (CC . [g,f]) `11 = f `11 & (CC . [g,f]) `12 = g `12 & CC . [g,f] in M ) by MCART_1:89;
hence ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g ) by A8, A9, A20; :: thesis: verum
end;
hereby :: thesis: for b1 being Element of the carrier of CatStr(# F1(),M,DM,CM,CC,I #) holds
( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b1 & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1),b2 = b2 ) ) & ( for b2 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b2 = b1 or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b2,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b1) = b2 ) ) )
let f, g, h be Morphism of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . h = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g & the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f implies the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,(the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,g),f )
A21: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f = f `11 & the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = g `11 & the Source of CatStr(# F1(),M,DM,CM,CC,I #) . h = h `11 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . h = h `12 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f = f `12 & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g = g `12 ) by A8, A9;
assume A22: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . h = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . g & the Source of CatStr(# F1(),M,DM,CM,CC,I #) . g = the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f ) ; :: thesis: the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,(the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,g),f
then A23: ( [g,f] in dom CC & [h,g] in dom CC ) by A15, A21;
then ( CC . [g,f] in rng CC & CC . [h,g] in rng CC & rng CC c= M ) by FUNCT_1:def 5;
then reconsider gf = CC . g,f, hg = CC . h,g as Element of M ;
A24: ( gf = [[(f `11 ),(g `12 )],F3((g `2 ),(f `2 ))] & hg = [[(g `11 ),(h `12 )],F3((h `2 ),(g `2 ))] ) by A16, A23;
A25: ( DM . gf = gf `11 & DM . hg = hg `11 & CM . gf = gf `12 & CM . hg = hg `12 ) by A8, A9;
then A26: ( DM . gf = f `11 & DM . hg = g `11 & CM . gf = g `12 & CM . hg = h `12 ) by A24, MCART_1:89;
then A27: ( [h,gf] in dom CC & [hg,f] in dom CC ) by A15, A21, A22, A25;
reconsider f' = f, g' = g, h' = h as Element of M ;
A28: ( P1[f' `11 ,f' `12 ,f' `2 ] & P1[g' `11 ,g' `12 ,g' `2 ] & P1[h' `11 ,h' `12 ,h' `2 ] ) by A6;
thus the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,(the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . g,f) = [[(f `11 ),(h `12 )],F3((h `2 ),(gf `2 ))] by A16, A25, A26, A27
.= [[(f `11 ),(h `12 )],F3((h' `2 ),F3((g' `2 ),(f' `2 )))] by A24, MCART_1:7
.= [[(f `11 ),(h `12 )],F3(F3((h' `2 ),(g' `2 )),(f' `2 ))] by A3, A21, A22, A28
.= [[(f `11 ),(h `12 )],F3((hg `2 ),(f `2 ))] by A24, MCART_1:7
.= the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . h,g),f by A16, A25, A26, A27 ; :: thesis: verum
end;
let b be Object of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b & the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b & ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),b1 = b1 ) ) & ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b1,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b1 ) ) )

consider f being Element of F2() such that
A29: ( I . b = [[b,b],f] & P1[b,b,f] & ( for c being Element of F1()
for g being Element of F2() holds
( ( P1[b,c,g] implies F3(g,f) = g ) & ( P1[c,b,g] implies F3(f,g) = g ) ) ) ) by A19;
reconsider b' = b as Element of F1() ;
reconsider Ib = I . b' as Element of M ;
thus the Source of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = (I . b) `11 by A8
.= b by A29, MCART_1:89 ; :: thesis: ( the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b & ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),b1 = b1 ) ) & ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b1,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b1 ) ) )

thus the Target of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = (I . b) `12 by A9
.= b by A29, MCART_1:89 ; :: thesis: ( ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Target of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),b1 = b1 ) ) & ( for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b1,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b1 ) ) )

hereby :: thesis: for b1 being Element of the carrier' of CatStr(# F1(),M,DM,CM,CC,I #) holds
( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . b1 = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . b1,(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = b1 )
let f' be Morphism of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f' = b implies the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),f' = f' )
reconsider g = f' as Element of M ;
assume the Target of CatStr(# F1(),M,DM,CM,CC,I #) . f' = b ; :: thesis: the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),f' = f'
then A30: ( g `12 = b & Ib `11 = b ) by A9, A29, MCART_1:89;
then ( P1[g `11 ,b,g `2 ] & [Ib,g] in dom CC & Ib `12 = b & Ib `2 = f ) by A6, A15, A29, MCART_1:7, MCART_1:89;
then ( F3(f,(g `2 )) = g `2 & CC . Ib,g = [[(g `11 ),b],F3(f,(g `2 ))] ) by A16, A29;
hence the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . (the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b),f' = f' by A6, A30; :: thesis: verum
end;
let f' be Morphism of CatStr(# F1(),M,DM,CM,CC,I #); :: thesis: ( not the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f' = b or the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . f',(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = f' )
reconsider g = f' as Element of M ;
assume the Source of CatStr(# F1(),M,DM,CM,CC,I #) . f' = b ; :: thesis: the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . f',(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = f'
then A31: ( g `11 = b & Ib `12 = b ) by A8, A29, MCART_1:89;
then ( P1[b,g `12 ,g `2 ] & [g,Ib] in dom CC & Ib `11 = b & Ib `2 = f ) by A6, A15, A29, MCART_1:7, MCART_1:89;
then ( F3((g `2 ),f) = g `2 & CC . g,Ib = [[b,(g `12 )],F3((g `2 ),f)] ) by A16, A29;
hence the Comp of CatStr(# F1(),M,DM,CM,CC,I #) . f',(the Id of CatStr(# F1(),M,DM,CM,CC,I #) . b) = f' by A6, A31; :: thesis: verum
end;
then reconsider C = CatStr(# F1(),M,DM,CM,CC,I #) as strict Category ;
C is with_triple-like_morphisms
proof
let f be Morphism of C; :: according to CAT_5:def 1 :: thesis: ex x being set st f = [[(dom f),(cod f)],x]
f in M ;
then consider a, b being Element of F1(), g being Element of F2() such that
A32: ( f = [[a,b],g] & P1[a,b,g] ) ;
take g ; :: thesis: f = [[(dom f),(cod f)],g]
A33: dom f = f `11 by A8
.= a by A32, MCART_1:89 ;
cod f = f `12 by A9
.= b by A32, MCART_1:89 ;
hence f = [[(dom f),(cod f)],g] by A32, A33; :: thesis: verum
end;
then reconsider C = C as strict with_triple-like_morphisms Category ;
take C ; :: thesis: ( the carrier of C = F1() & ( for a, b being Element of F1()
for f being Element of F2() st P1[a,b,f] holds
[[a,b],f] is Morphism of C ) & ( for m being Morphism of C ex a, b being Element of F1() ex f being Element of F2() st
( m = [[a,b],f] & P1[a,b,f] ) ) & ( for m1, m2 being Morphism of C
for a1, a2, a3 being Element of F1()
for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)] ) )

thus the carrier of C = F1() ; :: thesis: ( ( for a, b being Element of F1()
for f being Element of F2() st P1[a,b,f] holds
[[a,b],f] is Morphism of C ) & ( for m being Morphism of C ex a, b being Element of F1() ex f being Element of F2() st
( m = [[a,b],f] & P1[a,b,f] ) ) & ( for m1, m2 being Morphism of C
for a1, a2, a3 being Element of F1()
for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)] ) )

hereby :: thesis: ( ( for m being Morphism of C ex a, b being Element of F1() ex f being Element of F2() st
( m = [[a,b],f] & P1[a,b,f] ) ) & ( for m1, m2 being Morphism of C
for a1, a2, a3 being Element of F1()
for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)] ) )
let a, b be Element of F1(); :: thesis: for f being Element of F2() st P1[a,b,f] holds
[[a,b],f] is Morphism of C

let f be Element of F2(); :: thesis: ( P1[a,b,f] implies [[a,b],f] is Morphism of C )
assume P1[a,b,f] ; :: thesis: [[a,b],f] is Morphism of C
then [[a,b],f] in M ;
hence [[a,b],f] is Morphism of C ; :: thesis: verum
end;
hereby :: thesis: for m1, m2 being Morphism of C
for a1, a2, a3 being Element of F1()
for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)]
let m be Morphism of C; :: thesis: ex a, b being Element of F1() ex f being Element of F2() st
( m = [[a,b],f] & P1[a,b,f] )

m in M ;
hence ex a, b being Element of F1() ex f being Element of F2() st
( m = [[a,b],f] & P1[a,b,f] ) ; :: thesis: verum
end;
let m1, m2 be Morphism of C; :: thesis: for a1, a2, a3 being Element of F1()
for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)]

let a1, a2, a3 be Element of F1(); :: thesis: for f1, f2 being Element of F2() st m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] holds
m2 * m1 = [[a1,a3],F3(f2,f1)]

let f1, f2 be Element of F2(); :: thesis: ( m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] implies m2 * m1 = [[a1,a3],F3(f2,f1)] )
assume A34: ( m1 = [[a1,a2],f1] & m2 = [[a2,a3],f2] ) ; :: thesis: m2 * m1 = [[a1,a3],F3(f2,f1)]
then A35: ( m1 `11 = a1 & m1 `12 = a2 & m2 `11 = a2 & m2 `12 = a3 ) by MCART_1:89;
then A36: [m2,m1] in dom CC by A15;
hence m2 * m1 = CC . m2,m1 by CAT_1:def 4
.= [[a1,a3],F3((m2 `2 ),(m1 `2 ))] by A16, A35, A36
.= [[a1,a3],F3(f2,(m1 `2 ))] by A34, MCART_1:7
.= [[a1,a3],F3(f2,f1)] by A34, MCART_1:7 ;
:: thesis: verum