:: COMMACAT semantic presentation begin deffunc H1( CatStr ) -> set = the carrier of $1; deffunc H2( CatStr ) -> set = the carrier' of $1; definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; given c1 being Object of C, d1 being Object of D, f1 being Morphism of E such that A1: f1 in Hom ((F . c1),(G . d1)) ; func commaObjs (F,G) -> non empty Subset of [:[: the carrier of C, the carrier of D:], the carrier' of E:] equals :Def1: :: COMMACAT:def 1 { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } ; coherence { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } is non empty Subset of [:[: the carrier of C, the carrier of D:], the carrier' of E:] proof A2: { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } c= [:[: the carrier of C, the carrier of D:], the carrier' of E:] proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } or x in [:[: the carrier of C, the carrier of D:], the carrier' of E:] ) assume x in { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } ; ::_thesis: x in [:[: the carrier of C, the carrier of D:], the carrier' of E:] then ex c being Object of C ex d being Object of D ex f being Morphism of E st ( x = [[c,d],f] & f in Hom ((F . c),(G . d)) ) ; hence x in [:[: the carrier of C, the carrier of D:], the carrier' of E:] ; ::_thesis: verum end; [[c1,d1],f1] in { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } by A1; hence { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } is non empty Subset of [:[: the carrier of C, the carrier of D:], the carrier' of E:] by A2; ::_thesis: verum end; end; :: deftheorem Def1 defines commaObjs COMMACAT:def_1_:_ for C, D, E being Category for F being Functor of C,E for G being Functor of D,E st ex c1 being Object of C ex d1 being Object of D ex f1 being Morphism of E st f1 in Hom ((F . c1),(G . d1)) holds commaObjs (F,G) = { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } ; theorem Th1: :: COMMACAT:1 for C, D, E being Category for F being Functor of C,E for G being Functor of D,E for o being Element of commaObjs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) proof let C, D, E be Category; ::_thesis: for F being Functor of C,E for G being Functor of D,E for o being Element of commaObjs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) let F be Functor of C,E; ::_thesis: for G being Functor of D,E for o being Element of commaObjs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) let G be Functor of D,E; ::_thesis: for o being Element of commaObjs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) let o be Element of commaObjs (F,G); ::_thesis: ( ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) implies ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) ) assume ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) ; ::_thesis: ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) then A1: commaObjs (F,G) = { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } by Def1; o in commaObjs (F,G) ; then consider c being Object of C, d being Object of D, f being Morphism of E such that A2: o = [[c,d],f] and A3: f in Hom ((F . c),(G . d)) by A1; A4: o `2 = f by A2, MCART_1:7; ( o `11 = c & o `12 = d ) by A2, MCART_1:85; hence ( o = [[(o `11),(o `12)],(o `2)] & o `2 in Hom ((F . (o `11)),(G . (o `12))) & dom (o `2) = F . (o `11) & cod (o `2) = G . (o `12) ) by A2, A3, A4, CAT_1:1; ::_thesis: verum end; definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; given c1 being Object of C, d1 being Object of D, f1 being Morphism of E such that A1: f1 in Hom ((F . c1),(G . d1)) ; func commaMorphs (F,G) -> non empty Subset of [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] equals :Def2: :: COMMACAT:def 2 { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } ; coherence { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } is non empty Subset of [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] proof commaObjs (F,G) = { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } by A1, Def1; then [[c1,d1],f1] in commaObjs (F,G) by A1; then reconsider o = [[c1,d1],f1] as Element of commaObjs (F,G) ; set X = { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } ; A2: ( dom (id d1) = d1 & cod (id d1) = d1 ) ; A3: ( (o `1) `1 = o `11 & (o `1) `2 = o `12 ) by MCART_1:def_14, MCART_1:def_15; A4: { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } c= [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } or x in [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] ) assume x in { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } ; ::_thesis: x in [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] then ex g being Morphism of C ex h being Morphism of D ex o1, o2 being Element of commaObjs (F,G) st ( x = [[o1,o2],[g,h]] & dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) ; hence x in [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] ; ::_thesis: verum end; A5: ( [c1,d1] `2 = d1 & o `2 = f1 ) by MCART_1:7; A6: ( o `1 = [c1,d1] & [c1,d1] `1 = c1 ) by MCART_1:7; cod f1 = G . d1 by A1, CAT_1:1; then A7: (id (G . d1)) (*) f1 = f1 by CAT_1:21; dom f1 = F . c1 by A1, CAT_1:1; then A8: f1 (*) (id (F . c1)) = f1 by CAT_1:22; A9: ( F . (id c1) = id (F . c1) & G . (id d1) = id (G . d1) ) by CAT_1:71; ( dom (id c1) = c1 & cod (id c1) = c1 ) ; then [[o,o],[(id c1),(id d1)]] in { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } by A2, A3, A6, A5, A8, A7, A9; hence { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } is non empty Subset of [:[:(commaObjs (F,G)),(commaObjs (F,G)):],[: the carrier' of C, the carrier' of D:]:] by A4; ::_thesis: verum end; end; :: deftheorem Def2 defines commaMorphs COMMACAT:def_2_:_ for C, D, E being Category for F being Functor of C,E for G being Functor of D,E st ex c1 being Object of C ex d1 being Object of D ex f1 being Morphism of E st f1 in Hom ((F . c1),(G . d1)) holds commaMorphs (F,G) = { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } ; definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; let k be Element of commaMorphs (F,G); :: original: `11 redefine funck `11 -> Element of commaObjs (F,G); coherence k `11 is Element of commaObjs (F,G) proof thus k `11 is Element of commaObjs (F,G) ; ::_thesis: verum end; :: original: `12 redefine funck `12 -> Element of commaObjs (F,G); coherence k `12 is Element of commaObjs (F,G) proof thus k `12 is Element of commaObjs (F,G) ; ::_thesis: verum end; end; theorem Th2: :: COMMACAT:2 for C, D, E being Category for F being Functor of C,E for G being Functor of D,E for k being Element of commaMorphs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) proof let C, D, E be Category; ::_thesis: for F being Functor of C,E for G being Functor of D,E for k being Element of commaMorphs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) let F be Functor of C,E; ::_thesis: for G being Functor of D,E for k being Element of commaMorphs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) let G be Functor of D,E; ::_thesis: for k being Element of commaMorphs (F,G) st ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) holds ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) let k be Element of commaMorphs (F,G); ::_thesis: ( ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) implies ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) ) assume ex c being Object of C ex d being Object of D ex f being Morphism of E st f in Hom ((F . c),(G . d)) ; ::_thesis: ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) then A1: commaMorphs (F,G) = { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } by Def2; k in commaMorphs (F,G) ; then consider g being Morphism of C, h being Morphism of D, o1, o2 being Element of commaObjs (F,G) such that A2: k = [[o1,o2],[g,h]] and A3: ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) by A1; A4: k `21 = g by A2, MCART_1:85; ( k `11 = o1 & k `12 = o2 ) by A2, MCART_1:85; hence ( k = [[(k `11),(k `12)],[(k `21),(k `22)]] & dom (k `21) = (k `11) `11 & cod (k `21) = (k `12) `11 & dom (k `22) = (k `11) `12 & cod (k `22) = (k `12) `12 & ((k `12) `2) (*) (F . (k `21)) = (G . (k `22)) (*) ((k `11) `2) ) by A2, A3, A4, MCART_1:85; ::_thesis: verum end; definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; let k1, k2 be Element of commaMorphs (F,G); given c1 being Object of C, d1 being Object of D, f1 being Morphism of E such that A1: f1 in Hom ((F . c1),(G . d1)) ; assume A2: k1 `12 = k2 `11 ; funck2 * k1 -> Element of commaMorphs (F,G) equals :Def3: :: COMMACAT:def 3 [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]]; coherence [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] is Element of commaMorphs (F,G) proof set k22 = (k2 `22) (*) (k1 `22); set k21 = (k2 `21) (*) (k1 `21); A3: ( F . (cod (k2 `21)) = cod (F . (k2 `21)) & dom (F . (k2 `21)) = F . (dom (k2 `21)) ) by CAT_1:72; A4: cod (F . (k1 `21)) = F . (cod (k1 `21)) by CAT_1:72; A5: cod ((k1 `12) `2) = G . ((k1 `12) `12) by A1, Th1; A6: dom (k1 `22) = (k1 `11) `12 by A1, Th2; A7: ( ((k2 `12) `2) (*) (F . (k2 `21)) = (G . (k2 `22)) (*) ((k2 `11) `2) & dom ((k2 `12) `2) = F . ((k2 `12) `11) ) by A1, Th1, Th2; A8: cod (G . (k1 `22)) = G . (cod (k1 `22)) by CAT_1:72; A9: ( ((k1 `12) `2) (*) (F . (k1 `21)) = (G . (k1 `22)) (*) ((k1 `11) `2) & dom ((k1 `12) `2) = F . ((k1 `12) `11) ) by A1, Th1, Th2; A10: dom (G . (k2 `22)) = G . (dom (k2 `22)) by CAT_1:72; A11: ( cod ((k1 `11) `2) = G . ((k1 `11) `12) & dom (G . (k1 `22)) = G . (dom (k1 `22)) ) by A1, Th1, CAT_1:72; A12: cod (k2 `21) = (k2 `12) `11 by A1, Th2; A13: commaMorphs (F,G) = { [[o1,o2],[g,h]] where g is Morphism of C, h is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g = o1 `11 & cod g = o2 `11 & dom h = o1 `12 & cod h = o2 `12 & (o2 `2) (*) (F . g) = (G . h) (*) (o1 `2) ) } by A1, Def2; A14: dom (k2 `22) = (k2 `11) `12 by A1, Th2; A15: cod (k1 `22) = (k1 `12) `12 by A1, Th2; then A16: ( dom ((k2 `22) (*) (k1 `22)) = dom (k1 `22) & cod ((k2 `22) (*) (k1 `22)) = cod (k2 `22) ) by A2, A14, CAT_1:17; A17: ( dom (k1 `21) = (k1 `11) `11 & cod (k2 `22) = (k2 `12) `12 ) by A1, Th2; A18: cod (k1 `21) = (k1 `12) `11 by A1, Th2; A19: dom (k2 `21) = (k2 `11) `11 by A1, Th2; then A20: ( dom ((k2 `21) (*) (k1 `21)) = dom (k1 `21) & cod ((k2 `21) (*) (k1 `21)) = cod (k2 `21) ) by A2, A18, CAT_1:17; ((k2 `12) `2) (*) (F . ((k2 `21) (*) (k1 `21))) = ((k2 `12) `2) (*) ((F . (k2 `21)) (*) (F . (k1 `21))) by A2, A18, A19, CAT_1:64 .= ((G . (k2 `22)) (*) ((k2 `11) `2)) (*) (F . (k1 `21)) by A2, A18, A19, A12, A7, A3, A4, CAT_1:18 .= (G . (k2 `22)) (*) ((G . (k1 `22)) (*) ((k1 `11) `2)) by A2, A18, A14, A9, A5, A4, A10, CAT_1:18 .= ((G . (k2 `22)) (*) (G . (k1 `22))) (*) ((k1 `11) `2) by A2, A6, A15, A14, A10, A11, A8, CAT_1:18 .= (G . ((k2 `22) (*) (k1 `22))) (*) ((k1 `11) `2) by A2, A15, A14, CAT_1:64 ; then [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] in commaMorphs (F,G) by A6, A12, A17, A13, A20, A16; hence [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] is Element of commaMorphs (F,G) ; ::_thesis: verum end; end; :: deftheorem Def3 defines * COMMACAT:def_3_:_ for C, D, E being Category for F being Functor of C,E for G being Functor of D,E for k1, k2 being Element of commaMorphs (F,G) st ex c1 being Object of C ex d1 being Object of D ex f1 being Morphism of E st f1 in Hom ((F . c1),(G . d1)) & k1 `12 = k2 `11 holds k2 * k1 = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]]; definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; func commaComp (F,G) -> PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)) means :Def4: :: COMMACAT:def 4 ( dom it = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom it holds it . [k,k9] = k * k9 ) ); existence ex b1 being PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)) st ( dom b1 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom b1 holds b1 . [k,k9] = k * k9 ) ) proof defpred S1[ set , set ] means ex k1, k2 being Element of commaMorphs (F,G) st ( $1 = [k1,k2] & $2 = k1 * k2 ); set X = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } ; A1: for x being set st x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } holds ex y being set st S1[x,y] proof let x be set ; ::_thesis: ( x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } implies ex y being set st S1[x,y] ) assume x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } ; ::_thesis: ex y being set st S1[x,y] then consider k1, k2 being Element of commaMorphs (F,G) such that A2: x = [k1,k2] and k1 `11 = k2 `12 ; reconsider y = k1 * k2 as set ; take y ; ::_thesis: S1[x,y] take k1 ; ::_thesis: ex k2 being Element of commaMorphs (F,G) st ( x = [k1,k2] & y = k1 * k2 ) take k2 ; ::_thesis: ( x = [k1,k2] & y = k1 * k2 ) thus ( x = [k1,k2] & y = k1 * k2 ) by A2; ::_thesis: verum end; consider f being Function such that A3: ( dom f = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for x being set st x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } holds S1[x,f . x] ) ) from CLASSES1:sch_1(A1); A4: rng f c= commaMorphs (F,G) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in rng f or x in commaMorphs (F,G) ) assume x in rng f ; ::_thesis: x in commaMorphs (F,G) then consider y being set such that A5: y in dom f and A6: x = f . y by FUNCT_1:def_3; ex k1, k2 being Element of commaMorphs (F,G) st ( y = [k1,k2] & f . y = k1 * k2 ) by A3, A5; hence x in commaMorphs (F,G) by A6; ::_thesis: verum end; dom f c= [:(commaMorphs (F,G)),(commaMorphs (F,G)):] proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in dom f or x in [:(commaMorphs (F,G)),(commaMorphs (F,G)):] ) assume x in dom f ; ::_thesis: x in [:(commaMorphs (F,G)),(commaMorphs (F,G)):] then ex k1, k2 being Element of commaMorphs (F,G) st ( x = [k1,k2] & k1 `11 = k2 `12 ) by A3; hence x in [:(commaMorphs (F,G)),(commaMorphs (F,G)):] ; ::_thesis: verum end; then reconsider f = f as PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)) by A4, RELSET_1:4; take f ; ::_thesis: ( dom f = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f holds f . [k,k9] = k * k9 ) ) thus dom f = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } by A3; ::_thesis: for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f holds f . [k,k9] = k * k9 let k1, k2 be Element of commaMorphs (F,G); ::_thesis: ( [k1,k2] in dom f implies f . [k1,k2] = k1 * k2 ) assume [k1,k2] in dom f ; ::_thesis: f . [k1,k2] = k1 * k2 then consider k, k9 being Element of commaMorphs (F,G) such that A7: [k1,k2] = [k,k9] and A8: f . [k1,k2] = k * k9 by A3; k1 = k by A7, XTUPLE_0:1; hence f . [k1,k2] = k1 * k2 by A7, A8, XTUPLE_0:1; ::_thesis: verum end; uniqueness for b1, b2 being PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)) st dom b1 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom b1 holds b1 . [k,k9] = k * k9 ) & dom b2 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom b2 holds b2 . [k,k9] = k * k9 ) holds b1 = b2 proof let f1, f2 be PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)); ::_thesis: ( dom f1 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f1 holds f1 . [k,k9] = k * k9 ) & dom f2 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f2 holds f2 . [k,k9] = k * k9 ) implies f1 = f2 ) assume that A9: ( dom f1 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f1 holds f1 . [k,k9] = k * k9 ) ) and A10: ( dom f2 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom f2 holds f2 . [k,k9] = k * k9 ) ) ; ::_thesis: f1 = f2 now__::_thesis:_for_x_being_set_st_x_in__{__[k1,k2]_where_k1,_k2_is_Element_of_commaMorphs_(F,G)_:_k1_`11_=_k2_`12__}__holds_ f1_._x_=_f2_._x let x be set ; ::_thesis: ( x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } implies f1 . x = f2 . x ) assume A11: x in { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } ; ::_thesis: f1 . x = f2 . x then consider k1, k2 being Element of commaMorphs (F,G) such that A12: x = [k1,k2] and k1 `11 = k2 `12 ; thus f1 . x = k1 * k2 by A9, A11, A12 .= f2 . x by A10, A11, A12 ; ::_thesis: verum end; hence f1 = f2 by A9, A10, FUNCT_1:2; ::_thesis: verum end; end; :: deftheorem Def4 defines commaComp COMMACAT:def_4_:_ for C, D, E being Category for F being Functor of C,E for G being Functor of D,E for b6 being PartFunc of [:(commaMorphs (F,G)),(commaMorphs (F,G)):],(commaMorphs (F,G)) holds ( b6 = commaComp (F,G) iff ( dom b6 = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } & ( for k, k9 being Element of commaMorphs (F,G) st [k,k9] in dom b6 holds b6 . [k,k9] = k * k9 ) ) ); definition let C, D, E be Category; let F be Functor of C,E; let G be Functor of D,E; given c1 being Object of C, d1 being Object of D, f1 being Morphism of E such that A1: f1 in Hom ((F . c1),(G . d1)) ; funcF comma G -> strict Category means :: COMMACAT:def 5 ( the carrier of it = commaObjs (F,G) & the carrier' of it = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of it . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of it . k = k `12 ) & the Comp of it = commaComp (F,G) ); existence ex b1 being strict Category st ( the carrier of b1 = commaObjs (F,G) & the carrier' of b1 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of b1 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of b1 . k = k `12 ) & the Comp of b1 = commaComp (F,G) ) proof reconsider O = commaObjs (F,G), M = commaMorphs (F,G) as non empty set ; defpred S1[ Element of commaObjs (F,G), set ] means $2 = [[$1,$1],[(id ($1 `11)),(id ($1 `12))]]; deffunc H3( Element of commaMorphs (F,G)) -> Element of commaObjs (F,G) = $1 `12 ; deffunc H4( Element of commaMorphs (F,G)) -> Element of commaObjs (F,G) = $1 `11 ; consider D9 being Function of (commaMorphs (F,G)),(commaObjs (F,G)) such that A2: for k being Element of commaMorphs (F,G) holds D9 . k = H4(k) from FUNCT_2:sch_4(); set I = the Function of (commaObjs (F,G)),(commaMorphs (F,G)); reconsider I = the Function of (commaObjs (F,G)),(commaMorphs (F,G)) as Function of O,M ; reconsider a9 = commaComp (F,G) as PartFunc of [:M,M:],M ; consider C9 being Function of (commaMorphs (F,G)),(commaObjs (F,G)) such that A3: for k being Element of commaMorphs (F,G) holds C9 . k = H3(k) from FUNCT_2:sch_4(); reconsider D9 = D9, C9 = C9 as Function of M,O ; set FG = CatStr(# O,M,D9,C9,a9 #); A4: dom the Comp of CatStr(# O,M,D9,C9,a9 #) = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } by Def4; A5: for f, g being Morphism of CatStr(# O,M,D9,C9,a9 #) for k1, k2 being Element of commaMorphs (F,G) st f = k1 & g = k2 & dom g = cod f holds g (*) f = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] proof let f, g be Morphism of CatStr(# O,M,D9,C9,a9 #); ::_thesis: for k1, k2 being Element of commaMorphs (F,G) st f = k1 & g = k2 & dom g = cod f holds g (*) f = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] let k1, k2 be Element of commaMorphs (F,G); ::_thesis: ( f = k1 & g = k2 & dom g = cod f implies g (*) f = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] ) assume that A6: ( f = k1 & g = k2 ) and A7: dom g = cod f ; ::_thesis: g (*) f = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] A8: ( dom g = k2 `11 & cod f = k1 `12 ) by A2, A3, A6; then A9: [k2,k1] in dom a9 by A4, A7; then A10: a9 . (k2,k1) = k2 * k1 by Def4; g (*) f = a9 . (g,f) by A6, A9, CAT_1:def_1; hence g (*) f = [[(k1 `11),(k2 `12)],[((k2 `21) (*) (k1 `21)),((k2 `22) (*) (k1 `22))]] by A1, A6, A7, A8, A10, Def3; ::_thesis: verum end; A11: for b being Element of CatStr(# O,M,D9,C9,a9 #) holds Hom (b,b) <> {} proof let b be Element of CatStr(# O,M,D9,C9,a9 #); ::_thesis: Hom (b,b) <> {} reconsider o = b as Element of commaObjs (F,G) ; set i = [[o,o],[(id (o `11)),(id (o `12))]]; reconsider g = id (o `11) as Morphism of C ; reconsider h = id (o `12) as Morphism of D ; A12: dom g = o `11 by CAT_1:58; A13: cod g = o `11 by CAT_1:58; A14: dom h = o `12 by CAT_1:58; A15: cod h = o `12 by CAT_1:58; o in commaObjs (F,G) ; then o in { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } by A1, Def1; then consider c being Object of C, d being Object of D, f being Morphism of E such that A16: o = [[c,d],f] and A17: f in Hom ((F . c),(G . d)) ; A18: F . g = id (F . (o `11)) by CAT_1:71; A19: G . h = id (G . (o `12)) by CAT_1:71; A20: [[c,d],f] `2 = f ; A21: c = o `11 by A16, MCART_1:85; A22: d = o `12 by A16, MCART_1:85; A23: cod (o `2) = cod f by A20, A16 .= G . d by A17, CAT_1:1 .= G . (o `12) by A22 ; dom (o `2) = F . c by A16, A17, CAT_1:1, A20 .= F . (o `11) by A21 ; then A24: (o `2) (*) (F . g) = o `2 by A18, CAT_1:22 .= (G . h) (*) (o `2) by A19, A23, CAT_1:21 ; [[o,o],[(id (o `11)),(id (o `12))]] in { [[o1,o2],[gg,hh]] where gg is Morphism of C, hh is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom gg = o1 `11 & cod gg = o2 `11 & dom hh = o1 `12 & cod hh = o2 `12 & (o2 `2) (*) (F . gg) = (G . hh) (*) (o1 `2) ) } by A12, A13, A14, A15, A24; then [[o,o],[(id (o `11)),(id (o `12))]] in commaMorphs (F,G) by Def2, A1; then reconsider i = [[o,o],[(id (o `11)),(id (o `12))]] as Morphism of CatStr(# O,M,D9,C9,a9 #) ; A25: cod i = C9 . i .= [[o,o],[g,h]] `12 by A3 .= b by MCART_1:85 ; dom i = D9 . i .= [[o,o],[g,h]] `11 by A2 .= b by MCART_1:85 ; then i in Hom (b,b) by A25; hence Hom (b,b) <> {} ; ::_thesis: verum end; A26: for a being Element of CatStr(# O,M,D9,C9,a9 #) ex i being Morphism of a,a st for b being Element of CatStr(# O,M,D9,C9,a9 #) holds ( ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) i = g ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) ) proof let a be Element of CatStr(# O,M,D9,C9,a9 #); ::_thesis: ex i being Morphism of a,a st for b being Element of CatStr(# O,M,D9,C9,a9 #) holds ( ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) i = g ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) ) reconsider o = a as Element of commaObjs (F,G) ; set i = [[o,o],[(id (o `11)),(id (o `12))]]; reconsider g = id (o `11) as Morphism of C ; reconsider h = id (o `12) as Morphism of D ; A27: dom g = o `11 by CAT_1:58; A28: cod g = o `11 by CAT_1:58; A29: dom h = o `12 by CAT_1:58; A30: cod h = o `12 by CAT_1:58; o in commaObjs (F,G) ; then o in { [[c,d],f] where c is Object of C, d is Object of D, f is Morphism of E : f in Hom ((F . c),(G . d)) } by A1, Def1; then consider c being Object of C, d being Object of D, f being Morphism of E such that A31: o = [[c,d],f] and A32: f in Hom ((F . c),(G . d)) ; A33: F . g = id (F . (o `11)) by CAT_1:71; A34: G . h = id (G . (o `12)) by CAT_1:71; A35: [[c,d],f] `2 = f ; A36: c = o `11 by A31, MCART_1:85; A37: d = o `12 by A31, MCART_1:85; A38: cod (o `2) = cod f by A35, A31 .= G . d by A32, CAT_1:1 .= G . (o `12) by A37 ; dom (o `2) = F . c by A31, A32, CAT_1:1, A35 .= F . (o `11) by A36 ; then A39: (o `2) (*) (F . g) = o `2 by A33, CAT_1:22 .= (G . h) (*) (o `2) by A34, A38, CAT_1:21 ; [[o,o],[(id (o `11)),(id (o `12))]] in { [[o1,o2],[gg,hh]] where gg is Morphism of C, hh is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom gg = o1 `11 & cod gg = o2 `11 & dom hh = o1 `12 & cod hh = o2 `12 & (o2 `2) (*) (F . gg) = (G . hh) (*) (o1 `2) ) } by A27, A28, A29, A30, A39; then [[o,o],[(id (o `11)),(id (o `12))]] in commaMorphs (F,G) by Def2, A1; then reconsider i = [[o,o],[(id (o `11)),(id (o `12))]] as Morphism of CatStr(# O,M,D9,C9,a9 #) ; A40: cod i = C9 . i .= [[o,o],[g,h]] `12 by A3 .= a by MCART_1:85 ; dom i = D9 . i .= [[o,o],[g,h]] `11 by A2 .= a by MCART_1:85 ; then i in Hom (a,a) by A40; then reconsider i = i as Morphism of a,a by CAT_1:def_5; take i ; ::_thesis: for b being Element of CatStr(# O,M,D9,C9,a9 #) holds ( ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) i = g ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) ) let b be Element of CatStr(# O,M,D9,C9,a9 #); ::_thesis: ( ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) i = g ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) ) thus ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) i = g ) ::_thesis: ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) proof assume A41: Hom (a,b) <> {} ; ::_thesis: for g being Morphism of a,b holds g (*) i = g let g be Morphism of a,b; ::_thesis: g (*) i = g reconsider gg = g as Element of commaMorphs (F,G) ; reconsider ii = i as Element of commaMorphs (F,G) ; A42: commaMorphs (F,G) = { [[o1,o2],[g1,h1]] where g1 is Morphism of C, h1 is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g1 = o1 `11 & cod g1 = o2 `11 & dom h1 = o1 `12 & cod h1 = o2 `12 & (o2 `2) (*) (F . g1) = (G . h1) (*) (o1 `2) ) } by A1, Def2; gg in commaMorphs (F,G) ; then consider g1 being Morphism of C, h1 being Morphism of D, o1, o2 being Element of commaObjs (F,G) such that A43: gg = [[o1,o2],[g1,h1]] and A44: dom g1 = o1 `11 and cod g1 = o2 `11 and A45: dom h1 = o1 `12 and ( cod h1 = o2 `12 & (o2 `2) (*) (F . g1) = (G . h1) (*) (o1 `2) ) by A42; A46: dom (commaComp (F,G)) = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } by Def4; A47: ii `21 = [[o,o],[(id (o `11)),(id (o `12))]] `21 .= id (o `11) by MCART_1:85 ; A48: ii `22 = [[o,o],[(id (o `11)),(id (o `12))]] `22 .= id (o `12) by MCART_1:85 ; A49: o1 = [[o1,o2],[g1,h1]] `11 by MCART_1:85 .= gg `11 by A43 ; A50: o2 = [[o1,o2],[g1,h1]] `12 by MCART_1:85 .= gg `12 by A43 ; A51: g1 = [[o1,o2],[g1,h1]] `21 by MCART_1:85 .= gg `21 by A43 ; A52: h1 = [[o1,o2],[g1,h1]] `22 by MCART_1:85 .= gg `22 by A43 ; A53: dom g = a by A41, CAT_1:5; A54: dom g = gg `11 by A2 .= [[o1,o2],[g1,h1]] `11 by A43 .= o1 by MCART_1:85 ; A55: o1 = a by A41, CAT_1:5, A54 .= [[c,d],f] by A31 ; A56: dom (gg `21) = dom ([[o1,o2],[g1,h1]] `21) by A43 .= dom g1 by MCART_1:85 .= o1 `11 by A44 .= [[c,d],f] `11 by A55 .= o `11 by A31 ; A57: dom (gg `22) = dom ([[o1,o2],[g1,h1]] `22) by A43 .= dom h1 by MCART_1:85 .= o1 `12 by A45 .= [[c,d],f] `12 by A55 .= o `12 by A31 ; A58: ii `11 = [[o,o],[(id (o `11)),(id (o `12))]] `11 .= dom g by A53, MCART_1:85 .= D9 . gg .= gg `11 by A2 ; A59: ii `11 = o by MCART_1:85 .= ii `12 by MCART_1:85 ; then gg `11 = ii `12 by A58; then A60: [gg,ii] in dom (commaComp (F,G)) by A46; hence g (*) i = (commaComp (F,G)) . (g,i) by CAT_1:def_1 .= gg * ii by A60, Def4 .= [[(gg `11),(gg `12)],[((gg `21) (*) (id (o `11))),((gg `22) (*) (ii `22))]] by A1, A59, Def3, A58, A47 .= [[(gg `11),(gg `12)],[(gg `21),((gg `22) (*) (ii `22))]] by A56, CAT_1:22 .= [[(gg `11),(gg `12)],[(gg `21),(gg `22)]] by CAT_1:22, A48, A57 .= g by A49, A50, A51, A52, A43 ; ::_thesis: verum end; thus ( Hom (b,a) <> {} implies for f being Morphism of b,a holds i (*) f = f ) ::_thesis: verum proof assume A61: Hom (b,a) <> {} ; ::_thesis: for f being Morphism of b,a holds i (*) f = f let g be Morphism of b,a; ::_thesis: i (*) g = g reconsider gg = g as Element of commaMorphs (F,G) ; reconsider ii = i as Element of commaMorphs (F,G) ; A62: commaMorphs (F,G) = { [[o1,o2],[g1,h1]] where g1 is Morphism of C, h1 is Morphism of D, o1, o2 is Element of commaObjs (F,G) : ( dom g1 = o1 `11 & cod g1 = o2 `11 & dom h1 = o1 `12 & cod h1 = o2 `12 & (o2 `2) (*) (F . g1) = (G . h1) (*) (o1 `2) ) } by A1, Def2; gg in commaMorphs (F,G) ; then consider g1 being Morphism of C, h1 being Morphism of D, o1, o2 being Element of commaObjs (F,G) such that A63: gg = [[o1,o2],[g1,h1]] and dom g1 = o1 `11 and A64: cod g1 = o2 `11 and dom h1 = o1 `12 and A65: cod h1 = o2 `12 and (o2 `2) (*) (F . g1) = (G . h1) (*) (o1 `2) by A62; A66: dom (commaComp (F,G)) = { [k1,k2] where k1, k2 is Element of commaMorphs (F,G) : k1 `11 = k2 `12 } by Def4; A67: ii `21 = [[o,o],[(id (o `11)),(id (o `12))]] `21 .= id (o `11) by MCART_1:85 ; A68: ii `22 = [[o,o],[(id (o `11)),(id (o `12))]] `22 .= id (o `12) by MCART_1:85 ; A69: o1 = [[o1,o2],[g1,h1]] `11 by MCART_1:85 .= gg `11 by A63 ; A70: o2 = [[o1,o2],[g1,h1]] `12 by MCART_1:85 .= gg `12 by A63 ; A71: g1 = [[o1,o2],[g1,h1]] `21 by MCART_1:85 .= gg `21 by A63 ; A72: h1 = [[o1,o2],[g1,h1]] `22 by MCART_1:85 .= gg `22 by A63 ; A73: cod g = a by A61, CAT_1:5; A74: cod g = gg `12 by A3 .= [[o1,o2],[g1,h1]] `12 by A63 .= o2 by MCART_1:85 ; A75: o2 = a by A61, CAT_1:5, A74 .= [[c,d],f] by A31 ; A76: cod (gg `21) = cod ([[o1,o2],[g1,h1]] `21) by A63 .= cod g1 by MCART_1:85 .= o2 `11 by A64 .= [[c,d],f] `11 by A75 .= o `11 by A31 ; A77: cod (gg `22) = cod ([[o1,o2],[g1,h1]] `22) by A63 .= cod h1 by MCART_1:85 .= o2 `12 by A65 .= [[c,d],f] `12 by A75 .= o `12 by A31 ; A78: ii `11 = [[o,o],[(id (o `11)),(id (o `12))]] `11 .= cod g by A73, MCART_1:85 .= C9 . gg .= gg `12 by A3 ; A79: ii `11 = o by MCART_1:85 .= ii `12 by MCART_1:85 ; gg `12 = ii `11 by A78; then A80: [ii,gg] in dom (commaComp (F,G)) by A66; hence i (*) g = (commaComp (F,G)) . (i,g) by CAT_1:def_1 .= ii * gg by A80, Def4 .= [[(gg `11),(gg `12)],[((ii `21) (*) (gg `21)),((ii `22) (*) (gg `22))]] by A1, A79, Def3, A78 .= [[(gg `11),(gg `12)],[(gg `21),((ii `22) (*) (gg `22))]] by A76, CAT_1:21, A67 .= [[(gg `11),(gg `12)],[(gg `21),(gg `22)]] by CAT_1:21, A68, A77 .= g by A69, A70, A71, A72, A63 ; ::_thesis: verum end; end; A81: for f, g being Morphism of CatStr(# O,M,D9,C9,a9 #) st dom g = cod f holds ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) proof let f, g be Morphism of CatStr(# O,M,D9,C9,a9 #); ::_thesis: ( dom g = cod f implies ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) ) assume A82: dom g = cod f ; ::_thesis: ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) reconsider f1 = f, g1 = g as Element of commaMorphs (F,G) ; A83: ( dom g = g1 `11 & cod f = f1 `12 ) by A2, A3; then [g1,f1] in dom a9 by A4, A82; then A84: ( g (*) f = a9 . (g,f) & a9 . (g1,f1) = g1 * f1 ) by Def4, CAT_1:def_1; A85: ( dom f = f `11 & cod g = g `12 ) by A2, A3; A86: ( dom (g (*) f) = (g (*) f) `11 & cod (g (*) f) = (g (*) f) `12 ) by A2, A3; g1 * f1 = [[(f1 `11),(g1 `12)],[((g1 `21) (*) (f1 `21)),((g1 `22) (*) (f1 `22))]] by A1, A82, A83, Def3; hence ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) by A86, A85, A84, MCART_1:85; ::_thesis: verum end; A87: for f, g, h being Morphism of CatStr(# O,M,D9,C9,a9 #) st dom h = cod g & dom g = cod f holds h (*) (g (*) f) = (h (*) g) (*) f proof let f, g, h be Morphism of CatStr(# O,M,D9,C9,a9 #); ::_thesis: ( dom h = cod g & dom g = cod f implies h (*) (g (*) f) = (h (*) g) (*) f ) reconsider f1 = f, g1 = g, h1 = h, gf = g (*) f, hg = h (*) g as Element of commaMorphs (F,G) ; assume that A88: dom h = cod g and A89: dom g = cod f ; ::_thesis: h (*) (g (*) f) = (h (*) g) (*) f A90: ( dom g = g `11 & cod g = g `12 ) by A2, A3; dom (h (*) g) = dom g by A81, A88; then A91: (h (*) g) (*) f = [[(f `11),(hg `12)],[((hg `21) (*) (f1 `21)),((hg `22) (*) (f1 `22))]] by A5, A89; A92: ( dom h = h `11 & cod f = f `12 ) by A2, A3; cod (g (*) f) = cod g by A81, A89; then A93: h (*) (g (*) f) = [[(gf `11),(h `12)],[((h1 `21) (*) (gf `21)),((h1 `22) (*) (gf `22))]] by A5, A88; A94: ( dom (h1 `21) = (h1 `11) `11 & cod (f1 `21) = (f1 `12) `11 ) by A1, Th2; A95: ( dom (h1 `22) = (h1 `11) `12 & cod (f1 `22) = (f1 `12) `12 ) by A1, Th2; A96: ( dom (g1 `22) = (g1 `11) `12 & cod (g1 `22) = (g1 `12) `12 ) by A1, Th2; A97: h (*) g = [[(g `11),(h `12)],[((h1 `21) (*) (g1 `21)),((h1 `22) (*) (g1 `22))]] by A5, A88; then A98: ( (h (*) g) `12 = h `12 & hg `21 = (h1 `21) (*) (g1 `21) ) by MCART_1:85; A99: g (*) f = [[(f `11),(g `12)],[((g1 `21) (*) (f1 `21)),((g1 `22) (*) (f1 `22))]] by A5, A89; then A100: ( (g (*) f) `11 = f `11 & gf `21 = (g1 `21) (*) (f1 `21) ) by MCART_1:85; A101: gf `22 = (g1 `22) (*) (f1 `22) by A99, MCART_1:85; A102: hg `22 = (h1 `22) (*) (g1 `22) by A97, MCART_1:85; ( dom (g1 `21) = (g1 `11) `11 & cod (g1 `21) = (g1 `12) `11 ) by A1, Th2; then ((h1 `21) (*) (g1 `21)) (*) (f1 `21) = (h1 `21) (*) ((g1 `21) (*) (f1 `21)) by A88, A89, A90, A94, A92, CAT_1:18; hence h (*) (g (*) f) = (h (*) g) (*) f by A88, A89, A90, A92, A96, A95, A93, A91, A98, A100, A102, A101, CAT_1:18; ::_thesis: verum end; for f, g being Morphism of CatStr(# O,M,D9,C9,a9 #) holds ( [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) iff dom g = cod f ) proof let f, g be Morphism of CatStr(# O,M,D9,C9,a9 #); ::_thesis: ( [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) iff dom g = cod f ) reconsider f1 = f, g1 = g as Element of commaMorphs (F,G) ; A103: ( dom g = g1 `11 & cod f = f1 `12 ) by A2, A3; thus ( [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) implies dom g = cod f ) ::_thesis: ( dom g = cod f implies [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) ) proof assume [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) ; ::_thesis: dom g = cod f then consider k1, k2 being Element of commaMorphs (F,G) such that A104: [g,f] = [k1,k2] and A105: k1 `11 = k2 `12 by A4; g = k1 by A104, XTUPLE_0:1; hence dom g = cod f by A103, A104, A105, XTUPLE_0:1; ::_thesis: verum end; thus ( dom g = cod f implies [g,f] in dom the Comp of CatStr(# O,M,D9,C9,a9 #) ) by A4, A103; ::_thesis: verum end; then reconsider FG = CatStr(# O,M,D9,C9,a9 #) as strict Category by A81, A87, A11, A26, CAT_1:def_6, CAT_1:def_7, CAT_1:def_8, CAT_1:def_9, CAT_1:def_10; take FG ; ::_thesis: ( the carrier of FG = commaObjs (F,G) & the carrier' of FG = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of FG . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of FG . k = k `12 ) & the Comp of FG = commaComp (F,G) ) thus ( the carrier of FG = commaObjs (F,G) & the carrier' of FG = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of FG . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of FG . k = k `12 ) & the Comp of FG = commaComp (F,G) ) by A2, A3; ::_thesis: verum end; uniqueness for b1, b2 being strict Category st the carrier of b1 = commaObjs (F,G) & the carrier' of b1 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of b1 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of b1 . k = k `12 ) & the Comp of b1 = commaComp (F,G) & the carrier of b2 = commaObjs (F,G) & the carrier' of b2 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of b2 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of b2 . k = k `12 ) & the Comp of b2 = commaComp (F,G) holds b1 = b2 proof let E1, E2 be strict Category; ::_thesis: ( the carrier of E1 = commaObjs (F,G) & the carrier' of E1 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of E1 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of E1 . k = k `12 ) & the Comp of E1 = commaComp (F,G) & the carrier of E2 = commaObjs (F,G) & the carrier' of E2 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of E2 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of E2 . k = k `12 ) & the Comp of E2 = commaComp (F,G) implies E1 = E2 ) assume that A106: the carrier of E1 = commaObjs (F,G) and A107: the carrier' of E1 = commaMorphs (F,G) and A108: for k being Element of commaMorphs (F,G) holds the Source of E1 . k = k `11 and A109: for k being Element of commaMorphs (F,G) holds the Target of E1 . k = k `12 and A110: the Comp of E1 = commaComp (F,G) and A111: ( the carrier of E2 = commaObjs (F,G) & the carrier' of E2 = commaMorphs (F,G) ) and A112: for k being Element of commaMorphs (F,G) holds the Source of E2 . k = k `11 and A113: for k being Element of commaMorphs (F,G) holds the Target of E2 . k = k `12 and A114: the Comp of E2 = commaComp (F,G) ; ::_thesis: E1 = E2 now__::_thesis:_for_x_being_Element_of_H2(E1)_holds_the_Target_of_E1_._x_=_the_Target_of_E2_._x let x be Element of H2(E1); ::_thesis: the Target of E1 . x = the Target of E2 . x thus the Target of E1 . x = x `12 by A107, A109 .= the Target of E2 . x by A107, A113 ; ::_thesis: verum end; then A115: the Target of E1 = the Target of E2 by A106, A107, A111, FUNCT_2:63; now__::_thesis:_for_x_being_Element_of_H2(E1)_holds_the_Source_of_E1_._x_=_the_Source_of_E2_._x let x be Element of H2(E1); ::_thesis: the Source of E1 . x = the Source of E2 . x thus the Source of E1 . x = x `11 by A107, A108 .= the Source of E2 . x by A107, A112 ; ::_thesis: verum end; then the Source of E1 = the Source of E2 by A106, A107, A111, FUNCT_2:63; hence E1 = E2 by A106, A107, A110, A111, A114, A115; ::_thesis: verum end; end; :: deftheorem defines comma COMMACAT:def_5_:_ for C, D, E being Category for F being Functor of C,E for G being Functor of D,E st ex c1 being Object of C ex d1 being Object of D ex f1 being Morphism of E st f1 in Hom ((F . c1),(G . d1)) holds for b6 being strict Category holds ( b6 = F comma G iff ( the carrier of b6 = commaObjs (F,G) & the carrier' of b6 = commaMorphs (F,G) & ( for k being Element of commaMorphs (F,G) holds the Source of b6 . k = k `11 ) & ( for k being Element of commaMorphs (F,G) holds the Target of b6 . k = k `12 ) & the Comp of b6 = commaComp (F,G) ) ); theorem :: COMMACAT:3 for y, x being set holds ( the carrier of (1Cat (x,y)) = {x} & the carrier' of (1Cat (x,y)) = {y} ) ; theorem Th4: :: COMMACAT:4 for y, x being set for a, b being Object of (1Cat (x,y)) holds Hom (a,b) = {y} proof let y, x be set ; ::_thesis: for a, b being Object of (1Cat (x,y)) holds Hom (a,b) = {y} let a, b be Object of (1Cat (x,y)); ::_thesis: Hom (a,b) = {y} thus Hom (a,b) c= {y} ; :: according to XBOOLE_0:def_10 ::_thesis: {y} c= Hom (a,b) y is Morphism of (1Cat (x,y)) by TARSKI:def_1; then y in Hom (a,b) by CAT_1:11; hence {y} c= Hom (a,b) by ZFMISC_1:31; ::_thesis: verum end; definition let C be Category; let c be Object of C; func 1Cat c -> strict Subcategory of C equals :: COMMACAT:def 6 1Cat (c,(id c)); coherence 1Cat (c,(id c)) is strict Subcategory of C proof A1: now__::_thesis:_for_a_being_Object_of_(1Cat_(c,(id_c))) for_c1_being_Object_of_C_st_a_=_c1_holds_ id_a_=_id_c1 let a be Object of (1Cat (c,(id c))); ::_thesis: for c1 being Object of C st a = c1 holds id a = id c1 id a = id c by TARSKI:def_1; hence for c1 being Object of C st a = c1 holds id a = id c1 by TARSKI:def_1; ::_thesis: verum end; A2: now__::_thesis:_for_a,_b_being_Object_of_(1Cat_(c,(id_c))) for_c1,_c2_being_Object_of_C_st_a_=_c1_&_b_=_c2_holds_ Hom_(a,b)_c=_Hom_(c1,c2) let a, b be Object of (1Cat (c,(id c))); ::_thesis: for c1, c2 being Object of C st a = c1 & b = c2 holds Hom (a,b) c= Hom (c1,c2) A3: ( a = c & b = c ) by TARSKI:def_1; ( id c in Hom (c,c) & Hom (a,a) = {(id c)} ) by Th4, CAT_1:27; hence for c1, c2 being Object of C st a = c1 & b = c2 holds Hom (a,b) c= Hom (c1,c2) by A3, ZFMISC_1:31; ::_thesis: verum end; set m = id c; set s = ((id c),(id c)) .--> (id c); A4: dom (((id c),(id c)) .--> (id c)) = {[(id c),(id c)]} by FUNCOP_1:13; A5: dom (id c) = c ; A6: cod (id c) = c ; A7: (((id c),(id c)) .--> (id c)) . ((id c),(id c)) = id c by FUNCOP_1:71; A8: now__::_thesis:_for_x_being_set_st_x_in_dom_the_Comp_of_(1Cat_(c,(id_c)))_holds_ the_Comp_of_(1Cat_(c,(id_c)))_._x_=_the_Comp_of_C_._x let x be set ; ::_thesis: ( x in dom the Comp of (1Cat (c,(id c))) implies the Comp of (1Cat (c,(id c))) . x = the Comp of C . x ) assume A9: x in dom the Comp of (1Cat (c,(id c))) ; ::_thesis: the Comp of (1Cat (c,(id c))) . x = the Comp of C . x hence the Comp of (1Cat (c,(id c))) . x = id c by A7, A4, TARSKI:def_1 .= (id c) (*) (id c) by A6, CAT_1:21 .= the Comp of C . ((id c),(id c)) by A5, A6, CAT_1:16 .= the Comp of C . x by A4, A9, TARSKI:def_1 ; ::_thesis: verum end; [(id c),(id c)] in dom the Comp of C by A5, A6, CAT_1:15; then dom the Comp of (1Cat (c,(id c))) c= dom the Comp of C by A4, ZFMISC_1:31; then ( H1( 1Cat (c,(id c))) = {c} & the Comp of (1Cat (c,(id c))) c= the Comp of C ) by A8, GRFUNC_1:2; hence 1Cat (c,(id c)) is strict Subcategory of C by A2, A1, CAT_2:def_4; ::_thesis: verum end; end; :: deftheorem defines 1Cat COMMACAT:def_6_:_ for C being Category for c being Object of C holds 1Cat c = 1Cat (c,(id c)); definition let C be Category; let c be Object of C; funcc comma C -> strict Category equals :: COMMACAT:def 7 (incl (1Cat c)) comma (id C); coherence (incl (1Cat c)) comma (id C) is strict Category ; funcC comma c -> strict Category equals :: COMMACAT:def 8 (id C) comma (incl (1Cat c)); coherence (id C) comma (incl (1Cat c)) is strict Category ; end; :: deftheorem defines comma COMMACAT:def_7_:_ for C being Category for c being Object of C holds c comma C = (incl (1Cat c)) comma (id C); :: deftheorem defines comma COMMACAT:def_8_:_ for C being Category for c being Object of C holds C comma c = (id C) comma (incl (1Cat c));