:: CAT_3 semantic presentation begin scheme :: CAT_3:sch 1 LambdaIdx{ F1() -> set , F2() -> non empty set , F3( set ) -> Element of F2() } : ex F being Function of F1(),F2() st for x being set st x in F1() holds F /. x = F3(x) proof A1: for x being set st x in F1() holds F3(x) in F2() ; consider IT being Function of F1(),F2() such that A2: for x being set st x in F1() holds IT . x = F3(x) from FUNCT_2:sch_2(A1); take IT ; ::_thesis: for x being set st x in F1() holds IT /. x = F3(x) let x be set ; ::_thesis: ( x in F1() implies IT /. x = F3(x) ) assume A3: x in F1() ; ::_thesis: IT /. x = F3(x) hence F3(x) = IT . x by A2 .= IT /. x by A3, FUNCT_2:def_13 ; ::_thesis: verum end; theorem Th1: :: CAT_3:1 for I being set for A being non empty set for F1, F2 being Function of I,A st ( for x being set st x in I holds F1 /. x = F2 /. x ) holds F1 = F2 proof let I be set ; ::_thesis: for A being non empty set for F1, F2 being Function of I,A st ( for x being set st x in I holds F1 /. x = F2 /. x ) holds F1 = F2 let A be non empty set ; ::_thesis: for F1, F2 being Function of I,A st ( for x being set st x in I holds F1 /. x = F2 /. x ) holds F1 = F2 let F1, F2 be Function of I,A; ::_thesis: ( ( for x being set st x in I holds F1 /. x = F2 /. x ) implies F1 = F2 ) assume A1: for x being set st x in I holds F1 /. x = F2 /. x ; ::_thesis: F1 = F2 now__::_thesis:_for_x_being_set_st_x_in_I_holds_ F1_._x_=_F2_._x let x be set ; ::_thesis: ( x in I implies F1 . x = F2 . x ) assume A2: x in I ; ::_thesis: F1 . x = F2 . x hence F1 . x = F1 /. x by FUNCT_2:def_13 .= F2 /. x by A1, A2 .= F2 . x by A2, FUNCT_2:def_13 ; ::_thesis: verum end; hence F1 = F2 by FUNCT_2:12; ::_thesis: verum end; scheme :: CAT_3:sch 2 FuncIdxcorrectness{ F1() -> set , F2() -> non empty set , F3( set ) -> Element of F2() } : ( ex F being Function of F1(),F2() st for x being set st x in F1() holds F /. x = F3(x) & ( for F1, F2 being Function of F1(),F2() st ( for x being set st x in F1() holds F1 /. x = F3(x) ) & ( for x being set st x in F1() holds F2 /. x = F3(x) ) holds F1 = F2 ) ) proof thus ex F being Function of F1(),F2() st for x being set st x in F1() holds F /. x = F3(x) from CAT_3:sch_1(); ::_thesis: for F1, F2 being Function of F1(),F2() st ( for x being set st x in F1() holds F1 /. x = F3(x) ) & ( for x being set st x in F1() holds F2 /. x = F3(x) ) holds F1 = F2 let F1, F2 be Function of F1(),F2(); ::_thesis: ( ( for x being set st x in F1() holds F1 /. x = F3(x) ) & ( for x being set st x in F1() holds F2 /. x = F3(x) ) implies F1 = F2 ) assume that A1: for x being set st x in F1() holds F1 /. x = F3(x) and A2: for x being set st x in F1() holds F2 /. x = F3(x) ; ::_thesis: F1 = F2 now__::_thesis:_for_x_being_set_st_x_in_F1()_holds_ F1_/._x_=_F2_/._x let x be set ; ::_thesis: ( x in F1() implies F1 /. x = F2 /. x ) assume A3: x in F1() ; ::_thesis: F1 /. x = F2 /. x hence F1 /. x = F3(x) by A1 .= F2 /. x by A2, A3 ; ::_thesis: verum end; hence F1 = F2 by Th1; ::_thesis: verum end; definition let A be non empty set ; let x be set ; let a be Element of A; :: original: .--> redefine funcx .--> a -> Function of {x},A; coherence x .--> a is Function of {x},A by FUNCOP_1:46; end; theorem Th2: :: CAT_3:2 for I, x being set for A being non empty set for a being Element of A st x in I holds (I --> a) /. x = a proof let I, x be set ; ::_thesis: for A being non empty set for a being Element of A st x in I holds (I --> a) /. x = a let A be non empty set ; ::_thesis: for a being Element of A st x in I holds (I --> a) /. x = a let a be Element of A; ::_thesis: ( x in I implies (I --> a) /. x = a ) assume A1: x in I ; ::_thesis: (I --> a) /. x = a hence a = (I --> a) . x by FUNCOP_1:7 .= (I --> a) /. x by A1, FUNCT_2:def_13 ; ::_thesis: verum end; theorem Th3: :: CAT_3:3 for x1, x2 being set for A being non empty set st x1 <> x2 holds for y1, y2 being Element of A holds ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) proof let x1, x2 be set ; ::_thesis: for A being non empty set st x1 <> x2 holds for y1, y2 being Element of A holds ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) let A be non empty set ; ::_thesis: ( x1 <> x2 implies for y1, y2 being Element of A holds ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) ) assume A1: x1 <> x2 ; ::_thesis: for y1, y2 being Element of A holds ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) let y1, y2 be Element of A; ::_thesis: ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) set h = (x1,x2) --> (y1,y2); A2: ( ((x1,x2) --> (y1,y2)) . x2 = y2 & x1 in {x1,x2} ) by FUNCT_4:63, TARSKI:def_2; A3: x2 in {x1,x2} by TARSKI:def_2; ((x1,x2) --> (y1,y2)) . x1 = y1 by A1, FUNCT_4:63; hence ( ((x1,x2) --> (y1,y2)) /. x1 = y1 & ((x1,x2) --> (y1,y2)) /. x2 = y2 ) by A2, A3, FUNCT_2:def_13; ::_thesis: verum end; begin definition let C be Category; let I be set ; let F be Function of I, the carrier' of C; func doms F -> Function of I, the carrier of C means :Def1: :: CAT_3:def 1 for x being set st x in I holds it /. x = dom (F /. x); correctness existence ex b1 being Function of I, the carrier of C st for x being set st x in I holds b1 /. x = dom (F /. x); uniqueness for b1, b2 being Function of I, the carrier of C st ( for x being set st x in I holds b1 /. x = dom (F /. x) ) & ( for x being set st x in I holds b2 /. x = dom (F /. x) ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier of C = dom (F /. $1); set A = the carrier of C; thus ( ex F being Function of I, the carrier of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; func cods F -> Function of I, the carrier of C means :Def2: :: CAT_3:def 2 for x being set st x in I holds it /. x = cod (F /. x); correctness existence ex b1 being Function of I, the carrier of C st for x being set st x in I holds b1 /. x = cod (F /. x); uniqueness for b1, b2 being Function of I, the carrier of C st ( for x being set st x in I holds b1 /. x = cod (F /. x) ) & ( for x being set st x in I holds b2 /. x = cod (F /. x) ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier of C = cod (F /. $1); set A = the carrier of C; thus ( ex F being Function of I, the carrier of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; end; :: deftheorem Def1 defines doms CAT_3:def_1_:_ for C being Category for I being set for F being Function of I, the carrier' of C for b4 being Function of I, the carrier of C holds ( b4 = doms F iff for x being set st x in I holds b4 /. x = dom (F /. x) ); :: deftheorem Def2 defines cods CAT_3:def_2_:_ for C being Category for I being set for F being Function of I, the carrier' of C for b4 being Function of I, the carrier of C holds ( b4 = cods F iff for x being set st x in I holds b4 /. x = cod (F /. x) ); theorem Th4: :: CAT_3:4 for I being set for C being Category for f being Morphism of C holds doms (I --> f) = I --> (dom f) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C holds doms (I --> f) = I --> (dom f) let C be Category; ::_thesis: for f being Morphism of C holds doms (I --> f) = I --> (dom f) let f be Morphism of C; ::_thesis: doms (I --> f) = I --> (dom f) set F = I --> f; set F9 = I --> (dom f); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_(I_-->_f))_/._x_=_(I_-->_(dom_f))_/._x let x be set ; ::_thesis: ( x in I implies (doms (I --> f)) /. x = (I --> (dom f)) /. x ) assume A1: x in I ; ::_thesis: (doms (I --> f)) /. x = (I --> (dom f)) /. x then ( (I --> f) /. x = f & (I --> (dom f)) /. x = dom f ) by Th2; hence (doms (I --> f)) /. x = (I --> (dom f)) /. x by A1, Def1; ::_thesis: verum end; hence doms (I --> f) = I --> (dom f) by Th1; ::_thesis: verum end; theorem Th5: :: CAT_3:5 for I being set for C being Category for f being Morphism of C holds cods (I --> f) = I --> (cod f) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C holds cods (I --> f) = I --> (cod f) let C be Category; ::_thesis: for f being Morphism of C holds cods (I --> f) = I --> (cod f) let f be Morphism of C; ::_thesis: cods (I --> f) = I --> (cod f) set F = I --> f; set F9 = I --> (cod f); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_(I_-->_f))_/._x_=_(I_-->_(cod_f))_/._x let x be set ; ::_thesis: ( x in I implies (cods (I --> f)) /. x = (I --> (cod f)) /. x ) assume A1: x in I ; ::_thesis: (cods (I --> f)) /. x = (I --> (cod f)) /. x then ( (I --> f) /. x = f & (I --> (cod f)) /. x = cod f ) by Th2; hence (cods (I --> f)) /. x = (I --> (cod f)) /. x by A1, Def2; ::_thesis: verum end; hence cods (I --> f) = I --> (cod f) by Th1; ::_thesis: verum end; theorem Th6: :: CAT_3:6 for x1, x2 being set for C being Category for p1, p2 being Morphism of C holds doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) proof let x1, x2 be set ; ::_thesis: for C being Category for p1, p2 being Morphism of C holds doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) let C be Category; ::_thesis: for p1, p2 being Morphism of C holds doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) let p1, p2 be Morphism of C; ::_thesis: doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) set F = (x1,x2) --> (p1,p2); set f = x1 .--> p1; set g = x2 .--> p2; set F9 = (x1,x2) --> ((dom p1),(dom p2)); set f9 = x1 .--> (dom p1); set g9 = x2 .--> (dom p2); A1: dom (x2 .--> p2) = {x2} by FUNCOP_1:13; A2: ( dom (x2 .--> (dom p2)) = {x2} & (x1,x2) --> ((dom p1),(dom p2)) = (x1 .--> (dom p1)) +* (x2 .--> (dom p2)) ) by FUNCOP_1:13, FUNCT_4:def_4; A3: (x1,x2) --> (p1,p2) = (x1 .--> p1) +* (x2 .--> p2) by FUNCT_4:def_4; A4: dom (x1 .--> p1) = {x1} by FUNCOP_1:13; now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (doms_((x1,x2)_-->_(p1,p2)))_/._x_=_((x1,x2)_-->_((dom_p1),(dom_p2)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (doms ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((dom p1),(dom p2))) /. x ) assume A5: x in {x1,x2} ; ::_thesis: (doms ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((dom p1),(dom p2))) /. x then A6: x in dom ((x1,x2) --> (p1,p2)) by FUNCT_4:62; now__::_thesis:_(_(_x_in_dom_(x1_.-->_p1)_&_not_x_in_dom_(x2_.-->_p2)_&_((x1,x2)_-->_(p1,p2))_/._x_=_p1_&_((x1,x2)_-->_((dom_p1),(dom_p2)))_/._x_=_dom_p1_)_or_(_x_in_dom_(x2_.-->_p2)_&_((x1,x2)_-->_(p1,p2))_/._x_=_p2_&_((x1,x2)_-->_((dom_p1),(dom_p2)))_/._x_=_dom_p2_)_) percases ( ( x in dom (x1 .--> p1) & not x in dom (x2 .--> p2) ) or x in dom (x2 .--> p2) ) by A3, A6, FUNCT_4:12; caseA7: ( x in dom (x1 .--> p1) & not x in dom (x2 .--> p2) ) ; ::_thesis: ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((dom p1),(dom p2))) /. x = dom p1 ) then ((x1,x2) --> (p1,p2)) . x = (x1 .--> p1) . x by A3, FUNCT_4:11; then A8: ((x1,x2) --> (p1,p2)) . x = p1 by A4, A7, FUNCOP_1:7; ((x1,x2) --> ((dom p1),(dom p2))) . x = (x1 .--> (dom p1)) . x by A1, A2, A7, FUNCT_4:11; then ((x1,x2) --> ((dom p1),(dom p2))) . x = dom p1 by A4, A7, FUNCOP_1:7; hence ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((dom p1),(dom p2))) /. x = dom p1 ) by A5, A8, FUNCT_2:def_13; ::_thesis: verum end; caseA9: x in dom (x2 .--> p2) ; ::_thesis: ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((dom p1),(dom p2))) /. x = dom p2 ) then ((x1,x2) --> (p1,p2)) . x = (x2 .--> p2) . x by A3, FUNCT_4:13; then A10: ((x1,x2) --> (p1,p2)) . x = p2 by A1, A9, FUNCOP_1:7; ((x1,x2) --> ((dom p1),(dom p2))) . x = (x2 .--> (dom p2)) . x by A1, A2, A9, FUNCT_4:13; then ((x1,x2) --> ((dom p1),(dom p2))) . x = dom p2 by A1, A9, FUNCOP_1:7; hence ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((dom p1),(dom p2))) /. x = dom p2 ) by A5, A10, FUNCT_2:def_13; ::_thesis: verum end; end; end; hence (doms ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((dom p1),(dom p2))) /. x by A5, Def1; ::_thesis: verum end; hence doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) by Th1; ::_thesis: verum end; theorem Th7: :: CAT_3:7 for x1, x2 being set for C being Category for p1, p2 being Morphism of C holds cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) proof let x1, x2 be set ; ::_thesis: for C being Category for p1, p2 being Morphism of C holds cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) let C be Category; ::_thesis: for p1, p2 being Morphism of C holds cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) let p1, p2 be Morphism of C; ::_thesis: cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) set F = (x1,x2) --> (p1,p2); set f = x1 .--> p1; set g = x2 .--> p2; set F9 = (x1,x2) --> ((cod p1),(cod p2)); set f9 = x1 .--> (cod p1); set g9 = x2 .--> (cod p2); A1: dom (x2 .--> p2) = {x2} by FUNCOP_1:13; A2: ( dom (x2 .--> (cod p2)) = {x2} & (x1,x2) --> ((cod p1),(cod p2)) = (x1 .--> (cod p1)) +* (x2 .--> (cod p2)) ) by FUNCOP_1:13, FUNCT_4:def_4; A3: (x1,x2) --> (p1,p2) = (x1 .--> p1) +* (x2 .--> p2) by FUNCT_4:def_4; A4: dom (x1 .--> p1) = {x1} by FUNCOP_1:13; now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (cods_((x1,x2)_-->_(p1,p2)))_/._x_=_((x1,x2)_-->_((cod_p1),(cod_p2)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (cods ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((cod p1),(cod p2))) /. x ) assume A5: x in {x1,x2} ; ::_thesis: (cods ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((cod p1),(cod p2))) /. x then A6: x in dom ((x1,x2) --> (p1,p2)) by FUNCT_4:62; now__::_thesis:_(_(_x_in_dom_(x1_.-->_p1)_&_not_x_in_dom_(x2_.-->_p2)_&_((x1,x2)_-->_(p1,p2))_/._x_=_p1_&_((x1,x2)_-->_((cod_p1),(cod_p2)))_/._x_=_cod_p1_)_or_(_x_in_dom_(x2_.-->_p2)_&_((x1,x2)_-->_(p1,p2))_/._x_=_p2_&_((x1,x2)_-->_((cod_p1),(cod_p2)))_/._x_=_cod_p2_)_) percases ( ( x in dom (x1 .--> p1) & not x in dom (x2 .--> p2) ) or x in dom (x2 .--> p2) ) by A3, A6, FUNCT_4:12; caseA7: ( x in dom (x1 .--> p1) & not x in dom (x2 .--> p2) ) ; ::_thesis: ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((cod p1),(cod p2))) /. x = cod p1 ) then ((x1,x2) --> (p1,p2)) . x = (x1 .--> p1) . x by A3, FUNCT_4:11; then A8: ((x1,x2) --> (p1,p2)) . x = p1 by A4, A7, FUNCOP_1:7; ((x1,x2) --> ((cod p1),(cod p2))) . x = (x1 .--> (cod p1)) . x by A1, A2, A7, FUNCT_4:11; then ((x1,x2) --> ((cod p1),(cod p2))) . x = cod p1 by A4, A7, FUNCOP_1:7; hence ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((cod p1),(cod p2))) /. x = cod p1 ) by A5, A8, FUNCT_2:def_13; ::_thesis: verum end; caseA9: x in dom (x2 .--> p2) ; ::_thesis: ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((cod p1),(cod p2))) /. x = cod p2 ) then ((x1,x2) --> (p1,p2)) . x = (x2 .--> p2) . x by A3, FUNCT_4:13; then A10: ((x1,x2) --> (p1,p2)) . x = p2 by A1, A9, FUNCOP_1:7; ((x1,x2) --> ((cod p1),(cod p2))) . x = (x2 .--> (cod p2)) . x by A1, A2, A9, FUNCT_4:13; then ((x1,x2) --> ((cod p1),(cod p2))) . x = cod p2 by A1, A9, FUNCOP_1:7; hence ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((cod p1),(cod p2))) /. x = cod p2 ) by A5, A10, FUNCT_2:def_13; ::_thesis: verum end; end; end; hence (cods ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((cod p1),(cod p2))) /. x by A5, Def2; ::_thesis: verum end; hence cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) by Th1; ::_thesis: verum end; definition let C be Category; let I be set ; let F be Function of I, the carrier' of C; funcF opp -> Function of I, the carrier' of (C opp) means :Def3: :: CAT_3:def 3 for x being set st x in I holds it /. x = (F /. x) opp ; correctness existence ex b1 being Function of I, the carrier' of (C opp) st for x being set st x in I holds b1 /. x = (F /. x) opp ; uniqueness for b1, b2 being Function of I, the carrier' of (C opp) st ( for x being set st x in I holds b1 /. x = (F /. x) opp ) & ( for x being set st x in I holds b2 /. x = (F /. x) opp ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier' of (C opp) = (F /. $1) opp ; set A = the carrier' of (C opp); thus ( ex F being Function of I, the carrier' of (C opp) st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier' of (C opp) st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; end; :: deftheorem Def3 defines opp CAT_3:def_3_:_ for C being Category for I being set for F being Function of I, the carrier' of C for b4 being Function of I, the carrier' of (C opp) holds ( b4 = F opp iff for x being set st x in I holds b4 /. x = (F /. x) opp ); theorem :: CAT_3:8 for I being set for C being Category for f being Morphism of C holds (I --> f) opp = I --> (f opp) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C holds (I --> f) opp = I --> (f opp) let C be Category; ::_thesis: for f being Morphism of C holds (I --> f) opp = I --> (f opp) let f be Morphism of C; ::_thesis: (I --> f) opp = I --> (f opp) set F = I --> f; set F9 = I --> (f opp); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ ((I_-->_f)_opp)_/._x_=_(I_-->_(f_opp))_/._x let x be set ; ::_thesis: ( x in I implies ((I --> f) opp) /. x = (I --> (f opp)) /. x ) assume A1: x in I ; ::_thesis: ((I --> f) opp) /. x = (I --> (f opp)) /. x then ( (I --> f) /. x = f & (I --> (f opp)) /. x = f opp ) by Th2; hence ((I --> f) opp) /. x = (I --> (f opp)) /. x by A1, Def3; ::_thesis: verum end; hence (I --> f) opp = I --> (f opp) by Th1; ::_thesis: verum end; theorem :: CAT_3:9 for x1, x2 being set for C being Category for p1, p2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) proof let x1, x2 be set ; ::_thesis: for C being Category for p1, p2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) let C be Category; ::_thesis: for p1, p2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) let p1, p2 be Morphism of C; ::_thesis: ( x1 <> x2 implies ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) ) set F = (x1,x2) --> (p1,p2); set F9 = (x1,x2) --> ((p1 opp),(p2 opp)); assume A1: x1 <> x2 ; ::_thesis: ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (((x1,x2)_-->_(p1,p2))_opp)_/._x_=_((x1,x2)_-->_((p1_opp),(p2_opp)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (((x1,x2) --> (p1,p2)) opp) /. x = ((x1,x2) --> ((p1 opp),(p2 opp))) /. x ) assume A2: x in {x1,x2} ; ::_thesis: (((x1,x2) --> (p1,p2)) opp) /. x = ((x1,x2) --> ((p1 opp),(p2 opp))) /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((p1 opp),(p2 opp))) /. x = p1 opp ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((p1 opp),(p2 opp))) /. x = p2 opp ) ) by A1, Th3; hence (((x1,x2) --> (p1,p2)) opp) /. x = ((x1,x2) --> ((p1 opp),(p2 opp))) /. x by A2, Def3; ::_thesis: verum end; hence ((x1,x2) --> (p1,p2)) opp = (x1,x2) --> ((p1 opp),(p2 opp)) by Th1; ::_thesis: verum end; theorem :: CAT_3:10 for I being set for C being Category for F being Function of I, the carrier' of C holds (F opp) opp = F proof let I be set ; ::_thesis: for C being Category for F being Function of I, the carrier' of C holds (F opp) opp = F let C be Category; ::_thesis: for F being Function of I, the carrier' of C holds (F opp) opp = F let F be Function of I, the carrier' of C; ::_thesis: (F opp) opp = F now__::_thesis:_(_the_carrier'_of_C_=_the_carrier'_of_((C_opp)_opp)_&_(_for_x_being_set_st_x_in_I_holds_ ((F_opp)_opp)_/._x_=_F_/._x_)_) thus the carrier' of C = the carrier' of ((C opp) opp) ; ::_thesis: for x being set st x in I holds ((F opp) opp) /. x = F /. x let x be set ; ::_thesis: ( x in I implies ((F opp) opp) /. x = F /. x ) assume A1: x in I ; ::_thesis: ((F opp) opp) /. x = F /. x hence ((F opp) opp) /. x = ((F opp) /. x) opp by Def3 .= ((F /. x) opp) opp by A1, Def3 .= F /. x ; ::_thesis: verum end; hence (F opp) opp = F by Th1; ::_thesis: verum end; definition let C be Category; let I be set ; let F be Function of I, the carrier' of (C opp); func opp F -> Function of I, the carrier' of C means :Def4: :: CAT_3:def 4 for x being set st x in I holds it /. x = opp (F /. x); correctness existence ex b1 being Function of I, the carrier' of C st for x being set st x in I holds b1 /. x = opp (F /. x); uniqueness for b1, b2 being Function of I, the carrier' of C st ( for x being set st x in I holds b1 /. x = opp (F /. x) ) & ( for x being set st x in I holds b2 /. x = opp (F /. x) ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier' of C = opp (F /. $1); set A = the carrier' of C; thus ( ex F being Function of I, the carrier' of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier' of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; end; :: deftheorem Def4 defines opp CAT_3:def_4_:_ for C being Category for I being set for F being Function of I, the carrier' of (C opp) for b4 being Function of I, the carrier' of C holds ( b4 = opp F iff for x being set st x in I holds b4 /. x = opp (F /. x) ); theorem :: CAT_3:11 for I being set for C being Category for f being Morphism of (C opp) holds opp (I --> f) = I --> (opp f) proof let I be set ; ::_thesis: for C being Category for f being Morphism of (C opp) holds opp (I --> f) = I --> (opp f) let C be Category; ::_thesis: for f being Morphism of (C opp) holds opp (I --> f) = I --> (opp f) let f be Morphism of (C opp); ::_thesis: opp (I --> f) = I --> (opp f) set F = I --> f; set F9 = I --> (opp f); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (opp_(I_-->_f))_/._x_=_(I_-->_(opp_f))_/._x let x be set ; ::_thesis: ( x in I implies (opp (I --> f)) /. x = (I --> (opp f)) /. x ) assume A1: x in I ; ::_thesis: (opp (I --> f)) /. x = (I --> (opp f)) /. x then ( (I --> f) /. x = f & (I --> (opp f)) /. x = opp f ) by Th2; hence (opp (I --> f)) /. x = (I --> (opp f)) /. x by A1, Def4; ::_thesis: verum end; hence opp (I --> f) = I --> (opp f) by Th1; ::_thesis: verum end; theorem :: CAT_3:12 for x1, x2 being set for C being Category st x1 <> x2 holds for p1, p2 being Morphism of (C opp) holds opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) proof let x1, x2 be set ; ::_thesis: for C being Category st x1 <> x2 holds for p1, p2 being Morphism of (C opp) holds opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) let C be Category; ::_thesis: ( x1 <> x2 implies for p1, p2 being Morphism of (C opp) holds opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) ) assume A1: x1 <> x2 ; ::_thesis: for p1, p2 being Morphism of (C opp) holds opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) let p1, p2 be Morphism of (C opp); ::_thesis: opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) set F = (x1,x2) --> (p1,p2); set F9 = (x1,x2) --> ((opp p1),(opp p2)); now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (opp_((x1,x2)_-->_(p1,p2)))_/._x_=_((x1,x2)_-->_((opp_p1),(opp_p2)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (opp ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((opp p1),(opp p2))) /. x ) assume A2: x in {x1,x2} ; ::_thesis: (opp ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((opp p1),(opp p2))) /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((opp p1),(opp p2))) /. x = opp p1 ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((opp p1),(opp p2))) /. x = opp p2 ) ) by A1, Th3; hence (opp ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((opp p1),(opp p2))) /. x by A2, Def4; ::_thesis: verum end; hence opp ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((opp p1),(opp p2)) by Th1; ::_thesis: verum end; theorem :: CAT_3:13 for I being set for C being Category for F being Function of I, the carrier' of C holds opp (F opp) = F proof let I be set ; ::_thesis: for C being Category for F being Function of I, the carrier' of C holds opp (F opp) = F let C be Category; ::_thesis: for F being Function of I, the carrier' of C holds opp (F opp) = F let F be Function of I, the carrier' of C; ::_thesis: opp (F opp) = F now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (opp_(F_opp))_/._x_=_F_/._x let x be set ; ::_thesis: ( x in I implies (opp (F opp)) /. x = F /. x ) assume A1: x in I ; ::_thesis: (opp (F opp)) /. x = F /. x hence (opp (F opp)) /. x = opp ((F opp) /. x) by Def4 .= opp ((F /. x) opp) by A1, Def3 .= F /. x ; ::_thesis: verum end; hence opp (F opp) = F by Th1; ::_thesis: verum end; definition let C be Category; let I be set ; let F be Function of I, the carrier' of C; let f be Morphism of C; funcF * f -> Function of I, the carrier' of C means :Def5: :: CAT_3:def 5 for x being set st x in I holds it /. x = (F /. x) (*) f; correctness existence ex b1 being Function of I, the carrier' of C st for x being set st x in I holds b1 /. x = (F /. x) (*) f; uniqueness for b1, b2 being Function of I, the carrier' of C st ( for x being set st x in I holds b1 /. x = (F /. x) (*) f ) & ( for x being set st x in I holds b2 /. x = (F /. x) (*) f ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier' of C = (F /. $1) (*) f; set A = the carrier' of C; thus ( ex F being Function of I, the carrier' of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier' of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; funcf * F -> Function of I, the carrier' of C means :Def6: :: CAT_3:def 6 for x being set st x in I holds it /. x = f (*) (F /. x); correctness existence ex b1 being Function of I, the carrier' of C st for x being set st x in I holds b1 /. x = f (*) (F /. x); uniqueness for b1, b2 being Function of I, the carrier' of C st ( for x being set st x in I holds b1 /. x = f (*) (F /. x) ) & ( for x being set st x in I holds b2 /. x = f (*) (F /. x) ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier' of C = f (*) (F /. $1); set A = the carrier' of C; thus ( ex F being Function of I, the carrier' of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier' of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; end; :: deftheorem Def5 defines * CAT_3:def_5_:_ for C being Category for I being set for F being Function of I, the carrier' of C for f being Morphism of C for b5 being Function of I, the carrier' of C holds ( b5 = F * f iff for x being set st x in I holds b5 /. x = (F /. x) (*) f ); :: deftheorem Def6 defines * CAT_3:def_6_:_ for C being Category for I being set for F being Function of I, the carrier' of C for f being Morphism of C for b5 being Function of I, the carrier' of C holds ( b5 = f * F iff for x being set st x in I holds b5 /. x = f (*) (F /. x) ); theorem Th14: :: CAT_3:14 for x1, x2 being set for C being Category for p1, p2, f being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) proof let x1, x2 be set ; ::_thesis: for C being Category for p1, p2, f being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) let C be Category; ::_thesis: for p1, p2, f being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) let p1, p2, f be Morphism of C; ::_thesis: ( x1 <> x2 implies ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) ) set F = (x1,x2) --> (p1,p2); set F9 = (x1,x2) --> ((p1 (*) f),(p2 (*) f)); assume A1: x1 <> x2 ; ::_thesis: ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (((x1,x2)_-->_(p1,p2))_*_f)_/._x_=_((x1,x2)_-->_((p1_(*)_f),(p2_(*)_f)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (((x1,x2) --> (p1,p2)) * f) /. x = ((x1,x2) --> ((p1 (*) f),(p2 (*) f))) /. x ) assume A2: x in {x1,x2} ; ::_thesis: (((x1,x2) --> (p1,p2)) * f) /. x = ((x1,x2) --> ((p1 (*) f),(p2 (*) f))) /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((p1 (*) f),(p2 (*) f))) /. x = p1 (*) f ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((p1 (*) f),(p2 (*) f))) /. x = p2 (*) f ) ) by A1, Th3; hence (((x1,x2) --> (p1,p2)) * f) /. x = ((x1,x2) --> ((p1 (*) f),(p2 (*) f))) /. x by A2, Def5; ::_thesis: verum end; hence ((x1,x2) --> (p1,p2)) * f = (x1,x2) --> ((p1 (*) f),(p2 (*) f)) by Th1; ::_thesis: verum end; theorem Th15: :: CAT_3:15 for x1, x2 being set for C being Category for f, p1, p2 being Morphism of C st x1 <> x2 holds f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) proof let x1, x2 be set ; ::_thesis: for C being Category for f, p1, p2 being Morphism of C st x1 <> x2 holds f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) let C be Category; ::_thesis: for f, p1, p2 being Morphism of C st x1 <> x2 holds f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) let f, p1, p2 be Morphism of C; ::_thesis: ( x1 <> x2 implies f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) ) set F = (x1,x2) --> (p1,p2); set F9 = (x1,x2) --> ((f (*) p1),(f (*) p2)); assume A1: x1 <> x2 ; ::_thesis: f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (f_*_((x1,x2)_-->_(p1,p2)))_/._x_=_((x1,x2)_-->_((f_(*)_p1),(f_(*)_p2)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (f * ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((f (*) p1),(f (*) p2))) /. x ) assume A2: x in {x1,x2} ; ::_thesis: (f * ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((f (*) p1),(f (*) p2))) /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> ((f (*) p1),(f (*) p2))) /. x = f (*) p1 ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> ((f (*) p1),(f (*) p2))) /. x = f (*) p2 ) ) by A1, Th3; hence (f * ((x1,x2) --> (p1,p2))) /. x = ((x1,x2) --> ((f (*) p1),(f (*) p2))) /. x by A2, Def6; ::_thesis: verum end; hence f * ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((f (*) p1),(f (*) p2)) by Th1; ::_thesis: verum end; theorem Th16: :: CAT_3:16 for I being set for C being Category for f being Morphism of C for F being Function of I, the carrier' of C st doms F = I --> (cod f) holds ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Function of I, the carrier' of C st doms F = I --> (cod f) holds ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) let C be Category; ::_thesis: for f being Morphism of C for F being Function of I, the carrier' of C st doms F = I --> (cod f) holds ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) let f be Morphism of C; ::_thesis: for F being Function of I, the carrier' of C st doms F = I --> (cod f) holds ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) let F be Function of I, the carrier' of C; ::_thesis: ( doms F = I --> (cod f) implies ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) ) assume A1: doms F = I --> (cod f) ; ::_thesis: ( doms (F * f) = I --> (dom f) & cods (F * f) = cods F ) now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_(F_*_f))_/._x_=_(I_-->_(dom_f))_/._x let x be set ; ::_thesis: ( x in I implies (doms (F * f)) /. x = (I --> (dom f)) /. x ) assume A2: x in I ; ::_thesis: (doms (F * f)) /. x = (I --> (dom f)) /. x then A3: dom (F /. x) = (I --> (cod f)) /. x by A1, Def1 .= cod f by A2, Th2 ; thus (doms (F * f)) /. x = dom ((F * f) /. x) by A2, Def1 .= dom ((F /. x) (*) f) by A2, Def5 .= dom f by A3, CAT_1:17 .= (I --> (dom f)) /. x by A2, Th2 ; ::_thesis: verum end; hence doms (F * f) = I --> (dom f) by Th1; ::_thesis: cods (F * f) = cods F now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_F)_/._x_=_(cods_(F_*_f))_/._x let x be set ; ::_thesis: ( x in I implies (cods F) /. x = (cods (F * f)) /. x ) assume A4: x in I ; ::_thesis: (cods F) /. x = (cods (F * f)) /. x then A5: dom (F /. x) = (I --> (cod f)) /. x by A1, Def1 .= cod f by A4, Th2 ; thus (cods F) /. x = cod (F /. x) by A4, Def2 .= cod ((F /. x) (*) f) by A5, CAT_1:17 .= cod ((F * f) /. x) by A4, Def5 .= (cods (F * f)) /. x by A4, Def2 ; ::_thesis: verum end; hence cods (F * f) = cods F by Th1; ::_thesis: verum end; theorem Th17: :: CAT_3:17 for I being set for C being Category for f being Morphism of C for F being Function of I, the carrier' of C st cods F = I --> (dom f) holds ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Function of I, the carrier' of C st cods F = I --> (dom f) holds ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) let C be Category; ::_thesis: for f being Morphism of C for F being Function of I, the carrier' of C st cods F = I --> (dom f) holds ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) let f be Morphism of C; ::_thesis: for F being Function of I, the carrier' of C st cods F = I --> (dom f) holds ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) let F be Function of I, the carrier' of C; ::_thesis: ( cods F = I --> (dom f) implies ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) ) assume A1: cods F = I --> (dom f) ; ::_thesis: ( doms (f * F) = doms F & cods (f * F) = I --> (cod f) ) now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_F)_/._x_=_(doms_(f_*_F))_/._x let x be set ; ::_thesis: ( x in I implies (doms F) /. x = (doms (f * F)) /. x ) assume A2: x in I ; ::_thesis: (doms F) /. x = (doms (f * F)) /. x then A3: cod (F /. x) = (I --> (dom f)) /. x by A1, Def2 .= dom f by A2, Th2 ; thus (doms F) /. x = dom (F /. x) by A2, Def1 .= dom (f (*) (F /. x)) by A3, CAT_1:17 .= dom ((f * F) /. x) by A2, Def6 .= (doms (f * F)) /. x by A2, Def1 ; ::_thesis: verum end; hence doms (f * F) = doms F by Th1; ::_thesis: cods (f * F) = I --> (cod f) now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_(f_*_F))_/._x_=_(I_-->_(cod_f))_/._x let x be set ; ::_thesis: ( x in I implies (cods (f * F)) /. x = (I --> (cod f)) /. x ) assume A4: x in I ; ::_thesis: (cods (f * F)) /. x = (I --> (cod f)) /. x then A5: cod (F /. x) = (I --> (dom f)) /. x by A1, Def2 .= dom f by A4, Th2 ; thus (cods (f * F)) /. x = cod ((f * F) /. x) by A4, Def2 .= cod (f (*) (F /. x)) by A4, Def6 .= cod f by A5, CAT_1:17 .= (I --> (cod f)) /. x by A4, Th2 ; ::_thesis: verum end; hence cods (f * F) = I --> (cod f) by Th1; ::_thesis: verum end; definition let C be Category; let I be set ; let F, G be Function of I, the carrier' of C; funcF "*" G -> Function of I, the carrier' of C means :Def7: :: CAT_3:def 7 for x being set st x in I holds it /. x = (F /. x) (*) (G /. x); correctness existence ex b1 being Function of I, the carrier' of C st for x being set st x in I holds b1 /. x = (F /. x) (*) (G /. x); uniqueness for b1, b2 being Function of I, the carrier' of C st ( for x being set st x in I holds b1 /. x = (F /. x) (*) (G /. x) ) & ( for x being set st x in I holds b2 /. x = (F /. x) (*) (G /. x) ) holds b1 = b2; proof deffunc H1( set ) -> Element of the carrier' of C = (F /. $1) (*) (G /. $1); set A = the carrier' of C; thus ( ex F being Function of I, the carrier' of C st for x being set st x in I holds F /. x = H1(x) & ( for F1, F2 being Function of I, the carrier' of C st ( for x being set st x in I holds F1 /. x = H1(x) ) & ( for x being set st x in I holds F2 /. x = H1(x) ) holds F1 = F2 ) ) from CAT_3:sch_2(); ::_thesis: verum end; end; :: deftheorem Def7 defines "*" CAT_3:def_7_:_ for C being Category for I being set for F, G, b5 being Function of I, the carrier' of C holds ( b5 = F "*" G iff for x being set st x in I holds b5 /. x = (F /. x) (*) (G /. x) ); theorem Th18: :: CAT_3:18 for I being set for C being Category for F, G being Function of I, the carrier' of C st doms F = cods G holds ( doms (F "*" G) = doms G & cods (F "*" G) = cods F ) proof let I be set ; ::_thesis: for C being Category for F, G being Function of I, the carrier' of C st doms F = cods G holds ( doms (F "*" G) = doms G & cods (F "*" G) = cods F ) let C be Category; ::_thesis: for F, G being Function of I, the carrier' of C st doms F = cods G holds ( doms (F "*" G) = doms G & cods (F "*" G) = cods F ) let F, G be Function of I, the carrier' of C; ::_thesis: ( doms F = cods G implies ( doms (F "*" G) = doms G & cods (F "*" G) = cods F ) ) assume A1: doms F = cods G ; ::_thesis: ( doms (F "*" G) = doms G & cods (F "*" G) = cods F ) now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_(F_"*"_G))_/._x_=_(doms_G)_/._x let x be set ; ::_thesis: ( x in I implies (doms (F "*" G)) /. x = (doms G) /. x ) assume A2: x in I ; ::_thesis: (doms (F "*" G)) /. x = (doms G) /. x then A3: cod (G /. x) = (doms F) /. x by A1, Def2 .= dom (F /. x) by A2, Def1 ; thus (doms (F "*" G)) /. x = dom ((F "*" G) /. x) by A2, Def1 .= dom ((F /. x) (*) (G /. x)) by A2, Def7 .= dom (G /. x) by A3, CAT_1:17 .= (doms G) /. x by A2, Def1 ; ::_thesis: verum end; hence doms (F "*" G) = doms G by Th1; ::_thesis: cods (F "*" G) = cods F now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_(F_"*"_G))_/._x_=_(cods_F)_/._x let x be set ; ::_thesis: ( x in I implies (cods (F "*" G)) /. x = (cods F) /. x ) assume A4: x in I ; ::_thesis: (cods (F "*" G)) /. x = (cods F) /. x then A5: cod (G /. x) = (doms F) /. x by A1, Def2 .= dom (F /. x) by A4, Def1 ; thus (cods (F "*" G)) /. x = cod ((F "*" G) /. x) by A4, Def2 .= cod ((F /. x) (*) (G /. x)) by A4, Def7 .= cod (F /. x) by A5, CAT_1:17 .= (cods F) /. x by A4, Def2 ; ::_thesis: verum end; hence cods (F "*" G) = cods F by Th1; ::_thesis: verum end; theorem :: CAT_3:19 for x1, x2 being set for C being Category for p1, p2, q1, q2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) proof let x1, x2 be set ; ::_thesis: for C being Category for p1, p2, q1, q2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) let C be Category; ::_thesis: for p1, p2, q1, q2 being Morphism of C st x1 <> x2 holds ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) let p1, p2, q1, q2 be Morphism of C; ::_thesis: ( x1 <> x2 implies ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) ) set F1 = (x1,x2) --> (p1,p2); set F2 = (x1,x2) --> (q1,q2); set G = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)); assume A1: x1 <> x2 ; ::_thesis: ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (((x1,x2)_-->_(p1,p2))_"*"_((x1,x2)_-->_(q1,q2)))_/._x_=_((x1,x2)_-->_((p1_(*)_q1),(p2_(*)_q2)))_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2))) /. x = ((x1,x2) --> ((p1 (*) q1),(p2 (*) q2))) /. x ) assume A2: x in {x1,x2} ; ::_thesis: (((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2))) /. x = ((x1,x2) --> ((p1 (*) q1),(p2 (*) q2))) /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & ((x1,x2) --> (q1,q2)) /. x = q1 & ((x1,x2) --> ((p1 (*) q1),(p2 (*) q2))) /. x = p1 (*) q1 ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & ((x1,x2) --> (q1,q2)) /. x = q2 & ((x1,x2) --> ((p1 (*) q1),(p2 (*) q2))) /. x = p2 (*) q2 ) ) by A1, Th3; hence (((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2))) /. x = ((x1,x2) --> ((p1 (*) q1),(p2 (*) q2))) /. x by A2, Def7; ::_thesis: verum end; hence ((x1,x2) --> (p1,p2)) "*" ((x1,x2) --> (q1,q2)) = (x1,x2) --> ((p1 (*) q1),(p2 (*) q2)) by Th1; ::_thesis: verum end; theorem :: CAT_3:20 for I being set for C being Category for f being Morphism of C for F being Function of I, the carrier' of C holds F * f = F "*" (I --> f) proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Function of I, the carrier' of C holds F * f = F "*" (I --> f) let C be Category; ::_thesis: for f being Morphism of C for F being Function of I, the carrier' of C holds F * f = F "*" (I --> f) let f be Morphism of C; ::_thesis: for F being Function of I, the carrier' of C holds F * f = F "*" (I --> f) let F be Function of I, the carrier' of C; ::_thesis: F * f = F "*" (I --> f) now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (F_*_f)_/._x_=_(F_"*"_(I_-->_f))_/._x let x be set ; ::_thesis: ( x in I implies (F * f) /. x = (F "*" (I --> f)) /. x ) assume A1: x in I ; ::_thesis: (F * f) /. x = (F "*" (I --> f)) /. x hence (F * f) /. x = (F /. x) (*) f by Def5 .= (F /. x) (*) ((I --> f) /. x) by A1, Th2 .= (F "*" (I --> f)) /. x by A1, Def7 ; ::_thesis: verum end; hence F * f = F "*" (I --> f) by Th1; ::_thesis: verum end; theorem :: CAT_3:21 for I being set for C being Category for f being Morphism of C for F being Function of I, the carrier' of C holds f * F = (I --> f) "*" F proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Function of I, the carrier' of C holds f * F = (I --> f) "*" F let C be Category; ::_thesis: for f being Morphism of C for F being Function of I, the carrier' of C holds f * F = (I --> f) "*" F let f be Morphism of C; ::_thesis: for F being Function of I, the carrier' of C holds f * F = (I --> f) "*" F let F be Function of I, the carrier' of C; ::_thesis: f * F = (I --> f) "*" F now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (f_*_F)_/._x_=_((I_-->_f)_"*"_F)_/._x let x be set ; ::_thesis: ( x in I implies (f * F) /. x = ((I --> f) "*" F) /. x ) assume A1: x in I ; ::_thesis: (f * F) /. x = ((I --> f) "*" F) /. x hence (f * F) /. x = f (*) (F /. x) by Def6 .= ((I --> f) /. x) (*) (F /. x) by A1, Th2 .= ((I --> f) "*" F) /. x by A1, Def7 ; ::_thesis: verum end; hence f * F = (I --> f) "*" F by Th1; ::_thesis: verum end; begin definition let C be Category; let a, b be Object of C; let IT be Morphism of a,b; attrIT is retraction means :Def8: :: CAT_3:def 8 ( Hom (a,b) <> {} & Hom (b,a) <> {} & ex g being Morphism of b,a st IT * g = id b ); attrIT is coretraction means :Def9: :: CAT_3:def 9 ( Hom (a,b) <> {} & Hom (b,a) <> {} & ex g being Morphism of b,a st g * IT = id a ); end; :: deftheorem Def8 defines retraction CAT_3:def_8_:_ for C being Category for a, b being Object of C for IT being Morphism of a,b holds ( IT is retraction iff ( Hom (a,b) <> {} & Hom (b,a) <> {} & ex g being Morphism of b,a st IT * g = id b ) ); :: deftheorem Def9 defines coretraction CAT_3:def_9_:_ for C being Category for a, b being Object of C for IT being Morphism of a,b holds ( IT is coretraction iff ( Hom (a,b) <> {} & Hom (b,a) <> {} & ex g being Morphism of b,a st g * IT = id a ) ); theorem Th22: :: CAT_3:22 for C being Category for a, b being Object of C for f being Morphism of a,b st f is retraction holds f is epi proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st f is retraction holds f is epi let a, b be Object of C; ::_thesis: for f being Morphism of a,b st f is retraction holds f is epi let f be Morphism of a,b; ::_thesis: ( f is retraction implies f is epi ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of b,a holds not f * g = id b or f is epi ) given g being Morphism of b,a such that A2: f * g = id b ; ::_thesis: f is epi thus Hom (a,b) <> {} by A1; :: according to CAT_1:def_15 ::_thesis: for b1 being Element of the carrier of C holds ( Hom (b,b1) = {} or for b2, b3 being Morphism of b,b1 holds ( not b2 * f = b3 * f or b2 = b3 ) ) let c be Object of C; ::_thesis: ( Hom (b,c) = {} or for b1, b2 being Morphism of b,c holds ( not b1 * f = b2 * f or b1 = b2 ) ) assume A3: Hom (b,c) <> {} ; ::_thesis: for b1, b2 being Morphism of b,c holds ( not b1 * f = b2 * f or b1 = b2 ) let p1, p2 be Morphism of b,c; ::_thesis: ( not p1 * f = p2 * f or p1 = p2 ) assume A4: p1 * f = p2 * f ; ::_thesis: p1 = p2 thus p1 = p1 * (f * g) by A3, A2, CAT_1:29 .= (p2 * f) * g by A3, A1, A4, CAT_1:25 .= p2 * (f * g) by A3, A1, CAT_1:25 .= p2 by A3, A2, CAT_1:29 ; ::_thesis: verum end; theorem :: CAT_3:23 for C being Category for a, b being Object of C for f being Morphism of a,b st f is coretraction holds f is monic proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st f is coretraction holds f is monic let a, b be Object of C; ::_thesis: for f being Morphism of a,b st f is coretraction holds f is monic let f be Morphism of a,b; ::_thesis: ( f is coretraction implies f is monic ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of b,a holds not g * f = id a or f is monic ) given g being Morphism of b,a such that A2: g * f = id a ; ::_thesis: f is monic thus Hom (a,b) <> {} by A1; :: according to CAT_1:def_14 ::_thesis: for b1 being Element of the carrier of C holds ( Hom (b1,a) = {} or for b2, b3 being Morphism of b1,a holds ( not f * b2 = f * b3 or b2 = b3 ) ) let c be Object of C; ::_thesis: ( Hom (c,a) = {} or for b1, b2 being Morphism of c,a holds ( not f * b1 = f * b2 or b1 = b2 ) ) assume A3: Hom (c,a) <> {} ; ::_thesis: for b1, b2 being Morphism of c,a holds ( not f * b1 = f * b2 or b1 = b2 ) let p1, p2 be Morphism of c,a; ::_thesis: ( not f * p1 = f * p2 or p1 = p2 ) assume A4: f * p1 = f * p2 ; ::_thesis: p1 = p2 thus p1 = (g * f) * p1 by A3, A2, CAT_1:28 .= g * (f * p2) by A3, A1, A4, CAT_1:25 .= (g * f) * p2 by A3, A1, CAT_1:25 .= p2 by A3, A2, CAT_1:28 ; ::_thesis: verum end; theorem :: CAT_3:24 for C being Category for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st f is retraction & g is retraction holds g * f is retraction proof let C be Category; ::_thesis: for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st f is retraction & g is retraction holds g * f is retraction let a, b, c be Object of C; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c st f is retraction & g is retraction holds g * f is retraction let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c st f is retraction & g is retraction holds g * f is retraction let g be Morphism of b,c; ::_thesis: ( f is retraction & g is retraction implies g * f is retraction ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of b,a holds not f * g = id b or not g is retraction or g * f is retraction ) given i being Morphism of b,a such that A2: f * i = id b ; ::_thesis: ( not g is retraction or g * f is retraction ) assume A3: ( Hom (b,c) <> {} & Hom (c,b) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of c,b holds not g * g = id c or g * f is retraction ) given j being Morphism of c,b such that A4: g * j = id c ; ::_thesis: g * f is retraction thus A5: ( Hom (a,c) <> {} & Hom (c,a) <> {} ) by A1, A3, CAT_1:24; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of c,a st (g * f) * g = id c take i * j ; ::_thesis: (g * f) * (i * j) = id c thus (g * f) * (i * j) = g * (f * (i * j)) by A1, A3, A5, CAT_1:25 .= g * ((f * i) * j) by A1, A3, CAT_1:25 .= id c by A2, A3, A4, CAT_1:28 ; ::_thesis: verum end; theorem :: CAT_3:25 for C being Category for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st f is coretraction & g is coretraction holds g * f is coretraction proof let C be Category; ::_thesis: for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st f is coretraction & g is coretraction holds g * f is coretraction let a, b, c be Object of C; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c st f is coretraction & g is coretraction holds g * f is coretraction let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c st f is coretraction & g is coretraction holds g * f is coretraction let g be Morphism of b,c; ::_thesis: ( f is coretraction & g is coretraction implies g * f is coretraction ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of b,a holds not g * f = id a or not g is coretraction or g * f is coretraction ) given i being Morphism of b,a such that A2: i * f = id a ; ::_thesis: ( not g is coretraction or g * f is coretraction ) assume A3: ( Hom (b,c) <> {} & Hom (c,b) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of c,b holds not g * g = id b or g * f is coretraction ) given j being Morphism of c,b such that A4: j * g = id b ; ::_thesis: g * f is coretraction thus A5: ( Hom (a,c) <> {} & Hom (c,a) <> {} ) by A1, A3, CAT_1:24; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of c,a st g * (g * f) = id a take i * j ; ::_thesis: (i * j) * (g * f) = id a thus (i * j) * (g * f) = i * (j * (g * f)) by A1, A3, A5, CAT_1:25 .= i * ((j * g) * f) by A1, A3, CAT_1:25 .= id a by A1, A2, A4, CAT_1:28 ; ::_thesis: verum end; theorem :: CAT_3:26 for C being Category for c, a, b being Object of C for f being Morphism of a,b for g being Morphism of b,c st Hom (a,b) <> {} & Hom (b,a) <> {} & g * f is retraction holds g is retraction proof let C be Category; ::_thesis: for c, a, b being Object of C for f being Morphism of a,b for g being Morphism of b,c st Hom (a,b) <> {} & Hom (b,a) <> {} & g * f is retraction holds g is retraction let c, a, b be Object of C; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c st Hom (a,b) <> {} & Hom (b,a) <> {} & g * f is retraction holds g is retraction let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c st Hom (a,b) <> {} & Hom (b,a) <> {} & g * f is retraction holds g is retraction let g be Morphism of b,c; ::_thesis: ( Hom (a,b) <> {} & Hom (b,a) <> {} & g * f is retraction implies g is retraction ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; ::_thesis: ( not g * f is retraction or g is retraction ) assume A2: ( Hom (a,c) <> {} & Hom (c,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of c,a holds not (g * f) * g = id c or g is retraction ) given i being Morphism of c,a such that A3: (g * f) * i = id c ; ::_thesis: g is retraction thus A4: ( Hom (b,c) <> {} & Hom (c,b) <> {} ) by A2, A1, CAT_1:24; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of c,b st g * g = id c take f * i ; ::_thesis: g * (f * i) = id c thus g * (f * i) = id c by A2, A3, A4, A1, CAT_1:25; ::_thesis: verum end; theorem :: CAT_3:27 for C being Category for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st Hom (b,c) <> {} & Hom (c,b) <> {} & g * f is coretraction holds f is coretraction proof let C be Category; ::_thesis: for a, b, c being Object of C for f being Morphism of a,b for g being Morphism of b,c st Hom (b,c) <> {} & Hom (c,b) <> {} & g * f is coretraction holds f is coretraction let a, b, c be Object of C; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c st Hom (b,c) <> {} & Hom (c,b) <> {} & g * f is coretraction holds f is coretraction let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c st Hom (b,c) <> {} & Hom (c,b) <> {} & g * f is coretraction holds f is coretraction let g be Morphism of b,c; ::_thesis: ( Hom (b,c) <> {} & Hom (c,b) <> {} & g * f is coretraction implies f is coretraction ) assume A1: ( Hom (b,c) <> {} & Hom (c,b) <> {} ) ; ::_thesis: ( not g * f is coretraction or f is coretraction ) assume A2: ( Hom (a,c) <> {} & Hom (c,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of c,a holds not g * (g * f) = id a or f is coretraction ) given i being Morphism of c,a such that A3: i * (g * f) = id a ; ::_thesis: f is coretraction thus A4: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A1, A2, CAT_1:24; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of b,a st g * f = id a take i * g ; ::_thesis: (i * g) * f = id a thus (i * g) * f = id a by A4, A1, A2, A3, CAT_1:25; ::_thesis: verum end; theorem :: CAT_3:28 for C being Category for a, b being Object of C for f being Morphism of a,b st f is retraction & f is monic holds f is invertible proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st f is retraction & f is monic holds f is invertible let a, b be Object of C; ::_thesis: for f being Morphism of a,b st f is retraction & f is monic holds f is invertible let f be Morphism of a,b; ::_thesis: ( f is retraction & f is monic implies f is invertible ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of b,a holds not f * g = id b or not f is monic or f is invertible ) given i being Morphism of b,a such that A2: f * i = id b ; ::_thesis: ( not f is monic or f is invertible ) assume A3: f is monic ; ::_thesis: f is invertible thus ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A1; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of b,a st ( f * b1 = id b & b1 * f = id a ) take i ; ::_thesis: ( f * i = id b & i * f = id a ) thus f * i = id b by A2; ::_thesis: i * f = id a A4: f * (i * f) = (id b) * f by A1, A2, CAT_1:25 .= f by A1, CAT_1:28 .= f * (id a) by A1, CAT_1:29 ; Hom (a,a) <> {} ; hence i * f = id a by A3, A4, CAT_1:def_14; ::_thesis: verum end; theorem Th29: :: CAT_3:29 for C being Category for a, b being Object of C for f being Morphism of a,b st f is coretraction & f is epi holds f is invertible proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st f is coretraction & f is epi holds f is invertible let a, b be Object of C; ::_thesis: for f being Morphism of a,b st f is coretraction & f is epi holds f is invertible let f be Morphism of a,b; ::_thesis: ( f is coretraction & f is epi implies f is invertible ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of b,a holds not g * f = id a or not f is epi or f is invertible ) given i being Morphism of b,a such that A2: i * f = id a ; ::_thesis: ( not f is epi or f is invertible ) assume A3: f is epi ; ::_thesis: f is invertible thus ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A1; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of b,a st ( f * b1 = id b & b1 * f = id a ) take i ; ::_thesis: ( f * i = id b & i * f = id a ) A4: (f * i) * f = f * (id a) by A1, A2, CAT_1:25 .= f by A1, CAT_1:29 .= (id b) * f by A1, CAT_1:28 ; Hom (b,b) <> {} ; hence f * i = id b by A3, A4, CAT_1:def_15; ::_thesis: i * f = id a thus i * f = id a by A2; ::_thesis: verum end; theorem :: CAT_3:30 for C being Category for a, b being Object of C for f being Morphism of a,b holds ( f is invertible iff ( f is retraction & f is coretraction ) ) proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b holds ( f is invertible iff ( f is retraction & f is coretraction ) ) let a, b be Object of C; ::_thesis: for f being Morphism of a,b holds ( f is invertible iff ( f is retraction & f is coretraction ) ) let f be Morphism of a,b; ::_thesis: ( f is invertible iff ( f is retraction & f is coretraction ) ) thus ( f is invertible implies ( f is retraction & f is coretraction ) ) ::_thesis: ( f is retraction & f is coretraction implies f is invertible ) proof assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_1:def_16 ::_thesis: ( for b1 being Morphism of b,a holds ( not f * b1 = id b or not b1 * f = id a ) or ( f is retraction & f is coretraction ) ) assume ex g being Morphism of b,a st ( f * g = id b & g * f = id a ) ; ::_thesis: ( f is retraction & f is coretraction ) hence ( f is retraction & f is coretraction ) by A1, Def8, Def9; ::_thesis: verum end; assume f is retraction ; ::_thesis: ( not f is coretraction or f is invertible ) hence ( not f is coretraction or f is invertible ) by Th22, Th29; ::_thesis: verum end; definition let C be Category; let a, b be Object of C; assume Z: Hom (a,b) <> {} ; let D be Category; let T be Functor of C,D; let f be Morphism of a,b; funcT /. f -> Morphism of T . a,T . b equals :Def10: :: CAT_3:def 10 T . f; coherence T . f is Morphism of T . a,T . b proof f in Hom (a,b) by Z, CAT_1:def_5; then T . f in Hom ((T . a),(T . b)) by CAT_1:81; hence T . f is Morphism of T . a,T . b by CAT_1:def_5; ::_thesis: verum end; end; :: deftheorem Def10 defines /. CAT_3:def_10_:_ for C being Category for a, b being Object of C st Hom (a,b) <> {} holds for D being Category for T being Functor of C,D for f being Morphism of a,b holds T /. f = T . f; Lm1: for C, D being Category for T being Functor of C,D for a, b, c being Object of C st Hom (a,b) <> {} & Hom (b,c) <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) proof let C, D be Category; ::_thesis: for T being Functor of C,D for a, b, c being Object of C st Hom (a,b) <> {} & Hom (b,c) <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) let T be Functor of C,D; ::_thesis: for a, b, c being Object of C st Hom (a,b) <> {} & Hom (b,c) <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) let a, b, c be Object of C; ::_thesis: ( Hom (a,b) <> {} & Hom (b,c) <> {} implies for f being Morphism of a,b for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) ) assume A1: ( Hom (a,b) <> {} & Hom (b,c) <> {} ) ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c holds T /. (g * f) = (T /. g) * (T /. f) let g be Morphism of b,c; ::_thesis: T /. (g * f) = (T /. g) * (T /. f) A2: cod f = b by A1, CAT_1:5 .= dom g by A1, CAT_1:5 ; reconsider gg = g, ff = f as Morphism of C ; A3: Hom (a,c) <> {} by A1, CAT_1:24; A4: T /. g = T . gg by Def10, A1; A5: T /. f = T . ff by Def10, A1; A6: ( Hom ((T . a),(T . b)) <> {} & Hom ((T . b),(T . c)) <> {} ) by A1, CAT_1:84; g * f = gg (*) ff by A1, CAT_1:def_13; hence T /. (g * f) = T . (gg (*) ff) by Def10, A3 .= (T . gg) (*) (T . ff) by A2, CAT_1:64 .= (T /. g) * (T /. f) by A6, A4, A5, CAT_1:def_13 ; ::_thesis: verum end; Lm2: for C, D being Category for T being Functor of C,D for c being Object of C holds T /. (id c) = id (T . c) proof let C, D be Category; ::_thesis: for T being Functor of C,D for c being Object of C holds T /. (id c) = id (T . c) let T be Functor of C,D; ::_thesis: for c being Object of C holds T /. (id c) = id (T . c) let c be Object of C; ::_thesis: T /. (id c) = id (T . c) Hom (c,c) <> {} ; hence T /. (id c) = T . (id c) by Def10 .= id (T . c) by CAT_1:71 ; ::_thesis: verum end; theorem :: CAT_3:31 for C, D being Category for a, b being Object of C for f being Morphism of a,b for T being Functor of C,D st f is retraction holds T /. f is retraction proof let C, D be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b for T being Functor of C,D st f is retraction holds T /. f is retraction let a, b be Object of C; ::_thesis: for f being Morphism of a,b for T being Functor of C,D st f is retraction holds T /. f is retraction let f be Morphism of a,b; ::_thesis: for T being Functor of C,D st f is retraction holds T /. f is retraction let T be Functor of C,D; ::_thesis: ( f is retraction implies T /. f is retraction ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of b,a holds not f * g = id b or T /. f is retraction ) given i being Morphism of b,a such that A2: f * i = id b ; ::_thesis: T /. f is retraction thus ( Hom ((T . a),(T . b)) <> {} & Hom ((T . b),(T . a)) <> {} ) by A1, CAT_1:84; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of T . b,T . a st (T /. f) * g = id (T . b) take T /. i ; ::_thesis: (T /. f) * (T /. i) = id (T . b) thus (T /. f) * (T /. i) = T /. (id b) by A1, A2, Lm1 .= id (T . b) by Lm2 ; ::_thesis: verum end; theorem :: CAT_3:32 for C, D being Category for a, b being Object of C for f being Morphism of a,b for T being Functor of C,D st f is coretraction holds T /. f is coretraction proof let C, D be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b for T being Functor of C,D st f is coretraction holds T /. f is coretraction let a, b be Object of C; ::_thesis: for f being Morphism of a,b for T being Functor of C,D st f is coretraction holds T /. f is coretraction let f be Morphism of a,b; ::_thesis: for T being Functor of C,D st f is coretraction holds T /. f is coretraction let T be Functor of C,D; ::_thesis: ( f is coretraction implies T /. f is coretraction ) assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of b,a holds not g * f = id a or T /. f is coretraction ) given i being Morphism of b,a such that A2: i * f = id a ; ::_thesis: T /. f is coretraction thus ( Hom ((T . a),(T . b)) <> {} & Hom ((T . b),(T . a)) <> {} ) by A1, CAT_1:84; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of T . b,T . a st g * (T /. f) = id (T . a) take T /. i ; ::_thesis: (T /. i) * (T /. f) = id (T . a) thus (T /. i) * (T /. f) = T /. (id a) by A1, A2, Lm1 .= id (T . a) by Lm2 ; ::_thesis: verum end; theorem :: CAT_3:33 for C being Category for a, b being Object of C for f being Morphism of a,b holds ( f is retraction iff f opp is coretraction ) proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b holds ( f is retraction iff f opp is coretraction ) let a, b be Object of C; ::_thesis: for f being Morphism of a,b holds ( f is retraction iff f opp is coretraction ) let f be Morphism of a,b; ::_thesis: ( f is retraction iff f opp is coretraction ) thus ( f is retraction implies f opp is coretraction ) ::_thesis: ( f opp is coretraction implies f is retraction ) proof assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of b,a holds not f * g = id b or f opp is coretraction ) given i being Morphism of b,a such that A2: f * i = id b ; ::_thesis: f opp is coretraction thus ( Hom ((b opp),(a opp)) <> {} & Hom ((a opp),(b opp)) <> {} ) by A1, OPPCAT_1:5; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of a opp ,b opp st g * (f opp) = id (b opp) take i opp ; ::_thesis: (i opp) * (f opp) = id (b opp) thus (i opp) * (f opp) = id b by A1, A2, OPPCAT_1:70 .= id (b opp) by OPPCAT_1:71 ; ::_thesis: verum end; assume A3: ( Hom ((b opp),(a opp)) <> {} & Hom ((a opp),(b opp)) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of a opp ,b opp holds not g * (f opp) = id (b opp) or f is retraction ) given i being Morphism of a opp ,b opp such that A4: i * (f opp) = id (b opp) ; ::_thesis: f is retraction thus A5: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A3, OPPCAT_1:5; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of b,a st f * g = id b take opp i ; ::_thesis: f * (opp i) = id b A6: (opp i) opp = opp i by A5, OPPCAT_1:def_6 .= i by A3, OPPCAT_1:def_7 ; thus f * (opp i) = id (b opp) by A4, A6, A5, OPPCAT_1:70 .= id b by OPPCAT_1:71 ; ::_thesis: verum end; theorem :: CAT_3:34 for C being Category for a, b being Object of C for f being Morphism of a,b holds ( f is coretraction iff f opp is retraction ) proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b holds ( f is coretraction iff f opp is retraction ) let a, b be Object of C; ::_thesis: for f being Morphism of a,b holds ( f is coretraction iff f opp is retraction ) let f be Morphism of a,b; ::_thesis: ( f is coretraction iff f opp is retraction ) thus ( f is coretraction implies f opp is retraction ) ::_thesis: ( f opp is retraction implies f is coretraction ) proof assume A1: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; :: according to CAT_3:def_9 ::_thesis: ( for g being Morphism of b,a holds not g * f = id a or f opp is retraction ) given i being Morphism of b,a such that A2: i * f = id a ; ::_thesis: f opp is retraction thus ( Hom ((b opp),(a opp)) <> {} & Hom ((a opp),(b opp)) <> {} ) by A1, OPPCAT_1:5; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of a opp ,b opp st (f opp) * g = id (a opp) take i opp ; ::_thesis: (f opp) * (i opp) = id (a opp) thus (f opp) * (i opp) = id a by A1, A2, OPPCAT_1:70 .= id (a opp) by OPPCAT_1:71 ; ::_thesis: verum end; assume A3: ( Hom ((b opp),(a opp)) <> {} & Hom ((a opp),(b opp)) <> {} ) ; :: according to CAT_3:def_8 ::_thesis: ( for g being Morphism of a opp ,b opp holds not (f opp) * g = id (a opp) or f is coretraction ) given i being Morphism of a opp ,b opp such that A4: (f opp) * i = id (a opp) ; ::_thesis: f is coretraction thus A5: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A3, OPPCAT_1:5; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of b,a st g * f = id a take opp i ; ::_thesis: (opp i) * f = id a (opp i) opp = opp i by A5, OPPCAT_1:def_6 .= i by A3, OPPCAT_1:def_7 ; hence (opp i) * f = (f opp) * i by A5, OPPCAT_1:70 .= id (a opp) by A4 .= id a by OPPCAT_1:71 ; ::_thesis: verum end; begin definition let C be Category; let a, b be Object of C; assume A1: b is terminal ; func term (a,b) -> Morphism of a,b means :: CAT_3:def 11 verum; existence ex b1 being Morphism of a,b st verum ; uniqueness for b1, b2 being Morphism of a,b holds b1 = b2 proof let f1, f2 be Morphism of a,b; ::_thesis: f1 = f2 consider f being Morphism of a,b such that A2: for g being Morphism of a,b holds f = g by A1, CAT_1:def_18; thus f1 = f by A2 .= f2 by A2 ; ::_thesis: verum end; end; :: deftheorem defines term CAT_3:def_11_:_ for C being Category for a, b being Object of C st b is terminal holds for b4 being Morphism of a,b holds ( b4 = term (a,b) iff verum ); theorem Th35: :: CAT_3:35 for C being Category for b, a being Object of C st b is terminal holds ( dom (term (a,b)) = a & cod (term (a,b)) = b ) proof let C be Category; ::_thesis: for b, a being Object of C st b is terminal holds ( dom (term (a,b)) = a & cod (term (a,b)) = b ) let b, a be Object of C; ::_thesis: ( b is terminal implies ( dom (term (a,b)) = a & cod (term (a,b)) = b ) ) assume b is terminal ; ::_thesis: ( dom (term (a,b)) = a & cod (term (a,b)) = b ) then Hom (a,b) <> {} by CAT_1:def_18; hence ( dom (term (a,b)) = a & cod (term (a,b)) = b ) by CAT_1:5; ::_thesis: verum end; theorem Th36: :: CAT_3:36 for C being Category for b, a being Object of C for f being Morphism of C st b is terminal & dom f = a & cod f = b holds term (a,b) = f proof let C be Category; ::_thesis: for b, a being Object of C for f being Morphism of C st b is terminal & dom f = a & cod f = b holds term (a,b) = f let b, a be Object of C; ::_thesis: for f being Morphism of C st b is terminal & dom f = a & cod f = b holds term (a,b) = f let f be Morphism of C; ::_thesis: ( b is terminal & dom f = a & cod f = b implies term (a,b) = f ) assume that A1: b is terminal and A2: ( dom f = a & cod f = b ) ; ::_thesis: term (a,b) = f consider h being Morphism of a,b such that A3: for g being Morphism of a,b holds h = g by A1, CAT_1:def_18; f is Morphism of a,b by A2, CAT_1:4; hence f = h by A3 .= term (a,b) by A3 ; ::_thesis: verum end; theorem :: CAT_3:37 for C being Category for a, b being Object of C for f being Morphism of a,b st b is terminal holds term (a,b) = f proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st b is terminal holds term (a,b) = f let a, b be Object of C; ::_thesis: for f being Morphism of a,b st b is terminal holds term (a,b) = f let f be Morphism of a,b; ::_thesis: ( b is terminal implies term (a,b) = f ) assume A1: b is terminal ; ::_thesis: term (a,b) = f then Hom (a,b) <> {} by CAT_1:def_18; then ( dom f = a & cod f = b ) by CAT_1:5; hence term (a,b) = f by A1, Th36; ::_thesis: verum end; begin definition let C be Category; let a, b be Object of C; assume A1: a is initial ; func init (a,b) -> Morphism of a,b means :: CAT_3:def 12 verum; existence ex b1 being Morphism of a,b st verum ; uniqueness for b1, b2 being Morphism of a,b holds b1 = b2 proof let f1, f2 be Morphism of a,b; ::_thesis: f1 = f2 consider f being Morphism of a,b such that A2: for g being Morphism of a,b holds f = g by A1, CAT_1:def_19; thus f1 = f by A2 .= f2 by A2 ; ::_thesis: verum end; end; :: deftheorem defines init CAT_3:def_12_:_ for C being Category for a, b being Object of C st a is initial holds for b4 being Morphism of a,b holds ( b4 = init (a,b) iff verum ); theorem Th38: :: CAT_3:38 for C being Category for a, b being Object of C st a is initial holds ( dom (init (a,b)) = a & cod (init (a,b)) = b ) proof let C be Category; ::_thesis: for a, b being Object of C st a is initial holds ( dom (init (a,b)) = a & cod (init (a,b)) = b ) let a, b be Object of C; ::_thesis: ( a is initial implies ( dom (init (a,b)) = a & cod (init (a,b)) = b ) ) assume a is initial ; ::_thesis: ( dom (init (a,b)) = a & cod (init (a,b)) = b ) then Hom (a,b) <> {} by CAT_1:def_19; hence ( dom (init (a,b)) = a & cod (init (a,b)) = b ) by CAT_1:5; ::_thesis: verum end; theorem Th39: :: CAT_3:39 for C being Category for a, b being Object of C for f being Morphism of C st a is initial & dom f = a & cod f = b holds init (a,b) = f proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of C st a is initial & dom f = a & cod f = b holds init (a,b) = f let a, b be Object of C; ::_thesis: for f being Morphism of C st a is initial & dom f = a & cod f = b holds init (a,b) = f let f be Morphism of C; ::_thesis: ( a is initial & dom f = a & cod f = b implies init (a,b) = f ) assume that A1: a is initial and A2: ( dom f = a & cod f = b ) ; ::_thesis: init (a,b) = f consider h being Morphism of a,b such that A3: for g being Morphism of a,b holds h = g by A1, CAT_1:def_19; f is Morphism of a,b by A2, CAT_1:4; hence f = h by A3 .= init (a,b) by A3 ; ::_thesis: verum end; theorem :: CAT_3:40 for C being Category for a, b being Object of C for f being Morphism of a,b st a is initial holds init (a,b) = f proof let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b st a is initial holds init (a,b) = f let a, b be Object of C; ::_thesis: for f being Morphism of a,b st a is initial holds init (a,b) = f let f be Morphism of a,b; ::_thesis: ( a is initial implies init (a,b) = f ) assume A1: a is initial ; ::_thesis: init (a,b) = f then Hom (a,b) <> {} by CAT_1:def_19; then ( dom f = a & cod f = b ) by CAT_1:5; hence init (a,b) = f by A1, Th39; ::_thesis: verum end; begin definition let C be Category; let a be Object of C; let I be set ; mode Projections_family of a,I -> Function of I, the carrier' of C means :Def13: :: CAT_3:def 13 doms it = I --> a; existence ex b1 being Function of I, the carrier' of C st doms b1 = I --> a proof take F = I --> (id a); ::_thesis: doms F = I --> a doms F = I --> (dom (id a)) by Th4; hence doms F = I --> a ; ::_thesis: verum end; end; :: deftheorem Def13 defines Projections_family CAT_3:def_13_:_ for C being Category for a being Object of C for I being set for b4 being Function of I, the carrier' of C holds ( b4 is Projections_family of a,I iff doms b4 = I --> a ); theorem Th41: :: CAT_3:41 for I, x being set for C being Category for a being Object of C for F being Projections_family of a,I st x in I holds dom (F /. x) = a proof let I, x be set ; ::_thesis: for C being Category for a being Object of C for F being Projections_family of a,I st x in I holds dom (F /. x) = a let C be Category; ::_thesis: for a being Object of C for F being Projections_family of a,I st x in I holds dom (F /. x) = a let a be Object of C; ::_thesis: for F being Projections_family of a,I st x in I holds dom (F /. x) = a let F be Projections_family of a,I; ::_thesis: ( x in I implies dom (F /. x) = a ) assume A1: x in I ; ::_thesis: dom (F /. x) = a (doms F) /. x = (I --> a) /. x by Def13; hence dom (F /. x) = (I --> a) /. x by A1, Def1 .= a by A1, Th2 ; ::_thesis: verum end; theorem Th42: :: CAT_3:42 for C being Category for a being Object of C for F being Function of {}, the carrier' of C holds F is Projections_family of a, {} proof let C be Category; ::_thesis: for a being Object of C for F being Function of {}, the carrier' of C holds F is Projections_family of a, {} let a be Object of C; ::_thesis: for F being Function of {}, the carrier' of C holds F is Projections_family of a, {} let F be Function of {}, the carrier' of C; ::_thesis: F is Projections_family of a, {} thus {} --> a = doms F ; :: according to CAT_3:def_13 ::_thesis: verum end; theorem Th43: :: CAT_3:43 for y being set for C being Category for a being Object of C for f being Morphism of C st dom f = a holds y .--> f is Projections_family of a,{y} proof let y be set ; ::_thesis: for C being Category for a being Object of C for f being Morphism of C st dom f = a holds y .--> f is Projections_family of a,{y} let C be Category; ::_thesis: for a being Object of C for f being Morphism of C st dom f = a holds y .--> f is Projections_family of a,{y} let a be Object of C; ::_thesis: for f being Morphism of C st dom f = a holds y .--> f is Projections_family of a,{y} let f be Morphism of C; ::_thesis: ( dom f = a implies y .--> f is Projections_family of a,{y} ) set F = y .--> f; assume A1: dom f = a ; ::_thesis: y .--> f is Projections_family of a,{y} now__::_thesis:_for_x_being_set_st_x_in_{y}_holds_ (doms_(y_.-->_f))_/._x_=_(y_.-->_a)_/._x let x be set ; ::_thesis: ( x in {y} implies (doms (y .--> f)) /. x = (y .--> a) /. x ) assume A2: x in {y} ; ::_thesis: (doms (y .--> f)) /. x = (y .--> a) /. x hence (doms (y .--> f)) /. x = dom ((y .--> f) /. x) by Def1 .= a by A1, A2, Th2 .= (y .--> a) /. x by A2, Th2 ; ::_thesis: verum end; hence doms (y .--> f) = {y} --> a by Th1; :: according to CAT_3:def_13 ::_thesis: verum end; theorem Th44: :: CAT_3:44 for x1, x2 being set for C being Category for a being Object of C for p1, p2 being Morphism of C st dom p1 = a & dom p2 = a holds (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} proof let x1, x2 be set ; ::_thesis: for C being Category for a being Object of C for p1, p2 being Morphism of C st dom p1 = a & dom p2 = a holds (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} let C be Category; ::_thesis: for a being Object of C for p1, p2 being Morphism of C st dom p1 = a & dom p2 = a holds (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} let a be Object of C; ::_thesis: for p1, p2 being Morphism of C st dom p1 = a & dom p2 = a holds (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} let p1, p2 be Morphism of C; ::_thesis: ( dom p1 = a & dom p2 = a implies (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} ) assume A1: ( dom p1 = a & dom p2 = a ) ; ::_thesis: (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} doms ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((dom p1),(dom p2)) by Th6 .= {x1,x2} --> a by A1, FUNCT_4:65 ; hence (x1,x2) --> (p1,p2) is Projections_family of a,{x1,x2} by Def13; ::_thesis: verum end; theorem Th45: :: CAT_3:45 for I being set for C being Category for a being Object of C for f being Morphism of C for F being Projections_family of a,I st cod f = a holds F * f is Projections_family of dom f,I proof let I be set ; ::_thesis: for C being Category for a being Object of C for f being Morphism of C for F being Projections_family of a,I st cod f = a holds F * f is Projections_family of dom f,I let C be Category; ::_thesis: for a being Object of C for f being Morphism of C for F being Projections_family of a,I st cod f = a holds F * f is Projections_family of dom f,I let a be Object of C; ::_thesis: for f being Morphism of C for F being Projections_family of a,I st cod f = a holds F * f is Projections_family of dom f,I let f be Morphism of C; ::_thesis: for F being Projections_family of a,I st cod f = a holds F * f is Projections_family of dom f,I let F be Projections_family of a,I; ::_thesis: ( cod f = a implies F * f is Projections_family of dom f,I ) assume cod f = a ; ::_thesis: F * f is Projections_family of dom f,I then doms F = I --> (cod f) by Def13; hence doms (F * f) = I --> (dom f) by Th16; :: according to CAT_3:def_13 ::_thesis: verum end; theorem :: CAT_3:46 for I being set for C being Category for a being Object of C for F being Function of I, the carrier' of C for G being Projections_family of a,I st doms F = cods G holds F "*" G is Projections_family of a,I proof let I be set ; ::_thesis: for C being Category for a being Object of C for F being Function of I, the carrier' of C for G being Projections_family of a,I st doms F = cods G holds F "*" G is Projections_family of a,I let C be Category; ::_thesis: for a being Object of C for F being Function of I, the carrier' of C for G being Projections_family of a,I st doms F = cods G holds F "*" G is Projections_family of a,I let a be Object of C; ::_thesis: for F being Function of I, the carrier' of C for G being Projections_family of a,I st doms F = cods G holds F "*" G is Projections_family of a,I let F be Function of I, the carrier' of C; ::_thesis: for G being Projections_family of a,I st doms F = cods G holds F "*" G is Projections_family of a,I let G be Projections_family of a,I; ::_thesis: ( doms F = cods G implies F "*" G is Projections_family of a,I ) assume doms F = cods G ; ::_thesis: F "*" G is Projections_family of a,I then doms (F "*" G) = doms G by Th18; hence doms (F "*" G) = I --> a by Def13; :: according to CAT_3:def_13 ::_thesis: verum end; theorem :: CAT_3:47 for I being set for C being Category for f being Morphism of C for F being Projections_family of cod f,I holds (f opp) * (F opp) = (F * f) opp proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Projections_family of cod f,I holds (f opp) * (F opp) = (F * f) opp let C be Category; ::_thesis: for f being Morphism of C for F being Projections_family of cod f,I holds (f opp) * (F opp) = (F * f) opp let f be Morphism of C; ::_thesis: for F being Projections_family of cod f,I holds (f opp) * (F opp) = (F * f) opp let F be Projections_family of cod f,I; ::_thesis: (f opp) * (F opp) = (F * f) opp now__::_thesis:_for_x_being_set_st_x_in_I_holds_ ((f_opp)_*_(F_opp))_/._x_=_((F_*_f)_opp)_/._x let x be set ; ::_thesis: ( x in I implies ((f opp) * (F opp)) /. x = ((F * f) opp) /. x ) assume A1: x in I ; ::_thesis: ((f opp) * (F opp)) /. x = ((F * f) opp) /. x then A2: dom (F /. x) = (doms F) /. x by Def1 .= (I --> (cod f)) /. x by Def13 .= cod f by A1, Th2 ; reconsider ff = f as Morphism of dom f, cod f by CAT_1:4; reconsider gg = F /. x as Morphism of cod f, cod (F /. x) by CAT_1:4, A2; A3: ( Hom ((dom f),(cod f)) <> {} & Hom ((dom (F /. x)),(cod (F /. x))) <> {} ) by CAT_1:2; then A4: ff opp = f opp by OPPCAT_1:def_6; A5: gg opp = (F /. x) opp by OPPCAT_1:def_6, A3, A2; thus ((f opp) * (F opp)) /. x = (f opp) (*) ((F opp) /. x) by A1, Def6 .= (f opp) (*) ((F /. x) opp) by A1, Def3 .= (gg (*) ff) opp by A2, OPPCAT_1:16, A4, A5, A3 .= ((F * f) /. x) opp by A1, Def5 .= ((F * f) opp) /. x by A1, Def3 ; ::_thesis: verum end; hence (f opp) * (F opp) = (F * f) opp by Th1; ::_thesis: verum end; definition let C be Category; let a be Object of C; let I be set ; let F be Function of I, the carrier' of C; preda is_a_product_wrt F means :Def14: :: CAT_3:def 14 ( F is Projections_family of a,I & ( for b being Object of C for F9 being Projections_family of b,I st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) ); end; :: deftheorem Def14 defines is_a_product_wrt CAT_3:def_14_:_ for C being Category for a being Object of C for I being set for F being Function of I, the carrier' of C holds ( a is_a_product_wrt F iff ( F is Projections_family of a,I & ( for b being Object of C for F9 being Projections_family of b,I st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) ) ); theorem Th48: :: CAT_3:48 for I being set for C being Category for c, d being Object of C for F being Projections_family of c,I for F9 being Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 holds c,d are_isomorphic proof let I be set ; ::_thesis: for C being Category for c, d being Object of C for F being Projections_family of c,I for F9 being Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 holds c,d are_isomorphic let C be Category; ::_thesis: for c, d being Object of C for F being Projections_family of c,I for F9 being Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 holds c,d are_isomorphic let c, d be Object of C; ::_thesis: for F being Projections_family of c,I for F9 being Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 holds c,d are_isomorphic let F be Projections_family of c,I; ::_thesis: for F9 being Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 holds c,d are_isomorphic let F9 be Projections_family of d,I; ::_thesis: ( c is_a_product_wrt F & d is_a_product_wrt F9 & cods F = cods F9 implies c,d are_isomorphic ) assume that A1: c is_a_product_wrt F and A2: d is_a_product_wrt F9 and A3: cods F = cods F9 ; ::_thesis: c,d are_isomorphic cods F9 = cods F9 ; then consider gf being Morphism of C such that gf in Hom (d,d) and A4: for k being Morphism of C st k in Hom (d,d) holds ( ( for x being set st x in I holds (F9 /. x) (*) k = F9 /. x ) iff gf = k ) by A2, Def14; consider f being Morphism of C such that A5: f in Hom (d,c) and A6: for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff f = k ) by A1, A3, Def14; reconsider f = f as Morphism of d,c by A5, CAT_1:def_5; cods F = cods F ; then consider fg being Morphism of C such that fg in Hom (c,c) and A7: for k being Morphism of C st k in Hom (c,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F /. x ) iff fg = k ) by A1, Def14; consider g being Morphism of C such that A8: g in Hom (c,d) and A9: for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in I holds (F9 /. x) (*) k = F /. x ) iff g = k ) by A2, A3, Def14; reconsider g = g as Morphism of c,d by A8, CAT_1:def_5; A10: cod g = d by A8, CAT_1:1; A11: now__::_thesis:_(_id_c_in_Hom_(c,c)_&_(_for_x_being_set_st_x_in_I_holds_ (F_/._x)_(*)_(id_c)_=_F_/._x_)_) set k = id c; thus id c in Hom (c,c) by CAT_1:27; ::_thesis: for x being set st x in I holds (F /. x) (*) (id c) = F /. x let x be set ; ::_thesis: ( x in I implies (F /. x) (*) (id c) = F /. x ) assume x in I ; ::_thesis: (F /. x) (*) (id c) = F /. x then dom (F /. x) = c by Th41; hence (F /. x) (*) (id c) = F /. x by CAT_1:22; ::_thesis: verum end; A12: now__::_thesis:_(_id_d_in_Hom_(d,d)_&_(_for_x_being_set_st_x_in_I_holds_ (F9_/._x)_(*)_(id_d)_=_F9_/._x_)_) set k = id d; thus id d in Hom (d,d) by CAT_1:27; ::_thesis: for x being set st x in I holds (F9 /. x) (*) (id d) = F9 /. x let x be set ; ::_thesis: ( x in I implies (F9 /. x) (*) (id d) = F9 /. x ) assume x in I ; ::_thesis: (F9 /. x) (*) (id d) = F9 /. x then dom (F9 /. x) = d by Th41; hence (F9 /. x) (*) (id d) = F9 /. x by CAT_1:22; ::_thesis: verum end; take g ; :: according to CAT_1:def_20 ::_thesis: g is invertible thus ( Hom (c,d) <> {} & Hom (d,c) <> {} ) by A5, A8; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of d,c st ( g * b1 = id d & b1 * g = id c ) take f ; ::_thesis: ( g * f = id d & f * g = id c ) A13: dom g = c by A8, CAT_1:1; A14: cod f = c by A5, CAT_1:1; A15: dom f = d by A5, CAT_1:1; A16: now__::_thesis:_(_g_(*)_f_in_Hom_(d,d)_&_(_for_x_being_set_st_x_in_I_holds_ (F9_/._x)_(*)_(g_(*)_f)_=_F9_/._x_)_) ( dom (g (*) f) = d & cod (g (*) f) = d ) by A15, A10, A14, A13, CAT_1:17; hence g (*) f in Hom (d,d) ; ::_thesis: for x being set st x in I holds (F9 /. x) (*) (g (*) f) = F9 /. x let x be set ; ::_thesis: ( x in I implies (F9 /. x) (*) (g (*) f) = F9 /. x ) assume A17: x in I ; ::_thesis: (F9 /. x) (*) (g (*) f) = F9 /. x then dom (F9 /. x) = d by Th41; hence (F9 /. x) (*) (g (*) f) = ((F9 /. x) (*) g) (*) f by A10, A14, A13, CAT_1:18 .= (F /. x) (*) f by A8, A9, A17 .= F9 /. x by A5, A6, A17 ; ::_thesis: verum end; thus g * f = g (*) f by A5, A8, CAT_1:def_13 .= gf by A4, A16 .= id d by A4, A12 ; ::_thesis: f * g = id c A18: now__::_thesis:_(_f_(*)_g_in_Hom_(c,c)_&_(_for_x_being_set_st_x_in_I_holds_ (F_/._x)_(*)_(f_(*)_g)_=_F_/._x_)_) ( dom (f (*) g) = c & cod (f (*) g) = c ) by A15, A10, A14, A13, CAT_1:17; hence f (*) g in Hom (c,c) ; ::_thesis: for x being set st x in I holds (F /. x) (*) (f (*) g) = F /. x let x be set ; ::_thesis: ( x in I implies (F /. x) (*) (f (*) g) = F /. x ) assume A19: x in I ; ::_thesis: (F /. x) (*) (f (*) g) = F /. x then dom (F /. x) = c by Th41; hence (F /. x) (*) (f (*) g) = ((F /. x) (*) f) (*) g by A15, A10, A14, CAT_1:18 .= (F9 /. x) (*) g by A5, A6, A19 .= F /. x by A8, A9, A19 ; ::_thesis: verum end; thus f * g = f (*) g by A5, A8, CAT_1:def_13 .= fg by A7, A18 .= id c by A11, A7 ; ::_thesis: verum end; theorem Th49: :: CAT_3:49 for I being set for C being Category for c being Object of C for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction proof let I be set ; ::_thesis: for C being Category for c being Object of C for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction let C be Category; ::_thesis: for c being Object of C for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction let c be Object of C; ::_thesis: for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction let F be Projections_family of c,I; ::_thesis: ( c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) implies for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction ) assume that A1: c is_a_product_wrt F and A2: for x1, x2 being set st x1 in I & x2 in I holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ; ::_thesis: for x being set st x in I holds for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction let x be set ; ::_thesis: ( x in I implies for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction ) assume A3: x in I ; ::_thesis: for d being Object of C st d = cod (F /. x) & Hom (c,d) <> {} holds for f being Morphism of c,d st f = F /. x holds f is retraction let d be Object of C; ::_thesis: ( d = cod (F /. x) & Hom (c,d) <> {} implies for f being Morphism of c,d st f = F /. x holds f is retraction ) assume that A4: d = cod (F /. x) and A5: Hom (c,d) <> {} ; ::_thesis: for f being Morphism of c,d st f = F /. x holds f is retraction let f be Morphism of c,d; ::_thesis: ( f = F /. x implies f is retraction ) assume A6: f = F /. x ; ::_thesis: f is retraction defpred S1[ set , set ] means ( ( $1 = x implies $2 = id d ) & ( $1 <> x implies $2 in Hom (d,(cod (F /. $1))) ) ); A7: for y being set st y in I holds ex z being set st ( z in the carrier' of C & S1[y,z] ) proof let y be set ; ::_thesis: ( y in I implies ex z being set st ( z in the carrier' of C & S1[y,z] ) ) set z = the Element of Hom (d,(cod (F /. y))); assume y in I ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) then A8: Hom (d,(cod (F /. y))) <> {} by A2, A3, A4; then A9: the Element of Hom (d,(cod (F /. y))) in Hom (d,(cod (F /. y))) ; percases ( y = x or y <> x ) ; supposeA10: y = x ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) take z = id d; ::_thesis: ( z in the carrier' of C & S1[y,z] ) thus z in the carrier' of C ; ::_thesis: S1[y,z] thus S1[y,z] by A10; ::_thesis: verum end; supposeA11: y <> x ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) take the Element of Hom (d,(cod (F /. y))) ; ::_thesis: ( the Element of Hom (d,(cod (F /. y))) in the carrier' of C & S1[y, the Element of Hom (d,(cod (F /. y)))] ) thus the Element of Hom (d,(cod (F /. y))) in the carrier' of C by A9; ::_thesis: S1[y, the Element of Hom (d,(cod (F /. y)))] thus S1[y, the Element of Hom (d,(cod (F /. y)))] by A8, A11; ::_thesis: verum end; end; end; consider F9 being Function such that A12: ( dom F9 = I & rng F9 c= the carrier' of C ) and A13: for y being set st y in I holds S1[y,F9 . y] from FUNCT_1:sch_5(A7); reconsider F9 = F9 as Function of I, the carrier' of C by A12, FUNCT_2:def_1, RELSET_1:4; now__::_thesis:_for_y_being_set_st_y_in_I_holds_ (doms_F9)_/._y_=_(I_-->_d)_/._y let y be set ; ::_thesis: ( y in I implies (doms F9) /. y = (I --> d) /. y ) assume A14: y in I ; ::_thesis: (doms F9) /. y = (I --> d) /. y then A15: F9 . y = F9 /. y by FUNCT_2:def_13; then A16: ( y <> x implies F9 /. y in Hom (d,(cod (F /. y))) ) by A13, A14; ( y = x implies F9 /. y = id d ) by A13, A14, A15; then dom (F9 /. y) = d by A16, CAT_1:1, CAT_1:58; hence (doms F9) /. y = d by A14, Def1 .= (I --> d) /. y by A14, Th2 ; ::_thesis: verum end; then A17: F9 is Projections_family of d,I by Def13, Th1; now__::_thesis:_for_y_being_set_st_y_in_I_holds_ (cods_F9)_/._y_=_(cods_F)_/._y let y be set ; ::_thesis: ( y in I implies (cods F9) /. y = (cods F) /. y ) assume A18: y in I ; ::_thesis: (cods F9) /. y = (cods F) /. y then A19: F9 . y = F9 /. y by FUNCT_2:def_13; then A20: ( y <> x implies F9 /. y in Hom (d,(cod (F /. y))) ) by A13, A18; ( y = x implies F9 /. y = id d ) by A13, A18, A19; then cod (F9 /. y) = cod (F /. y) by A20, A4, CAT_1:1, CAT_1:58; hence (cods F9) /. y = cod (F /. y) by A18, Def2 .= (cods F) /. y by A18, Def2 ; ::_thesis: verum end; then consider i being Morphism of C such that A21: i in Hom (d,c) and A22: for k being Morphism of C st k in Hom (d,c) holds ( ( for y being set st y in I holds (F /. y) (*) k = F9 /. y ) iff i = k ) by A1, A17, Def14, Th1; reconsider i = i as Morphism of d,c by A21, CAT_1:def_5; thus ( Hom (c,d) <> {} & Hom (d,c) <> {} ) by A21, A5; :: according to CAT_3:def_8 ::_thesis: ex g being Morphism of d,c st f * g = id d take i ; ::_thesis: f * i = id d thus f * i = f (*) i by A21, A5, CAT_1:def_13 .= F9 /. x by A3, A21, A22, A6 .= F9 . x by A3, FUNCT_2:def_13 .= id d by A3, A13 ; ::_thesis: verum end; theorem Th50: :: CAT_3:50 for C being Category for a being Object of C for F being Function of {}, the carrier' of C holds ( a is_a_product_wrt F iff a is terminal ) proof let C be Category; ::_thesis: for a being Object of C for F being Function of {}, the carrier' of C holds ( a is_a_product_wrt F iff a is terminal ) let a be Object of C; ::_thesis: for F being Function of {}, the carrier' of C holds ( a is_a_product_wrt F iff a is terminal ) let F be Function of {}, the carrier' of C; ::_thesis: ( a is_a_product_wrt F iff a is terminal ) thus ( a is_a_product_wrt F implies a is terminal ) ::_thesis: ( a is terminal implies a is_a_product_wrt F ) proof assume A1: a is_a_product_wrt F ; ::_thesis: a is terminal let b be Object of C; :: according to CAT_1:def_18 ::_thesis: ( not Hom (b,a) = {} & ex b1 being Morphism of b,a st for b2 being Morphism of b,a holds b1 = b2 ) set F9 = the Projections_family of b, {} ; cods F = {} ; then consider h being Morphism of C such that A2: h in Hom (b,a) and A3: for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = the Projections_family of b, {} /. x ) iff h = k ) by A1, Def14; thus Hom (b,a) <> {} by A2; ::_thesis: ex b1 being Morphism of b,a st for b2 being Morphism of b,a holds b1 = b2 reconsider f = h as Morphism of b,a by A2, CAT_1:def_5; take f ; ::_thesis: for b1 being Morphism of b,a holds f = b1 let g be Morphism of b,a; ::_thesis: f = g A4: for x being set st x in {} holds (F /. x) (*) g = the Projections_family of b, {} /. x ; g in Hom (b,a) by A2, CAT_1:def_5; hence f = g by A3, A4; ::_thesis: verum end; assume A5: a is terminal ; ::_thesis: a is_a_product_wrt F thus F is Projections_family of a, {} by Th42; :: according to CAT_3:def_14 ::_thesis: for b being Object of C for F9 being Projections_family of b, {} st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Projections_family of b, {} st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) consider h being Morphism of b,a such that A6: for g being Morphism of b,a holds h = g by A5, CAT_1:def_18; let F9 be Projections_family of b, {} ; ::_thesis: ( cods F = cods F9 implies ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) assume cods F = cods F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) take h ; ::_thesis: ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) Hom (b,a) <> {} by A5, CAT_1:def_18; hence h in Hom (b,a) by CAT_1:def_5; ::_thesis: for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (b,a) implies ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) assume k in Hom (b,a) ; ::_thesis: ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) then k is Morphism of b,a by CAT_1:def_5; hence ( ( for x being set st x in {} holds (F /. x) (*) k = F9 /. x ) iff h = k ) by A6; ::_thesis: verum end; theorem Th51: :: CAT_3:51 for I being set for C being Category for a, b being Object of C for F being Projections_family of a,I st a is_a_product_wrt F holds for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f proof let I be set ; ::_thesis: for C being Category for a, b being Object of C for F being Projections_family of a,I st a is_a_product_wrt F holds for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f let C be Category; ::_thesis: for a, b being Object of C for F being Projections_family of a,I st a is_a_product_wrt F holds for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f let a, b be Object of C; ::_thesis: for F being Projections_family of a,I st a is_a_product_wrt F holds for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f let F be Projections_family of a,I; ::_thesis: ( a is_a_product_wrt F implies for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f ) assume A1: a is_a_product_wrt F ; ::_thesis: for f being Morphism of b,a st dom f = b & cod f = a & f is invertible holds b is_a_product_wrt F * f let f be Morphism of b,a; ::_thesis: ( dom f = b & cod f = a & f is invertible implies b is_a_product_wrt F * f ) assume that A2: dom f = b and A3: cod f = a and A4: f is invertible ; ::_thesis: b is_a_product_wrt F * f thus F * f is Projections_family of b,I by A2, A3, Th45; :: according to CAT_3:def_14 ::_thesis: for b being Object of C for F9 being Projections_family of b,I st cods (F * f) = cods F9 holds ex h being Morphism of C st ( h in Hom (b,b) & ( for k being Morphism of C st k in Hom (b,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff h = k ) ) ) let c be Object of C; ::_thesis: for F9 being Projections_family of c,I st cods (F * f) = cods F9 holds ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff h = k ) ) ) A5: doms F = I --> (cod f) by A3, Def13; let F9 be Projections_family of c,I; ::_thesis: ( cods (F * f) = cods F9 implies ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) assume cods (F * f) = cods F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff h = k ) ) ) then cods F = cods F9 by A5, Th16; then consider h being Morphism of C such that A6: h in Hom (c,a) and A7: for k being Morphism of C st k in Hom (c,a) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) by A1, Def14; A8: cod h = a by A6, CAT_1:1; consider g being Morphism of a,b such that A9: f * g = id a and A10: g * f = id b by A4, CAT_1:def_16; A11: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) by A4, CAT_1:def_16; then A12: dom g = cod f by A3, CAT_1:5; A13: cod g = dom f by A2, A11, CAT_1:5; A14: f (*) g = id (cod f) by A9, A3, A11, CAT_1:def_13; A15: g (*) f = id (dom f) by A10, A2, A11, CAT_1:def_13; dom h = c by A6, CAT_1:1; then A16: dom (g (*) h) = c by A3, A12, A8, CAT_1:17; take gh = g (*) h; ::_thesis: ( gh in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff gh = k ) ) ) cod (g (*) h) = b by A2, A3, A12, A13, A8, CAT_1:17; hence gh in Hom (c,b) by A16; ::_thesis: for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff gh = k ) let k be Morphism of C; ::_thesis: ( k in Hom (c,b) implies ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff gh = k ) ) assume A17: k in Hom (c,b) ; ::_thesis: ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) iff gh = k ) then A18: cod k = b by CAT_1:1; A19: dom k = c by A17, CAT_1:1; thus ( ( for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) implies gh = k ) ::_thesis: ( gh = k implies for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ) proof assume A20: for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x ; ::_thesis: gh = k now__::_thesis:_(_f_(*)_k_in_Hom_(c,a)_&_(_for_x_being_set_st_x_in_I_holds_ (F_/._x)_(*)_(f_(*)_k)_=_F9_/._x_)_) ( dom (f (*) k) = c & cod (f (*) k) = a ) by A2, A3, A19, A18, CAT_1:17; hence f (*) k in Hom (c,a) ; ::_thesis: for x being set st x in I holds (F /. x) (*) (f (*) k) = F9 /. x let x be set ; ::_thesis: ( x in I implies (F /. x) (*) (f (*) k) = F9 /. x ) assume A21: x in I ; ::_thesis: (F /. x) (*) (f (*) k) = F9 /. x then dom (F /. x) = a by Th41; hence (F /. x) (*) (f (*) k) = ((F /. x) (*) f) (*) k by A2, A3, A18, CAT_1:18 .= ((F * f) /. x) (*) k by A21, Def5 .= F9 /. x by A20, A21 ; ::_thesis: verum end; then g (*) (f (*) k) = g (*) h by A7; hence gh = (id b) (*) k by A2, A12, A15, A18, CAT_1:18 .= k by A18, CAT_1:21 ; ::_thesis: verum end; assume A22: gh = k ; ::_thesis: for x being set st x in I holds ((F * f) /. x) (*) k = F9 /. x let x be set ; ::_thesis: ( x in I implies ((F * f) /. x) (*) k = F9 /. x ) assume A23: x in I ; ::_thesis: ((F * f) /. x) (*) k = F9 /. x then A24: dom (F /. x) = a by Th41; thus ((F * f) /. x) (*) k = ((F /. x) (*) f) (*) k by A23, Def5 .= (F /. x) (*) (f (*) (g (*) h)) by A2, A3, A18, A22, A24, CAT_1:18 .= (F /. x) (*) ((id (cod f)) (*) h) by A3, A12, A13, A14, A8, CAT_1:18 .= (F /. x) (*) h by A3, A8, CAT_1:21 .= F9 /. x by A6, A7, A23 ; ::_thesis: verum end; theorem :: CAT_3:52 for y being set for C being Category for a being Object of C holds a is_a_product_wrt y .--> (id a) proof let y be set ; ::_thesis: for C being Category for a being Object of C holds a is_a_product_wrt y .--> (id a) let C be Category; ::_thesis: for a being Object of C holds a is_a_product_wrt y .--> (id a) let a be Object of C; ::_thesis: a is_a_product_wrt y .--> (id a) set F = y .--> (id a); dom (id a) = a ; hence y .--> (id a) is Projections_family of a,{y} by Th43; :: according to CAT_3:def_14 ::_thesis: for b being Object of C for F9 being Projections_family of b,{y} st cods (y .--> (id a)) = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Projections_family of b,{y} st cods (y .--> (id a)) = cods F9 holds ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) let F9 be Projections_family of b,{y}; ::_thesis: ( cods (y .--> (id a)) = cods F9 implies ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) assume A1: cods (y .--> (id a)) = cods F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) take h = F9 /. y; ::_thesis: ( h in Hom (b,a) & ( for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) A2: y in {y} by TARSKI:def_1; then A3: dom h = b by Th41; cod h = (cods (y .--> (id a))) /. y by A1, A2, Def2 .= cod ((y .--> (id a)) /. y) by A2, Def2 .= cod (id a) by A2, Th2 .= a ; hence h in Hom (b,a) by A3; ::_thesis: for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (b,a) implies ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) ) assume k in Hom (b,a) ; ::_thesis: ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) iff h = k ) then A4: cod k = a by CAT_1:1; thus ( ( for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) implies h = k ) ::_thesis: ( h = k implies for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ) proof assume A5: for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x ; ::_thesis: h = k thus k = (id a) (*) k by A4, CAT_1:21 .= ((y .--> (id a)) /. y) (*) k by A2, Th2 .= h by A2, A5 ; ::_thesis: verum end; assume A6: h = k ; ::_thesis: for x being set st x in {y} holds ((y .--> (id a)) /. x) (*) k = F9 /. x let x be set ; ::_thesis: ( x in {y} implies ((y .--> (id a)) /. x) (*) k = F9 /. x ) assume A7: x in {y} ; ::_thesis: ((y .--> (id a)) /. x) (*) k = F9 /. x hence F9 /. x = k by A6, TARSKI:def_1 .= (id a) (*) k by A4, CAT_1:21 .= ((y .--> (id a)) /. x) (*) k by A7, Th2 ; ::_thesis: verum end; theorem :: CAT_3:53 for I being set for C being Category for a being Object of C for F being Projections_family of a,I st a is_a_product_wrt F & ( for x being set st x in I holds cod (F /. x) is terminal ) holds a is terminal proof let I be set ; ::_thesis: for C being Category for a being Object of C for F being Projections_family of a,I st a is_a_product_wrt F & ( for x being set st x in I holds cod (F /. x) is terminal ) holds a is terminal let C be Category; ::_thesis: for a being Object of C for F being Projections_family of a,I st a is_a_product_wrt F & ( for x being set st x in I holds cod (F /. x) is terminal ) holds a is terminal let a be Object of C; ::_thesis: for F being Projections_family of a,I st a is_a_product_wrt F & ( for x being set st x in I holds cod (F /. x) is terminal ) holds a is terminal let F be Projections_family of a,I; ::_thesis: ( a is_a_product_wrt F & ( for x being set st x in I holds cod (F /. x) is terminal ) implies a is terminal ) assume that A1: a is_a_product_wrt F and A2: for x being set st x in I holds cod (F /. x) is terminal ; ::_thesis: a is terminal now__::_thesis:_(_(_I_=_{}_implies_a_is_terminal_)_&_(_for_b_being_Object_of_C_holds_ (_Hom_(b,a)_<>_{}_&_ex_h_being_Morphism_of_b,a_st_ for_g_being_Morphism_of_b,a_holds_h_=_g_)_)_) thus ( I = {} implies a is terminal ) by A1, Th50; ::_thesis: for b being Object of C holds ( Hom (b,a) <> {} & ex h being Morphism of b,a st for g being Morphism of b,a holds h = g ) let b be Object of C; ::_thesis: ( Hom (b,a) <> {} & ex h being Morphism of b,a st for g being Morphism of b,a holds h = g ) deffunc H1( set ) -> Morphism of b, cod (F /. $1) = term (b,(cod (F /. $1))); consider F9 being Function of I, the carrier' of C such that A3: for x being set st x in I holds F9 /. x = H1(x) from CAT_3:sch_1(); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_F9)_/._x_=_(I_-->_b)_/._x let x be set ; ::_thesis: ( x in I implies (doms F9) /. x = (I --> b) /. x ) assume A4: x in I ; ::_thesis: (doms F9) /. x = (I --> b) /. x then A5: cod (F /. x) is terminal by A2; thus (doms F9) /. x = dom (F9 /. x) by A4, Def1 .= dom (term (b,(cod (F /. x)))) by A3, A4 .= b by A5, Th35 .= (I --> b) /. x by A4, Th2 ; ::_thesis: verum end; then reconsider F9 = F9 as Projections_family of b,I by Def13, Th1; now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_F)_/._x_=_(cods_F9)_/._x let x be set ; ::_thesis: ( x in I implies (cods F) /. x = (cods F9) /. x ) assume A6: x in I ; ::_thesis: (cods F) /. x = (cods F9) /. x then A7: cod (F /. x) is terminal by A2; thus (cods F) /. x = cod (F /. x) by A6, Def2 .= cod (term (b,(cod (F /. x)))) by A7, Th35 .= cod (F9 /. x) by A3, A6 .= (cods F9) /. x by A6, Def2 ; ::_thesis: verum end; then consider h being Morphism of C such that A8: h in Hom (b,a) and A9: for k being Morphism of C st k in Hom (b,a) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) by A1, Def14, Th1; thus Hom (b,a) <> {} by A8; ::_thesis: ex h being Morphism of b,a st for g being Morphism of b,a holds h = g reconsider h = h as Morphism of b,a by A8, CAT_1:def_5; take h = h; ::_thesis: for g being Morphism of b,a holds h = g let g be Morphism of b,a; ::_thesis: h = g now__::_thesis:_(_g_in_Hom_(b,a)_&_(_for_x_being_set_st_x_in_I_holds_ F9_/._x_=_(F_/._x)_(*)_g_)_) thus g in Hom (b,a) by A8, CAT_1:def_5; ::_thesis: for x being set st x in I holds F9 /. x = (F /. x) (*) g let x be set ; ::_thesis: ( x in I implies F9 /. x = (F /. x) (*) g ) set c = cod (F /. x); A10: cod g = a by A8, CAT_1:5; assume A11: x in I ; ::_thesis: F9 /. x = (F /. x) (*) g then cod (F /. x) is terminal by A2; then consider f being Morphism of b, cod (F /. x) such that A12: for f9 being Morphism of b, cod (F /. x) holds f = f9 by CAT_1:def_18; A13: dom (F /. x) = a by A11, Th41; then A14: cod ((F /. x) (*) g) = cod (F /. x) by A10, CAT_1:17; dom g = b by A8, CAT_1:5; then dom ((F /. x) (*) g) = b by A10, A13, CAT_1:17; then (F /. x) (*) g in Hom (b,(cod (F /. x))) by A14; then A15: (F /. x) (*) g is Morphism of b, cod (F /. x) by CAT_1:def_5; F9 /. x = term (b,(cod (F /. x))) by A3, A11; hence F9 /. x = f by A12 .= (F /. x) (*) g by A12, A15 ; ::_thesis: verum end; hence h = g by A9; ::_thesis: verum end; hence a is terminal by CAT_1:def_18; ::_thesis: verum end; definition let C be Category; let c be Object of C; let p1, p2 be Morphism of C; predc is_a_product_wrt p1,p2 means :Def15: :: CAT_3:def 15 ( dom p1 = c & dom p2 = c & ( for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ) ); end; :: deftheorem Def15 defines is_a_product_wrt CAT_3:def_15_:_ for C being Category for c being Object of C for p1, p2 being Morphism of C holds ( c is_a_product_wrt p1,p2 iff ( dom p1 = c & dom p2 = c & ( for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ) ) ); theorem Th54: :: CAT_3:54 for x1, x2 being set for C being Category for c being Object of C for p1, p2 being Morphism of C st x1 <> x2 holds ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) proof let x1, x2 be set ; ::_thesis: for C being Category for c being Object of C for p1, p2 being Morphism of C st x1 <> x2 holds ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) let C be Category; ::_thesis: for c being Object of C for p1, p2 being Morphism of C st x1 <> x2 holds ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) let c be Object of C; ::_thesis: for p1, p2 being Morphism of C st x1 <> x2 holds ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) let p1, p2 be Morphism of C; ::_thesis: ( x1 <> x2 implies ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) ) set F = (x1,x2) --> (p1,p2); set I = {x1,x2}; assume A1: x1 <> x2 ; ::_thesis: ( c is_a_product_wrt p1,p2 iff c is_a_product_wrt (x1,x2) --> (p1,p2) ) thus ( c is_a_product_wrt p1,p2 implies c is_a_product_wrt (x1,x2) --> (p1,p2) ) ::_thesis: ( c is_a_product_wrt (x1,x2) --> (p1,p2) implies c is_a_product_wrt p1,p2 ) proof assume A2: c is_a_product_wrt p1,p2 ; ::_thesis: c is_a_product_wrt (x1,x2) --> (p1,p2) then ( dom p1 = c & dom p2 = c ) by Def15; hence (x1,x2) --> (p1,p2) is Projections_family of c,{x1,x2} by Th44; :: according to CAT_3:def_14 ::_thesis: for b being Object of C for F9 being Projections_family of b,{x1,x2} st cods ((x1,x2) --> (p1,p2)) = cods F9 holds ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Projections_family of b,{x1,x2} st cods ((x1,x2) --> (p1,p2)) = cods F9 holds ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) let F9 be Projections_family of b,{x1,x2}; ::_thesis: ( cods ((x1,x2) --> (p1,p2)) = cods F9 implies ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) assume A3: cods ((x1,x2) --> (p1,p2)) = cods F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) set f = F9 /. x1; set g = F9 /. x2; A4: x1 in {x1,x2} by TARSKI:def_2; then (cods ((x1,x2) --> (p1,p2))) /. x1 = cod (((x1,x2) --> (p1,p2)) /. x1) by Def2; then cod (F9 /. x1) = cod (((x1,x2) --> (p1,p2)) /. x1) by A3, A4, Def2; then A5: cod (F9 /. x1) = cod p1 by A1, Th3; A6: x2 in {x1,x2} by TARSKI:def_2; then (cods ((x1,x2) --> (p1,p2))) /. x2 = cod (((x1,x2) --> (p1,p2)) /. x2) by Def2; then cod (F9 /. x2) = cod (((x1,x2) --> (p1,p2)) /. x2) by A3, A6, Def2; then A7: cod (F9 /. x2) = cod p2 by A1, Th3; dom (F9 /. x2) = b by A6, Th41; then A8: F9 /. x2 in Hom (b,(cod p2)) by A7; dom (F9 /. x1) = b by A4, Th41; then F9 /. x1 in Hom (b,(cod p1)) by A5; then consider h being Morphism of C such that A9: h in Hom (b,c) and A10: for k being Morphism of C st k in Hom (b,c) holds ( ( p1 (*) k = F9 /. x1 & p2 (*) k = F9 /. x2 ) iff h = k ) by A2, A8, Def15; take h ; ::_thesis: ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) ) thus h in Hom (b,c) by A9; ::_thesis: for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (b,c) implies ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) ) assume A11: k in Hom (b,c) ; ::_thesis: ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) thus ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) implies h = k ) ::_thesis: ( h = k implies for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) proof assume A12: for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ; ::_thesis: h = k then (((x1,x2) --> (p1,p2)) /. x2) (*) k = F9 /. x2 by A6; then A13: p2 (*) k = F9 /. x2 by A1, Th3; (((x1,x2) --> (p1,p2)) /. x1) (*) k = F9 /. x1 by A4, A12; then p1 (*) k = F9 /. x1 by A1, Th3; hence h = k by A10, A11, A13; ::_thesis: verum end; assume h = k ; ::_thesis: for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x then A14: ( p1 (*) k = F9 /. x1 & p2 (*) k = F9 /. x2 ) by A10, A11; let x be set ; ::_thesis: ( x in {x1,x2} implies (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) assume x in {x1,x2} ; ::_thesis: (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; hence (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x by A1, A14, Th3; ::_thesis: verum end; assume A15: c is_a_product_wrt (x1,x2) --> (p1,p2) ; ::_thesis: c is_a_product_wrt p1,p2 then A16: (x1,x2) --> (p1,p2) is Projections_family of c,{x1,x2} by Def14; x2 in {x1,x2} by TARSKI:def_2; then A17: dom (((x1,x2) --> (p1,p2)) /. x2) = c by A16, Th41; x1 in {x1,x2} by TARSKI:def_2; then dom (((x1,x2) --> (p1,p2)) /. x1) = c by A16, Th41; hence ( dom p1 = c & dom p2 = c ) by A1, A17, Th3; :: according to CAT_3:def_15 ::_thesis: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let f, g be Morphism of C; ::_thesis: ( f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) implies ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ) assume that A18: f in Hom (d,(cod p1)) and A19: g in Hom (d,(cod p2)) ; ::_thesis: ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ( dom f = d & dom g = d ) by A18, A19, CAT_1:1; then reconsider F9 = (x1,x2) --> (f,g) as Projections_family of d,{x1,x2} by Th44; cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) by Th7 .= (x1,x2) --> ((cod f),(cod p2)) by A18, CAT_1:1 .= (x1,x2) --> ((cod f),(cod g)) by A19, CAT_1:1 .= cods F9 by Th7 ; then consider h being Morphism of C such that A20: h in Hom (d,c) and A21: for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in {x1,x2} holds (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) iff h = k ) by A15, Def14; take h ; ::_thesis: ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) thus h in Hom (d,c) by A20; ::_thesis: for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (d,c) implies ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) assume A22: k in Hom (d,c) ; ::_thesis: ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) thus ( p1 (*) k = f & p2 (*) k = g implies h = k ) ::_thesis: ( h = k implies ( p1 (*) k = f & p2 (*) k = g ) ) proof assume A23: ( p1 (*) k = f & p2 (*) k = g ) ; ::_thesis: h = k now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ (((x1,x2)_-->_(p1,p2))_/._x)_(*)_k_=_F9_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x ) assume x in {x1,x2} ; ::_thesis: (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (p1,p2)) /. x = p1 & F9 /. x = f ) or ( ((x1,x2) --> (p1,p2)) /. x = p2 & F9 /. x = g ) ) by A1, Th3; hence (((x1,x2) --> (p1,p2)) /. x) (*) k = F9 /. x by A23; ::_thesis: verum end; hence h = k by A21, A22; ::_thesis: verum end; assume A24: h = k ; ::_thesis: ( p1 (*) k = f & p2 (*) k = g ) x2 in {x1,x2} by TARSKI:def_2; then (((x1,x2) --> (p1,p2)) /. x2) (*) k = F9 /. x2 by A21, A22, A24; then A25: (((x1,x2) --> (p1,p2)) /. x2) (*) k = g by A1, Th3; x1 in {x1,x2} by TARSKI:def_2; then (((x1,x2) --> (p1,p2)) /. x1) (*) k = F9 /. x1 by A21, A22, A24; then (((x1,x2) --> (p1,p2)) /. x1) (*) k = f by A1, Th3; hence ( p1 (*) k = f & p2 (*) k = g ) by A1, A25, Th3; ::_thesis: verum end; theorem :: CAT_3:55 for C being Category for c, a, b being Object of C st Hom (c,a) <> {} & Hom (c,b) <> {} holds for p1 being Morphism of c,a for p2 being Morphism of c,b holds ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) proof let C be Category; ::_thesis: for c, a, b being Object of C st Hom (c,a) <> {} & Hom (c,b) <> {} holds for p1 being Morphism of c,a for p2 being Morphism of c,b holds ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) let c, a, b be Object of C; ::_thesis: ( Hom (c,a) <> {} & Hom (c,b) <> {} implies for p1 being Morphism of c,a for p2 being Morphism of c,b holds ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) ) assume that A1: Hom (c,a) <> {} and A2: Hom (c,b) <> {} ; ::_thesis: for p1 being Morphism of c,a for p2 being Morphism of c,b holds ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) let p1 be Morphism of c,a; ::_thesis: for p2 being Morphism of c,b holds ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) let p2 be Morphism of c,b; ::_thesis: ( c is_a_product_wrt p1,p2 iff for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) thus ( c is_a_product_wrt p1,p2 implies for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) ::_thesis: ( ( for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) implies c is_a_product_wrt p1,p2 ) proof assume that dom p1 = c and dom p2 = c and A3: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ; :: according to CAT_3:def_15 ::_thesis: for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: ( Hom (d,a) <> {} & Hom (d,b) <> {} implies ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ) assume that A4: Hom (d,a) <> {} and A5: Hom (d,b) <> {} ; ::_thesis: ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) set f = the Morphism of d,a; set g = the Morphism of d,b; A6: cod p2 = b by A2, CAT_1:5; then A7: the Morphism of d,b in Hom (d,(cod p2)) by A5, CAT_1:def_5; A8: cod p1 = a by A1, CAT_1:5; then the Morphism of d,a in Hom (d,(cod p1)) by A4, CAT_1:def_5; then A9: ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = the Morphism of d,a & p2 (*) k = the Morphism of d,b ) iff h = k ) ) ) by A3, A7; hence Hom (d,c) <> {} ; ::_thesis: for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) let f be Morphism of d,a; ::_thesis: for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) let g be Morphism of d,b; ::_thesis: ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) A10: g in Hom (d,(cod p2)) by A5, A6, CAT_1:def_5; f in Hom (d,(cod p1)) by A4, A8, CAT_1:def_5; then consider h being Morphism of C such that A11: h in Hom (d,c) and A12: for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) by A3, A10; reconsider h = h as Morphism of d,c by A11, CAT_1:def_5; take h ; ::_thesis: for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) let k be Morphism of d,c; ::_thesis: ( ( p1 * k = f & p2 * k = g ) iff h = k ) A13: k in Hom (d,c) by A9, CAT_1:def_5; ( p1 * k = p1 (*) k & p2 * k = p2 (*) k ) by A1, A2, A9, CAT_1:def_13; hence ( ( p1 * k = f & p2 * k = g ) iff h = k ) by A12, A13; ::_thesis: verum end; assume A14: for d being Object of C st Hom (d,a) <> {} & Hom (d,b) <> {} holds ( Hom (d,c) <> {} & ( for f being Morphism of d,a for g being Morphism of d,b ex h being Morphism of d,c st for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) ) ) ; ::_thesis: c is_a_product_wrt p1,p2 thus ( dom p1 = c & dom p2 = c ) by A1, A2, CAT_1:5; :: according to CAT_3:def_15 ::_thesis: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let f, g be Morphism of C; ::_thesis: ( f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) implies ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ) assume that A15: f in Hom (d,(cod p1)) and A16: g in Hom (d,(cod p2)) ; ::_thesis: ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) A17: Hom (d,a) <> {} by A1, A15, CAT_1:5; A18: cod p1 = a by A1, CAT_1:5; then A19: f is Morphism of d,a by A15, CAT_1:def_5; A20: cod p2 = b by A2, CAT_1:5; then g is Morphism of d,b by A16, CAT_1:def_5; then consider h being Morphism of d,c such that A21: for k being Morphism of d,c holds ( ( p1 * k = f & p2 * k = g ) iff h = k ) by A14, A16, A20, A19, A17; reconsider h9 = h as Morphism of C ; take h9 ; ::_thesis: ( h9 in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h9 = k ) ) ) A22: Hom (d,c) <> {} by A14, A15, A16, A18, A20; hence h9 in Hom (d,c) by CAT_1:def_5; ::_thesis: for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h9 = k ) let k be Morphism of C; ::_thesis: ( k in Hom (d,c) implies ( ( p1 (*) k = f & p2 (*) k = g ) iff h9 = k ) ) assume k in Hom (d,c) ; ::_thesis: ( ( p1 (*) k = f & p2 (*) k = g ) iff h9 = k ) then reconsider k9 = k as Morphism of d,c by CAT_1:def_5; ( p1 (*) k = p1 * k9 & p2 (*) k = p2 * k9 ) by A1, A2, A22, CAT_1:def_13; hence ( ( p1 (*) k = f & p2 (*) k = g ) iff h9 = k ) by A21; ::_thesis: verum end; theorem :: CAT_3:56 for C being Category for c, d being Object of C for p1, p2, q1, q2 being Morphism of C st c is_a_product_wrt p1,p2 & d is_a_product_wrt q1,q2 & cod p1 = cod q1 & cod p2 = cod q2 holds c,d are_isomorphic proof let C be Category; ::_thesis: for c, d being Object of C for p1, p2, q1, q2 being Morphism of C st c is_a_product_wrt p1,p2 & d is_a_product_wrt q1,q2 & cod p1 = cod q1 & cod p2 = cod q2 holds c,d are_isomorphic let c, d be Object of C; ::_thesis: for p1, p2, q1, q2 being Morphism of C st c is_a_product_wrt p1,p2 & d is_a_product_wrt q1,q2 & cod p1 = cod q1 & cod p2 = cod q2 holds c,d are_isomorphic let p1, p2, q1, q2 be Morphism of C; ::_thesis: ( c is_a_product_wrt p1,p2 & d is_a_product_wrt q1,q2 & cod p1 = cod q1 & cod p2 = cod q2 implies c,d are_isomorphic ) assume that A1: c is_a_product_wrt p1,p2 and A2: d is_a_product_wrt q1,q2 and A3: ( cod p1 = cod q1 & cod p2 = cod q2 ) ; ::_thesis: c,d are_isomorphic set I = {0,1}; set F = (0,1) --> (p1,p2); set F9 = (0,1) --> (q1,q2); A4: ( c is_a_product_wrt (0,1) --> (p1,p2) & d is_a_product_wrt (0,1) --> (q1,q2) ) by A1, A2, Th54; ( dom q1 = d & dom q2 = d ) by A2, Def15; then A5: (0,1) --> (q1,q2) is Projections_family of d,{0,1} by Th44; ( dom p1 = c & dom p2 = c ) by A1, Def15; then A6: (0,1) --> (p1,p2) is Projections_family of c,{0,1} by Th44; cods ((0,1) --> (p1,p2)) = (0,1) --> ((cod q1),(cod q2)) by A3, Th7 .= cods ((0,1) --> (q1,q2)) by Th7 ; hence c,d are_isomorphic by A6, A5, A4, Th48; ::_thesis: verum end; theorem :: CAT_3:57 for C being Category for c, a, b being Object of C for p1 being Morphism of c,a for p2 being Morphism of c,b st Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( p1 is retraction & p2 is retraction ) proof let C be Category; ::_thesis: for c, a, b being Object of C for p1 being Morphism of c,a for p2 being Morphism of c,b st Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( p1 is retraction & p2 is retraction ) let c, a, b be Object of C; ::_thesis: for p1 being Morphism of c,a for p2 being Morphism of c,b st Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( p1 is retraction & p2 is retraction ) let p1 be Morphism of c,a; ::_thesis: for p2 being Morphism of c,b st Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( p1 is retraction & p2 is retraction ) let p2 be Morphism of c,b; ::_thesis: ( Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} implies ( p1 is retraction & p2 is retraction ) ) assume that A1: ( Hom (c,a) <> {} & Hom (c,b) <> {} ) and A2: c is_a_product_wrt p1,p2 and A3: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; ::_thesis: ( p1 is retraction & p2 is retraction ) set I = {0,1}; ( dom p1 = c & dom p2 = c ) by A2, Def15; then reconsider F = (0,1) --> (p1,p2) as Projections_family of c,{0,1} by Th44; A4: F /. 0 = p1 by Th3; A5: F /. 1 = p2 by Th3; A6: now__::_thesis:_(_F_is_Projections_family_of_c,{0,1}_&_c_is_a_product_wrt_F_&_(_for_x1,_x2_being_set_st_x1_in_{0,1}_&_x2_in_{0,1}_holds_ Hom_((cod_(F_/._x1)),(cod_(F_/._x2)))_<>_{}_)_) thus F is Projections_family of c,{0,1} ; ::_thesis: ( c is_a_product_wrt F & ( for x1, x2 being set st x1 in {0,1} & x2 in {0,1} holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) ) thus c is_a_product_wrt F by A2, Th54; ::_thesis: for x1, x2 being set st x1 in {0,1} & x2 in {0,1} holds Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} let x1, x2 be set ; ::_thesis: ( x1 in {0,1} & x2 in {0,1} implies Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) assume that A7: x1 in {0,1} and A8: x2 in {0,1} ; ::_thesis: Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} A9: ( x2 = 0 or x2 = 1 ) by A8, TARSKI:def_2; ( x1 = 0 or x1 = 1 ) by A7, TARSKI:def_2; then A10: ( cod (F /. x1) = a or cod (F /. x1) = b ) by A4, A5, A1, CAT_1:5; ( cod (F /. x2) = a or cod (F /. x2) = b ) by A9, A4, A5, A1, CAT_1:5; hence Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} by A3, A10; ::_thesis: verum end; A11: 1 in {0,1} by TARSKI:def_2; A12: 0 in {0,1} by TARSKI:def_2; ( cod (F /. 0) = a & cod (F /. 1) = b ) by A4, A5, A1, CAT_1:5; hence ( p1 is retraction & p2 is retraction ) by A4, A6, A11, Th49, A5, A1, A12; ::_thesis: verum end; theorem Th58: :: CAT_3:58 for C being Category for c being Object of C for p1, p2, h being Morphism of C st c is_a_product_wrt p1,p2 & h in Hom (c,c) & p1 (*) h = p1 & p2 (*) h = p2 holds h = id c proof let C be Category; ::_thesis: for c being Object of C for p1, p2, h being Morphism of C st c is_a_product_wrt p1,p2 & h in Hom (c,c) & p1 (*) h = p1 & p2 (*) h = p2 holds h = id c let c be Object of C; ::_thesis: for p1, p2, h being Morphism of C st c is_a_product_wrt p1,p2 & h in Hom (c,c) & p1 (*) h = p1 & p2 (*) h = p2 holds h = id c let p1, p2, h be Morphism of C; ::_thesis: ( c is_a_product_wrt p1,p2 & h in Hom (c,c) & p1 (*) h = p1 & p2 (*) h = p2 implies h = id c ) assume that A1: ( dom p1 = c & dom p2 = c ) and A2: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) and A3: ( h in Hom (c,c) & p1 (*) h = p1 & p2 (*) h = p2 ) ; :: according to CAT_3:def_15 ::_thesis: h = id c ( p1 in Hom (c,(cod p1)) & p2 in Hom (c,(cod p2)) ) by A1; then consider i being Morphism of C such that i in Hom (c,c) and A4: for k being Morphism of C st k in Hom (c,c) holds ( ( p1 (*) k = p1 & p2 (*) k = p2 ) iff i = k ) by A2; A5: id c in Hom (c,c) by CAT_1:27; ( p1 (*) (id c) = p1 & p2 (*) (id c) = p2 ) by A1, CAT_1:22; hence id c = i by A4, A5 .= h by A3, A4 ; ::_thesis: verum end; theorem :: CAT_3:59 for C being Category for d, c being Object of C for p1, p2 being Morphism of C for f being Morphism of d,c st c is_a_product_wrt p1,p2 & dom f = d & cod f = c & f is invertible holds d is_a_product_wrt p1 (*) f,p2 (*) f proof let C be Category; ::_thesis: for d, c being Object of C for p1, p2 being Morphism of C for f being Morphism of d,c st c is_a_product_wrt p1,p2 & dom f = d & cod f = c & f is invertible holds d is_a_product_wrt p1 (*) f,p2 (*) f let d, c be Object of C; ::_thesis: for p1, p2 being Morphism of C for f being Morphism of d,c st c is_a_product_wrt p1,p2 & dom f = d & cod f = c & f is invertible holds d is_a_product_wrt p1 (*) f,p2 (*) f let p1, p2 be Morphism of C; ::_thesis: for f being Morphism of d,c st c is_a_product_wrt p1,p2 & dom f = d & cod f = c & f is invertible holds d is_a_product_wrt p1 (*) f,p2 (*) f let f be Morphism of d,c; ::_thesis: ( c is_a_product_wrt p1,p2 & dom f = d & cod f = c & f is invertible implies d is_a_product_wrt p1 (*) f,p2 (*) f ) assume that A1: c is_a_product_wrt p1,p2 and A2: ( dom f = d & cod f = c & f is invertible ) ; ::_thesis: d is_a_product_wrt p1 (*) f,p2 (*) f ( dom p1 = c & dom p2 = c ) by A1, Def15; then A3: (0,1) --> (p1,p2) is Projections_family of c,{0,1} by Th44; c is_a_product_wrt (0,1) --> (p1,p2) by A1, Th54; then d is_a_product_wrt ((0,1) --> (p1,p2)) * f by A2, A3, Th51; then d is_a_product_wrt (0,1) --> ((p1 (*) f),(p2 (*) f)) by Th14; hence d is_a_product_wrt p1 (*) f,p2 (*) f by Th54; ::_thesis: verum end; theorem :: CAT_3:60 for C being Category for c being Object of C for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p2 is terminal holds c, cod p1 are_isomorphic proof let C be Category; ::_thesis: for c being Object of C for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p2 is terminal holds c, cod p1 are_isomorphic let c be Object of C; ::_thesis: for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p2 is terminal holds c, cod p1 are_isomorphic let p1, p2 be Morphism of C; ::_thesis: ( c is_a_product_wrt p1,p2 & cod p2 is terminal implies c, cod p1 are_isomorphic ) set a = cod p1; set b = cod p2; assume that A1: c is_a_product_wrt p1,p2 and A2: cod p2 is terminal ; ::_thesis: c, cod p1 are_isomorphic set f = id (cod p1); set g = term ((cod p1),(cod p2)); ( dom (term ((cod p1),(cod p2))) = cod p1 & cod (term ((cod p1),(cod p2))) = cod p2 ) by A2, Th35; then ( id (cod p1) in Hom ((cod p1),(cod p1)) & term ((cod p1),(cod p2)) in Hom ((cod p1),(cod p2)) ) by CAT_1:27; then consider h being Morphism of C such that A3: h in Hom ((cod p1),c) and A4: for k being Morphism of C st k in Hom ((cod p1),c) holds ( ( p1 (*) k = id (cod p1) & p2 (*) k = term ((cod p1),(cod p2)) ) iff h = k ) by A1, Def15; A5: dom h = cod p1 by A3, CAT_1:1; reconsider h = h as Morphism of cod p1,c by A3, CAT_1:def_5; A6: dom p1 = c by A1, Def15; then reconsider p = p1 as Morphism of c, cod p1 by CAT_1:4; A7: cod h = c by A3, CAT_1:1; then A8: cod (h (*) p) = c by A5, CAT_1:17; A9: dom p2 = c by A1, Def15; then A10: cod (p2 (*) (h (*) p)) = cod p2 by A8, CAT_1:17; A11: dom (h (*) p) = c by A6, A5, CAT_1:17; then A12: h (*) p in Hom (c,c) by A8; dom (p2 (*) (h (*) p)) = c by A9, A11, A8, CAT_1:17; then A13: p2 (*) (h (*) p) = term (c,(cod p2)) by A2, A10, Th36 .= p2 by A2, A9, Th36 ; A14: Hom (c,(cod p1)) <> {} by A6, CAT_1:2; take p ; :: according to CAT_1:def_20 ::_thesis: p is invertible thus ( Hom (c,(cod p1)) <> {} & Hom ((cod p1),c) <> {} ) by A3, A6, CAT_1:2; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of cod p1,c st ( p * b1 = id (cod p1) & b1 * p = id c ) take h ; ::_thesis: ( p * h = id (cod p1) & h * p = id c ) thus p * h = p (*) h by A3, A14, CAT_1:def_13 .= id (cod p1) by A3, A4 ; ::_thesis: h * p = id c p1 (*) (h (*) p) = (p1 (*) h) (*) p by A6, A5, A7, CAT_1:18 .= (id (cod p)) (*) p by A3, A4 .= p by CAT_1:21 ; hence id c = h (*) p by A1, A13, A12, Th58 .= h * p by A3, A14, CAT_1:def_13 ; ::_thesis: verum end; theorem :: CAT_3:61 for C being Category for c being Object of C for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p1 is terminal holds c, cod p2 are_isomorphic proof let C be Category; ::_thesis: for c being Object of C for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p1 is terminal holds c, cod p2 are_isomorphic let c be Object of C; ::_thesis: for p1, p2 being Morphism of C st c is_a_product_wrt p1,p2 & cod p1 is terminal holds c, cod p2 are_isomorphic let p1, p2 be Morphism of C; ::_thesis: ( c is_a_product_wrt p1,p2 & cod p1 is terminal implies c, cod p2 are_isomorphic ) set a = cod p1; set b = cod p2; assume that A1: c is_a_product_wrt p1,p2 and A2: cod p1 is terminal ; ::_thesis: c, cod p2 are_isomorphic set f = id (cod p2); set g = term ((cod p2),(cod p1)); ( dom (term ((cod p2),(cod p1))) = cod p2 & cod (term ((cod p2),(cod p1))) = cod p1 ) by A2, Th35; then ( id (cod p2) in Hom ((cod p2),(cod p2)) & term ((cod p2),(cod p1)) in Hom ((cod p2),(cod p1)) ) by CAT_1:27; then consider h being Morphism of C such that A3: h in Hom ((cod p2),c) and A4: for k being Morphism of C st k in Hom ((cod p2),c) holds ( ( p1 (*) k = term ((cod p2),(cod p1)) & p2 (*) k = id (cod p2) ) iff h = k ) by A1, Def15; A5: dom h = cod p2 by A3, CAT_1:1; A6: dom p2 = c by A1, Def15; then reconsider p = p2 as Morphism of c, cod p2 by CAT_1:4; A7: cod h = c by A3, CAT_1:1; then A8: cod (h (*) p) = c by A5, CAT_1:17; A9: dom p1 = c by A1, Def15; then A10: cod (p1 (*) (h (*) p)) = cod p1 by A8, CAT_1:17; A11: dom (h (*) p) = c by A6, A5, CAT_1:17; then A12: h (*) p in Hom (c,c) by A8; dom (p1 (*) (h (*) p)) = c by A9, A11, A8, CAT_1:17; then A13: p1 (*) (h (*) p) = term (c,(cod p1)) by A2, A10, Th36 .= p1 by A2, A9, Th36 ; A14: Hom (c,(cod p2)) <> {} by A6, CAT_1:2; take p ; :: according to CAT_1:def_20 ::_thesis: p is invertible thus ( Hom (c,(cod p2)) <> {} & Hom ((cod p2),c) <> {} ) by A6, A3, CAT_1:2; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of cod p2,c st ( p * b1 = id (cod p2) & b1 * p = id c ) reconsider h = h as Morphism of cod p2,c by A3, CAT_1:def_5; take h ; ::_thesis: ( p * h = id (cod p2) & h * p = id c ) thus p * h = p (*) h by A14, A3, CAT_1:def_13 .= id (cod p2) by A3, A4 ; ::_thesis: h * p = id c p (*) h = id (cod p) by A3, A4; then A15: p2 (*) (h (*) p) = (id (cod p)) (*) p by A6, A5, A7, CAT_1:18 .= p by CAT_1:21 ; thus id c = h (*) p by A1, A13, A12, Th58, A15 .= h * p by A14, A3, CAT_1:def_13 ; ::_thesis: verum end; begin definition let C be Category; let c be Object of C; let I be set ; mode Injections_family of c,I -> Function of I, the carrier' of C means :Def16: :: CAT_3:def 16 cods it = I --> c; existence ex b1 being Function of I, the carrier' of C st cods b1 = I --> c proof take F = I --> (id c); ::_thesis: cods F = I --> c cods F = I --> (cod (id c)) by Th5; hence cods F = I --> c ; ::_thesis: verum end; end; :: deftheorem Def16 defines Injections_family CAT_3:def_16_:_ for C being Category for c being Object of C for I being set for b4 being Function of I, the carrier' of C holds ( b4 is Injections_family of c,I iff cods b4 = I --> c ); theorem Th62: :: CAT_3:62 for I, x being set for C being Category for c being Object of C for F being Injections_family of c,I st x in I holds cod (F /. x) = c proof let I, x be set ; ::_thesis: for C being Category for c being Object of C for F being Injections_family of c,I st x in I holds cod (F /. x) = c let C be Category; ::_thesis: for c being Object of C for F being Injections_family of c,I st x in I holds cod (F /. x) = c let c be Object of C; ::_thesis: for F being Injections_family of c,I st x in I holds cod (F /. x) = c let F be Injections_family of c,I; ::_thesis: ( x in I implies cod (F /. x) = c ) assume A1: x in I ; ::_thesis: cod (F /. x) = c (cods F) /. x = (I --> c) /. x by Def16; hence cod (F /. x) = (I --> c) /. x by A1, Def2 .= c by A1, Th2 ; ::_thesis: verum end; theorem :: CAT_3:63 for C being Category for a being Object of C for F being Function of {}, the carrier' of C holds F is Injections_family of a, {} proof let C be Category; ::_thesis: for a being Object of C for F being Function of {}, the carrier' of C holds F is Injections_family of a, {} let a be Object of C; ::_thesis: for F being Function of {}, the carrier' of C holds F is Injections_family of a, {} let F be Function of {}, the carrier' of C; ::_thesis: F is Injections_family of a, {} thus {} --> a = cods F ; :: according to CAT_3:def_16 ::_thesis: verum end; theorem Th64: :: CAT_3:64 for y being set for C being Category for a being Object of C for f being Morphism of C st cod f = a holds y .--> f is Injections_family of a,{y} proof let y be set ; ::_thesis: for C being Category for a being Object of C for f being Morphism of C st cod f = a holds y .--> f is Injections_family of a,{y} let C be Category; ::_thesis: for a being Object of C for f being Morphism of C st cod f = a holds y .--> f is Injections_family of a,{y} let a be Object of C; ::_thesis: for f being Morphism of C st cod f = a holds y .--> f is Injections_family of a,{y} let f be Morphism of C; ::_thesis: ( cod f = a implies y .--> f is Injections_family of a,{y} ) set F = y .--> f; assume A1: cod f = a ; ::_thesis: y .--> f is Injections_family of a,{y} now__::_thesis:_for_x_being_set_st_x_in_{y}_holds_ (cods_(y_.-->_f))_/._x_=_(y_.-->_a)_/._x let x be set ; ::_thesis: ( x in {y} implies (cods (y .--> f)) /. x = (y .--> a) /. x ) assume A2: x in {y} ; ::_thesis: (cods (y .--> f)) /. x = (y .--> a) /. x hence (cods (y .--> f)) /. x = cod ((y .--> f) /. x) by Def2 .= a by A1, A2, Th2 .= (y .--> a) /. x by A2, Th2 ; ::_thesis: verum end; hence cods (y .--> f) = {y} --> a by Th1; :: according to CAT_3:def_16 ::_thesis: verum end; theorem Th65: :: CAT_3:65 for x1, x2 being set for C being Category for c being Object of C for p1, p2 being Morphism of C st cod p1 = c & cod p2 = c holds (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} proof let x1, x2 be set ; ::_thesis: for C being Category for c being Object of C for p1, p2 being Morphism of C st cod p1 = c & cod p2 = c holds (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} let C be Category; ::_thesis: for c being Object of C for p1, p2 being Morphism of C st cod p1 = c & cod p2 = c holds (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} let c be Object of C; ::_thesis: for p1, p2 being Morphism of C st cod p1 = c & cod p2 = c holds (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} let p1, p2 be Morphism of C; ::_thesis: ( cod p1 = c & cod p2 = c implies (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} ) assume A1: ( cod p1 = c & cod p2 = c ) ; ::_thesis: (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} cods ((x1,x2) --> (p1,p2)) = (x1,x2) --> ((cod p1),(cod p2)) by Th7 .= {x1,x2} --> c by A1, FUNCT_4:65 ; hence (x1,x2) --> (p1,p2) is Injections_family of c,{x1,x2} by Def16; ::_thesis: verum end; theorem Th66: :: CAT_3:66 for I being set for C being Category for b being Object of C for f being Morphism of C for F being Injections_family of b,I st dom f = b holds f * F is Injections_family of cod f,I proof let I be set ; ::_thesis: for C being Category for b being Object of C for f being Morphism of C for F being Injections_family of b,I st dom f = b holds f * F is Injections_family of cod f,I let C be Category; ::_thesis: for b being Object of C for f being Morphism of C for F being Injections_family of b,I st dom f = b holds f * F is Injections_family of cod f,I let b be Object of C; ::_thesis: for f being Morphism of C for F being Injections_family of b,I st dom f = b holds f * F is Injections_family of cod f,I let f be Morphism of C; ::_thesis: for F being Injections_family of b,I st dom f = b holds f * F is Injections_family of cod f,I let F be Injections_family of b,I; ::_thesis: ( dom f = b implies f * F is Injections_family of cod f,I ) assume dom f = b ; ::_thesis: f * F is Injections_family of cod f,I then cods F = I --> (dom f) by Def16; hence cods (f * F) = I --> (cod f) by Th17; :: according to CAT_3:def_16 ::_thesis: verum end; theorem :: CAT_3:67 for I being set for C being Category for b being Object of C for F being Injections_family of b,I for G being Function of I, the carrier' of C st doms F = cods G holds F "*" G is Injections_family of b,I proof let I be set ; ::_thesis: for C being Category for b being Object of C for F being Injections_family of b,I for G being Function of I, the carrier' of C st doms F = cods G holds F "*" G is Injections_family of b,I let C be Category; ::_thesis: for b being Object of C for F being Injections_family of b,I for G being Function of I, the carrier' of C st doms F = cods G holds F "*" G is Injections_family of b,I let b be Object of C; ::_thesis: for F being Injections_family of b,I for G being Function of I, the carrier' of C st doms F = cods G holds F "*" G is Injections_family of b,I let F be Injections_family of b,I; ::_thesis: for G being Function of I, the carrier' of C st doms F = cods G holds F "*" G is Injections_family of b,I let G be Function of I, the carrier' of C; ::_thesis: ( doms F = cods G implies F "*" G is Injections_family of b,I ) assume doms F = cods G ; ::_thesis: F "*" G is Injections_family of b,I then cods (F "*" G) = cods F by Th18; hence cods (F "*" G) = I --> b by Def16; :: according to CAT_3:def_16 ::_thesis: verum end; theorem Th68: :: CAT_3:68 for I being set for C being Category for c being Object of C for F being Function of I, the carrier' of C holds ( F is Projections_family of c,I iff F opp is Injections_family of c opp ,I ) proof let I be set ; ::_thesis: for C being Category for c being Object of C for F being Function of I, the carrier' of C holds ( F is Projections_family of c,I iff F opp is Injections_family of c opp ,I ) let C be Category; ::_thesis: for c being Object of C for F being Function of I, the carrier' of C holds ( F is Projections_family of c,I iff F opp is Injections_family of c opp ,I ) let c be Object of C; ::_thesis: for F being Function of I, the carrier' of C holds ( F is Projections_family of c,I iff F opp is Injections_family of c opp ,I ) let F be Function of I, the carrier' of C; ::_thesis: ( F is Projections_family of c,I iff F opp is Injections_family of c opp ,I ) thus ( F is Projections_family of c,I implies F opp is Injections_family of c opp ,I ) ::_thesis: ( F opp is Injections_family of c opp ,I implies F is Projections_family of c,I ) proof assume A1: doms F = I --> c ; :: according to CAT_3:def_13 ::_thesis: F opp is Injections_family of c opp ,I now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_(F_opp))_/._x_=_(I_-->_(c_opp))_/._x let x be set ; ::_thesis: ( x in I implies (cods (F opp)) /. x = (I --> (c opp)) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A2: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A3: gg opp = (F /. x) opp by OPPCAT_1:def_6; assume A4: x in I ; ::_thesis: (cods (F opp)) /. x = (I --> (c opp)) /. x hence (cods (F opp)) /. x = cod ((F opp) /. x) by Def2 .= cod ((F /. x) opp) by A4, Def3 .= (dom (F /. x)) opp by OPPCAT_1:12, A2, A3 .= (I --> (c opp)) /. x by A1, A4, Def1 ; ::_thesis: verum end; hence cods (F opp) = I --> (c opp) by Th1; :: according to CAT_3:def_16 ::_thesis: verum end; assume A5: cods (F opp) = I --> (c opp) ; :: according to CAT_3:def_16 ::_thesis: F is Projections_family of c,I now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_F)_/._x_=_(I_-->_c)_/._x let x be set ; ::_thesis: ( x in I implies (doms F) /. x = (I --> c) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A6: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A7: gg opp = (F /. x) opp by OPPCAT_1:def_6; assume A8: x in I ; ::_thesis: (doms F) /. x = (I --> c) /. x hence (doms F) /. x = dom (F /. x) by Def1 .= cod (gg opp) by OPPCAT_1:10, A6 .= cod ((F opp) /. x) by A8, Def3, A7 .= (I --> c) /. x by A8, A5, Def2 ; ::_thesis: verum end; hence doms F = I --> c by Th1; :: according to CAT_3:def_13 ::_thesis: verum end; theorem Th69: :: CAT_3:69 for I being set for C being Category for F being Function of I, the carrier' of (C opp) for c being Object of (C opp) holds ( F is Injections_family of c,I iff opp F is Projections_family of opp c,I ) proof let I be set ; ::_thesis: for C being Category for F being Function of I, the carrier' of (C opp) for c being Object of (C opp) holds ( F is Injections_family of c,I iff opp F is Projections_family of opp c,I ) let C be Category; ::_thesis: for F being Function of I, the carrier' of (C opp) for c being Object of (C opp) holds ( F is Injections_family of c,I iff opp F is Projections_family of opp c,I ) let F be Function of I, the carrier' of (C opp); ::_thesis: for c being Object of (C opp) holds ( F is Injections_family of c,I iff opp F is Projections_family of opp c,I ) let c be Object of (C opp); ::_thesis: ( F is Injections_family of c,I iff opp F is Projections_family of opp c,I ) thus ( F is Injections_family of c,I implies opp F is Projections_family of opp c,I ) ::_thesis: ( opp F is Projections_family of opp c,I implies F is Injections_family of c,I ) proof assume A1: cods F = I --> c ; :: according to CAT_3:def_16 ::_thesis: opp F is Projections_family of opp c,I now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_(opp_F))_/._x_=_(I_-->_(opp_c))_/._x let x be set ; ::_thesis: ( x in I implies (doms (opp F)) /. x = (I --> (opp c)) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A2: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; assume A3: x in I ; ::_thesis: (doms (opp F)) /. x = (I --> (opp c)) /. x hence (doms (opp F)) /. x = dom ((opp F) /. x) by Def1 .= dom (opp (F /. x)) by A3, Def4 .= opp (cod (F /. x)) by OPPCAT_1:13, A2 .= (I --> (opp c)) /. x by A1, A3, Def2 ; ::_thesis: verum end; hence doms (opp F) = I --> (opp c) by Th1; :: according to CAT_3:def_13 ::_thesis: verum end; assume A4: doms (opp F) = I --> (opp c) ; :: according to CAT_3:def_13 ::_thesis: F is Injections_family of c,I now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_F)_/._x_=_(I_-->_c)_/._x let x be set ; ::_thesis: ( x in I implies (cods F) /. x = (I --> c) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A5: gg opp = (F /. x) opp by OPPCAT_1:def_6; assume A6: x in I ; ::_thesis: (cods F) /. x = (I --> c) /. x hence (cods F) /. x = cod (F /. x) by Def2 .= dom (opp (F /. x)) by OPPCAT_1:11, A5 .= dom ((opp F) /. x) by A6, Def4 .= (I --> c) /. x by A4, A6, Def1 ; ::_thesis: verum end; hence cods F = I --> c by Th1; :: according to CAT_3:def_16 ::_thesis: verum end; theorem :: CAT_3:70 for I being set for C being Category for f being Morphism of C for F being Injections_family of dom f,I holds (F opp) * (f opp) = (f * F) opp proof let I be set ; ::_thesis: for C being Category for f being Morphism of C for F being Injections_family of dom f,I holds (F opp) * (f opp) = (f * F) opp let C be Category; ::_thesis: for f being Morphism of C for F being Injections_family of dom f,I holds (F opp) * (f opp) = (f * F) opp let f be Morphism of C; ::_thesis: for F being Injections_family of dom f,I holds (F opp) * (f opp) = (f * F) opp let F be Injections_family of dom f,I; ::_thesis: (F opp) * (f opp) = (f * F) opp now__::_thesis:_for_x_being_set_st_x_in_I_holds_ ((F_opp)_*_(f_opp))_/._x_=_((f_*_F)_opp)_/._x let x be set ; ::_thesis: ( x in I implies ((F opp) * (f opp)) /. x = ((f * F) opp) /. x ) assume A1: x in I ; ::_thesis: ((F opp) * (f opp)) /. x = ((f * F) opp) /. x then A2: cod (F /. x) = (cods F) /. x by Def2 .= (I --> (dom f)) /. x by Def16 .= dom f by A1, Th2 ; reconsider ff = f as Morphism of dom f, cod f by CAT_1:4; reconsider gg = F /. x as Morphism of dom (F /. x), dom f by CAT_1:4, A2; A3: ( Hom ((dom f),(cod f)) <> {} & Hom ((dom (F /. x)),(cod (F /. x))) <> {} ) by CAT_1:2; then A4: ff opp = f opp by OPPCAT_1:def_6; A5: gg opp = (F /. x) opp by OPPCAT_1:def_6, A3, A2; thus ((F opp) * (f opp)) /. x = ((F opp) /. x) (*) (f opp) by A1, Def5 .= ((F /. x) opp) (*) (f opp) by A1, Def3 .= (f (*) (F /. x)) opp by A2, OPPCAT_1:16, A4, A5, A3 .= ((f * F) /. x) opp by A1, Def6 .= ((f * F) opp) /. x by A1, Def3 ; ::_thesis: verum end; hence (F opp) * (f opp) = (f * F) opp by Th1; ::_thesis: verum end; definition let C be Category; let c be Object of C; let I be set ; let F be Function of I, the carrier' of C; predc is_a_coproduct_wrt F means :Def17: :: CAT_3:def 17 ( F is Injections_family of c,I & ( for d being Object of C for F9 being Injections_family of d,I st doms F = doms F9 holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in I holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) ) ); end; :: deftheorem Def17 defines is_a_coproduct_wrt CAT_3:def_17_:_ for C being Category for c being Object of C for I being set for F being Function of I, the carrier' of C holds ( c is_a_coproduct_wrt F iff ( F is Injections_family of c,I & ( for d being Object of C for F9 being Injections_family of d,I st doms F = doms F9 holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in I holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) ) ) ); theorem :: CAT_3:71 for I being set for C being Category for c being Object of C for F being Function of I, the carrier' of C holds ( c is_a_product_wrt F iff c opp is_a_coproduct_wrt F opp ) proof let I be set ; ::_thesis: for C being Category for c being Object of C for F being Function of I, the carrier' of C holds ( c is_a_product_wrt F iff c opp is_a_coproduct_wrt F opp ) let C be Category; ::_thesis: for c being Object of C for F being Function of I, the carrier' of C holds ( c is_a_product_wrt F iff c opp is_a_coproduct_wrt F opp ) let c be Object of C; ::_thesis: for F being Function of I, the carrier' of C holds ( c is_a_product_wrt F iff c opp is_a_coproduct_wrt F opp ) let F be Function of I, the carrier' of C; ::_thesis: ( c is_a_product_wrt F iff c opp is_a_coproduct_wrt F opp ) thus ( c is_a_product_wrt F implies c opp is_a_coproduct_wrt F opp ) ::_thesis: ( c opp is_a_coproduct_wrt F opp implies c is_a_product_wrt F ) proof assume A1: c is_a_product_wrt F ; ::_thesis: c opp is_a_coproduct_wrt F opp then F is Projections_family of c,I by Def14; hence F opp is Injections_family of c opp ,I by Th68; :: according to CAT_3:def_17 ::_thesis: for d being Object of (C opp) for F9 being Injections_family of d,I st doms (F opp) = doms F9 holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h = k ) ) ) let d be Object of (C opp); ::_thesis: for F9 being Injections_family of d,I st doms (F opp) = doms F9 holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h = k ) ) ) let F9 be Injections_family of d,I; ::_thesis: ( doms (F opp) = doms F9 implies ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h = k ) ) ) ) assume A2: doms (F opp) = doms F9 ; ::_thesis: ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h = k ) ) ) reconsider oppF9 = opp F9 as Projections_family of opp d,I by Th69; now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_F)_/._x_=_(cods_oppF9)_/._x let x be set ; ::_thesis: ( x in I implies (cods F) /. x = (cods oppF9) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A3: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A4: gg opp = (F /. x) opp by OPPCAT_1:def_6; reconsider g9 = F9 /. x as Morphism of dom (F9 /. x), cod (F9 /. x) by CAT_1:4; Hom ((dom g9),(cod g9)) <> {} by CAT_1:2; then A5: g9 opp = (F9 /. x) opp by OPPCAT_1:def_6; assume A6: x in I ; ::_thesis: (cods F) /. x = (cods oppF9) /. x hence (cods F) /. x = cod (F /. x) by Def2 .= dom (gg opp) by OPPCAT_1:10, A3 .= dom ((F opp) /. x) by A6, Def3, A4 .= (doms F9) /. x by A2, A6, Def1 .= dom (F9 /. x) by A6, Def1 .= cod (opp (F9 /. x)) by OPPCAT_1:11, A5 .= cod (oppF9 /. x) by A6, Def4 .= (cods oppF9) /. x by A6, Def2 ; ::_thesis: verum end; then consider h being Morphism of C such that A7: h in Hom ((opp d),c) and A8: for k being Morphism of C st k in Hom ((opp d),c) holds ( ( for x being set st x in I holds (F /. x) (*) k = oppF9 /. x ) iff h = k ) by A1, Def14, Th1; take h opp ; ::_thesis: ( h opp in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h opp = k ) ) ) h in Hom ((c opp),((opp d) opp)) by A7, OPPCAT_1:5; hence h opp in Hom ((c opp),d) ; ::_thesis: for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h opp = k ) let k be Morphism of (C opp); ::_thesis: ( k in Hom ((c opp),d) implies ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h opp = k ) ) assume A9: k in Hom ((c opp),d) ; ::_thesis: ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) iff h opp = k ) then A10: opp k in Hom ((opp d),(opp (c opp))) by OPPCAT_1:6; thus ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) implies h opp = k ) ::_thesis: ( h opp = k implies for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ) proof assume A11: for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x ; ::_thesis: h opp = k now__::_thesis:_for_x_being_set_st_x_in_I_holds_ oppF9_/._x_=_(F_/._x)_(*)_(opp_k) let x be set ; ::_thesis: ( x in I implies oppF9 /. x = (F /. x) (*) (opp k) ) assume A12: x in I ; ::_thesis: oppF9 /. x = (F /. x) (*) (opp k) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A13: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A14: gg opp = (F /. x) opp by OPPCAT_1:def_6; F is Projections_family of c,I by A1, Def14; then dom (F /. x) = c by A12, Th41; then cod ((F /. x) opp) = c opp by OPPCAT_1:12, A13, A14; then cod ((F opp) /. x) = c opp by A12, Def3; then A15: dom k = cod ((F opp) /. x) by A9, CAT_1:1; opp (k (*) ((F opp) /. x)) = opp (F9 /. x) by A11, A12; hence oppF9 /. x = opp (k (*) ((F opp) /. x)) by A12, Def4 .= (opp ((F opp) /. x)) (*) (opp k) by A15, OPPCAT_1:18 .= (opp ((F /. x) opp)) (*) (opp k) by A12, Def3 .= (F /. x) (*) (opp k) ; ::_thesis: verum end; hence h opp = k by A8, A10; ::_thesis: verum end; assume A16: h opp = k ; ::_thesis: for x being set st x in I holds k (*) ((F opp) /. x) = F9 /. x let x be set ; ::_thesis: ( x in I implies k (*) ((F opp) /. x) = F9 /. x ) assume A17: x in I ; ::_thesis: k (*) ((F opp) /. x) = F9 /. x F is Projections_family of c,I by A1, Def14; then dom (F /. x) = c by A17, Th41; then A18: cod (opp k) = dom (F /. x) by A10, CAT_1:1; reconsider ff = opp k as Morphism of dom (opp k), cod (opp k) by CAT_1:4; reconsider gg = F /. x as Morphism of cod (opp k), cod (F /. x) by CAT_1:4, A18; A19: ( Hom ((dom (opp k)),(cod (opp k))) <> {} & Hom ((dom (F /. x)),(cod (F /. x))) <> {} ) by CAT_1:2; then A20: ff opp = (opp k) opp by OPPCAT_1:def_6; A21: gg opp = (F /. x) opp by OPPCAT_1:def_6, A19, A18; (F /. x) (*) (opp k) = oppF9 /. x by A8, A10, A17, A16; then ((opp k) opp) (*) ((F /. x) opp) = (oppF9 /. x) opp by A18, OPPCAT_1:16, A20, A21, A19; hence k (*) ((F opp) /. x) = (oppF9 /. x) opp by A17, Def3 .= (opp (F9 /. x)) opp by A17, Def4 .= F9 /. x ; ::_thesis: verum end; assume A22: c opp is_a_coproduct_wrt F opp ; ::_thesis: c is_a_product_wrt F then F opp is Injections_family of c opp ,I by Def17; hence F is Projections_family of c,I by Th68; :: according to CAT_3:def_14 ::_thesis: for b being Object of C for F9 being Projections_family of b,I st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) let d be Object of C; ::_thesis: for F9 being Projections_family of d,I st cods F = cods F9 holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) let F9 be Projections_family of d,I; ::_thesis: ( cods F = cods F9 implies ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) ) assume A23: cods F = cods F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff h = k ) ) ) A24: now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_(F_opp))_/._x_=_(doms_(F9_opp))_/._x let x be set ; ::_thesis: ( x in I implies (doms (F opp)) /. x = (doms (F9 opp)) /. x ) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A25: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A26: gg opp = (F /. x) opp by OPPCAT_1:def_6; reconsider g9 = F9 /. x as Morphism of dom (F9 /. x), cod (F9 /. x) by CAT_1:4; A27: Hom ((dom g9),(cod g9)) <> {} by CAT_1:2; then A28: g9 opp = (F9 /. x) opp by OPPCAT_1:def_6; assume A29: x in I ; ::_thesis: (doms (F opp)) /. x = (doms (F9 opp)) /. x hence (doms (F opp)) /. x = dom ((F opp) /. x) by Def1 .= dom (gg opp) by A29, Def3, A26 .= cod (F /. x) by OPPCAT_1:10, A25 .= (cods F9) /. x by A23, A29, Def2 .= cod (F9 /. x) by A29, Def2 .= dom (g9 opp) by OPPCAT_1:10, A27 .= dom ((F9 opp) /. x) by A29, Def3, A28 .= (doms (F9 opp)) /. x by A29, Def1 ; ::_thesis: verum end; reconsider F9opp = F9 opp as Injections_family of d opp ,I by Th68; consider h being Morphism of (C opp) such that A30: h in Hom ((c opp),(d opp)) and A31: for k being Morphism of (C opp) st k in Hom ((c opp),(d opp)) holds ( ( for x being set st x in I holds k (*) ((F opp) /. x) = F9opp /. x ) iff h = k ) by A22, Def17, A24, Th1; take opp h ; ::_thesis: ( opp h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff opp h = k ) ) ) opp h in Hom ((opp (d opp)),(opp (c opp))) by A30, OPPCAT_1:6; hence opp h in Hom (d,c) ; ::_thesis: for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff opp h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (d,c) implies ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff opp h = k ) ) assume A32: k in Hom (d,c) ; ::_thesis: ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) iff opp h = k ) then A33: k opp in Hom ((c opp),(d opp)) by OPPCAT_1:5; thus ( ( for x being set st x in I holds (F /. x) (*) k = F9 /. x ) implies opp h = k ) ::_thesis: ( opp h = k implies for x being set st x in I holds (F /. x) (*) k = F9 /. x ) proof assume A34: for x being set st x in I holds (F /. x) (*) k = F9 /. x ; ::_thesis: opp h = k now__::_thesis:_for_x_being_set_st_x_in_I_holds_ F9opp_/._x_=_(k_opp)_(*)_((F_opp)_/._x) let x be set ; ::_thesis: ( x in I implies F9opp /. x = (k opp) (*) ((F opp) /. x) ) assume A35: x in I ; ::_thesis: F9opp /. x = (k opp) (*) ((F opp) /. x) reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A36: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A37: gg opp = (F /. x) opp by OPPCAT_1:def_6; F opp is Injections_family of c opp ,I by A22, Def17; then cod ((F opp) /. x) = c opp by A35, Th62; then cod (gg opp) = c opp by A35, Def3, A37; then dom (F /. x) = c by OPPCAT_1:10, A36; then A38: cod k = dom (F /. x) by A32, CAT_1:1; reconsider ff = k as Morphism of dom k, cod k by CAT_1:4; reconsider gg = F /. x as Morphism of cod k, cod (F /. x) by CAT_1:4, A38; A39: ( Hom ((dom k),(cod k)) <> {} & Hom ((dom (F /. x)),(cod (F /. x))) <> {} ) by CAT_1:2; then A40: ff opp = k opp by OPPCAT_1:def_6; A41: gg opp = (F /. x) opp by OPPCAT_1:def_6, A39, A38; (F /. x) (*) k = F9 /. x by A34, A35; then (k opp) (*) ((F /. x) opp) = (F9 /. x) opp by A38, OPPCAT_1:16, A40, A41, A39; hence F9opp /. x = (k opp) (*) ((F /. x) opp) by A35, Def3 .= (k opp) (*) ((F opp) /. x) by A35, Def3 ; ::_thesis: verum end; hence opp h = k by A31, A33; ::_thesis: verum end; assume A42: opp h = k ; ::_thesis: for x being set st x in I holds (F /. x) (*) k = F9 /. x let x be set ; ::_thesis: ( x in I implies (F /. x) (*) k = F9 /. x ) assume A43: x in I ; ::_thesis: (F /. x) (*) k = F9 /. x reconsider gg = F /. x as Morphism of dom (F /. x), cod (F /. x) by CAT_1:4; A44: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A45: gg opp = (F /. x) opp by OPPCAT_1:def_6; F opp is Injections_family of c opp ,I by A22, Def17; then cod ((F opp) /. x) = c opp by A43, Th62; then cod (gg opp) = c opp by A43, Def3, A45; then dom (F /. x) = c by OPPCAT_1:10, A44; then A46: cod k = dom (F /. x) by A32, CAT_1:1; reconsider ff = k as Morphism of dom k, cod k by CAT_1:4; reconsider gg = F /. x as Morphism of cod k, cod (F /. x) by CAT_1:4, A46; A47: ( Hom ((dom k),(cod k)) <> {} & Hom ((dom (F /. x)),(cod (F /. x))) <> {} ) by CAT_1:2; then A48: ff opp = k opp by OPPCAT_1:def_6; A49: gg opp = (F /. x) opp by OPPCAT_1:def_6, A47, A46; (k opp) (*) ((F opp) /. x) = F9opp /. x by A31, A33, A43, A42; then (k opp) (*) ((F opp) /. x) = (F9 /. x) opp by A43, Def3; hence F9 /. x = (k opp) (*) ((F /. x) opp) by A43, Def3 .= ((F /. x) (*) k) opp by A46, OPPCAT_1:16, A48, A49, A47 .= (F /. x) (*) k ; ::_thesis: verum end; theorem Th72: :: CAT_3:72 for I being set for C being Category for c, d being Object of C for F being Injections_family of c,I for F9 being Injections_family of d,I st c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 holds c,d are_isomorphic proof let I be set ; ::_thesis: for C being Category for c, d being Object of C for F being Injections_family of c,I for F9 being Injections_family of d,I st c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 holds c,d are_isomorphic let C be Category; ::_thesis: for c, d being Object of C for F being Injections_family of c,I for F9 being Injections_family of d,I st c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 holds c,d are_isomorphic let c, d be Object of C; ::_thesis: for F being Injections_family of c,I for F9 being Injections_family of d,I st c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 holds c,d are_isomorphic let F be Injections_family of c,I; ::_thesis: for F9 being Injections_family of d,I st c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 holds c,d are_isomorphic let F9 be Injections_family of d,I; ::_thesis: ( c is_a_coproduct_wrt F & d is_a_coproduct_wrt F9 & doms F = doms F9 implies c,d are_isomorphic ) assume that A1: c is_a_coproduct_wrt F and A2: d is_a_coproduct_wrt F9 and A3: doms F = doms F9 ; ::_thesis: c,d are_isomorphic doms F9 = doms F9 ; then consider fg being Morphism of C such that fg in Hom (d,d) and A4: for k being Morphism of C st k in Hom (d,d) holds ( ( for x being set st x in I holds k (*) (F9 /. x) = F9 /. x ) iff fg = k ) by A2, Def17; consider f being Morphism of C such that A5: f in Hom (c,d) and A6: for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in I holds k (*) (F /. x) = F9 /. x ) iff f = k ) by A1, A3, Def17; reconsider f = f as Morphism of c,d by A5, CAT_1:def_5; A7: dom f = c by A5, CAT_1:1; A8: now__::_thesis:_(_id_c_in_Hom_(c,c)_&_(_for_x_being_set_st_x_in_I_holds_ (id_c)_(*)_(F_/._x)_=_F_/._x_)_) set k = id c; thus id c in Hom (c,c) by CAT_1:27; ::_thesis: for x being set st x in I holds (id c) (*) (F /. x) = F /. x let x be set ; ::_thesis: ( x in I implies (id c) (*) (F /. x) = F /. x ) assume x in I ; ::_thesis: (id c) (*) (F /. x) = F /. x then cod (F /. x) = c by Th62; hence (id c) (*) (F /. x) = F /. x by CAT_1:21; ::_thesis: verum end; A9: now__::_thesis:_(_id_d_in_Hom_(d,d)_&_(_for_x_being_set_st_x_in_I_holds_ (id_d)_(*)_(F9_/._x)_=_F9_/._x_)_) set k = id d; thus id d in Hom (d,d) by CAT_1:27; ::_thesis: for x being set st x in I holds (id d) (*) (F9 /. x) = F9 /. x let x be set ; ::_thesis: ( x in I implies (id d) (*) (F9 /. x) = F9 /. x ) assume x in I ; ::_thesis: (id d) (*) (F9 /. x) = F9 /. x then cod (F9 /. x) = d by Th62; hence (id d) (*) (F9 /. x) = F9 /. x by CAT_1:21; ::_thesis: verum end; doms F = doms F ; then consider gf being Morphism of C such that gf in Hom (c,c) and A10: for k being Morphism of C st k in Hom (c,c) holds ( ( for x being set st x in I holds k (*) (F /. x) = F /. x ) iff gf = k ) by A1, Def17; consider g being Morphism of C such that A11: g in Hom (d,c) and A12: for k being Morphism of C st k in Hom (d,c) holds ( ( for x being set st x in I holds k (*) (F9 /. x) = F /. x ) iff g = k ) by A2, A3, Def17; reconsider g = g as Morphism of d,c by A11, CAT_1:def_5; take f ; :: according to CAT_1:def_20 ::_thesis: f is invertible thus ( Hom (c,d) <> {} & Hom (d,c) <> {} ) by A11, A5; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of d,c st ( f * b1 = id d & b1 * f = id c ) take g ; ::_thesis: ( f * g = id d & g * f = id c ) A13: cod f = d by A5, CAT_1:1; A14: dom g = d by A11, CAT_1:1; A15: cod g = c by A11, CAT_1:1; A16: now__::_thesis:_(_f_(*)_g_in_Hom_(d,d)_&_(_for_x_being_set_st_x_in_I_holds_ (f_(*)_g)_(*)_(F9_/._x)_=_F9_/._x_)_) ( cod (f (*) g) = d & dom (f (*) g) = d ) by A13, A14, A7, A15, CAT_1:17; hence f (*) g in Hom (d,d) ; ::_thesis: for x being set st x in I holds (f (*) g) (*) (F9 /. x) = F9 /. x let x be set ; ::_thesis: ( x in I implies (f (*) g) (*) (F9 /. x) = F9 /. x ) assume A17: x in I ; ::_thesis: (f (*) g) (*) (F9 /. x) = F9 /. x then cod (F9 /. x) = d by Th62; hence (f (*) g) (*) (F9 /. x) = f (*) (g (*) (F9 /. x)) by A14, A7, A15, CAT_1:18 .= f (*) (F /. x) by A11, A12, A17 .= F9 /. x by A5, A6, A17 ; ::_thesis: verum end; thus f * g = f (*) g by A11, A5, CAT_1:def_13 .= fg by A4, A16 .= id d by A4, A9 ; ::_thesis: g * f = id c A18: now__::_thesis:_(_g_(*)_f_in_Hom_(c,c)_&_(_for_x_being_set_st_x_in_I_holds_ (g_(*)_f)_(*)_(F_/._x)_=_F_/._x_)_) ( cod (g (*) f) = c & dom (g (*) f) = c ) by A13, A14, A7, A15, CAT_1:17; hence g (*) f in Hom (c,c) ; ::_thesis: for x being set st x in I holds (g (*) f) (*) (F /. x) = F /. x let x be set ; ::_thesis: ( x in I implies (g (*) f) (*) (F /. x) = F /. x ) assume A19: x in I ; ::_thesis: (g (*) f) (*) (F /. x) = F /. x then cod (F /. x) = c by Th62; hence (g (*) f) (*) (F /. x) = g (*) (f (*) (F /. x)) by A13, A14, A7, CAT_1:18 .= g (*) (F9 /. x) by A5, A6, A19 .= F /. x by A11, A12, A19 ; ::_thesis: verum end; thus g * f = g (*) f by A11, A5, CAT_1:def_13 .= gf by A10, A18 .= id c by A8, A10 ; ::_thesis: verum end; theorem Th73: :: CAT_3:73 for I being set for C being Category for c being Object of C for F being Injections_family of c,I st c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction proof let I be set ; ::_thesis: for C being Category for c being Object of C for F being Injections_family of c,I st c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction let C be Category; ::_thesis: for c being Object of C for F being Injections_family of c,I st c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction let c be Object of C; ::_thesis: for F being Injections_family of c,I st c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) holds for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction let F be Injections_family of c,I; ::_thesis: ( c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) implies for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction ) assume that A1: c is_a_coproduct_wrt F and A2: for x1, x2 being set st x1 in I & x2 in I holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ; ::_thesis: for x being set st x in I holds for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction let x be set ; ::_thesis: ( x in I implies for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction ) assume A3: x in I ; ::_thesis: for d being Object of C st d = dom (F /. x) & Hom (d,c) <> {} holds for f being Morphism of d,c st f = F /. x holds f is coretraction let d be Object of C; ::_thesis: ( d = dom (F /. x) & Hom (d,c) <> {} implies for f being Morphism of d,c st f = F /. x holds f is coretraction ) assume that A4: d = dom (F /. x) and A5: Hom (d,c) <> {} ; ::_thesis: for f being Morphism of d,c st f = F /. x holds f is coretraction let f be Morphism of d,c; ::_thesis: ( f = F /. x implies f is coretraction ) assume A6: f = F /. x ; ::_thesis: f is coretraction defpred S1[ set , set ] means ( ( $1 = x implies $2 = id d ) & ( $1 <> x implies $2 in Hom ((dom (F /. $1)),d) ) ); A7: for y being set st y in I holds ex z being set st ( z in the carrier' of C & S1[y,z] ) proof let y be set ; ::_thesis: ( y in I implies ex z being set st ( z in the carrier' of C & S1[y,z] ) ) set z = the Element of Hom ((dom (F /. y)),d); assume y in I ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) then A8: Hom ((dom (F /. y)),d) <> {} by A2, A3, A4; then A9: the Element of Hom ((dom (F /. y)),d) in Hom ((dom (F /. y)),d) ; percases ( y = x or y <> x ) ; supposeA10: y = x ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) take z = id d; ::_thesis: ( z in the carrier' of C & S1[y,z] ) thus z in the carrier' of C ; ::_thesis: S1[y,z] thus S1[y,z] by A10; ::_thesis: verum end; supposeA11: y <> x ; ::_thesis: ex z being set st ( z in the carrier' of C & S1[y,z] ) take the Element of Hom ((dom (F /. y)),d) ; ::_thesis: ( the Element of Hom ((dom (F /. y)),d) in the carrier' of C & S1[y, the Element of Hom ((dom (F /. y)),d)] ) thus the Element of Hom ((dom (F /. y)),d) in the carrier' of C by A9; ::_thesis: S1[y, the Element of Hom ((dom (F /. y)),d)] thus S1[y, the Element of Hom ((dom (F /. y)),d)] by A8, A11; ::_thesis: verum end; end; end; consider F9 being Function such that A12: ( dom F9 = I & rng F9 c= the carrier' of C ) and A13: for y being set st y in I holds S1[y,F9 . y] from FUNCT_1:sch_5(A7); reconsider F9 = F9 as Function of I, the carrier' of C by A12, FUNCT_2:def_1, RELSET_1:4; now__::_thesis:_for_y_being_set_st_y_in_I_holds_ (cods_F9)_/._y_=_(I_-->_d)_/._y let y be set ; ::_thesis: ( y in I implies (cods F9) /. y = (I --> d) /. y ) assume A14: y in I ; ::_thesis: (cods F9) /. y = (I --> d) /. y then A15: F9 . y = F9 /. y by FUNCT_2:def_13; then A16: ( y <> x implies F9 /. y in Hom ((dom (F /. y)),d) ) by A13, A14; ( y = x implies F9 /. y = id d ) by A13, A14, A15; then cod (F9 /. y) = d by A16, CAT_1:1, CAT_1:58; hence (cods F9) /. y = d by A14, Def2 .= (I --> d) /. y by A14, Th2 ; ::_thesis: verum end; then A17: F9 is Injections_family of d,I by Def16, Th1; now__::_thesis:_for_y_being_set_st_y_in_I_holds_ (doms_F9)_/._y_=_(doms_F)_/._y let y be set ; ::_thesis: ( y in I implies (doms F9) /. y = (doms F) /. y ) assume A18: y in I ; ::_thesis: (doms F9) /. y = (doms F) /. y then A19: F9 . y = F9 /. y by FUNCT_2:def_13; then A20: ( y <> x implies F9 /. y in Hom ((dom (F /. y)),d) ) by A13, A18; ( y = x implies F9 /. y = id d ) by A13, A18, A19; then dom (F9 /. y) = dom (F /. y) by A20, A4, CAT_1:1, CAT_1:58; hence (doms F9) /. y = dom (F /. y) by A18, Def1 .= (doms F) /. y by A18, Def1 ; ::_thesis: verum end; then consider i being Morphism of C such that A21: i in Hom (c,d) and A22: for k being Morphism of C st k in Hom (c,d) holds ( ( for y being set st y in I holds k (*) (F /. y) = F9 /. y ) iff i = k ) by A1, A17, Def17, Th1; thus ( Hom (d,c) <> {} & Hom (c,d) <> {} ) by A21, A5; :: according to CAT_3:def_9 ::_thesis: ex g being Morphism of c,d st g * f = id d reconsider i = i as Morphism of c,d by A21, CAT_1:def_5; take i ; ::_thesis: i * f = id d thus i * f = i (*) (F /. x) by A6, A21, A5, CAT_1:def_13 .= F9 /. x by A3, A21, A22 .= F9 . x by A3, FUNCT_2:def_13 .= id d by A3, A13 ; ::_thesis: verum end; theorem Th74: :: CAT_3:74 for I being set for C being Category for a, b being Object of C for f being Morphism of a,b for F being Injections_family of a,I st a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible holds b is_a_coproduct_wrt f * F proof let I be set ; ::_thesis: for C being Category for a, b being Object of C for f being Morphism of a,b for F being Injections_family of a,I st a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible holds b is_a_coproduct_wrt f * F let C be Category; ::_thesis: for a, b being Object of C for f being Morphism of a,b for F being Injections_family of a,I st a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible holds b is_a_coproduct_wrt f * F let a, b be Object of C; ::_thesis: for f being Morphism of a,b for F being Injections_family of a,I st a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible holds b is_a_coproduct_wrt f * F let f be Morphism of a,b; ::_thesis: for F being Injections_family of a,I st a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible holds b is_a_coproduct_wrt f * F let F be Injections_family of a,I; ::_thesis: ( a is_a_coproduct_wrt F & dom f = a & cod f = b & f is invertible implies b is_a_coproduct_wrt f * F ) assume that A1: a is_a_coproduct_wrt F and A2: dom f = a and A3: cod f = b and A4: f is invertible ; ::_thesis: b is_a_coproduct_wrt f * F thus f * F is Injections_family of b,I by A2, A3, Th66; :: according to CAT_3:def_17 ::_thesis: for d being Object of C for F9 being Injections_family of d,I st doms (f * F) = doms F9 holds ex h being Morphism of C st ( h in Hom (b,d) & ( for k being Morphism of C st k in Hom (b,d) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff h = k ) ) ) let c be Object of C; ::_thesis: for F9 being Injections_family of c,I st doms (f * F) = doms F9 holds ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff h = k ) ) ) A5: cods F = I --> (dom f) by A2, Def16; let F9 be Injections_family of c,I; ::_thesis: ( doms (f * F) = doms F9 implies ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff h = k ) ) ) ) assume doms (f * F) = doms F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff h = k ) ) ) then doms F = doms F9 by A5, Th17; then consider h being Morphism of C such that A6: h in Hom (a,c) and A7: for k being Morphism of C st k in Hom (a,c) holds ( ( for x being set st x in I holds k (*) (F /. x) = F9 /. x ) iff h = k ) by A1, Def17; A8: dom h = a by A6, CAT_1:1; consider g being Morphism of b,a such that A9: f * g = id b and A10: g * f = id a by A4, CAT_1:def_16; A11: ( Hom (b,a) <> {} & Hom (a,b) <> {} ) by A4, CAT_1:def_16; then A12: dom g = cod f by A3, CAT_1:5; A13: cod g = dom f by A2, A11, CAT_1:5; A14: f * g = f (*) g by A11, CAT_1:def_13; A15: g * f = g (*) f by A11, CAT_1:def_13; cod h = c by A6, CAT_1:1; then A16: cod (h (*) g) = c by A2, A13, A8, CAT_1:17; take hg = h (*) g; ::_thesis: ( hg in Hom (b,c) & ( for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff hg = k ) ) ) dom (h (*) g) = b by A2, A3, A12, A13, A8, CAT_1:17; hence hg in Hom (b,c) by A16; ::_thesis: for k being Morphism of C st k in Hom (b,c) holds ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff hg = k ) let k be Morphism of C; ::_thesis: ( k in Hom (b,c) implies ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff hg = k ) ) assume A17: k in Hom (b,c) ; ::_thesis: ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) iff hg = k ) then A18: dom k = b by CAT_1:1; A19: cod k = c by A17, CAT_1:1; thus ( ( for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) implies hg = k ) ::_thesis: ( hg = k implies for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ) proof assume A20: for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x ; ::_thesis: hg = k now__::_thesis:_(_k_(*)_f_in_Hom_(a,c)_&_(_for_x_being_set_st_x_in_I_holds_ (k_(*)_f)_(*)_(F_/._x)_=_F9_/._x_)_) ( cod (k (*) f) = c & dom (k (*) f) = a ) by A2, A3, A19, A18, CAT_1:17; hence k (*) f in Hom (a,c) ; ::_thesis: for x being set st x in I holds (k (*) f) (*) (F /. x) = F9 /. x let x be set ; ::_thesis: ( x in I implies (k (*) f) (*) (F /. x) = F9 /. x ) assume A21: x in I ; ::_thesis: (k (*) f) (*) (F /. x) = F9 /. x then cod (F /. x) = a by Th62; hence (k (*) f) (*) (F /. x) = k (*) (f (*) (F /. x)) by A2, A3, A18, CAT_1:18 .= k (*) ((f * F) /. x) by A21, Def6 .= F9 /. x by A20, A21 ; ::_thesis: verum end; then (k (*) f) (*) g = h (*) g by A7; hence hg = k (*) (id b) by A3, A13, A9, A18, A14, CAT_1:18 .= k by A18, CAT_1:22 ; ::_thesis: verum end; assume A22: hg = k ; ::_thesis: for x being set st x in I holds k (*) ((f * F) /. x) = F9 /. x let x be set ; ::_thesis: ( x in I implies k (*) ((f * F) /. x) = F9 /. x ) assume A23: x in I ; ::_thesis: k (*) ((f * F) /. x) = F9 /. x then A24: cod (F /. x) = a by Th62; then A25: cod (f (*) (F /. x)) = b by A2, A3, CAT_1:17; thus k (*) ((f * F) /. x) = k (*) (f (*) (F /. x)) by A23, Def6 .= h (*) (g (*) (f (*) (F /. x))) by A2, A3, A12, A13, A8, A22, A25, CAT_1:18 .= h (*) ((id (dom f)) (*) (F /. x)) by A2, A12, A10, A24, A15, CAT_1:18 .= h (*) (F /. x) by A2, A24, CAT_1:21 .= F9 /. x by A6, A7, A23 ; ::_thesis: verum end; theorem Th75: :: CAT_3:75 for C being Category for a being Object of C for F being Injections_family of a, {} holds ( a is_a_coproduct_wrt F iff a is initial ) proof let C be Category; ::_thesis: for a being Object of C for F being Injections_family of a, {} holds ( a is_a_coproduct_wrt F iff a is initial ) let a be Object of C; ::_thesis: for F being Injections_family of a, {} holds ( a is_a_coproduct_wrt F iff a is initial ) let F be Injections_family of a, {} ; ::_thesis: ( a is_a_coproduct_wrt F iff a is initial ) thus ( a is_a_coproduct_wrt F implies a is initial ) ::_thesis: ( a is initial implies a is_a_coproduct_wrt F ) proof assume A1: a is_a_coproduct_wrt F ; ::_thesis: a is initial let b be Object of C; :: according to CAT_1:def_19 ::_thesis: ( not Hom (a,b) = {} & ex b1 being Morphism of a,b st for b2 being Morphism of a,b holds b1 = b2 ) set F9 = the Injections_family of b, {} ; doms F = {} ; then consider h being Morphism of C such that A2: h in Hom (a,b) and A3: for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = the Injections_family of b, {} /. x ) iff h = k ) by A1, Def17; thus Hom (a,b) <> {} by A2; ::_thesis: ex b1 being Morphism of a,b st for b2 being Morphism of a,b holds b1 = b2 reconsider f = h as Morphism of a,b by A2, CAT_1:def_5; take f ; ::_thesis: for b1 being Morphism of a,b holds f = b1 let g be Morphism of a,b; ::_thesis: f = g A4: for x being set st x in {} holds g (*) (F /. x) = the Injections_family of b, {} /. x ; g in Hom (a,b) by A2, CAT_1:def_5; hence f = g by A3, A4; ::_thesis: verum end; assume A5: a is initial ; ::_thesis: a is_a_coproduct_wrt F thus F is Injections_family of a, {} ; :: according to CAT_3:def_17 ::_thesis: for d being Object of C for F9 being Injections_family of d, {} st doms F = doms F9 holds ex h being Morphism of C st ( h in Hom (a,d) & ( for k being Morphism of C st k in Hom (a,d) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Injections_family of b, {} st doms F = doms F9 holds ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) consider h being Morphism of a,b such that A6: for g being Morphism of a,b holds h = g by A5, CAT_1:def_19; let F9 be Injections_family of b, {} ; ::_thesis: ( doms F = doms F9 implies ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) ) assume doms F = doms F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) take h ; ::_thesis: ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) ) Hom (a,b) <> {} by A5, CAT_1:def_19; hence h in Hom (a,b) by CAT_1:def_5; ::_thesis: for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (a,b) implies ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) ) assume k in Hom (a,b) ; ::_thesis: ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) then k is Morphism of a,b by CAT_1:def_5; hence ( ( for x being set st x in {} holds k (*) (F /. x) = F9 /. x ) iff h = k ) by A6; ::_thesis: verum end; theorem :: CAT_3:76 for y being set for C being Category for a being Object of C holds a is_a_coproduct_wrt y .--> (id a) proof let y be set ; ::_thesis: for C being Category for a being Object of C holds a is_a_coproduct_wrt y .--> (id a) let C be Category; ::_thesis: for a being Object of C holds a is_a_coproduct_wrt y .--> (id a) let a be Object of C; ::_thesis: a is_a_coproduct_wrt y .--> (id a) set F = y .--> (id a); cod (id a) = a ; hence y .--> (id a) is Injections_family of a,{y} by Th64; :: according to CAT_3:def_17 ::_thesis: for d being Object of C for F9 being Injections_family of d,{y} st doms (y .--> (id a)) = doms F9 holds ex h being Morphism of C st ( h in Hom (a,d) & ( for k being Morphism of C st k in Hom (a,d) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Injections_family of b,{y} st doms (y .--> (id a)) = doms F9 holds ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) ) let F9 be Injections_family of b,{y}; ::_thesis: ( doms (y .--> (id a)) = doms F9 implies ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) ) ) assume A1: doms (y .--> (id a)) = doms F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) ) take h = F9 /. y; ::_thesis: ( h in Hom (a,b) & ( for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) ) A2: y in {y} by TARSKI:def_1; then A3: cod h = b by Th62; dom h = (doms (y .--> (id a))) /. y by A1, A2, Def1 .= dom ((y .--> (id a)) /. y) by A2, Def1 .= dom (id a) by A2, Th2 .= a ; hence h in Hom (a,b) by A3; ::_thesis: for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (a,b) implies ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) ) assume k in Hom (a,b) ; ::_thesis: ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) iff h = k ) then A4: dom k = a by CAT_1:1; thus ( ( for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) implies h = k ) ::_thesis: ( h = k implies for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ) proof assume A5: for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x ; ::_thesis: h = k thus k = k (*) (id a) by A4, CAT_1:22 .= k (*) ((y .--> (id a)) /. y) by A2, Th2 .= h by A2, A5 ; ::_thesis: verum end; assume A6: h = k ; ::_thesis: for x being set st x in {y} holds k (*) ((y .--> (id a)) /. x) = F9 /. x let x be set ; ::_thesis: ( x in {y} implies k (*) ((y .--> (id a)) /. x) = F9 /. x ) assume A7: x in {y} ; ::_thesis: k (*) ((y .--> (id a)) /. x) = F9 /. x hence F9 /. x = k by A6, TARSKI:def_1 .= k (*) (id a) by A4, CAT_1:22 .= k (*) ((y .--> (id a)) /. x) by A7, Th2 ; ::_thesis: verum end; theorem :: CAT_3:77 for I being set for C being Category for a being Object of C for F being Injections_family of a,I st a is_a_coproduct_wrt F & ( for x being set st x in I holds dom (F /. x) is initial ) holds a is initial proof let I be set ; ::_thesis: for C being Category for a being Object of C for F being Injections_family of a,I st a is_a_coproduct_wrt F & ( for x being set st x in I holds dom (F /. x) is initial ) holds a is initial let C be Category; ::_thesis: for a being Object of C for F being Injections_family of a,I st a is_a_coproduct_wrt F & ( for x being set st x in I holds dom (F /. x) is initial ) holds a is initial let a be Object of C; ::_thesis: for F being Injections_family of a,I st a is_a_coproduct_wrt F & ( for x being set st x in I holds dom (F /. x) is initial ) holds a is initial let F be Injections_family of a,I; ::_thesis: ( a is_a_coproduct_wrt F & ( for x being set st x in I holds dom (F /. x) is initial ) implies a is initial ) assume that A1: a is_a_coproduct_wrt F and A2: for x being set st x in I holds dom (F /. x) is initial ; ::_thesis: a is initial now__::_thesis:_(_(_I_=_{}_implies_a_is_initial_)_&_(_for_b_being_Object_of_C_holds_ (_Hom_(a,b)_<>_{}_&_ex_h_being_Morphism_of_a,b_st_ for_g_being_Morphism_of_a,b_holds_h_=_g_)_)_) thus ( I = {} implies a is initial ) by A1, Th75; ::_thesis: for b being Object of C holds ( Hom (a,b) <> {} & ex h being Morphism of a,b st for g being Morphism of a,b holds h = g ) let b be Object of C; ::_thesis: ( Hom (a,b) <> {} & ex h being Morphism of a,b st for g being Morphism of a,b holds h = g ) deffunc H1( set ) -> Morphism of dom (F /. $1),b = init ((dom (F /. $1)),b); consider F9 being Function of I, the carrier' of C such that A3: for x being set st x in I holds F9 /. x = H1(x) from CAT_3:sch_1(); now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (cods_F9)_/._x_=_(I_-->_b)_/._x let x be set ; ::_thesis: ( x in I implies (cods F9) /. x = (I --> b) /. x ) assume A4: x in I ; ::_thesis: (cods F9) /. x = (I --> b) /. x then A5: dom (F /. x) is initial by A2; thus (cods F9) /. x = cod (F9 /. x) by A4, Def2 .= cod (init ((dom (F /. x)),b)) by A3, A4 .= b by A5, Th38 .= (I --> b) /. x by A4, Th2 ; ::_thesis: verum end; then reconsider F9 = F9 as Injections_family of b,I by Def16, Th1; now__::_thesis:_for_x_being_set_st_x_in_I_holds_ (doms_F)_/._x_=_(doms_F9)_/._x let x be set ; ::_thesis: ( x in I implies (doms F) /. x = (doms F9) /. x ) assume A6: x in I ; ::_thesis: (doms F) /. x = (doms F9) /. x then A7: dom (F /. x) is initial by A2; thus (doms F) /. x = dom (F /. x) by A6, Def1 .= dom (init ((dom (F /. x)),b)) by A7, Th38 .= dom (F9 /. x) by A3, A6 .= (doms F9) /. x by A6, Def1 ; ::_thesis: verum end; then consider h being Morphism of C such that A8: h in Hom (a,b) and A9: for k being Morphism of C st k in Hom (a,b) holds ( ( for x being set st x in I holds k (*) (F /. x) = F9 /. x ) iff h = k ) by A1, Def17, Th1; thus Hom (a,b) <> {} by A8; ::_thesis: ex h being Morphism of a,b st for g being Morphism of a,b holds h = g reconsider h = h as Morphism of a,b by A8, CAT_1:def_5; take h = h; ::_thesis: for g being Morphism of a,b holds h = g let g be Morphism of a,b; ::_thesis: h = g now__::_thesis:_(_g_in_Hom_(a,b)_&_(_for_x_being_set_st_x_in_I_holds_ F9_/._x_=_g_(*)_(F_/._x)_)_) thus g in Hom (a,b) by A8, CAT_1:def_5; ::_thesis: for x being set st x in I holds F9 /. x = g (*) (F /. x) let x be set ; ::_thesis: ( x in I implies F9 /. x = g (*) (F /. x) ) set c = dom (F /. x); A10: dom g = a by A8, CAT_1:5; assume A11: x in I ; ::_thesis: F9 /. x = g (*) (F /. x) then dom (F /. x) is initial by A2; then consider f being Morphism of dom (F /. x),b such that A12: for f9 being Morphism of dom (F /. x),b holds f = f9 by CAT_1:def_19; A13: cod (F /. x) = a by A11, Th62; then A14: dom (g (*) (F /. x)) = dom (F /. x) by A10, CAT_1:17; cod g = b by A8, CAT_1:5; then cod (g (*) (F /. x)) = b by A10, A13, CAT_1:17; then g (*) (F /. x) in Hom ((dom (F /. x)),b) by A14; then A15: g (*) (F /. x) is Morphism of dom (F /. x),b by CAT_1:def_5; F9 /. x = init ((dom (F /. x)),b) by A3, A11; hence F9 /. x = f by A12 .= g (*) (F /. x) by A12, A15 ; ::_thesis: verum end; hence h = g by A9; ::_thesis: verum end; hence a is initial by CAT_1:def_19; ::_thesis: verum end; definition let C be Category; let c be Object of C; let i1, i2 be Morphism of C; predc is_a_coproduct_wrt i1,i2 means :Def18: :: CAT_3:def 18 ( cod i1 = c & cod i2 = c & ( for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ) ); end; :: deftheorem Def18 defines is_a_coproduct_wrt CAT_3:def_18_:_ for C being Category for c being Object of C for i1, i2 being Morphism of C holds ( c is_a_coproduct_wrt i1,i2 iff ( cod i1 = c & cod i2 = c & ( for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ) ) ); theorem :: CAT_3:78 for C being Category for c being Object of C for p1, p2 being Morphism of C holds ( c is_a_product_wrt p1,p2 iff c opp is_a_coproduct_wrt p1 opp ,p2 opp ) proof let C be Category; ::_thesis: for c being Object of C for p1, p2 being Morphism of C holds ( c is_a_product_wrt p1,p2 iff c opp is_a_coproduct_wrt p1 opp ,p2 opp ) let c be Object of C; ::_thesis: for p1, p2 being Morphism of C holds ( c is_a_product_wrt p1,p2 iff c opp is_a_coproduct_wrt p1 opp ,p2 opp ) let p1, p2 be Morphism of C; ::_thesis: ( c is_a_product_wrt p1,p2 iff c opp is_a_coproduct_wrt p1 opp ,p2 opp ) set i1 = p1 opp ; set i2 = p2 opp ; thus ( c is_a_product_wrt p1,p2 implies c opp is_a_coproduct_wrt p1 opp ,p2 opp ) ::_thesis: ( c opp is_a_coproduct_wrt p1 opp ,p2 opp implies c is_a_product_wrt p1,p2 ) proof assume that A1: ( dom p1 = c & dom p2 = c ) and A2: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ; :: according to CAT_3:def_15 ::_thesis: c opp is_a_coproduct_wrt p1 opp ,p2 opp reconsider gg = p1 as Morphism of dom p1, cod p1 by CAT_1:4; A3: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A4: gg opp = p1 opp by OPPCAT_1:def_6; thus A5: cod (p1 opp) = c opp by A1, OPPCAT_1:10, A3, A4; :: according to CAT_3:def_18 ::_thesis: ( cod (p2 opp) = c opp & ( for d being Object of (C opp) for f, g being Morphism of (C opp) st f in Hom ((dom (p1 opp)),d) & g in Hom ((dom (p2 opp)),d) holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) ) ) reconsider gg = p2 as Morphism of dom p2, cod p2 by CAT_1:4; A6: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A7: gg opp = p2 opp by OPPCAT_1:def_6; thus A8: cod (p2 opp) = c opp by A1, OPPCAT_1:10, A6, A7; ::_thesis: for d being Object of (C opp) for f, g being Morphism of (C opp) st f in Hom ((dom (p1 opp)),d) & g in Hom ((dom (p2 opp)),d) holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) let d be Object of (C opp); ::_thesis: for f, g being Morphism of (C opp) st f in Hom ((dom (p1 opp)),d) & g in Hom ((dom (p2 opp)),d) holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) let f, g be Morphism of (C opp); ::_thesis: ( f in Hom ((dom (p1 opp)),d) & g in Hom ((dom (p2 opp)),d) implies ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) ) assume that A9: f in Hom ((dom (p1 opp)),d) and A10: g in Hom ((dom (p2 opp)),d) ; ::_thesis: ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) reconsider gg = p2 opp as Morphism of dom (p2 opp), cod (p2 opp) by CAT_1:4; A11: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; opp g in Hom ((opp d),(opp (dom (p2 opp)))) by A10, OPPCAT_1:6; then A12: opp g in Hom ((opp d),(cod (opp (p2 opp)))) by OPPCAT_1:13, A11; reconsider gg = p1 opp as Morphism of dom (p1 opp), cod (p1 opp) by CAT_1:4; A13: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; opp f in Hom ((opp d),(opp (dom (p1 opp)))) by A9, OPPCAT_1:6; then opp f in Hom ((opp d),(cod (opp (p1 opp)))) by OPPCAT_1:13, A13; then consider h being Morphism of C such that A14: h in Hom ((opp d),c) and A15: for k being Morphism of C st k in Hom ((opp d),c) holds ( ( p1 (*) k = opp f & p2 (*) k = opp g ) iff h = k ) by A2, A12; take h opp ; ::_thesis: ( h opp in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h opp = k ) ) ) h opp in Hom ((c opp),((opp d) opp)) by A14, OPPCAT_1:5; hence h opp in Hom ((c opp),d) ; ::_thesis: for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h opp = k ) let k be Morphism of (C opp); ::_thesis: ( k in Hom ((c opp),d) implies ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h opp = k ) ) assume A16: k in Hom ((c opp),d) ; ::_thesis: ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h opp = k ) then opp k in Hom ((opp d),(opp (c opp))) by OPPCAT_1:6; then A17: ( ( (opp (p1 opp)) (*) (opp k) = f & (opp (p2 opp)) (*) (opp k) = g ) iff h opp = k ) by A15; dom k = c opp by A16, CAT_1:1; then ( ( opp (k (*) (p1 opp)) = f & opp (k (*) (p2 opp)) = g ) iff h opp = k ) by A8, A5, A17, OPPCAT_1:18; hence ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h opp = k ) ; ::_thesis: verum end; assume that A18: ( cod (p1 opp) = c opp & cod (p2 opp) = c opp ) and A19: for d being Object of (C opp) for f, g being Morphism of (C opp) st f in Hom ((dom (p1 opp)),d) & g in Hom ((dom (p2 opp)),d) holds ex h being Morphism of (C opp) st ( h in Hom ((c opp),d) & ( for k being Morphism of (C opp) st k in Hom ((c opp),d) holds ( ( k (*) (p1 opp) = f & k (*) (p2 opp) = g ) iff h = k ) ) ) ; :: according to CAT_3:def_18 ::_thesis: c is_a_product_wrt p1,p2 reconsider gg = p1 as Morphism of dom p1, cod p1 by CAT_1:4; A20: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A21: gg opp = p1 opp by OPPCAT_1:def_6; A22: dom p1 = c opp by A18, OPPCAT_1:10, A20, A21; reconsider gg = p2 as Morphism of dom p2, cod p2 by CAT_1:4; A23: Hom ((dom gg),(cod gg)) <> {} by CAT_1:2; then A24: gg opp = p2 opp by OPPCAT_1:def_6; A25: dom p2 = c opp by A18, OPPCAT_1:10, A23, A24; hence ( dom p1 = c & dom p2 = c ) by A22; :: according to CAT_3:def_15 ::_thesis: for d being Object of C for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: for f, g being Morphism of C st f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) holds ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) let f, g be Morphism of C; ::_thesis: ( f in Hom (d,(cod p1)) & g in Hom (d,(cod p2)) implies ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) ) assume that A26: f in Hom (d,(cod p1)) and A27: g in Hom (d,(cod p2)) ; ::_thesis: ex h being Morphism of C st ( h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff h = k ) ) ) g opp in Hom (((cod p2) opp),(d opp)) by A27, OPPCAT_1:5; then A28: g opp in Hom ((dom (p2 opp)),(d opp)) by OPPCAT_1:12, A23, A24; f opp in Hom (((cod p1) opp),(d opp)) by A26, OPPCAT_1:5; then f opp in Hom ((dom (p1 opp)),(d opp)) by OPPCAT_1:12, A20, A21; then consider h being Morphism of (C opp) such that A29: h in Hom ((c opp),(d opp)) and A30: for k being Morphism of (C opp) st k in Hom ((c opp),(d opp)) holds ( ( k (*) (p1 opp) = f opp & k (*) (p2 opp) = g opp ) iff h = k ) by A19, A28; take opp h ; ::_thesis: ( opp h in Hom (d,c) & ( for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff opp h = k ) ) ) thus opp h in Hom (d,c) by A29, OPPCAT_1:5; ::_thesis: for k being Morphism of C st k in Hom (d,c) holds ( ( p1 (*) k = f & p2 (*) k = g ) iff opp h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (d,c) implies ( ( p1 (*) k = f & p2 (*) k = g ) iff opp h = k ) ) assume A31: k in Hom (d,c) ; ::_thesis: ( ( p1 (*) k = f & p2 (*) k = g ) iff opp h = k ) then k opp in Hom ((c opp),(d opp)) by OPPCAT_1:5; then A32: ( ( (k opp) (*) (p1 opp) = f opp & (k opp) (*) (p2 opp) = g opp ) iff h = k opp ) by A30; A33: cod k = c by A31, CAT_1:1; reconsider ff = p1 as Morphism of dom p1, cod p1 by CAT_1:4; reconsider gg = k as Morphism of dom k, dom p1 by CAT_1:4, A33, A22; A34: ( Hom ((dom k),(cod k)) <> {} & Hom ((dom p1),(cod p1)) <> {} ) by CAT_1:2; then A35: ff opp = p1 opp by OPPCAT_1:def_6; A36: gg opp = k opp by OPPCAT_1:def_6, A34, A33, A22; A37: (p1 (*) k) opp = (k opp) (*) (p1 opp) by A22, OPPCAT_1:16, A34, A33, A35, A36; reconsider ff = p2 as Morphism of dom p2, cod p2 by CAT_1:4; reconsider gg = k as Morphism of dom k, dom p2 by CAT_1:4, A33, A25; A38: ( Hom ((dom k),(cod k)) <> {} & Hom ((dom p2),(cod p2)) <> {} ) by CAT_1:2; then A39: ff opp = p2 opp by OPPCAT_1:def_6; A40: gg opp = k opp by OPPCAT_1:def_6, A38, A33, A25; (p2 (*) k) opp = (k opp) (*) (p2 opp) by OPPCAT_1:16, A38, A33, A39, A40, A25; hence ( ( p1 (*) k = f & p2 (*) k = g ) iff opp h = k ) by A37, A32; ::_thesis: verum end; theorem Th79: :: CAT_3:79 for x1, x2 being set for C being Category for c being Object of C for i1, i2 being Morphism of C st x1 <> x2 holds ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) proof let x1, x2 be set ; ::_thesis: for C being Category for c being Object of C for i1, i2 being Morphism of C st x1 <> x2 holds ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) let C be Category; ::_thesis: for c being Object of C for i1, i2 being Morphism of C st x1 <> x2 holds ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) let c be Object of C; ::_thesis: for i1, i2 being Morphism of C st x1 <> x2 holds ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) let i1, i2 be Morphism of C; ::_thesis: ( x1 <> x2 implies ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) ) set F = (x1,x2) --> (i1,i2); set I = {x1,x2}; assume A1: x1 <> x2 ; ::_thesis: ( c is_a_coproduct_wrt i1,i2 iff c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) thus ( c is_a_coproduct_wrt i1,i2 implies c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ) ::_thesis: ( c is_a_coproduct_wrt (x1,x2) --> (i1,i2) implies c is_a_coproduct_wrt i1,i2 ) proof assume A2: c is_a_coproduct_wrt i1,i2 ; ::_thesis: c is_a_coproduct_wrt (x1,x2) --> (i1,i2) then ( cod i1 = c & cod i2 = c ) by Def18; hence (x1,x2) --> (i1,i2) is Injections_family of c,{x1,x2} by Th65; :: according to CAT_3:def_17 ::_thesis: for d being Object of C for F9 being Injections_family of d,{x1,x2} st doms ((x1,x2) --> (i1,i2)) = doms F9 holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) ) let b be Object of C; ::_thesis: for F9 being Injections_family of b,{x1,x2} st doms ((x1,x2) --> (i1,i2)) = doms F9 holds ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) ) let F9 be Injections_family of b,{x1,x2}; ::_thesis: ( doms ((x1,x2) --> (i1,i2)) = doms F9 implies ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) ) ) assume A3: doms ((x1,x2) --> (i1,i2)) = doms F9 ; ::_thesis: ex h being Morphism of C st ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) ) set f = F9 /. x1; set g = F9 /. x2; A4: x1 in {x1,x2} by TARSKI:def_2; then (doms ((x1,x2) --> (i1,i2))) /. x1 = dom (((x1,x2) --> (i1,i2)) /. x1) by Def1; then dom (F9 /. x1) = dom (((x1,x2) --> (i1,i2)) /. x1) by A3, A4, Def1; then A5: dom (F9 /. x1) = dom i1 by A1, Th3; A6: x2 in {x1,x2} by TARSKI:def_2; then (doms ((x1,x2) --> (i1,i2))) /. x2 = dom (((x1,x2) --> (i1,i2)) /. x2) by Def1; then dom (F9 /. x2) = dom (((x1,x2) --> (i1,i2)) /. x2) by A3, A6, Def1; then A7: dom (F9 /. x2) = dom i2 by A1, Th3; cod (F9 /. x2) = b by A6, Th62; then A8: F9 /. x2 in Hom ((dom i2),b) by A7; cod (F9 /. x1) = b by A4, Th62; then F9 /. x1 in Hom ((dom i1),b) by A5; then consider h being Morphism of C such that A9: h in Hom (c,b) and A10: for k being Morphism of C st k in Hom (c,b) holds ( ( k (*) i1 = F9 /. x1 & k (*) i2 = F9 /. x2 ) iff h = k ) by A2, A8, Def18; take h ; ::_thesis: ( h in Hom (c,b) & ( for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) ) thus h in Hom (c,b) by A9; ::_thesis: for k being Morphism of C st k in Hom (c,b) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (c,b) implies ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) ) assume A11: k in Hom (c,b) ; ::_thesis: ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) thus ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) implies h = k ) ::_thesis: ( h = k implies for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) proof assume A12: for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ; ::_thesis: h = k then k (*) (((x1,x2) --> (i1,i2)) /. x2) = F9 /. x2 by A6; then A13: k (*) i2 = F9 /. x2 by A1, Th3; k (*) (((x1,x2) --> (i1,i2)) /. x1) = F9 /. x1 by A4, A12; then k (*) i1 = F9 /. x1 by A1, Th3; hence h = k by A10, A11, A13; ::_thesis: verum end; assume h = k ; ::_thesis: for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x then A14: ( k (*) i1 = F9 /. x1 & k (*) i2 = F9 /. x2 ) by A10, A11; let x be set ; ::_thesis: ( x in {x1,x2} implies k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) assume x in {x1,x2} ; ::_thesis: k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; hence k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x by A1, A14, Th3; ::_thesis: verum end; assume A15: c is_a_coproduct_wrt (x1,x2) --> (i1,i2) ; ::_thesis: c is_a_coproduct_wrt i1,i2 then A16: (x1,x2) --> (i1,i2) is Injections_family of c,{x1,x2} by Def17; x2 in {x1,x2} by TARSKI:def_2; then A17: cod (((x1,x2) --> (i1,i2)) /. x2) = c by A16, Th62; x1 in {x1,x2} by TARSKI:def_2; then cod (((x1,x2) --> (i1,i2)) /. x1) = c by A16, Th62; hence ( cod i1 = c & cod i2 = c ) by A1, A17, Th3; :: according to CAT_3:def_18 ::_thesis: for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) let f, g be Morphism of C; ::_thesis: ( f in Hom ((dom i1),d) & g in Hom ((dom i2),d) implies ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ) assume that A18: f in Hom ((dom i1),d) and A19: g in Hom ((dom i2),d) ; ::_thesis: ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ( cod f = d & cod g = d ) by A18, A19, CAT_1:1; then reconsider F9 = (x1,x2) --> (f,g) as Injections_family of d,{x1,x2} by Th65; doms ((x1,x2) --> (i1,i2)) = (x1,x2) --> ((dom i1),(dom i2)) by Th6 .= (x1,x2) --> ((dom f),(dom i2)) by A18, CAT_1:1 .= (x1,x2) --> ((dom f),(dom g)) by A19, CAT_1:1 .= doms F9 by Th6 ; then consider h being Morphism of C such that A20: h in Hom (c,d) and A21: for k being Morphism of C st k in Hom (c,d) holds ( ( for x being set st x in {x1,x2} holds k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) iff h = k ) by A15, Def17; take h ; ::_thesis: ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) thus h in Hom (c,d) by A20; ::_thesis: for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) let k be Morphism of C; ::_thesis: ( k in Hom (c,d) implies ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) assume A22: k in Hom (c,d) ; ::_thesis: ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) thus ( k (*) i1 = f & k (*) i2 = g implies h = k ) ::_thesis: ( h = k implies ( k (*) i1 = f & k (*) i2 = g ) ) proof assume A23: ( k (*) i1 = f & k (*) i2 = g ) ; ::_thesis: h = k now__::_thesis:_for_x_being_set_st_x_in_{x1,x2}_holds_ k_(*)_(((x1,x2)_-->_(i1,i2))_/._x)_=_F9_/._x let x be set ; ::_thesis: ( x in {x1,x2} implies k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x ) assume x in {x1,x2} ; ::_thesis: k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x then ( x = x1 or x = x2 ) by TARSKI:def_2; then ( ( ((x1,x2) --> (i1,i2)) /. x = i1 & F9 /. x = f ) or ( ((x1,x2) --> (i1,i2)) /. x = i2 & F9 /. x = g ) ) by A1, Th3; hence k (*) (((x1,x2) --> (i1,i2)) /. x) = F9 /. x by A23; ::_thesis: verum end; hence h = k by A21, A22; ::_thesis: verum end; assume A24: h = k ; ::_thesis: ( k (*) i1 = f & k (*) i2 = g ) x2 in {x1,x2} by TARSKI:def_2; then k (*) (((x1,x2) --> (i1,i2)) /. x2) = F9 /. x2 by A21, A22, A24; then A25: k (*) (((x1,x2) --> (i1,i2)) /. x2) = g by A1, Th3; x1 in {x1,x2} by TARSKI:def_2; then k (*) (((x1,x2) --> (i1,i2)) /. x1) = F9 /. x1 by A21, A22, A24; then k (*) (((x1,x2) --> (i1,i2)) /. x1) = f by A1, Th3; hence ( k (*) i1 = f & k (*) i2 = g ) by A1, A25, Th3; ::_thesis: verum end; theorem :: CAT_3:80 for C being Category for c, d being Object of C for i1, i2, j1, j2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & d is_a_coproduct_wrt j1,j2 & dom i1 = dom j1 & dom i2 = dom j2 holds c,d are_isomorphic proof let C be Category; ::_thesis: for c, d being Object of C for i1, i2, j1, j2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & d is_a_coproduct_wrt j1,j2 & dom i1 = dom j1 & dom i2 = dom j2 holds c,d are_isomorphic let c, d be Object of C; ::_thesis: for i1, i2, j1, j2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & d is_a_coproduct_wrt j1,j2 & dom i1 = dom j1 & dom i2 = dom j2 holds c,d are_isomorphic let i1, i2, j1, j2 be Morphism of C; ::_thesis: ( c is_a_coproduct_wrt i1,i2 & d is_a_coproduct_wrt j1,j2 & dom i1 = dom j1 & dom i2 = dom j2 implies c,d are_isomorphic ) assume that A1: c is_a_coproduct_wrt i1,i2 and A2: d is_a_coproduct_wrt j1,j2 and A3: ( dom i1 = dom j1 & dom i2 = dom j2 ) ; ::_thesis: c,d are_isomorphic set I = {0,1}; set F = (0,1) --> (i1,i2); set F9 = (0,1) --> (j1,j2); A4: ( c is_a_coproduct_wrt (0,1) --> (i1,i2) & d is_a_coproduct_wrt (0,1) --> (j1,j2) ) by A1, A2, Th79; ( cod j1 = d & cod j2 = d ) by A2, Def18; then A5: (0,1) --> (j1,j2) is Injections_family of d,{0,1} by Th65; ( cod i1 = c & cod i2 = c ) by A1, Def18; then A6: (0,1) --> (i1,i2) is Injections_family of c,{0,1} by Th65; doms ((0,1) --> (i1,i2)) = (0,1) --> ((dom j1),(dom j2)) by A3, Th6 .= doms ((0,1) --> (j1,j2)) by Th6 ; hence c,d are_isomorphic by A6, A5, A4, Th72; ::_thesis: verum end; theorem :: CAT_3:81 for C being Category for a, c, b being Object of C st Hom (a,c) <> {} & Hom (b,c) <> {} holds for i1 being Morphism of a,c for i2 being Morphism of b,c holds ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) proof let C be Category; ::_thesis: for a, c, b being Object of C st Hom (a,c) <> {} & Hom (b,c) <> {} holds for i1 being Morphism of a,c for i2 being Morphism of b,c holds ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) let a, c, b be Object of C; ::_thesis: ( Hom (a,c) <> {} & Hom (b,c) <> {} implies for i1 being Morphism of a,c for i2 being Morphism of b,c holds ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) ) assume that A1: Hom (a,c) <> {} and A2: Hom (b,c) <> {} ; ::_thesis: for i1 being Morphism of a,c for i2 being Morphism of b,c holds ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) let i1 be Morphism of a,c; ::_thesis: for i2 being Morphism of b,c holds ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) let i2 be Morphism of b,c; ::_thesis: ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) thus ( c is_a_coproduct_wrt i1,i2 implies for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) ::_thesis: ( ( for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) implies c is_a_coproduct_wrt i1,i2 ) proof assume that cod i1 = c and cod i2 = c and A3: for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ; :: according to CAT_3:def_18 ::_thesis: for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: ( Hom (a,d) <> {} & Hom (b,d) <> {} implies ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) assume that A4: Hom (a,d) <> {} and A5: Hom (b,d) <> {} ; ::_thesis: ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) set f = the Morphism of a,d; set g = the Morphism of b,d; A6: dom i2 = b by A2, CAT_1:5; then A7: the Morphism of b,d in Hom ((dom i2),d) by A5, CAT_1:def_5; A8: dom i1 = a by A1, CAT_1:5; then the Morphism of a,d in Hom ((dom i1),d) by A4, CAT_1:def_5; then A9: ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = the Morphism of a,d & k (*) i2 = the Morphism of b,d ) iff h = k ) ) ) by A3, A7; hence Hom (c,d) <> {} ; ::_thesis: for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) let f be Morphism of a,d; ::_thesis: for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) let g be Morphism of b,d; ::_thesis: ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) A10: g in Hom ((dom i2),d) by A5, A6, CAT_1:def_5; f in Hom ((dom i1),d) by A4, A8, CAT_1:def_5; then consider h being Morphism of C such that A11: h in Hom (c,d) and A12: for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) by A3, A10; reconsider h = h as Morphism of c,d by A11, CAT_1:def_5; take h ; ::_thesis: for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) let k be Morphism of c,d; ::_thesis: ( ( k * i1 = f & k * i2 = g ) iff h = k ) A13: k in Hom (c,d) by A9, CAT_1:def_5; ( k * i1 = k (*) i1 & k * i2 = k (*) i2 ) by A1, A2, A9, CAT_1:def_13; hence ( ( k * i1 = f & k * i2 = g ) iff h = k ) by A12, A13; ::_thesis: verum end; assume A14: for d being Object of C st Hom (a,d) <> {} & Hom (b,d) <> {} holds ( Hom (c,d) <> {} & ( for f being Morphism of a,d for g being Morphism of b,d ex h being Morphism of c,d st for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ; ::_thesis: c is_a_coproduct_wrt i1,i2 thus ( cod i1 = c & cod i2 = c ) by A1, A2, CAT_1:5; :: according to CAT_3:def_18 ::_thesis: for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) let d be Object of C; ::_thesis: for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) let f, g be Morphism of C; ::_thesis: ( f in Hom ((dom i1),d) & g in Hom ((dom i2),d) implies ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) ) assume that A15: f in Hom ((dom i1),d) and A16: g in Hom ((dom i2),d) ; ::_thesis: ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) A17: Hom (a,d) <> {} by A1, A15, CAT_1:5; A18: dom i1 = a by A1, CAT_1:5; then A19: f is Morphism of a,d by A15, CAT_1:def_5; A20: dom i2 = b by A2, CAT_1:5; then g is Morphism of b,d by A16, CAT_1:def_5; then consider h being Morphism of c,d such that A21: for k being Morphism of c,d holds ( ( k * i1 = f & k * i2 = g ) iff h = k ) by A14, A16, A20, A19, A17; reconsider h9 = h as Morphism of C ; take h9 ; ::_thesis: ( h9 in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h9 = k ) ) ) A22: Hom (c,d) <> {} by A14, A15, A16, A18, A20; hence h9 in Hom (c,d) by CAT_1:def_5; ::_thesis: for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h9 = k ) let k be Morphism of C; ::_thesis: ( k in Hom (c,d) implies ( ( k (*) i1 = f & k (*) i2 = g ) iff h9 = k ) ) assume k in Hom (c,d) ; ::_thesis: ( ( k (*) i1 = f & k (*) i2 = g ) iff h9 = k ) then reconsider k9 = k as Morphism of c,d by CAT_1:def_5; ( k (*) i1 = k9 * i1 & k (*) i2 = k9 * i2 ) by A1, A2, A22, CAT_1:def_13; hence ( ( k (*) i1 = f & k (*) i2 = g ) iff h9 = k ) by A21; ::_thesis: verum end; theorem :: CAT_3:82 for C being Category for a, c, b being Object of C for i1 being Morphism of a,c for i2 being Morphism of b,c st Hom (a,c) <> {} & Hom (b,c) <> {} & c is_a_coproduct_wrt i1,i2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( i1 is coretraction & i2 is coretraction ) proof let C be Category; ::_thesis: for a, c, b being Object of C for i1 being Morphism of a,c for i2 being Morphism of b,c st Hom (a,c) <> {} & Hom (b,c) <> {} & c is_a_coproduct_wrt i1,i2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( i1 is coretraction & i2 is coretraction ) let a, c, b be Object of C; ::_thesis: for i1 being Morphism of a,c for i2 being Morphism of b,c st Hom (a,c) <> {} & Hom (b,c) <> {} & c is_a_coproduct_wrt i1,i2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( i1 is coretraction & i2 is coretraction ) let i1 be Morphism of a,c; ::_thesis: for i2 being Morphism of b,c st Hom (a,c) <> {} & Hom (b,c) <> {} & c is_a_coproduct_wrt i1,i2 & Hom (a,b) <> {} & Hom (b,a) <> {} holds ( i1 is coretraction & i2 is coretraction ) let i2 be Morphism of b,c; ::_thesis: ( Hom (a,c) <> {} & Hom (b,c) <> {} & c is_a_coproduct_wrt i1,i2 & Hom (a,b) <> {} & Hom (b,a) <> {} implies ( i1 is coretraction & i2 is coretraction ) ) assume A1: ( Hom (a,c) <> {} & Hom (b,c) <> {} ) ; ::_thesis: ( not c is_a_coproduct_wrt i1,i2 or not Hom (a,b) <> {} or not Hom (b,a) <> {} or ( i1 is coretraction & i2 is coretraction ) ) assume that A2: c is_a_coproduct_wrt i1,i2 and A3: ( Hom (a,b) <> {} & Hom (b,a) <> {} ) ; ::_thesis: ( i1 is coretraction & i2 is coretraction ) set I = {0,1}; ( cod i1 = c & cod i2 = c ) by A2, Def18; then reconsider F = (0,1) --> (i1,i2) as Injections_family of c,{0,1} by Th65; A4: F /. 0 = i1 by Th3; A5: F /. 1 = i2 by Th3; A6: now__::_thesis:_(_F_is_Injections_family_of_c,{0,1}_&_c_is_a_coproduct_wrt_F_&_(_for_x1,_x2_being_set_st_x1_in_{0,1}_&_x2_in_{0,1}_holds_ Hom_((dom_(F_/._x1)),(dom_(F_/._x2)))_<>_{}_)_) thus F is Injections_family of c,{0,1} ; ::_thesis: ( c is_a_coproduct_wrt F & ( for x1, x2 being set st x1 in {0,1} & x2 in {0,1} holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) ) thus c is_a_coproduct_wrt F by A2, Th79; ::_thesis: for x1, x2 being set st x1 in {0,1} & x2 in {0,1} holds Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} let x1, x2 be set ; ::_thesis: ( x1 in {0,1} & x2 in {0,1} implies Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} ) assume that A7: x1 in {0,1} and A8: x2 in {0,1} ; ::_thesis: Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} A9: ( x2 = 0 or x2 = 1 ) by A8, TARSKI:def_2; ( x1 = 0 or x1 = 1 ) by A7, TARSKI:def_2; then A10: ( dom (F /. x1) = a or dom (F /. x1) = b ) by A4, A5, A1, CAT_1:5; ( dom (F /. x2) = a or dom (F /. x2) = b ) by A9, A4, A5, A1, CAT_1:5; hence Hom ((dom (F /. x1)),(dom (F /. x2))) <> {} by A3, A10; ::_thesis: verum end; A11: 1 in {0,1} by TARSKI:def_2; A12: 0 in {0,1} by TARSKI:def_2; ( dom (F /. 0) = a & dom (F /. 1) = b ) by A4, A5, A1, CAT_1:5; hence ( i1 is coretraction & i2 is coretraction ) by A4, A6, A11, Th73, A5, A12, A1; ::_thesis: verum end; theorem Th83: :: CAT_3:83 for C being Category for c being Object of C for i1, i2, h being Morphism of C st c is_a_coproduct_wrt i1,i2 & h in Hom (c,c) & h (*) i1 = i1 & h (*) i2 = i2 holds h = id c proof let C be Category; ::_thesis: for c being Object of C for i1, i2, h being Morphism of C st c is_a_coproduct_wrt i1,i2 & h in Hom (c,c) & h (*) i1 = i1 & h (*) i2 = i2 holds h = id c let c be Object of C; ::_thesis: for i1, i2, h being Morphism of C st c is_a_coproduct_wrt i1,i2 & h in Hom (c,c) & h (*) i1 = i1 & h (*) i2 = i2 holds h = id c let i1, i2, h be Morphism of C; ::_thesis: ( c is_a_coproduct_wrt i1,i2 & h in Hom (c,c) & h (*) i1 = i1 & h (*) i2 = i2 implies h = id c ) assume that A1: ( cod i1 = c & cod i2 = c ) and A2: for d being Object of C for f, g being Morphism of C st f in Hom ((dom i1),d) & g in Hom ((dom i2),d) holds ex h being Morphism of C st ( h in Hom (c,d) & ( for k being Morphism of C st k in Hom (c,d) holds ( ( k (*) i1 = f & k (*) i2 = g ) iff h = k ) ) ) and A3: ( h in Hom (c,c) & h (*) i1 = i1 & h (*) i2 = i2 ) ; :: according to CAT_3:def_18 ::_thesis: h = id c ( i1 in Hom ((dom i1),c) & i2 in Hom ((dom i2),c) ) by A1; then consider i being Morphism of C such that i in Hom (c,c) and A4: for k being Morphism of C st k in Hom (c,c) holds ( ( k (*) i1 = i1 & k (*) i2 = i2 ) iff i = k ) by A2; A5: id c in Hom (c,c) by CAT_1:27; ( (id c) (*) i1 = i1 & (id c) (*) i2 = i2 ) by A1, CAT_1:21; hence id c = i by A4, A5 .= h by A3, A4 ; ::_thesis: verum end; theorem :: CAT_3:84 for C being Category for c, d being Object of C for i1, i2 being Morphism of C for f being Morphism of c,d st c is_a_coproduct_wrt i1,i2 & dom f = c & cod f = d & f is invertible holds d is_a_coproduct_wrt f (*) i1,f (*) i2 proof let C be Category; ::_thesis: for c, d being Object of C for i1, i2 being Morphism of C for f being Morphism of c,d st c is_a_coproduct_wrt i1,i2 & dom f = c & cod f = d & f is invertible holds d is_a_coproduct_wrt f (*) i1,f (*) i2 let c, d be Object of C; ::_thesis: for i1, i2 being Morphism of C for f being Morphism of c,d st c is_a_coproduct_wrt i1,i2 & dom f = c & cod f = d & f is invertible holds d is_a_coproduct_wrt f (*) i1,f (*) i2 let i1, i2 be Morphism of C; ::_thesis: for f being Morphism of c,d st c is_a_coproduct_wrt i1,i2 & dom f = c & cod f = d & f is invertible holds d is_a_coproduct_wrt f (*) i1,f (*) i2 let f be Morphism of c,d; ::_thesis: ( c is_a_coproduct_wrt i1,i2 & dom f = c & cod f = d & f is invertible implies d is_a_coproduct_wrt f (*) i1,f (*) i2 ) assume that A1: c is_a_coproduct_wrt i1,i2 and A2: ( dom f = c & cod f = d & f is invertible ) ; ::_thesis: d is_a_coproduct_wrt f (*) i1,f (*) i2 ( cod i1 = c & cod i2 = c ) by A1, Def18; then A3: (0,1) --> (i1,i2) is Injections_family of c,{0,1} by Th65; c is_a_coproduct_wrt (0,1) --> (i1,i2) by A1, Th79; then d is_a_coproduct_wrt f * ((0,1) --> (i1,i2)) by A2, A3, Th74; then d is_a_coproduct_wrt (0,1) --> ((f (*) i1),(f (*) i2)) by Th15; hence d is_a_coproduct_wrt f (*) i1,f (*) i2 by Th79; ::_thesis: verum end; theorem :: CAT_3:85 for C being Category for c being Object of C for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i2 is initial holds dom i1,c are_isomorphic proof let C be Category; ::_thesis: for c being Object of C for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i2 is initial holds dom i1,c are_isomorphic let c be Object of C; ::_thesis: for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i2 is initial holds dom i1,c are_isomorphic let i1, i2 be Morphism of C; ::_thesis: ( c is_a_coproduct_wrt i1,i2 & dom i2 is initial implies dom i1,c are_isomorphic ) set a = dom i1; set b = dom i2; assume that A1: c is_a_coproduct_wrt i1,i2 and A2: dom i2 is initial ; ::_thesis: dom i1,c are_isomorphic set f = id (dom i1); set g = init ((dom i2),(dom i1)); ( cod (init ((dom i2),(dom i1))) = dom i1 & dom (init ((dom i2),(dom i1))) = dom i2 ) by A2, Th38; then ( id (dom i1) in Hom ((dom i1),(dom i1)) & init ((dom i2),(dom i1)) in Hom ((dom i2),(dom i1)) ) by CAT_1:27; then consider h being Morphism of C such that A3: h in Hom (c,(dom i1)) and A4: for k being Morphism of C st k in Hom (c,(dom i1)) holds ( ( k (*) i1 = id (dom i1) & k (*) i2 = init ((dom i2),(dom i1)) ) iff h = k ) by A1, Def18; A5: cod h = dom i1 by A3, CAT_1:1; A6: cod i1 = c by A1, Def18; then reconsider i = i1 as Morphism of dom i1,c by CAT_1:4; A7: dom h = c by A3, CAT_1:1; then A8: dom (i (*) h) = c by A5, CAT_1:17; A9: cod i2 = c by A1, Def18; then A10: dom ((i (*) h) (*) i2) = dom i2 by A8, CAT_1:17; A11: cod (i (*) h) = c by A6, A5, CAT_1:17; then A12: i (*) h in Hom (c,c) by A8; cod ((i (*) h) (*) i2) = c by A9, A11, A8, CAT_1:17; then A13: (i (*) h) (*) i2 = init ((dom i2),c) by A2, A10, Th39 .= i2 by A2, A9, Th39 ; A14: Hom ((dom i1),c) <> {} by A6, CAT_1:2; take i ; :: according to CAT_1:def_20 ::_thesis: i is invertible thus ( Hom ((dom i1),c) <> {} & Hom (c,(dom i1)) <> {} ) by A3, A6, CAT_1:2; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of c, dom i1 st ( i * b1 = id c & b1 * i = id (dom i1) ) reconsider h = h as Morphism of c, dom i1 by A3, CAT_1:def_5; take h ; ::_thesis: ( i * h = id c & h * i = id (dom i1) ) A15: (i (*) h) (*) i1 = i (*) (h (*) i1) by A6, A5, A7, CAT_1:18 .= i (*) (id (dom i)) by A3, A4 .= i by CAT_1:22 ; thus i * h = i (*) h by A3, A14, CAT_1:def_13 .= id c by A1, A13, A12, Th83, A15 ; ::_thesis: h * i = id (dom i1) thus id (dom i1) = h (*) i by A3, A4 .= h * i by A14, A3, CAT_1:def_13 ; ::_thesis: verum end; theorem :: CAT_3:86 for C being Category for c being Object of C for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i1 is initial holds dom i2,c are_isomorphic proof let C be Category; ::_thesis: for c being Object of C for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i1 is initial holds dom i2,c are_isomorphic let c be Object of C; ::_thesis: for i1, i2 being Morphism of C st c is_a_coproduct_wrt i1,i2 & dom i1 is initial holds dom i2,c are_isomorphic let i1, i2 be Morphism of C; ::_thesis: ( c is_a_coproduct_wrt i1,i2 & dom i1 is initial implies dom i2,c are_isomorphic ) set a = dom i1; set b = dom i2; assume that A1: c is_a_coproduct_wrt i1,i2 and A2: dom i1 is initial ; ::_thesis: dom i2,c are_isomorphic set f = id (dom i2); set g = init ((dom i1),(dom i2)); ( cod (init ((dom i1),(dom i2))) = dom i2 & dom (init ((dom i1),(dom i2))) = dom i1 ) by A2, Th38; then ( id (dom i2) in Hom ((dom i2),(dom i2)) & init ((dom i1),(dom i2)) in Hom ((dom i1),(dom i2)) ) by CAT_1:27; then consider h being Morphism of C such that A3: h in Hom (c,(dom i2)) and A4: for k being Morphism of C st k in Hom (c,(dom i2)) holds ( ( k (*) i1 = init ((dom i1),(dom i2)) & k (*) i2 = id (dom i2) ) iff h = k ) by A1, Def18; A5: cod h = dom i2 by A3, CAT_1:1; A6: cod i2 = c by A1, Def18; then reconsider i = i2 as Morphism of dom i2,c by CAT_1:4; A7: dom h = c by A3, CAT_1:1; then A8: dom (i (*) h) = c by A5, CAT_1:17; A9: cod i1 = c by A1, Def18; then A10: dom ((i (*) h) (*) i1) = dom i1 by A8, CAT_1:17; A11: cod (i (*) h) = c by A6, A5, CAT_1:17; then A12: i (*) h in Hom (c,c) by A8; cod ((i (*) h) (*) i1) = c by A9, A11, A8, CAT_1:17; then A13: (i (*) h) (*) i1 = init ((dom i1),c) by A2, A10, Th39 .= i1 by A2, A9, Th39 ; A14: Hom ((dom i2),c) <> {} by A6, CAT_1:2; take i ; :: according to CAT_1:def_20 ::_thesis: i is invertible thus ( Hom ((dom i2),c) <> {} & Hom (c,(dom i2)) <> {} ) by A6, A3, CAT_1:2; :: according to CAT_1:def_16 ::_thesis: ex b1 being Morphism of c, dom i2 st ( i * b1 = id c & b1 * i = id (dom i2) ) reconsider h = h as Morphism of c, dom i2 by A3, CAT_1:def_5; take h ; ::_thesis: ( i * h = id c & h * i = id (dom i2) ) A15: (i (*) h) (*) i2 = i (*) (h (*) i2) by A6, A5, A7, CAT_1:18 .= i (*) (id (dom i)) by A3, A4 .= i by CAT_1:22 ; thus i * h = i (*) h by A3, A14, CAT_1:def_13 .= id c by A1, A13, A12, Th83, A15 ; ::_thesis: h * i = id (dom i2) thus id (dom i2) = h (*) i by A3, A4 .= h * i by A3, A14, CAT_1:def_13 ; ::_thesis: verum end;