:: YELLOW18 semantic presentation begin scheme :: YELLOW18:sch 1 AltCatStrLambda{ F1() -> non empty set , F2( set , set ) -> set , F3( set , set , set , set , set ) -> set } : ex C being non empty transitive strict AltCatStr st ( the carrier of C = F1() & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) provided A1: for a, b, c being Element of F1() for f, g being set st f in F2(a,b) & g in F2(b,c) holds F3(a,b,c,f,g) in F2(a,c) proof consider B being ManySortedSet of [:F1(),F1():] such that A2: for a, b being Element of F1() holds B . (a,b) = F2(a,b) from ALTCAT_1:sch_2(); defpred S1[ set , set ] means ex a, b, c being Element of F1() ex F being Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) st ( \$1 = [a,b,c] & \$2 = F & ( for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) ) ); A3: for i being set st i in [:F1(),F1(),F1():] holds ex j being set st S1[i,j] proof let i be set ; ::_thesis: ( i in [:F1(),F1(),F1():] implies ex j being set st S1[i,j] ) assume i in [:F1(),F1(),F1():] ; ::_thesis: ex j being set st S1[i,j] then consider a, b, c being set such that A4: a in F1() and A5: b in F1() and A6: c in F1() and A7: i = [a,b,c] by MCART_1:68; reconsider a = a, b = b, c = c as Element of F1() by A4, A5, A6; defpred S2[ set , set ] means ex f, g being set st ( \$1 = [g,f] & \$2 = F3(a,b,c,f,g) ); A8: for x being set st x in [:F2(b,c),F2(a,b):] holds ex y being set st ( y in F2(a,c) & S2[x,y] ) proof let x be set ; ::_thesis: ( x in [:F2(b,c),F2(a,b):] implies ex y being set st ( y in F2(a,c) & S2[x,y] ) ) assume x in [:F2(b,c),F2(a,b):] ; ::_thesis: ex y being set st ( y in F2(a,c) & S2[x,y] ) then consider x1, x2 being set such that A9: x1 in F2(b,c) and A10: x2 in F2(a,b) and A11: x = [x1,x2] by ZFMISC_1:def_2; take y = F3(a,b,c,x2,x1); ::_thesis: ( y in F2(a,c) & S2[x,y] ) thus y in F2(a,c) by A1, A9, A10; ::_thesis: S2[x,y] thus S2[x,y] by A11; ::_thesis: verum end; consider F being Function such that A12: ( dom F = [:F2(b,c),F2(a,b):] & rng F c= F2(a,c) ) and A13: for x being set st x in [:F2(b,c),F2(a,b):] holds S2[x,F . x] from FUNCT_1:sch_5(A8); A14: B . (a,b) = F2(a,b) by A2; A15: B . (b,c) = F2(b,c) by A2; A16: B . (a,c) = F2(a,c) by A2; A17: {|B,B|} . (a,b,c) = [:F2(b,c),F2(a,b):] by A14, A15, ALTCAT_1:def_4; {|B|} . (a,b,c) = F2(a,c) by A16, ALTCAT_1:def_3; then reconsider F = F as Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) by A12, A17, FUNCT_2:2; take j = F; ::_thesis: S1[i,j] take a ; ::_thesis: ex b, c being Element of F1() ex F being Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) st ( i = [a,b,c] & j = F & ( for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) ) ) take b ; ::_thesis: ex c being Element of F1() ex F being Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) st ( i = [a,b,c] & j = F & ( for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) ) ) take c ; ::_thesis: ex F being Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) st ( i = [a,b,c] & j = F & ( for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) ) ) take F ; ::_thesis: ( i = [a,b,c] & j = F & ( for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) ) ) thus ( i = [a,b,c] & j = F ) by A7; ::_thesis: for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) let f, g be set ; ::_thesis: ( f in F2(a,b) & g in F2(b,c) implies F . [g,f] = F3(a,b,c,f,g) ) assume that A18: f in F2(a,b) and A19: g in F2(b,c) ; ::_thesis: F . [g,f] = F3(a,b,c,f,g) [g,f] in [:F2(b,c),F2(a,b):] by A18, A19, ZFMISC_1:87; then consider f9, g9 being set such that A20: [g,f] = [g9,f9] and A21: F . [g,f] = F3(a,b,c,f9,g9) by A13; g = g9 by A20, XTUPLE_0:1; hence F . [g,f] = F3(a,b,c,f,g) by A20, A21, XTUPLE_0:1; ::_thesis: verum end; consider C being Function such that A22: dom C = [:F1(),F1(),F1():] and A23: for i being set st i in [:F1(),F1(),F1():] holds S1[i,C . i] from CLASSES1:sch_1(A3); reconsider C = C as ManySortedSet of [:F1(),F1(),F1():] by A22, PARTFUN1:def_2, RELAT_1:def_18; now__::_thesis:_for_i_being_set_st_i_in_[:F1(),F1(),F1():]_holds_ C_._i_is_Function_of_({|B,B|}_._i),({|B|}_._i) let i be set ; ::_thesis: ( i in [:F1(),F1(),F1():] implies C . i is Function of ({|B,B|} . i),({|B|} . i) ) assume i in [:F1(),F1(),F1():] ; ::_thesis: C . i is Function of ({|B,B|} . i),({|B|} . i) then consider a, b, c being Element of F1(), F being Function of ({|B,B|} . (a,b,c)),({|B|} . (a,b,c)) such that A24: i = [a,b,c] and A25: C . i = F and for f, g being set st f in F2(a,b) & g in F2(b,c) holds F . [g,f] = F3(a,b,c,f,g) by A23; A26: {|B|} . (a,b,c) = {|B|} . i by A24, MULTOP_1:def_1; {|B,B|} . (a,b,c) = {|B,B|} . i by A24, MULTOP_1:def_1; hence C . i is Function of ({|B,B|} . i),({|B|} . i) by A25, A26; ::_thesis: verum end; then reconsider C = C as ManySortedFunction of {|B,B|},{|B|} by PBOOLE:def_15; set alt = AltCatStr(# F1(),B,C #); AltCatStr(# F1(),B,C #) is transitive proof let o1, o2, o3 be object of AltCatStr(# F1(),B,C #); :: according to ALTCAT_1:def_2 ::_thesis: ( <^o1,o2^> = {} or <^o2,o3^> = {} or not <^o1,o3^> = {} ) reconsider a = o1, b = o2, c = o3 as Element of F1() ; set f = the Element of <^o1,o2^>; set g = the Element of <^o2,o3^>; assume that A27: <^o1,o2^> <> {} and A28: <^o2,o3^> <> {} ; ::_thesis: not <^o1,o3^> = {} A29: the Element of <^o1,o2^> in <^o1,o2^> by A27; A30: the Element of <^o2,o3^> in <^o2,o3^> by A28; A31: the Element of <^o1,o2^> in F2(a,b) by A2, A29; the Element of <^o2,o3^> in F2(b,c) by A2, A30; then F3(a,b,c, the Element of <^o1,o2^>, the Element of <^o2,o3^>) in F2(a,c) by A1, A31; hence not <^o1,o3^> = {} by A2; ::_thesis: verum end; then reconsider alt = AltCatStr(# F1(),B,C #) as non empty transitive strict AltCatStr ; take alt ; ::_thesis: ( the carrier of alt = F1() & ( for a, b being object of alt holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of alt st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) thus the carrier of alt = F1() ; ::_thesis: ( ( for a, b being object of alt holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of alt st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) thus for a, b being object of alt holds <^a,b^> = F2(a,b) by A2; ::_thesis: for a, b, c being object of alt st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) let a, b, c be object of alt; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) assume that A32: <^a,b^> <> {} and A33: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) [a,b,c] in [:F1(),F1(),F1():] by MCART_1:69; then consider a9, b9, c9 being Element of F1(), F being Function of ({|B,B|} . (a9,b9,c9)),({|B|} . (a9,b9,c9)) such that A34: [a,b,c] = [a9,b9,c9] and A35: C . [a,b,c] = F and A36: for f, g being set st f in F2(a9,b9) & g in F2(b9,c9) holds F . [g,f] = F3(a9,b9,c9,f,g) by A23; A37: a = a9 by A34, XTUPLE_0:3; A38: b = b9 by A34, XTUPLE_0:3; A39: c = c9 by A34, XTUPLE_0:3; let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) let g be Morphism of b,c; ::_thesis: g * f = F3(a,b,c,f,g) A40: <^a,b^> = F2(a,b) by A2; <^b,c^> = F2(b,c) by A2; then A41: F . [g,f] = F3(a,b,c,f,g) by A32, A33, A36, A37, A38, A39, A40; thus g * f = ( the Comp of alt . (a,b,c)) . (g,f) by A32, A33, ALTCAT_1:def_8 .= F3(a,b,c,f,g) by A35, A41, MULTOP_1:def_1 ; ::_thesis: verum end; scheme :: YELLOW18:sch 2 CatAssocSch{ F1() -> non empty transitive AltCatStr , F2( set , set , set , set , set ) -> set } : F1() is associative provided A1: for a, b, c being object of F1() st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F2(a,b,c,f,g) and A2: for a, b, c, d being object of F1() for f, g, h being set st f in <^a,b^> & g in <^b,c^> & h in <^c,d^> holds F2(a,c,d,F2(a,b,c,f,g),h) = F2(a,b,d,f,F2(b,c,d,g,h)) proof let i, j, k, l be Element of F1(); :: according to ALTCAT_1:def_5,ALTCAT_1:def_15 ::_thesis: for b1, b2, b3 being set holds ( not b1 in the Arrows of F1() . (i,j) or not b2 in the Arrows of F1() . (j,k) or not b3 in the Arrows of F1() . (k,l) or ( the Comp of F1() . (i,k,l)) . (b3,(( the Comp of F1() . (i,j,k)) . (b2,b1))) = ( the Comp of F1() . (i,j,l)) . ((( the Comp of F1() . (j,k,l)) . (b3,b2)),b1) ) set alt = F1(); set IT = the Comp of F1(); set B = the Arrows of F1(); reconsider i9 = i, j9 = j, k9 = k, l9 = l as object of F1() ; let f, g, h be set ; ::_thesis: ( not f in the Arrows of F1() . (i,j) or not g in the Arrows of F1() . (j,k) or not h in the Arrows of F1() . (k,l) or ( the Comp of F1() . (i,k,l)) . (h,(( the Comp of F1() . (i,j,k)) . (g,f))) = ( the Comp of F1() . (i,j,l)) . ((( the Comp of F1() . (j,k,l)) . (h,g)),f) ) assume that A3: f in the Arrows of F1() . (i,j) and A4: g in the Arrows of F1() . (j,k) and A5: h in the Arrows of F1() . (k,l) ; ::_thesis: ( the Comp of F1() . (i,k,l)) . (h,(( the Comp of F1() . (i,j,k)) . (g,f))) = ( the Comp of F1() . (i,j,l)) . ((( the Comp of F1() . (j,k,l)) . (h,g)),f) A6: the Arrows of F1() . (i,j) = <^i9,j9^> ; reconsider f9 = f as Morphism of i9,j9 by A3; A7: the Arrows of F1() . (j,k) = <^j9,k9^> ; reconsider g9 = g as Morphism of j9,k9 by A4; A8: the Arrows of F1() . (k,l) = <^k9,l9^> ; reconsider h9 = h as Morphism of k9,l9 by A5; A9: <^i9,k9^> <> {} by A3, A4, A6, A7, ALTCAT_1:def_2; A10: <^j9,l9^> <> {} by A4, A5, A7, A8, ALTCAT_1:def_2; thus ( the Comp of F1() . (i,k,l)) . (h,(( the Comp of F1() . (i,j,k)) . (g,f))) = ( the Comp of F1() . (i,k,l)) . (h,(g9 * f9)) by A3, A4, ALTCAT_1:def_8 .= h9 * (g9 * f9) by A5, A9, ALTCAT_1:def_8 .= F2(i,k,l,(g9 * f9),h9) by A1, A5, A9 .= F2(i,k,l,F2(i,j,k,f,g),h) by A1, A3, A4 .= F2(i9,j9,l9,f,F2(j9,k9,l9,g,h)) by A2, A3, A4, A5, A6, A7, A8 .= F2(i9,j9,l9,f,(h9 * g9)) by A1, A4, A5 .= (h9 * g9) * f9 by A1, A3, A10 .= ( the Comp of F1() . (i,j,l)) . ((h9 * g9),f) by A3, A10, ALTCAT_1:def_8 .= ( the Comp of F1() . (i,j,l)) . ((( the Comp of F1() . (j,k,l)) . (h,g)),f) by A4, A5, ALTCAT_1:def_8 ; ::_thesis: verum end; scheme :: YELLOW18:sch 3 CatUnitsSch{ F1() -> non empty transitive AltCatStr , F2( set , set , set , set , set ) -> set } : F1() is with_units provided A1: for a, b, c being object of F1() st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F2(a,b,c,f,g) and A2: for a being object of F1() ex f being set st ( f in <^a,a^> & ( for b being object of F1() for g being set st g in <^a,b^> holds F2(a,a,b,f,g) = g ) ) and A3: for a being object of F1() ex f being set st ( f in <^a,a^> & ( for b being object of F1() for g being set st g in <^b,a^> holds F2(b,a,a,g,f) = g ) ) proof set alt = F1(); set IT = the Comp of F1(); set I = the carrier of F1(); set G = the Arrows of F1(); hereby :: according to ALTCAT_1:def_7,ALTCAT_1:def_16 ::_thesis: the Comp of F1() is with_right_units let j be Element of the carrier of F1(); ::_thesis: ex f being set st ( f in the Arrows of F1() . (j,j) & ( for i being Element of the carrier of F1() for g being set st g in the Arrows of F1() . (i,j) holds ( the Comp of F1() . (i,j,j)) . (f,g) = g ) ) reconsider j9 = j as object of F1() ; consider f being set such that A4: f in <^j9,j9^> and A5: for b being Element of F1() for g being set st g in <^b,j9^> holds F2(b,j9,j9,g,f) = g by A3; take f = f; ::_thesis: ( f in the Arrows of F1() . (j,j) & ( for i being Element of the carrier of F1() for g being set st g in the Arrows of F1() . (i,j) holds ( the Comp of F1() . (i,j,j)) . (f,g) = g ) ) thus f in the Arrows of F1() . (j,j) by A4; ::_thesis: for i being Element of the carrier of F1() for g being set st g in the Arrows of F1() . (i,j) holds ( the Comp of F1() . (i,j,j)) . (f,g) = g let i be Element of the carrier of F1(); ::_thesis: for g being set st g in the Arrows of F1() . (i,j) holds ( the Comp of F1() . (i,j,j)) . (f,g) = g let g be set ; ::_thesis: ( g in the Arrows of F1() . (i,j) implies ( the Comp of F1() . (i,j,j)) . (f,g) = g ) assume A6: g in the Arrows of F1() . (i,j) ; ::_thesis: ( the Comp of F1() . (i,j,j)) . (f,g) = g reconsider i9 = i as object of F1() ; the Arrows of F1() . (i,j) = <^i9,j9^> ; then A7: F2(i,j,j,g,f) = g by A5, A6; reconsider f9 = f as Morphism of j9,j9 by A4; reconsider g9 = g as Morphism of i9,j9 by A6; thus ( the Comp of F1() . (i,j,j)) . (f,g) = f9 * g9 by A4, A6, ALTCAT_1:def_8 .= g by A1, A4, A6, A7 ; ::_thesis: verum end; let i be Element of the carrier of F1(); :: according to ALTCAT_1:def_6 ::_thesis: ex b1 being set st ( b1 in the Arrows of F1() . (i,i) & ( for b2 being Element of the carrier of F1() for b3 being set holds ( not b3 in the Arrows of F1() . (i,b2) or ( the Comp of F1() . (i,i,b2)) . (b3,b1) = b3 ) ) ) reconsider i9 = i as object of F1() ; consider e being set such that A8: e in <^i9,i9^> and A9: for b being Element of F1() for g being set st g in <^i9,b^> holds F2(i,i,b,e,g) = g by A2; take e ; ::_thesis: ( e in the Arrows of F1() . (i,i) & ( for b1 being Element of the carrier of F1() for b2 being set holds ( not b2 in the Arrows of F1() . (i,b1) or ( the Comp of F1() . (i,i,b1)) . (b2,e) = b2 ) ) ) thus e in the Arrows of F1() . (i,i) by A8; ::_thesis: for b1 being Element of the carrier of F1() for b2 being set holds ( not b2 in the Arrows of F1() . (i,b1) or ( the Comp of F1() . (i,i,b1)) . (b2,e) = b2 ) reconsider e9 = e as Morphism of i9,i9 by A8; let j be Element of the carrier of F1(); ::_thesis: for b1 being set holds ( not b1 in the Arrows of F1() . (i,j) or ( the Comp of F1() . (i,i,j)) . (b1,e) = b1 ) let f be set ; ::_thesis: ( not f in the Arrows of F1() . (i,j) or ( the Comp of F1() . (i,i,j)) . (f,e) = f ) assume A10: f in the Arrows of F1() . (i,j) ; ::_thesis: ( the Comp of F1() . (i,i,j)) . (f,e) = f reconsider j9 = j as object of F1() ; the Arrows of F1() . (i,j) = <^i9,j9^> ; then A11: F2(i,i,j,e,f) = f by A9, A10; reconsider f9 = f as Morphism of i9,j9 by A10; thus ( the Comp of F1() . (i,i,j)) . (f,e) = f9 * e9 by A8, A10, ALTCAT_1:def_8 .= f by A1, A8, A10, A11 ; ::_thesis: verum end; scheme :: YELLOW18:sch 4 CategoryLambda{ F1() -> non empty set , F2( set , set ) -> set , F3( set , set , set , set , set ) -> set } : ex C being strict category st ( the carrier of C = F1() & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) provided A1: for a, b, c being Element of F1() for f, g being set st f in F2(a,b) & g in F2(b,c) holds F3(a,b,c,f,g) in F2(a,c) and A2: for a, b, c, d being Element of F1() for f, g, h being set st f in F2(a,b) & g in F2(b,c) & h in F2(c,d) holds F3(a,c,d,F3(a,b,c,f,g),h) = F3(a,b,d,f,F3(b,c,d,g,h)) and A3: for a being Element of F1() ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(a,b) holds F3(a,a,b,f,g) = g ) ) and A4: for a being Element of F1() ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(b,a) holds F3(b,a,a,g,f) = g ) ) proof deffunc H1( set , set , set , set , set ) -> set = F3(\$1,\$2,\$3,\$4,\$5); A5: for a, b, c being Element of F1() for f, g being set st f in F2(a,b) & g in F2(b,c) holds H1(a,b,c,f,g) in F2(a,c) by A1; consider C being non empty transitive strict AltCatStr such that A6: the carrier of C = F1() and A7: for a, b being object of C holds <^a,b^> = F2(a,b) and A8: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) from YELLOW18:sch_1(A5); A9: for a, b, c, d being object of C for f, g, h being set st f in <^a,b^> & g in <^b,c^> & h in <^c,d^> holds H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) proof let a, b, c, d be object of C; ::_thesis: for f, g, h being set st f in <^a,b^> & g in <^b,c^> & h in <^c,d^> holds H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) let f, g, h be set ; ::_thesis: ( f in <^a,b^> & g in <^b,c^> & h in <^c,d^> implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ) assume that A10: f in <^a,b^> and A11: g in <^b,c^> and A12: h in <^c,d^> ; ::_thesis: H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) A13: <^a,b^> = F2(a,b) by A7; A14: <^b,c^> = F2(b,c) by A7; <^c,d^> = F2(c,d) by A7; hence H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) by A2, A6, A10, A11, A12, A13, A14; ::_thesis: verum end; A15: for a being object of C ex f being set st ( f in <^a,a^> & ( for b being object of C for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g ) ) proof let a be object of C; ::_thesis: ex f being set st ( f in <^a,a^> & ( for b being object of C for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g ) ) consider f being set such that A16: f in F2(a,a) and A17: for b being Element of F1() for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g by A3, A6; take f ; ::_thesis: ( f in <^a,a^> & ( for b being object of C for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g ) ) thus f in <^a,a^> by A7, A16; ::_thesis: for b being object of C for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g let b be object of C; ::_thesis: for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g <^a,b^> = F2(a,b) by A7; hence for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g by A6, A17; ::_thesis: verum end; A18: for a being object of C ex f being set st ( f in <^a,a^> & ( for b being object of C for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g ) ) proof let a be object of C; ::_thesis: ex f being set st ( f in <^a,a^> & ( for b being object of C for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g ) ) consider f being set such that A19: f in F2(a,a) and A20: for b being Element of F1() for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g by A4, A6; take f ; ::_thesis: ( f in <^a,a^> & ( for b being object of C for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g ) ) thus f in <^a,a^> by A7, A19; ::_thesis: for b being object of C for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g let b be object of C; ::_thesis: for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g <^b,a^> = F2(b,a) by A7; hence for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g by A6, A20; ::_thesis: verum end; A21: C is associative from YELLOW18:sch_2(A8, A9); C is with_units from YELLOW18:sch_3(A8, A15, A18); hence ex C being strict category st ( the carrier of C = F1() & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) by A6, A7, A8, A21; ::_thesis: verum end; scheme :: YELLOW18:sch 5 CategoryLambdaUniq{ F1() -> non empty set , F2( set , set ) -> set , F3( set , set , set , set , set ) -> set } : for C1, C2 being non empty transitive AltCatStr st the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C2 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) proof let C1, C2 be non empty transitive AltCatStr ; ::_thesis: ( the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C2 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) assume that A1: the carrier of C1 = F1() and A2: for a, b being object of C1 holds <^a,b^> = F2(a,b) and A3: for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) and A4: the carrier of C2 = F1() and A5: for a, b being object of C2 holds <^a,b^> = F2(a,b) and A6: for a, b, c being object of C2 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ; ::_thesis: AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) A7: now__::_thesis:_for_i_being_set_st_i_in_[:F1(),F1():]_holds_ the_Arrows_of_C1_._i_=_the_Arrows_of_C2_._i let i be set ; ::_thesis: ( i in [:F1(),F1():] implies the Arrows of C1 . i = the Arrows of C2 . i ) assume i in [:F1(),F1():] ; ::_thesis: the Arrows of C1 . i = the Arrows of C2 . i then consider a, b being set such that A8: a in F1() and A9: b in F1() and A10: i = [a,b] by ZFMISC_1:def_2; reconsider a1 = a, b1 = b as object of C1 by A1, A8, A9; reconsider a2 = a, b2 = b as object of C2 by A4, A8, A9; thus the Arrows of C1 . i = <^a1,b1^> by A10 .= F2(a1,b1) by A2 .= <^a2,b2^> by A5 .= the Arrows of C2 . i by A10 ; ::_thesis: verum end; then A11: the Arrows of C1 = the Arrows of C2 by A1, A4, PBOOLE:3; now__::_thesis:_for_i_being_set_st_i_in_[:F1(),F1(),F1():]_holds_ the_Comp_of_C1_._i_=_the_Comp_of_C2_._i let i be set ; ::_thesis: ( i in [:F1(),F1(),F1():] implies the Comp of C1 . i = the Comp of C2 . i ) assume i in [:F1(),F1(),F1():] ; ::_thesis: the Comp of C1 . i = the Comp of C2 . i then consider a, b, c being set such that A12: a in F1() and A13: b in F1() and A14: c in F1() and A15: i = [a,b,c] by MCART_1:68; reconsider a1 = a, b1 = b, c1 = c as object of C1 by A1, A12, A13, A14; reconsider a2 = a, b2 = b, c2 = c as object of C2 by A4, A12, A13, A14; A16: the Comp of C1 . i = the Comp of C1 . (a1,b1,c1) by A15, MULTOP_1:def_1; A17: the Comp of C2 . i = the Comp of C2 . (a2,b2,c2) by A15, MULTOP_1:def_1; A18: now__::_thesis:_(_[:<^b1,c1^>,<^a1,b1^>:]_<>_{}_implies_<^a1,c1^>_<>_{}_) assume A19: [:<^b1,c1^>,<^a1,b1^>:] <> {} ; ::_thesis: <^a1,c1^> <> {} then A20: <^b1,c1^> <> {} by ZFMISC_1:90; <^a1,b1^> <> {} by A19, ZFMISC_1:90; hence <^a1,c1^> <> {} by A20, ALTCAT_1:def_2; ::_thesis: verum end; then A21: dom ( the Comp of C1 . (a1,b1,c1)) = [:<^b1,c1^>,<^a1,b1^>:] by FUNCT_2:def_1; A22: dom ( the Comp of C2 . (a2,b2,c2)) = [:<^b1,c1^>,<^a1,b1^>:] by A11, A18, FUNCT_2:def_1; now__::_thesis:_for_j_being_set_st_j_in_[:<^b1,c1^>,<^a1,b1^>:]_holds_ (_the_Comp_of_C1_._(a1,b1,c1))_._j_=_(_the_Comp_of_C2_._(a2,b2,c2))_._j let j be set ; ::_thesis: ( j in [:<^b1,c1^>,<^a1,b1^>:] implies ( the Comp of C1 . (a1,b1,c1)) . j = ( the Comp of C2 . (a2,b2,c2)) . j ) assume j in [:<^b1,c1^>,<^a1,b1^>:] ; ::_thesis: ( the Comp of C1 . (a1,b1,c1)) . j = ( the Comp of C2 . (a2,b2,c2)) . j then consider j1, j2 being set such that A23: j1 in <^b1,c1^> and A24: j2 in <^a1,b1^> and A25: j = [j1,j2] by ZFMISC_1:def_2; reconsider j1 = j1 as Morphism of b1,c1 by A23; reconsider j2 = j2 as Morphism of a1,b1 by A24; reconsider f1 = j1 as Morphism of b2,c2 by A1, A4, A7, PBOOLE:3; reconsider f2 = j2 as Morphism of a2,b2 by A1, A4, A7, PBOOLE:3; thus ( the Comp of C1 . (a1,b1,c1)) . j = ( the Comp of C1 . (a1,b1,c1)) . (j1,j2) by A25 .= j1 * j2 by A23, A24, ALTCAT_1:def_8 .= F3(a1,b1,c1,j2,j1) by A3, A23, A24 .= f1 * f2 by A6, A11, A23, A24 .= ( the Comp of C2 . (a2,b2,c2)) . (f1,f2) by A11, A23, A24, ALTCAT_1:def_8 .= ( the Comp of C2 . (a2,b2,c2)) . j by A25 ; ::_thesis: verum end; hence the Comp of C1 . i = the Comp of C2 . i by A16, A17, A21, A22, FUNCT_1:2; ::_thesis: verum end; hence AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) by A1, A4, A11, PBOOLE:3; ::_thesis: verum end; scheme :: YELLOW18:sch 6 CategoryQuasiLambda{ F1() -> non empty set , P1[ set , set , set ], F2( set , set ) -> set , F3( set , set , set , set , set ) -> set } : ex C being strict category st ( the carrier of C = F1() & ( for a, b being object of C for f being set holds ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) provided A1: for a, b, c being Element of F1() for f, g being set st f in F2(a,b) & P1[a,b,f] & g in F2(b,c) & P1[b,c,g] holds ( F3(a,b,c,f,g) in F2(a,c) & P1[a,c,F3(a,b,c,f,g)] ) and A2: for a, b, c, d being Element of F1() for f, g, h being set st f in F2(a,b) & P1[a,b,f] & g in F2(b,c) & P1[b,c,g] & h in F2(c,d) & P1[c,d,h] holds F3(a,c,d,F3(a,b,c,f,g),h) = F3(a,b,d,f,F3(b,c,d,g,h)) and A3: for a being Element of F1() ex f being set st ( f in F2(a,a) & P1[a,a,f] & ( for b being Element of F1() for g being set st g in F2(a,b) & P1[a,b,g] holds F3(a,a,b,f,g) = g ) ) and A4: for a being Element of F1() ex f being set st ( f in F2(a,a) & P1[a,a,f] & ( for b being Element of F1() for g being set st g in F2(b,a) & P1[b,a,g] holds F3(b,a,a,g,f) = g ) ) proof deffunc H1( set ) -> set = F2((\$1 `1),(\$1 `2)); defpred S1[ set , set ] means P1[\$1 `1 ,\$1 `2 ,\$2]; deffunc H2( set , set , set , set , set ) -> set = F3(\$1,\$2,\$3,\$4,\$5); consider P being Function such that dom P = [:F1(),F1():] and A5: for i being set st i in [:F1(),F1():] holds for x being set holds ( x in P . i iff ( x in H1(i) & S1[i,x] ) ) from CARD_3:sch_2(); deffunc H3( set , set ) -> set = P . (\$1,\$2); A6: now__::_thesis:_for_a,_b_being_Element_of_F1() for_x_being_set_holds_ (_x_in_P_._(a,b)_iff_(_x_in_F2(a,b)_&_P1[a,b,x]_)_) let a, b be Element of F1(); ::_thesis: for x being set holds ( x in P . (a,b) iff ( x in F2(a,b) & P1[a,b,x] ) ) let x be set ; ::_thesis: ( x in P . (a,b) iff ( x in F2(a,b) & P1[a,b,x] ) ) A7: [a,b] `1 = a ; A8: [a,b] `2 = b ; [a,b] in [:F1(),F1():] by ZFMISC_1:def_2; hence ( x in P . (a,b) iff ( x in F2(a,b) & P1[a,b,x] ) ) by A5, A7, A8; ::_thesis: verum end; A9: now__::_thesis:_for_a,_b,_c_being_Element_of_F1() for_f,_g_being_set_st_f_in_H3(a,b)_&_g_in_H3(b,c)_holds_ H2(a,b,c,f,g)_in_H3(a,c) let a, b, c be Element of F1(); ::_thesis: for f, g being set st f in H3(a,b) & g in H3(b,c) holds H2(a,b,c,f,g) in H3(a,c) let f, g be set ; ::_thesis: ( f in H3(a,b) & g in H3(b,c) implies H2(a,b,c,f,g) in H3(a,c) ) assume that A10: f in H3(a,b) and A11: g in H3(b,c) ; ::_thesis: H2(a,b,c,f,g) in H3(a,c) A12: f in F2(a,b) by A6, A10; A13: P1[a,b,f] by A6, A10; A14: g in F2(b,c) by A6, A11; A15: P1[b,c,g] by A6, A11; then A16: H2(a,b,c,f,g) in F2(a,c) by A1, A12, A13, A14; P1[a,c,H2(a,b,c,f,g)] by A1, A12, A13, A14, A15; hence H2(a,b,c,f,g) in H3(a,c) by A6, A16; ::_thesis: verum end; A17: now__::_thesis:_for_a,_b,_c,_d_being_Element_of_F1() for_f,_g,_h_being_set_st_f_in_H3(a,b)_&_g_in_H3(b,c)_&_h_in_H3(c,d)_holds_ H2(a,c,d,H2(a,b,c,f,g),h)_=_H2(a,b,d,f,H2(b,c,d,g,h)) let a, b, c, d be Element of F1(); ::_thesis: for f, g, h being set st f in H3(a,b) & g in H3(b,c) & h in H3(c,d) holds H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) let f, g, h be set ; ::_thesis: ( f in H3(a,b) & g in H3(b,c) & h in H3(c,d) implies H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) ) assume that A18: f in H3(a,b) and A19: g in H3(b,c) and A20: h in H3(c,d) ; ::_thesis: H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) A21: f in F2(a,b) by A6, A18; A22: P1[a,b,f] by A6, A18; A23: g in F2(b,c) by A6, A19; A24: P1[b,c,g] by A6, A19; A25: h in F2(c,d) by A6, A20; P1[c,d,h] by A6, A20; hence H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) by A2, A21, A22, A23, A24, A25; ::_thesis: verum end; A26: now__::_thesis:_for_a_being_Element_of_F1()_ex_f_being_set_st_ (_f_in_H3(a,a)_&_(_for_b_being_Element_of_F1() for_g_being_set_st_g_in_H3(a,b)_holds_ H2(a,a,b,f,g)_=_g_)_) let a be Element of F1(); ::_thesis: ex f being set st ( f in H3(a,a) & ( for b being Element of F1() for g being set st g in H3(a,b) holds H2(a,a,b,f,g) = g ) ) consider f being set such that A27: f in F2(a,a) and A28: P1[a,a,f] and A29: for b being Element of F1() for g being set st g in F2(a,b) & P1[a,b,g] holds H2(a,a,b,f,g) = g by A3; take f = f; ::_thesis: ( f in H3(a,a) & ( for b being Element of F1() for g being set st g in H3(a,b) holds H2(a,a,b,f,g) = g ) ) thus f in H3(a,a) by A6, A27, A28; ::_thesis: for b being Element of F1() for g being set st g in H3(a,b) holds H2(a,a,b,f,g) = g let b be Element of F1(); ::_thesis: for g being set st g in H3(a,b) holds H2(a,a,b,f,g) = g let g be set ; ::_thesis: ( g in H3(a,b) implies H2(a,a,b,f,g) = g ) assume A30: g in H3(a,b) ; ::_thesis: H2(a,a,b,f,g) = g then A31: g in F2(a,b) by A6; P1[a,b,g] by A6, A30; hence H2(a,a,b,f,g) = g by A29, A31; ::_thesis: verum end; A32: now__::_thesis:_for_a_being_Element_of_F1()_ex_f_being_set_st_ (_f_in_H3(a,a)_&_(_for_b_being_Element_of_F1() for_g_being_set_st_g_in_H3(b,a)_holds_ H2(b,a,a,g,f)_=_g_)_) let a be Element of F1(); ::_thesis: ex f being set st ( f in H3(a,a) & ( for b being Element of F1() for g being set st g in H3(b,a) holds H2(b,a,a,g,f) = g ) ) consider f being set such that A33: f in F2(a,a) and A34: P1[a,a,f] and A35: for b being Element of F1() for g being set st g in F2(b,a) & P1[b,a,g] holds H2(b,a,a,g,f) = g by A4; take f = f; ::_thesis: ( f in H3(a,a) & ( for b being Element of F1() for g being set st g in H3(b,a) holds H2(b,a,a,g,f) = g ) ) thus f in H3(a,a) by A6, A33, A34; ::_thesis: for b being Element of F1() for g being set st g in H3(b,a) holds H2(b,a,a,g,f) = g let b be Element of F1(); ::_thesis: for g being set st g in H3(b,a) holds H2(b,a,a,g,f) = g let g be set ; ::_thesis: ( g in H3(b,a) implies H2(b,a,a,g,f) = g ) assume A36: g in H3(b,a) ; ::_thesis: H2(b,a,a,g,f) = g then A37: g in F2(b,a) by A6; P1[b,a,g] by A6, A36; hence H2(b,a,a,g,f) = g by A35, A37; ::_thesis: verum end; consider C being strict category such that A38: the carrier of C = F1() and A39: for a, b being object of C holds <^a,b^> = H3(a,b) and A40: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H2(a,b,c,f,g) from YELLOW18:sch_4(A9, A17, A26, A32); take C ; ::_thesis: ( the carrier of C = F1() & ( for a, b being object of C for f being set holds ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) thus the carrier of C = F1() by A38; ::_thesis: ( ( for a, b being object of C for f being set holds ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) ) & ( for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) ) ) hereby ::_thesis: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) let a, b be object of C; ::_thesis: for f being set holds ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) let f be set ; ::_thesis: ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) <^a,b^> = P . (a,b) by A39; hence ( f in <^a,b^> iff ( f in F2(a,b) & P1[a,b,f] ) ) by A6, A38; ::_thesis: verum end; thus for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = F3(a,b,c,f,g) by A40; ::_thesis: verum end; registration let f be Function-yielding Function; let a, b, c be set ; clusterf . (a,b,c) -> Relation-like Function-like ; coherence ( f . (a,b,c) is Relation-like & f . (a,b,c) is Function-like ) proof f . (a,b,c) = f . [a,b,c] by MULTOP_1:def_1; hence ( f . (a,b,c) is Relation-like & f . (a,b,c) is Function-like ) ; ::_thesis: verum end; end; scheme :: YELLOW18:sch 7 SubcategoryEx{ F1() -> category, P1[ set ], P2[ set , set , set ] } : ex B being non empty strict subcategory of F1() st ( ( for a being object of F1() holds ( a is object of B iff P1[a] ) ) & ( for a, b being object of F1() for a9, b9 being object of B st a9 = a & b9 = b & <^a,b^> <> {} holds for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) ) ) provided A1: ex a being object of F1() st P1[a] and A2: for a, b, c being object of F1() st P1[a] & P1[b] & P1[c] & <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c st P2[a,b,f] & P2[b,c,g] holds P2[a,c,g * f] and A3: for a being object of F1() st P1[a] holds P2[a,a, idm a] proof consider X being set such that A4: for x being set holds ( x in X iff ( x in the carrier of F1() & P1[x] ) ) from XBOOLE_0:sch_1(); reconsider X = X as non empty set by A1, A4; A5: X c= the carrier of F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in X or x in the carrier of F1() ) thus ( not x in X or x in the carrier of F1() ) by A4; ::_thesis: verum end; deffunc H1( set , set ) -> set = the Arrows of F1() . (\$1,\$2); deffunc H2( set , set , set , set , set ) -> set = ( the Comp of F1() . (\$1,\$2,\$3)) . (\$5,\$4); A6: now__::_thesis:_for_a,_b,_c_being_Element_of_X for_f,_g_being_set_st_f_in_H1(a,b)_&_P2[a,b,f]_&_g_in_H1(b,c)_&_P2[b,c,g]_holds_ (_H2(a,b,c,f,g)_in_H1(a,c)_&_P2[a,c,H2(a,b,c,f,g)]_) let a, b, c be Element of X; ::_thesis: for f, g being set st f in H1(a,b) & P2[a,b,f] & g in H1(b,c) & P2[b,c,g] holds ( H2(a,b,c,f,g) in H1(a,c) & P2[a,c,H2(a,b,c,f,g)] ) let f, g be set ; ::_thesis: ( f in H1(a,b) & P2[a,b,f] & g in H1(b,c) & P2[b,c,g] implies ( H2(a,b,c,f,g) in H1(a,c) & P2[a,c,H2(a,b,c,f,g)] ) ) assume that A7: f in H1(a,b) and A8: P2[a,b,f] and A9: g in H1(b,c) and A10: P2[b,c,g] ; ::_thesis: ( H2(a,b,c,f,g) in H1(a,c) & P2[a,c,H2(a,b,c,f,g)] ) reconsider a9 = a, b9 = b, c9 = c as object of F1() by A4; A11: H1(a,b) = <^a9,b9^> ; reconsider f9 = f as Morphism of a9,b9 by A7; A12: H1(b,c) = <^b9,c9^> ; reconsider g9 = g as Morphism of b9,c9 by A9; A13: H2(a,b,c,f,g) = g9 * f9 by A7, A9, ALTCAT_1:def_8; <^a9,c9^> <> {} by A7, A9, A11, A12, ALTCAT_1:def_2; hence H2(a,b,c,f,g) in H1(a,c) by A13; ::_thesis: P2[a,c,H2(a,b,c,f,g)] A14: P1[a9] by A4; A15: P1[b9] by A4; P1[c9] by A4; hence P2[a,c,H2(a,b,c,f,g)] by A2, A7, A8, A9, A10, A13, A14, A15; ::_thesis: verum end; A16: now__::_thesis:_for_a,_b,_c,_d_being_Element_of_X for_f,_g,_h_being_set_st_f_in_H1(a,b)_&_P2[a,b,f]_&_g_in_H1(b,c)_&_P2[b,c,g]_&_h_in_H1(c,d)_&_P2[c,d,h]_holds_ H2(a,c,d,H2(a,b,c,f,g),h)_=_H2(a,b,d,f,H2(b,c,d,g,h)) let a, b, c, d be Element of X; ::_thesis: for f, g, h being set st f in H1(a,b) & P2[a,b,f] & g in H1(b,c) & P2[b,c,g] & h in H1(c,d) & P2[c,d,h] holds H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) let f, g, h be set ; ::_thesis: ( f in H1(a,b) & P2[a,b,f] & g in H1(b,c) & P2[b,c,g] & h in H1(c,d) & P2[c,d,h] implies H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) ) assume that A17: f in H1(a,b) and P2[a,b,f] and A18: g in H1(b,c) and P2[b,c,g] and A19: h in H1(c,d) and P2[c,d,h] ; ::_thesis: H2(a,c,d,H2(a,b,c,f,g),h) = H2(a,b,d,f,H2(b,c,d,g,h)) reconsider a9 = a, b9 = b, c9 = c, d9 = d as object of F1() by A4; A20: H1(a,b) = <^a9,b9^> ; reconsider f9 = f as Morphism of a9,b9 by A17; A21: H1(b,c) = <^b9,c9^> ; reconsider g9 = g as Morphism of b9,c9 by A18; A22: H1(c,d) = <^c9,d9^> ; reconsider h9 = h as Morphism of c9,d9 by A19; A23: <^a9,c9^> <> {} by A17, A18, A20, A21, ALTCAT_1:def_2; A24: <^b9,d9^> <> {} by A18, A19, A21, A22, ALTCAT_1:def_2; thus H2(a,c,d,H2(a,b,c,f,g),h) = H2(a9,c9,d9,g9 * f9,h) by A17, A18, ALTCAT_1:def_8 .= h9 * (g9 * f9) by A19, A23, ALTCAT_1:def_8 .= (h9 * g9) * f9 by A17, A18, A19, ALTCAT_1:21 .= H2(a,b,d,f,h9 * g9) by A17, A24, ALTCAT_1:def_8 .= H2(a,b,d,f,H2(b,c,d,g,h)) by A18, A19, ALTCAT_1:def_8 ; ::_thesis: verum end; A25: now__::_thesis:_for_a_being_Element_of_X_ex_f_being_set_st_ (_f_in_H1(a,a)_&_P2[a,a,f]_&_(_for_c_being_Element_of_X for_g_being_set_st_g_in_H1(a,c)_&_P2[a,c,g]_holds_ H2(a,a,c,f,g)_=_g_)_) let a be Element of X; ::_thesis: ex f being set st ( f in H1(a,a) & P2[a,a,f] & ( for c being Element of X for g being set st g in H1(a,c) & P2[a,c,g] holds H2(a,a,c,f,g) = g ) ) reconsider b = a as object of F1() by A4; reconsider f = idm b as set ; take f = f; ::_thesis: ( f in H1(a,a) & P2[a,a,f] & ( for c being Element of X for g being set st g in H1(a,c) & P2[a,c,g] holds H2(a,a,c,f,g) = g ) ) P1[b] by A4; hence ( f in H1(a,a) & P2[a,a,f] ) by A3; ::_thesis: for c being Element of X for g being set st g in H1(a,c) & P2[a,c,g] holds H2(a,a,c,f,g) = g let c be Element of X; ::_thesis: for g being set st g in H1(a,c) & P2[a,c,g] holds H2(a,a,c,f,g) = g let g be set ; ::_thesis: ( g in H1(a,c) & P2[a,c,g] implies H2(a,a,c,f,g) = g ) assume that A26: g in H1(a,c) and P2[a,c,g] ; ::_thesis: H2(a,a,c,f,g) = g reconsider d = c as object of F1() by A4; reconsider g9 = g as Morphism of b,d by A26; thus H2(a,a,c,f,g) = g9 * (idm b) by A26, ALTCAT_1:def_8 .= g by A26, ALTCAT_1:def_17 ; ::_thesis: verum end; A27: now__::_thesis:_for_a_being_Element_of_X_ex_f_being_set_st_ (_f_in_H1(a,a)_&_P2[a,a,f]_&_(_for_c_being_Element_of_X for_g_being_set_st_g_in_H1(c,a)_&_P2[c,a,g]_holds_ H2(c,a,a,g,f)_=_g_)_) let a be Element of X; ::_thesis: ex f being set st ( f in H1(a,a) & P2[a,a,f] & ( for c being Element of X for g being set st g in H1(c,a) & P2[c,a,g] holds H2(c,a,a,g,f) = g ) ) reconsider b = a as object of F1() by A4; reconsider f = idm b as set ; take f = f; ::_thesis: ( f in H1(a,a) & P2[a,a,f] & ( for c being Element of X for g being set st g in H1(c,a) & P2[c,a,g] holds H2(c,a,a,g,f) = g ) ) P1[b] by A4; hence ( f in H1(a,a) & P2[a,a,f] ) by A3; ::_thesis: for c being Element of X for g being set st g in H1(c,a) & P2[c,a,g] holds H2(c,a,a,g,f) = g let c be Element of X; ::_thesis: for g being set st g in H1(c,a) & P2[c,a,g] holds H2(c,a,a,g,f) = g let g be set ; ::_thesis: ( g in H1(c,a) & P2[c,a,g] implies H2(c,a,a,g,f) = g ) assume that A28: g in H1(c,a) and P2[c,a,g] ; ::_thesis: H2(c,a,a,g,f) = g reconsider d = c as object of F1() by A4; reconsider g9 = g as Morphism of d,b by A28; thus H2(c,a,a,g,f) = (idm b) * g9 by A28, ALTCAT_1:def_8 .= g by A28, ALTCAT_1:20 ; ::_thesis: verum end; consider C being strict category such that A29: the carrier of C = X and A30: for a, b being object of C for f being set holds ( f in <^a,b^> iff ( f in H1(a,b) & P2[a,b,f] ) ) and A31: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H2(a,b,c,f,g) from YELLOW18:sch_6(A6, A16, A25, A27); C is SubCatStr of F1() proof thus the carrier of C c= the carrier of F1() by A5, A29; :: according to ALTCAT_2:def_11 ::_thesis: ( the Arrows of C cc= the Arrows of F1() & the Comp of C cc= the Comp of F1() ) thus [: the carrier of C, the carrier of C:] c= [: the carrier of F1(), the carrier of F1():] by A5, A29, ZFMISC_1:96; :: according to ALTCAT_2:def_2 ::_thesis: ( ( for b1 being set holds ( not b1 in [: the carrier of C, the carrier of C:] or the Arrows of C . b1 c= the Arrows of F1() . b1 ) ) & the Comp of C cc= the Comp of F1() ) hereby ::_thesis: the Comp of C cc= the Comp of F1() let i be set ; ::_thesis: ( i in [: the carrier of C, the carrier of C:] implies the Arrows of C . i c= the Arrows of F1() . i ) assume i in [: the carrier of C, the carrier of C:] ; ::_thesis: the Arrows of C . i c= the Arrows of F1() . i then consider a, b being set such that A32: a in the carrier of C and A33: b in the carrier of C and A34: [a,b] = i by ZFMISC_1:def_2; reconsider a = a, b = b as object of C by A32, A33; A35: the Arrows of C . i = <^a,b^> by A34; A36: the Arrows of F1() . i = the Arrows of F1() . (a,b) by A34; thus the Arrows of C . i c= the Arrows of F1() . i ::_thesis: verum proof let f be set ; :: according to TARSKI:def_3 ::_thesis: ( not f in the Arrows of C . i or f in the Arrows of F1() . i ) thus ( not f in the Arrows of C . i or f in the Arrows of F1() . i ) by A30, A35, A36; ::_thesis: verum end; end; thus [: the carrier of C, the carrier of C, the carrier of C:] c= [: the carrier of F1(), the carrier of F1(), the carrier of F1():] by A5, A29, MCART_1:73; :: according to ALTCAT_2:def_2 ::_thesis: for b1 being set holds ( not b1 in [: the carrier of C, the carrier of C, the carrier of C:] or the Comp of C . b1 c= the Comp of F1() . b1 ) let i be set ; ::_thesis: ( not i in [: the carrier of C, the carrier of C, the carrier of C:] or the Comp of C . i c= the Comp of F1() . i ) assume i in [: the carrier of C, the carrier of C, the carrier of C:] ; ::_thesis: the Comp of C . i c= the Comp of F1() . i then consider a, b, c being set such that A37: a in the carrier of C and A38: b in the carrier of C and A39: c in the carrier of C and A40: [a,b,c] = i by MCART_1:68; reconsider a = a, b = b, c = c as object of C by A37, A38, A39; reconsider a9 = a, b9 = b, c9 = c as object of F1() by A4, A29; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in the Comp of C . i or x in the Comp of F1() . i ) assume x in the Comp of C . i ; ::_thesis: x in the Comp of F1() . i then A41: x in the Comp of C . (a,b,c) by A40, MULTOP_1:def_1; then consider gf, h being set such that A42: x = [gf,h] and A43: gf in [:( the Arrows of C . (b,c)),( the Arrows of C . (a,b)):] and A44: h in the Arrows of C . (a,c) by RELSET_1:2; consider g, f being set such that A45: g in the Arrows of C . (b,c) and A46: f in the Arrows of C . (a,b) and A47: [g,f] = gf by A43, ZFMISC_1:def_2; reconsider f = f as Morphism of a,b by A46; reconsider g = g as Morphism of b,c by A45; reconsider h = h as Morphism of a,c by A44; A48: the Comp of F1() . (a9,b9,c9) = the Comp of F1() . i by A40, MULTOP_1:def_1; A49: g in the Arrows of F1() . (b9,c9) by A30, A45; A50: f in the Arrows of F1() . (a9,b9) by A30, A46; A51: h = ( the Comp of C . (a,b,c)) . (g,f) by A41, A42, A47, FUNCT_1:1 .= g * f by A45, A46, ALTCAT_1:def_8 .= ( the Comp of F1() . (a9,b9,c9)) . (g,f) by A31, A45, A46 ; h in the Arrows of F1() . (a9,c9) by A30, A44; then dom ( the Comp of F1() . (a9,b9,c9)) = [:( the Arrows of F1() . (b9,c9)),( the Arrows of F1() . (a9,b9)):] by FUNCT_2:def_1; then gf in dom ( the Comp of F1() . (a9,b9,c9)) by A47, A49, A50, ZFMISC_1:def_2; hence x in the Comp of F1() . i by A42, A47, A48, A51, FUNCT_1:def_2; ::_thesis: verum end; then reconsider C = C as non empty SubCatStr of F1() ; for o being object of C for o9 being object of F1() st o = o9 holds idm o9 in <^o,o^> proof let a be object of C; ::_thesis: for o9 being object of F1() st a = o9 holds idm o9 in <^a,a^> let b be object of F1(); ::_thesis: ( a = b implies idm b in <^a,a^> ) assume A52: a = b ; ::_thesis: idm b in <^a,a^> then P1[b] by A4, A29; then P2[b,b, idm b] by A3; hence idm b in <^a,a^> by A30, A52; ::_thesis: verum end; then reconsider C = C as non empty strict subcategory of F1() by ALTCAT_2:def_14; take C ; ::_thesis: ( ( for a being object of F1() holds ( a is object of C iff P1[a] ) ) & ( for a, b being object of F1() for a9, b9 being object of C st a9 = a & b9 = b & <^a,b^> <> {} holds for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) ) ) thus for a being object of F1() holds ( a is object of C iff P1[a] ) by A4, A29; ::_thesis: for a, b being object of F1() for a9, b9 being object of C st a9 = a & b9 = b & <^a,b^> <> {} holds for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) let a, b be object of F1(); ::_thesis: for a9, b9 being object of C st a9 = a & b9 = b & <^a,b^> <> {} holds for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) let a9, b9 be object of C; ::_thesis: ( a9 = a & b9 = b & <^a,b^> <> {} implies for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) ) assume that A53: a9 = a and A54: b9 = b and A55: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds ( f in <^a9,b9^> iff P2[a,b,f] ) let f be Morphism of a,b; ::_thesis: ( f in <^a9,b9^> iff P2[a,b,f] ) thus ( f in <^a9,b9^> iff P2[a,b,f] ) by A30, A53, A54, A55; ::_thesis: verum end; scheme :: YELLOW18:sch 8 CovariantFunctorLambda{ F1() -> category, F2() -> category, F3( set ) -> set , F4( set , set , set ) -> set } : ex F being strict covariant Functor of F1(),F2() st ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) provided A1: for a being object of F1() holds F3(a) is object of F2() and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F4(a,b,f) in the Arrows of F2() . (F3(a),F3(b)) and A3: for a, b, c being object of F1() st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of F2() st a9 = F3(a) & b9 = F3(b) & c9 = F3(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = F4(a,b,f) & g9 = F4(b,c,g) holds F4(a,c,(g * f)) = g9 * f9 and A4: for a being object of F1() for a9 being object of F2() st a9 = F3(a) holds F4(a,a,(idm a)) = idm a9 proof consider O being Function such that A5: dom O = the carrier of F1() and A6: for x being set st x in the carrier of F1() holds O . x = F3(x) from FUNCT_1:sch_3(); rng O c= the carrier of F2() proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng O or y in the carrier of F2() ) assume y in rng O ; ::_thesis: y in the carrier of F2() then consider x being set such that A7: x in dom O and A8: y = O . x by FUNCT_1:def_3; reconsider x = x as object of F1() by A5, A7; A9: y = F3(x) by A6, A8; F3(x) is object of F2() by A1; hence y in the carrier of F2() by A9; ::_thesis: verum end; then reconsider O = O as Function of the carrier of F1(), the carrier of F2() by A5, FUNCT_2:2; reconsider OM = [:O,O:] as bifunction of the carrier of F1(), the carrier of F2() ; defpred S1[ set , set , set ] means \$1 = F4((\$3 `1),(\$3 `2),\$2); A10: for i being set st i in [: the carrier of F1(), the carrier of F1():] holds for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) proof let i be set ; ::_thesis: ( i in [: the carrier of F1(), the carrier of F1():] implies for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) ) assume A11: i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) then consider a, b being set such that A12: a in the carrier of F1() and A13: b in the carrier of F1() and A14: [a,b] = i by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A12, A13; let x be set ; ::_thesis: ( x in the Arrows of F1() . i implies ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) ) assume A15: x in the Arrows of F1() . i ; ::_thesis: ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) then reconsider f = x as Morphism of a,b by A14; take y = F4(a,b,f); ::_thesis: ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) A16: y in the Arrows of F2() . (F3(a),F3(b)) by A2, A14, A15; A17: F3(a) = O . a by A6; i in dom OM by A5, A11, FUNCT_3:def_8; then ( the Arrows of F2() * OM) . i = the Arrows of F2() . (OM . (a,b)) by A14, FUNCT_1:13 .= the Arrows of F2() . ((O . a),(O . b)) by A5, FUNCT_3:def_8 ; hence y in ( the Arrows of F2() * OM) . i by A6, A16, A17; ::_thesis: S1[y,x,i] i `1 = a by A14, MCART_1:7; hence S1[y,x,i] by A14, MCART_1:7; ::_thesis: verum end; consider M being ManySortedFunction of the Arrows of F1(), the Arrows of F2() * OM such that A18: for i being set st i in [: the carrier of F1(), the carrier of F1():] holds ex f being Function of ( the Arrows of F1() . i),(( the Arrows of F2() * OM) . i) st ( f = M . i & ( for x being set st x in the Arrows of F1() . i holds S1[f . x,x,i] ) ) from MSSUBFAM:sch_1(A10); reconsider M = M as MSUnTrans of OM, the Arrows of F1(), the Arrows of F2() by FUNCTOR0:def_4; FunctorStr(# OM,M #) is Covariant proof take O ; :: according to FUNCTOR0:def_1,FUNCTOR0:def_12 ::_thesis: the ObjectMap of FunctorStr(# OM,M #) = [:O,O:] thus the ObjectMap of FunctorStr(# OM,M #) = [:O,O:] ; ::_thesis: verum end; then reconsider F = FunctorStr(# OM,M #) as Covariant FunctorStr over F1(),F2() ; A19: now__::_thesis:_for_a_being_object_of_F1()_holds_F_._a_=_F3(a) let a be object of F1(); ::_thesis: F . a = F3(a) thus F . a = [(O . a),(O . a)] `1 by A5, FUNCT_3:def_8 .= O . a .= F3(a) by A6 ; ::_thesis: verum end; A20: now__::_thesis:_for_o1,_o2_being_object_of_F1()_st_<^o1,o2^>_<>_{}_holds_ for_g_being_Morphism_of_o1,o2_holds_(Morph-Map_(F,o1,o2))_._g_=_F4(o1,o2,g) let o1, o2 be object of F1(); ::_thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) ) assume A21: <^o1,o2^> <> {} ; ::_thesis: for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) let g be Morphism of o1,o2; ::_thesis: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) [o1,o2] in [: the carrier of F1(), the carrier of F1():] by ZFMISC_1:def_2; then consider f being Function of ( the Arrows of F1() . [o1,o2]),(( the Arrows of F2() * OM) . [o1,o2]) such that A22: f = M . [o1,o2] and A23: for x being set st x in the Arrows of F1() . [o1,o2] holds f . x = F4(([o1,o2] `1),([o1,o2] `2),x) by A18; f . g = F4(([o1,o2] `1),([o1,o2] `2),g) by A21, A23 .= F4(o1,([o1,o2] `2),g) .= F4(o1,o2,g) ; hence (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A22; ::_thesis: verum end; A24: F is feasible proof let o1, o2 be object of F1(); :: according to FUNCTOR0:def_18 ::_thesis: ( <^o1,o2^> = {} or not <^(F . o1),(F . o2)^> = {} ) set g = the Morphism of o1,o2; assume A25: <^o1,o2^> <> {} ; ::_thesis: not <^(F . o1),(F . o2)^> = {} then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 = F4(o1,o2, the Morphism of o1,o2) by A20; then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . (F3(o1),F3(o2)) by A2, A25; then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . ((F . o1),F3(o2)) by A19; hence not <^(F . o1),(F . o2)^> = {} by A19; ::_thesis: verum end; A26: now__::_thesis:_for_o1,_o2_being_object_of_F1()_st_<^o1,o2^>_<>_{}_holds_ for_g_being_Morphism_of_o1,o2_holds_F_._g_=_F4(o1,o2,g) let o1, o2 be object of F1(); ::_thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g) ) assume A27: <^o1,o2^> <> {} ; ::_thesis: for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g) let g be Morphism of o1,o2; ::_thesis: F . g = F4(o1,o2,g) A28: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A20, A27; <^(F . o1),(F . o2)^> <> {} by A24, A27, FUNCTOR0:def_18; hence F . g = F4(o1,o2,g) by A27, A28, FUNCTOR0:def_15; ::_thesis: verum end; A29: F is comp-preserving proof let o1, o2, o3 be object of F1(); :: according to FUNCTOR0:def_21 ::_thesis: ( <^o1,o2^> = {} or <^o2,o3^> = {} or for b1 being Element of <^o1,o2^> for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o1),(F . o2)^> ex b4 being Element of <^(F . o2),(F . o3)^> st ( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b4 * b3 ) ) assume that A30: <^o1,o2^> <> {} and A31: <^o2,o3^> <> {} ; ::_thesis: for b1 being Element of <^o1,o2^> for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o1),(F . o2)^> ex b4 being Element of <^(F . o2),(F . o3)^> st ( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b4 * b3 ) let f be Morphism of o1,o2; ::_thesis: for b1 being Element of <^o2,o3^> ex b2 being Element of <^(F . o1),(F . o2)^> ex b3 being Element of <^(F . o2),(F . o3)^> st ( b2 = (Morph-Map (F,o1,o2)) . f & b3 = (Morph-Map (F,o2,o3)) . b1 & (Morph-Map (F,o1,o3)) . (b1 * f) = b3 * b2 ) let g be Morphism of o2,o3; ::_thesis: ex b1 being Element of <^(F . o1),(F . o2)^> ex b2 being Element of <^(F . o2),(F . o3)^> st ( b1 = (Morph-Map (F,o1,o2)) . f & b2 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = b2 * b1 ) set a = O . o1; set b = O . o2; set c = O . o3; A32: O . o1 = F3(o1) by A6; A33: O . o2 = F3(o2) by A6; A34: O . o3 = F3(o3) by A6; reconsider f9 = F4(o1,o2,f) as Morphism of (O . o1),(O . o2) by A2, A30, A32, A33; reconsider g9 = F4(o2,o3,g) as Morphism of (O . o2),(O . o3) by A2, A31, A33, A34; A35: O . o1 = F . o1 by A19, A32; A36: O . o2 = F . o2 by A19, A33; A37: O . o3 = F . o3 by A19, A34; reconsider ff = f9 as Morphism of (F . o1),(F . o2) by A19, A32, A36; reconsider gg = g9 as Morphism of (F . o2),(F . o3) by A19, A34, A36; take ff ; ::_thesis: ex b1 being Element of <^(F . o2),(F . o3)^> st ( ff = (Morph-Map (F,o1,o2)) . f & b1 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = b1 * ff ) take gg ; ::_thesis: ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = gg * ff ) A38: <^o1,o3^> <> {} by A30, A31, ALTCAT_1:def_2; F4(o1,o3,(g * f)) = gg * ff by A3, A30, A31, A32, A33, A34, A35, A36, A37; hence ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = gg * ff ) by A20, A30, A31, A38; ::_thesis: verum end; F is Functor of F1(),F2() proof thus F is feasible by A24; :: according to FUNCTOR0:def_25 ::_thesis: ( F is id-preserving & ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) ) hereby :: according to FUNCTOR0:def_20 ::_thesis: ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) let o be object of F1(); ::_thesis: (Morph-Map (F,o,o)) . (idm o) = idm (F . o) A39: F . o = F3(o) by A19; thus (Morph-Map (F,o,o)) . (idm o) = F4(o,o,(idm o)) by A20 .= idm (F . o) by A4, A39 ; ::_thesis: verum end; thus ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) by A29; ::_thesis: verum end; then reconsider F = F as strict covariant Functor of F1(),F2() by A29; take F ; ::_thesis: ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) thus ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) by A19, A26; ::_thesis: verum end; theorem Th1: :: YELLOW18:1 for A, B being category for F, G being covariant Functor of A,B st ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) holds FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) proof let A, B be category; ::_thesis: for F, G being covariant Functor of A,B st ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) holds FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) let F, G be covariant Functor of A,B; ::_thesis: ( ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) implies FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) ) assume that A1: for a being object of A holds F . a = G . a and A2: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ; ::_thesis: FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) the ObjectMap of F is Covariant by FUNCTOR0:def_12; then consider ff being Function of the carrier of A, the carrier of B such that A3: the ObjectMap of F = [:ff,ff:] by FUNCTOR0:def_1; the ObjectMap of G is Covariant by FUNCTOR0:def_12; then consider gg being Function of the carrier of A, the carrier of B such that A4: the ObjectMap of G = [:gg,gg:] by FUNCTOR0:def_1; now__::_thesis:_for_a,_b_being_Element_of_A_holds_the_ObjectMap_of_F_._(a,b)_=_the_ObjectMap_of_G_._(a,b) let a, b be Element of A; ::_thesis: the ObjectMap of F . (a,b) = the ObjectMap of G . (a,b) reconsider x = a, y = b as object of A ; A5: dom ff = the carrier of A by FUNCT_2:def_1; A6: dom gg = the carrier of A by FUNCT_2:def_1; A7: the ObjectMap of F . (x,x) = [(ff . x),(ff . x)] by A3, A5, FUNCT_3:def_8; A8: the ObjectMap of F . (y,y) = [(ff . y),(ff . y)] by A3, A5, FUNCT_3:def_8; A9: the ObjectMap of G . (x,x) = [(gg . x),(gg . x)] by A4, A6, FUNCT_3:def_8; A10: the ObjectMap of G . (y,y) = [(gg . y),(gg . y)] by A4, A6, FUNCT_3:def_8; A11: F . x = ff . x by A7, MCART_1:7; A12: F . y = ff . y by A8, MCART_1:7; A13: G . x = gg . x by A9, MCART_1:7; A14: G . y = gg . y by A10, MCART_1:7; A15: F . x = G . x by A1; A16: F . y = G . y by A1; thus the ObjectMap of F . (a,b) = [(ff . a),(ff . b)] by A3, A5, FUNCT_3:def_8 .= the ObjectMap of G . (a,b) by A4, A6, A11, A12, A13, A14, A15, A16, FUNCT_3:def_8 ; ::_thesis: verum end; then A17: the ObjectMap of F = the ObjectMap of G by BINOP_1:2; now__::_thesis:_for_i_being_set_st_i_in_[:_the_carrier_of_A,_the_carrier_of_A:]_holds_ the_MorphMap_of_F_._i_=_the_MorphMap_of_G_._i let i be set ; ::_thesis: ( i in [: the carrier of A, the carrier of A:] implies the MorphMap of F . i = the MorphMap of G . i ) assume i in [: the carrier of A, the carrier of A:] ; ::_thesis: the MorphMap of F . i = the MorphMap of G . i then consider a, b being set such that A18: a in the carrier of A and A19: b in the carrier of A and A20: i = [a,b] by ZFMISC_1:def_2; reconsider x = a, y = b as object of A by A18, A19; A21: ( <^x,y^> <> {} implies <^(F . x),(F . y)^> <> {} ) by FUNCTOR0:def_18; A22: ( <^x,y^> <> {} implies <^(G . x),(G . y)^> <> {} ) by FUNCTOR0:def_18; A23: dom (Morph-Map (F,x,y)) = <^x,y^> by A21, FUNCT_2:def_1; A24: dom (Morph-Map (G,x,y)) = <^x,y^> by A22, FUNCT_2:def_1; now__::_thesis:_for_z_being_set_st_z_in_<^x,y^>_holds_ (Morph-Map_(F,x,y))_._z_=_(Morph-Map_(G,x,y))_._z let z be set ; ::_thesis: ( z in <^x,y^> implies (Morph-Map (F,x,y)) . z = (Morph-Map (G,x,y)) . z ) assume A25: z in <^x,y^> ; ::_thesis: (Morph-Map (F,x,y)) . z = (Morph-Map (G,x,y)) . z then reconsider f = z as Morphism of x,y ; thus (Morph-Map (F,x,y)) . z = F . f by A21, A25, FUNCTOR0:def_15 .= G . f by A2, A25 .= (Morph-Map (G,x,y)) . z by A22, A25, FUNCTOR0:def_15 ; ::_thesis: verum end; hence the MorphMap of F . i = the MorphMap of G . i by A20, A23, A24, FUNCT_1:2; ::_thesis: verum end; hence FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) by A17, PBOOLE:3; ::_thesis: verum end; scheme :: YELLOW18:sch 9 ContravariantFunctorLambda{ F1() -> category, F2() -> category, F3( set ) -> set , F4( set , set , set ) -> set } : ex F being strict contravariant Functor of F1(),F2() st ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) provided A1: for a being object of F1() holds F3(a) is object of F2() and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F4(a,b,f) in the Arrows of F2() . (F3(b),F3(a)) and A3: for a, b, c being object of F1() st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of F2() st a9 = F3(a) & b9 = F3(b) & c9 = F3(c) holds for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = F4(a,b,f) & g9 = F4(b,c,g) holds F4(a,c,(g * f)) = f9 * g9 and A4: for a being object of F1() for a9 being object of F2() st a9 = F3(a) holds F4(a,a,(idm a)) = idm a9 proof consider O being Function such that A5: dom O = the carrier of F1() and A6: for x being set st x in the carrier of F1() holds O . x = F3(x) from FUNCT_1:sch_3(); rng O c= the carrier of F2() proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng O or y in the carrier of F2() ) assume y in rng O ; ::_thesis: y in the carrier of F2() then consider x being set such that A7: x in dom O and A8: y = O . x by FUNCT_1:def_3; reconsider x = x as object of F1() by A5, A7; A9: y = F3(x) by A6, A8; F3(x) is object of F2() by A1; hence y in the carrier of F2() by A9; ::_thesis: verum end; then reconsider O = O as Function of the carrier of F1(), the carrier of F2() by A5, FUNCT_2:2; reconsider OM = ~ [:O,O:] as bifunction of the carrier of F1(), the carrier of F2() ; dom [:O,O:] = [: the carrier of F1(), the carrier of F1():] by A5, FUNCT_3:def_8; then A10: dom OM = [: the carrier of F1(), the carrier of F1():] by FUNCT_4:46; defpred S1[ set , set , set ] means \$1 = F4((\$3 `1),(\$3 `2),\$2); A11: for i being set st i in [: the carrier of F1(), the carrier of F1():] holds for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) proof let i be set ; ::_thesis: ( i in [: the carrier of F1(), the carrier of F1():] implies for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) ) assume A12: i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: for x being set st x in the Arrows of F1() . i holds ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) then consider a, b being set such that A13: a in the carrier of F1() and A14: b in the carrier of F1() and A15: [a,b] = i by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A13, A14; let x be set ; ::_thesis: ( x in the Arrows of F1() . i implies ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) ) assume A16: x in the Arrows of F1() . i ; ::_thesis: ex y being set st ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) then reconsider f = x as Morphism of a,b by A15; take y = F4(a,b,f); ::_thesis: ( y in ( the Arrows of F2() * OM) . i & S1[y,x,i] ) A17: y in the Arrows of F2() . (F3(b),F3(a)) by A2, A15, A16; A18: F3(a) = O . a by A6; ( the Arrows of F2() * OM) . i = the Arrows of F2() . (OM . (a,b)) by A10, A12, A15, FUNCT_1:13 .= the Arrows of F2() . ([:O,O:] . (b,a)) by A10, A12, A15, FUNCT_4:43 .= the Arrows of F2() . ((O . b),(O . a)) by A5, FUNCT_3:def_8 ; hence y in ( the Arrows of F2() * OM) . i by A6, A17, A18; ::_thesis: S1[y,x,i] i `1 = a by A15, MCART_1:7; hence S1[y,x,i] by A15, MCART_1:7; ::_thesis: verum end; consider M being ManySortedFunction of the Arrows of F1(), the Arrows of F2() * OM such that A19: for i being set st i in [: the carrier of F1(), the carrier of F1():] holds ex f being Function of ( the Arrows of F1() . i),(( the Arrows of F2() * OM) . i) st ( f = M . i & ( for x being set st x in the Arrows of F1() . i holds S1[f . x,x,i] ) ) from MSSUBFAM:sch_1(A11); reconsider M = M as MSUnTrans of OM, the Arrows of F1(), the Arrows of F2() by FUNCTOR0:def_4; FunctorStr(# OM,M #) is Contravariant proof take O ; :: according to FUNCTOR0:def_2,FUNCTOR0:def_13 ::_thesis: the ObjectMap of FunctorStr(# OM,M #) = ~ [:O,O:] thus the ObjectMap of FunctorStr(# OM,M #) = ~ [:O,O:] ; ::_thesis: verum end; then reconsider F = FunctorStr(# OM,M #) as Contravariant FunctorStr over F1(),F2() ; A20: now__::_thesis:_for_a_being_object_of_F1()_holds_F_._a_=_F3(a) let a be object of F1(); ::_thesis: F . a = F3(a) [a,a] in dom OM by A10, ZFMISC_1:def_2; hence F . a = ([:O,O:] . (a,a)) `1 by FUNCT_4:43 .= [(O . a),(O . a)] `1 by A5, FUNCT_3:def_8 .= O . a .= F3(a) by A6 ; ::_thesis: verum end; A21: now__::_thesis:_for_o1,_o2_being_object_of_F1()_st_<^o1,o2^>_<>_{}_holds_ for_g_being_Morphism_of_o1,o2_holds_(Morph-Map_(F,o1,o2))_._g_=_F4(o1,o2,g) let o1, o2 be object of F1(); ::_thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) ) assume A22: <^o1,o2^> <> {} ; ::_thesis: for g being Morphism of o1,o2 holds (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) let g be Morphism of o1,o2; ::_thesis: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) [o1,o2] in [: the carrier of F1(), the carrier of F1():] by ZFMISC_1:def_2; then consider f being Function of ( the Arrows of F1() . [o1,o2]),(( the Arrows of F2() * OM) . [o1,o2]) such that A23: f = M . [o1,o2] and A24: for x being set st x in the Arrows of F1() . [o1,o2] holds f . x = F4(([o1,o2] `1),([o1,o2] `2),x) by A19; f . g = F4(([o1,o2] `1),([o1,o2] `2),g) by A22, A24 .= F4(o1,([o1,o2] `2),g) .= F4(o1,o2,g) ; hence (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A23; ::_thesis: verum end; A25: F is feasible proof let o1, o2 be object of F1(); :: according to FUNCTOR0:def_19 ::_thesis: ( <^o1,o2^> = {} or not <^(F . o2),(F . o1)^> = {} ) set g = the Morphism of o1,o2; assume A26: <^o1,o2^> <> {} ; ::_thesis: not <^(F . o2),(F . o1)^> = {} then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 = F4(o1,o2, the Morphism of o1,o2) by A21; then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . (F3(o2),F3(o1)) by A2, A26; then (Morph-Map (F,o1,o2)) . the Morphism of o1,o2 in the Arrows of F2() . ((F . o2),F3(o1)) by A20; hence not <^(F . o2),(F . o1)^> = {} by A20; ::_thesis: verum end; A27: now__::_thesis:_for_o1,_o2_being_object_of_F1()_st_<^o1,o2^>_<>_{}_holds_ for_g_being_Morphism_of_o1,o2_holds_F_._g_=_F4(o1,o2,g) let o1, o2 be object of F1(); ::_thesis: ( <^o1,o2^> <> {} implies for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g) ) assume A28: <^o1,o2^> <> {} ; ::_thesis: for g being Morphism of o1,o2 holds F . g = F4(o1,o2,g) let g be Morphism of o1,o2; ::_thesis: F . g = F4(o1,o2,g) A29: (Morph-Map (F,o1,o2)) . g = F4(o1,o2,g) by A21, A28; <^(F . o2),(F . o1)^> <> {} by A25, A28, FUNCTOR0:def_19; hence F . g = F4(o1,o2,g) by A28, A29, FUNCTOR0:def_16; ::_thesis: verum end; A30: F is comp-reversing proof let o1, o2, o3 be object of F1(); :: according to FUNCTOR0:def_22 ::_thesis: ( <^o1,o2^> = {} or <^o2,o3^> = {} or for b1 being Element of <^o1,o2^> for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o2),(F . o1)^> ex b4 being Element of <^(F . o3),(F . o2)^> st ( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b3 * b4 ) ) assume that A31: <^o1,o2^> <> {} and A32: <^o2,o3^> <> {} ; ::_thesis: for b1 being Element of <^o1,o2^> for b2 being Element of <^o2,o3^> ex b3 being Element of <^(F . o2),(F . o1)^> ex b4 being Element of <^(F . o3),(F . o2)^> st ( b3 = (Morph-Map (F,o1,o2)) . b1 & b4 = (Morph-Map (F,o2,o3)) . b2 & (Morph-Map (F,o1,o3)) . (b2 * b1) = b3 * b4 ) let f be Morphism of o1,o2; ::_thesis: for b1 being Element of <^o2,o3^> ex b2 being Element of <^(F . o2),(F . o1)^> ex b3 being Element of <^(F . o3),(F . o2)^> st ( b2 = (Morph-Map (F,o1,o2)) . f & b3 = (Morph-Map (F,o2,o3)) . b1 & (Morph-Map (F,o1,o3)) . (b1 * f) = b2 * b3 ) let g be Morphism of o2,o3; ::_thesis: ex b1 being Element of <^(F . o2),(F . o1)^> ex b2 being Element of <^(F . o3),(F . o2)^> st ( b1 = (Morph-Map (F,o1,o2)) . f & b2 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = b1 * b2 ) set a = O . o1; set b = O . o2; set c = O . o3; A33: O . o1 = F3(o1) by A6; A34: O . o2 = F3(o2) by A6; A35: O . o3 = F3(o3) by A6; reconsider f9 = F4(o1,o2,f) as Morphism of (O . o2),(O . o1) by A2, A31, A33, A34; reconsider g9 = F4(o2,o3,g) as Morphism of (O . o3),(O . o2) by A2, A32, A34, A35; A36: O . o1 = F . o1 by A20, A33; A37: O . o2 = F . o2 by A20, A34; A38: O . o3 = F . o3 by A20, A35; reconsider ff = f9 as Morphism of (F . o2),(F . o1) by A20, A33, A37; reconsider gg = g9 as Morphism of (F . o3),(F . o2) by A20, A35, A37; take ff ; ::_thesis: ex b1 being Element of <^(F . o3),(F . o2)^> st ( ff = (Morph-Map (F,o1,o2)) . f & b1 = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * b1 ) take gg ; ::_thesis: ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * gg ) A39: <^o1,o3^> <> {} by A31, A32, ALTCAT_1:def_2; F4(o1,o3,(g * f)) = ff * gg by A3, A31, A32, A33, A34, A35, A36, A37, A38; hence ( ff = (Morph-Map (F,o1,o2)) . f & gg = (Morph-Map (F,o2,o3)) . g & (Morph-Map (F,o1,o3)) . (g * f) = ff * gg ) by A21, A31, A32, A39; ::_thesis: verum end; F is Functor of F1(),F2() proof thus F is feasible by A25; :: according to FUNCTOR0:def_25 ::_thesis: ( F is id-preserving & ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) ) hereby :: according to FUNCTOR0:def_20 ::_thesis: ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) let o be object of F1(); ::_thesis: (Morph-Map (F,o,o)) . (idm o) = idm (F . o) A40: F . o = F3(o) by A20; thus (Morph-Map (F,o,o)) . (idm o) = F4(o,o,(idm o)) by A21 .= idm (F . o) by A4, A40 ; ::_thesis: verum end; thus ( ( F is Covariant & F is comp-preserving ) or ( F is Contravariant & F is comp-reversing ) ) by A30; ::_thesis: verum end; then reconsider F = F as strict contravariant Functor of F1(),F2() by A30; take F ; ::_thesis: ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) thus ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) by A20, A27; ::_thesis: verum end; theorem Th2: :: YELLOW18:2 for A, B being category for F, G being contravariant Functor of A,B st ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) holds FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) proof let A, B be category; ::_thesis: for F, G being contravariant Functor of A,B st ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) holds FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) let F, G be contravariant Functor of A,B; ::_thesis: ( ( for a being object of A holds F . a = G . a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ) implies FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) ) assume that A1: for a being object of A holds F . a = G . a and A2: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = G . f ; ::_thesis: FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) the ObjectMap of F is Contravariant by FUNCTOR0:def_13; then consider ff being Function of the carrier of A, the carrier of B such that A3: the ObjectMap of F = ~ [:ff,ff:] by FUNCTOR0:def_2; the ObjectMap of G is Contravariant by FUNCTOR0:def_13; then consider gg being Function of the carrier of A, the carrier of B such that A4: the ObjectMap of G = ~ [:gg,gg:] by FUNCTOR0:def_2; now__::_thesis:_for_a,_b_being_Element_of_A_holds_the_ObjectMap_of_F_._(a,b)_=_the_ObjectMap_of_G_._(a,b) let a, b be Element of A; ::_thesis: the ObjectMap of F . (a,b) = the ObjectMap of G . (a,b) reconsider x = a, y = b as object of A ; A5: dom ff = the carrier of A by FUNCT_2:def_1; A6: dom gg = the carrier of A by FUNCT_2:def_1; A7: dom [:ff,ff:] = [: the carrier of A, the carrier of A:] by FUNCT_2:def_1; then A8: [b,a] in dom [:ff,ff:] by ZFMISC_1:def_2; A9: dom [:gg,gg:] = [: the carrier of A, the carrier of A:] by FUNCT_2:def_1; then A10: [b,a] in dom [:gg,gg:] by ZFMISC_1:def_2; A11: [a,a] in dom [:gg,gg:] by A9, ZFMISC_1:def_2; A12: [b,b] in dom [:gg,gg:] by A9, ZFMISC_1:def_2; A13: the ObjectMap of F . (x,x) = [:ff,ff:] . (x,x) by A3, A7, A11, FUNCT_4:def_2; A14: the ObjectMap of F . (y,y) = [:ff,ff:] . (y,y) by A3, A7, A12, FUNCT_4:def_2; A15: the ObjectMap of G . (x,x) = [:gg,gg:] . (x,x) by A4, A11, FUNCT_4:def_2; A16: the ObjectMap of G . (y,y) = [:gg,gg:] . (y,y) by A4, A12, FUNCT_4:def_2; A17: the ObjectMap of F . (x,x) = [(ff . x),(ff . x)] by A5, A13, FUNCT_3:def_8; A18: the ObjectMap of F . (y,y) = [(ff . y),(ff . y)] by A5, A14, FUNCT_3:def_8; A19: the ObjectMap of G . (x,x) = [(gg . x),(gg . x)] by A6, A15, FUNCT_3:def_8; A20: the ObjectMap of G . (y,y) = [(gg . y),(gg . y)] by A6, A16, FUNCT_3:def_8; A21: F . x = ff . x by A17, MCART_1:7; A22: F . y = ff . y by A18, MCART_1:7; A23: G . x = gg . x by A19, MCART_1:7; A24: G . y = gg . y by A20, MCART_1:7; A25: F . x = G . x by A1; A26: F . y = G . y by A1; thus the ObjectMap of F . (a,b) = [:ff,ff:] . (b,a) by A3, A8, FUNCT_4:def_2 .= [(ff . b),(ff . a)] by A5, FUNCT_3:def_8 .= [:gg,gg:] . (b,a) by A6, A21, A22, A23, A24, A25, A26, FUNCT_3:def_8 .= the ObjectMap of G . (a,b) by A4, A10, FUNCT_4:def_2 ; ::_thesis: verum end; then A27: the ObjectMap of F = the ObjectMap of G by BINOP_1:2; now__::_thesis:_for_i_being_set_st_i_in_[:_the_carrier_of_A,_the_carrier_of_A:]_holds_ the_MorphMap_of_F_._i_=_the_MorphMap_of_G_._i let i be set ; ::_thesis: ( i in [: the carrier of A, the carrier of A:] implies the MorphMap of F . i = the MorphMap of G . i ) assume i in [: the carrier of A, the carrier of A:] ; ::_thesis: the MorphMap of F . i = the MorphMap of G . i then consider a, b being set such that A28: a in the carrier of A and A29: b in the carrier of A and A30: i = [a,b] by ZFMISC_1:def_2; reconsider x = a, y = b as object of A by A28, A29; A31: ( <^x,y^> <> {} implies <^(F . y),(F . x)^> <> {} ) by FUNCTOR0:def_19; A32: ( <^x,y^> <> {} implies <^(G . y),(G . x)^> <> {} ) by FUNCTOR0:def_19; A33: dom (Morph-Map (F,x,y)) = <^x,y^> by A31, FUNCT_2:def_1; A34: dom (Morph-Map (G,x,y)) = <^x,y^> by A32, FUNCT_2:def_1; now__::_thesis:_for_z_being_set_st_z_in_<^x,y^>_holds_ (Morph-Map_(F,x,y))_._z_=_(Morph-Map_(G,x,y))_._z let z be set ; ::_thesis: ( z in <^x,y^> implies (Morph-Map (F,x,y)) . z = (Morph-Map (G,x,y)) . z ) assume A35: z in <^x,y^> ; ::_thesis: (Morph-Map (F,x,y)) . z = (Morph-Map (G,x,y)) . z then reconsider f = z as Morphism of x,y ; thus (Morph-Map (F,x,y)) . z = F . f by A31, A35, FUNCTOR0:def_16 .= G . f by A2, A35 .= (Morph-Map (G,x,y)) . z by A32, A35, FUNCTOR0:def_16 ; ::_thesis: verum end; hence the MorphMap of F . i = the MorphMap of G . i by A30, A33, A34, FUNCT_1:2; ::_thesis: verum end; hence FunctorStr(# the ObjectMap of F, the MorphMap of F #) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) by A27, PBOOLE:3; ::_thesis: verum end; begin definition let A, B, C be non empty set ; let f be Function of [:A,B:],C; :: original: one-to-one redefine attrf is one-to-one means :: YELLOW18:def 1 for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ); compatibility ( f is one-to-one iff for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) ) proof A1: dom f = [:A,B:] by FUNCT_2:def_1; thus ( f is one-to-one implies for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) ) ::_thesis: ( ( for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) ) implies f is one-to-one ) proof assume A2: for x, y being set st x in dom f & y in dom f & f . x = f . y holds x = y ; :: according to FUNCT_1:def_4 ::_thesis: for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) let a1, a2 be Element of A; ::_thesis: for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) let b1, b2 be Element of B; ::_thesis: ( f . (a1,b1) = f . (a2,b2) implies ( a1 = a2 & b1 = b2 ) ) A3: [a1,b1] in [:A,B:] by ZFMISC_1:def_2; [a2,b2] in [:A,B:] by ZFMISC_1:def_2; then ( f . (a1,b1) = f . (a2,b2) implies [a1,b1] = [a2,b2] ) by A1, A2, A3; hence ( f . (a1,b1) = f . (a2,b2) implies ( a1 = a2 & b1 = b2 ) ) by XTUPLE_0:1; ::_thesis: verum end; assume A4: for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) ; ::_thesis: f is one-to-one let x, y be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not x in proj1 f or not y in proj1 f or not f . x = f . y or x = y ) assume x in dom f ; ::_thesis: ( not y in proj1 f or not f . x = f . y or x = y ) then consider a1, b1 being set such that A5: a1 in A and A6: b1 in B and A7: x = [a1,b1] by ZFMISC_1:def_2; assume y in dom f ; ::_thesis: ( not f . x = f . y or x = y ) then consider a2, b2 being set such that A8: a2 in A and A9: b2 in B and A10: y = [a2,b2] by ZFMISC_1:def_2; reconsider a1 = a1, a2 = a2 as Element of A by A5, A8; reconsider b1 = b1, b2 = b2 as Element of B by A6, A9; assume f . x = f . y ; ::_thesis: x = y then A11: f . (a1,b1) = f . (a2,b2) by A7, A10; then a1 = a2 by A4; hence x = y by A4, A7, A10, A11; ::_thesis: verum end; end; :: deftheorem defines one-to-one YELLOW18:def_1_:_ for A, B, C being non empty set for f being Function of [:A,B:],C holds ( f is one-to-one iff for a1, a2 being Element of A for b1, b2 being Element of B st f . (a1,b1) = f . (a2,b2) holds ( a1 = a2 & b1 = b2 ) ); scheme :: YELLOW18:sch 10 CoBijectiveSch{ F1() -> category, F2() -> category, F3() -> covariant Functor of F1(),F2(), F4( set ) -> set , F5( set , set , set ) -> set } : F3() is bijective provided A1: for a being object of F1() holds F3() . a = F4(a) and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F3() . f = F5(a,b,f) and A3: for a, b being object of F1() st F4(a) = F4(b) holds a = b and A4: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F5(a,b,f) = F5(a,b,g) holds f = g and A5: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( a = F4(c) & b = F4(d) & <^c,d^> <> {} & f = F5(c,d,g) ) proof set F = F3(); thus the ObjectMap of F3() is V7() :: according to FUNCTOR0:def_6,FUNCTOR0:def_33,FUNCTOR0:def_35 ::_thesis: ( F3() is faithful & F3() is V187(F1(),F2()) ) proof let x1, x2, y1, y2 be Element of F1(); :: according to YELLOW18:def_1 ::_thesis: ( the ObjectMap of F3() . (x1,y1) = the ObjectMap of F3() . (x2,y2) implies ( x1 = x2 & y1 = y2 ) ) reconsider a1 = x1, a2 = x2, b1 = y1, b2 = y2 as object of F1() ; assume the ObjectMap of F3() . (x1,y1) = the ObjectMap of F3() . (x2,y2) ; ::_thesis: ( x1 = x2 & y1 = y2 ) then A6: [(F3() . a1),(F3() . b1)] = the ObjectMap of F3() . (x2,y2) by FUNCTOR0:22 .= [(F3() . a2),(F3() . b2)] by FUNCTOR0:22 ; then A7: F3() . a1 = F3() . a2 by XTUPLE_0:1; A8: F3() . b1 = F3() . b2 by A6, XTUPLE_0:1; A9: F4(a1) = F3() . a2 by A1, A7; A10: F4(b1) = F3() . b2 by A1, A8; A11: F4(a1) = F4(a2) by A1, A9; F4(b1) = F4(b2) by A1, A10; hence ( x1 = x2 & y1 = y2 ) by A3, A11; ::_thesis: verum end; now__::_thesis:_for_i_being_set_st_i_in_[:_the_carrier_of_F1(),_the_carrier_of_F1():]_holds_ the_MorphMap_of_F3()_._i_is_one-to-one let i be set ; ::_thesis: ( i in [: the carrier of F1(), the carrier of F1():] implies the MorphMap of F3() . i is one-to-one ) assume i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: the MorphMap of F3() . i is one-to-one then consider a, b being set such that A12: a in the carrier of F1() and A13: b in the carrier of F1() and A14: i = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A12, A13; A15: ( <^a,b^> <> {} implies <^(F3() . a),(F3() . b)^> <> {} ) by FUNCTOR0:def_18; Morph-Map (F3(),a,b) is one-to-one proof let x, y be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not x in proj1 (Morph-Map (F3(),a,b)) or not y in proj1 (Morph-Map (F3(),a,b)) or not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) assume that A16: x in dom (Morph-Map (F3(),a,b)) and A17: y in dom (Morph-Map (F3(),a,b)) ; ::_thesis: ( not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) reconsider f = x, g = y as Morphism of a,b by A16, A17; A18: F3() . f = (Morph-Map (F3(),a,b)) . x by A15, A16, FUNCTOR0:def_15; A19: F3() . g = (Morph-Map (F3(),a,b)) . y by A15, A16, FUNCTOR0:def_15; A20: F5(a,b,f) = (Morph-Map (F3(),a,b)) . x by A2, A16, A18; F5(a,b,g) = (Morph-Map (F3(),a,b)) . y by A2, A16, A19; hence ( not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) by A4, A16, A20; ::_thesis: verum end; hence the MorphMap of F3() . i is one-to-one by A14; ::_thesis: verum end; hence the MorphMap of F3() is "1-1" by MSUALG_3:1; :: according to FUNCTOR0:def_30 ::_thesis: F3() is V187(F1(),F2()) reconsider G = the MorphMap of F3() as ManySortedFunction of the Arrows of F1(), the Arrows of F2() * the ObjectMap of F3() by FUNCTOR0:def_4; thus F3() is full :: according to FUNCTOR0:def_34 ::_thesis: F3() is onto proof take G ; :: according to FUNCTOR0:def_32 ::_thesis: ( G = the MorphMap of F3() & G is "onto" ) thus G = the MorphMap of F3() ; ::_thesis: G is "onto" let i be set ; :: according to MSUALG_3:def_3 ::_thesis: ( not i in [: the carrier of F1(), the carrier of F1():] or proj2 (G . i) = ( the ObjectMap of F3() (#) the Arrows of F2()) . i ) assume i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: proj2 (G . i) = ( the ObjectMap of F3() (#) the Arrows of F2()) . i then reconsider ab = i as Element of [: the carrier of F1(), the carrier of F1():] ; G . ab is Function of ( the Arrows of F1() . ab),(( the Arrows of F2() * the ObjectMap of F3()) . ab) ; hence rng (G . i) c= ( the Arrows of F2() * the ObjectMap of F3()) . i by RELAT_1:def_19; :: according to XBOOLE_0:def_10 ::_thesis: ( the ObjectMap of F3() (#) the Arrows of F2()) . i c= proj2 (G . i) consider a, b being set such that A21: a in the carrier of F1() and A22: b in the carrier of F1() and A23: ab = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A21, A22; A24: the ObjectMap of F3() . ab = the ObjectMap of F3() . (a,b) by A23 .= [(F3() . a),(F3() . b)] by FUNCTOR0:22 ; then A25: ( the Arrows of F2() * the ObjectMap of F3()) . ab = <^(F3() . a),(F3() . b)^> by FUNCT_2:15; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in ( the ObjectMap of F3() (#) the Arrows of F2()) . i or x in proj2 (G . i) ) assume A26: x in ( the Arrows of F2() * the ObjectMap of F3()) . i ; ::_thesis: x in proj2 (G . i) then reconsider f = x as Morphism of (F3() . a),(F3() . b) by A24, FUNCT_2:15; consider c, d being object of F1(), g being Morphism of c,d such that A27: F3() . a = F4(c) and A28: F3() . b = F4(d) and A29: <^c,d^> <> {} and A30: f = F5(c,d,g) by A5, A25, A26; A31: F4(a) = F4(c) by A1, A27; A32: F4(b) = F4(d) by A1, A28; A33: a = c by A3, A31; A34: b = d by A3, A32; A35: f = F3() . g by A2, A29, A30 .= (Morph-Map (F3(),c,d)) . g by A25, A26, A29, A33, A34, FUNCTOR0:def_15 ; dom (Morph-Map (F3(),a,b)) = <^a,b^> by A25, A26, FUNCT_2:def_1; hence x in proj2 (G . i) by A23, A29, A33, A34, A35, FUNCT_1:def_3; ::_thesis: verum end; thus rng the ObjectMap of F3() c= [: the carrier of F2(), the carrier of F2():] ; :: according to FUNCTOR0:def_7,FUNCT_2:def_3,XBOOLE_0:def_10 ::_thesis: [: the carrier of F2(), the carrier of F2():] c= rng the ObjectMap of F3() let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in [: the carrier of F2(), the carrier of F2():] or x in rng the ObjectMap of F3() ) assume x in [: the carrier of F2(), the carrier of F2():] ; ::_thesis: x in rng the ObjectMap of F3() then consider a, b being set such that A36: a in the carrier of F2() and A37: b in the carrier of F2() and A38: x = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F2() by A36, A37; consider c, c9 being object of F1(), g being Morphism of c,c9 such that A39: a = F4(c) and a = F4(c9) and <^c,c9^> <> {} and idm a = F5(c,c9,g) by A5; consider d, d9 being object of F1(), h being Morphism of d,d9 such that A40: b = F4(d) and b = F4(d9) and <^d,d9^> <> {} and idm b = F5(d,d9,h) by A5; [c,d] in [: the carrier of F1(), the carrier of F1():] by ZFMISC_1:def_2; then A41: [c,d] in dom the ObjectMap of F3() by FUNCT_2:def_1; the ObjectMap of F3() . [c,d] = the ObjectMap of F3() . (c,d) .= [(F3() . c),(F3() . d)] by FUNCTOR0:22 .= [a,(F3() . d)] by A1, A39 .= x by A1, A38, A40 ; hence x in rng the ObjectMap of F3() by A41, FUNCT_1:def_3; ::_thesis: verum end; scheme :: YELLOW18:sch 11 CatIsomorphism{ F1() -> category, F2() -> category, F3( set ) -> set , F4( set , set , set ) -> set } : F1(),F2() are_isomorphic provided A1: ex F being covariant Functor of F1(),F2() st ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) and A2: for a, b being object of F1() st F3(a) = F3(b) holds a = b and A3: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F4(a,b,f) = F4(a,b,g) holds f = g and A4: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( a = F3(c) & b = F3(d) & <^c,d^> <> {} & f = F4(c,d,g) ) proof A5: for a, b being object of F1() st F3(a) = F3(b) holds a = b by A2; A6: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F4(a,b,f) = F4(a,b,g) holds f = g by A3; A7: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( a = F3(c) & b = F3(d) & <^c,d^> <> {} & f = F4(c,d,g) ) by A4; consider F being covariant Functor of F1(),F2() such that A8: for a being object of F1() holds F . a = F3(a) and A9: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) by A1; take F ; :: according to FUNCTOR0:def_39 ::_thesis: ( F is bijective & F is covariant ) thus F is bijective from YELLOW18:sch_10(A8, A9, A5, A6, A7); ::_thesis: F is covariant thus F is covariant ; ::_thesis: verum end; scheme :: YELLOW18:sch 12 ContraBijectiveSch{ F1() -> category, F2() -> category, F3() -> contravariant Functor of F1(),F2(), F4( set ) -> set , F5( set , set , set ) -> set } : F3() is bijective provided A1: for a being object of F1() holds F3() . a = F4(a) and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F3() . f = F5(a,b,f) and A3: for a, b being object of F1() st F4(a) = F4(b) holds a = b and A4: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F5(a,b,f) = F5(a,b,g) holds f = g and A5: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( b = F4(c) & a = F4(d) & <^c,d^> <> {} & f = F5(c,d,g) ) proof set F = F3(); thus the ObjectMap of F3() is V7() :: according to FUNCTOR0:def_6,FUNCTOR0:def_33,FUNCTOR0:def_35 ::_thesis: ( F3() is faithful & F3() is V187(F1(),F2()) ) proof let x1, x2, y1, y2 be Element of F1(); :: according to YELLOW18:def_1 ::_thesis: ( the ObjectMap of F3() . (x1,y1) = the ObjectMap of F3() . (x2,y2) implies ( x1 = x2 & y1 = y2 ) ) reconsider a1 = x1, a2 = x2, b1 = y1, b2 = y2 as object of F1() ; assume the ObjectMap of F3() . (x1,y1) = the ObjectMap of F3() . (x2,y2) ; ::_thesis: ( x1 = x2 & y1 = y2 ) then A6: [(F3() . b1),(F3() . a1)] = the ObjectMap of F3() . (x2,y2) by FUNCTOR0:23 .= [(F3() . b2),(F3() . a2)] by FUNCTOR0:23 ; then A7: F3() . a1 = F3() . a2 by XTUPLE_0:1; A8: F3() . b1 = F3() . b2 by A6, XTUPLE_0:1; A9: F4(a1) = F3() . a2 by A1, A7; A10: F4(b1) = F3() . b2 by A1, A8; A11: F4(a1) = F4(a2) by A1, A9; F4(b1) = F4(b2) by A1, A10; hence ( x1 = x2 & y1 = y2 ) by A3, A11; ::_thesis: verum end; now__::_thesis:_for_i_being_set_st_i_in_[:_the_carrier_of_F1(),_the_carrier_of_F1():]_holds_ the_MorphMap_of_F3()_._i_is_one-to-one let i be set ; ::_thesis: ( i in [: the carrier of F1(), the carrier of F1():] implies the MorphMap of F3() . i is one-to-one ) assume i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: the MorphMap of F3() . i is one-to-one then consider a, b being set such that A12: a in the carrier of F1() and A13: b in the carrier of F1() and A14: i = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A12, A13; A15: ( <^a,b^> <> {} implies <^(F3() . b),(F3() . a)^> <> {} ) by FUNCTOR0:def_19; Morph-Map (F3(),a,b) is one-to-one proof let x, y be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not x in proj1 (Morph-Map (F3(),a,b)) or not y in proj1 (Morph-Map (F3(),a,b)) or not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) assume that A16: x in dom (Morph-Map (F3(),a,b)) and A17: y in dom (Morph-Map (F3(),a,b)) ; ::_thesis: ( not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) reconsider f = x, g = y as Morphism of a,b by A16, A17; A18: F3() . f = (Morph-Map (F3(),a,b)) . x by A15, A16, FUNCTOR0:def_16; A19: F3() . g = (Morph-Map (F3(),a,b)) . y by A15, A16, FUNCTOR0:def_16; A20: F5(a,b,f) = (Morph-Map (F3(),a,b)) . x by A2, A16, A18; F5(a,b,g) = (Morph-Map (F3(),a,b)) . y by A2, A16, A19; hence ( not (Morph-Map (F3(),a,b)) . x = (Morph-Map (F3(),a,b)) . y or x = y ) by A4, A16, A20; ::_thesis: verum end; hence the MorphMap of F3() . i is one-to-one by A14; ::_thesis: verum end; hence the MorphMap of F3() is "1-1" by MSUALG_3:1; :: according to FUNCTOR0:def_30 ::_thesis: F3() is V187(F1(),F2()) reconsider G = the MorphMap of F3() as ManySortedFunction of the Arrows of F1(), the Arrows of F2() * the ObjectMap of F3() by FUNCTOR0:def_4; thus F3() is full :: according to FUNCTOR0:def_34 ::_thesis: F3() is onto proof take G ; :: according to FUNCTOR0:def_32 ::_thesis: ( G = the MorphMap of F3() & G is "onto" ) thus G = the MorphMap of F3() ; ::_thesis: G is "onto" let i be set ; :: according to MSUALG_3:def_3 ::_thesis: ( not i in [: the carrier of F1(), the carrier of F1():] or proj2 (G . i) = ( the ObjectMap of F3() (#) the Arrows of F2()) . i ) assume i in [: the carrier of F1(), the carrier of F1():] ; ::_thesis: proj2 (G . i) = ( the ObjectMap of F3() (#) the Arrows of F2()) . i then reconsider ab = i as Element of [: the carrier of F1(), the carrier of F1():] ; G . ab is Function of ( the Arrows of F1() . ab),(( the Arrows of F2() * the ObjectMap of F3()) . ab) ; hence rng (G . i) c= ( the Arrows of F2() * the ObjectMap of F3()) . i by RELAT_1:def_19; :: according to XBOOLE_0:def_10 ::_thesis: ( the ObjectMap of F3() (#) the Arrows of F2()) . i c= proj2 (G . i) consider a, b being set such that A21: a in the carrier of F1() and A22: b in the carrier of F1() and A23: ab = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F1() by A21, A22; A24: the ObjectMap of F3() . ab = the ObjectMap of F3() . (a,b) by A23 .= [(F3() . b),(F3() . a)] by FUNCTOR0:23 ; then A25: ( the Arrows of F2() * the ObjectMap of F3()) . ab = <^(F3() . b),(F3() . a)^> by FUNCT_2:15; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in ( the ObjectMap of F3() (#) the Arrows of F2()) . i or x in proj2 (G . i) ) assume A26: x in ( the Arrows of F2() * the ObjectMap of F3()) . i ; ::_thesis: x in proj2 (G . i) then reconsider f = x as Morphism of (F3() . b),(F3() . a) by A24, FUNCT_2:15; consider c, d being object of F1(), g being Morphism of c,d such that A27: F3() . a = F4(c) and A28: F3() . b = F4(d) and A29: <^c,d^> <> {} and A30: f = F5(c,d,g) by A5, A25, A26; A31: F4(a) = F4(c) by A1, A27; A32: F4(b) = F4(d) by A1, A28; A33: a = c by A3, A31; A34: b = d by A3, A32; A35: f = F3() . g by A2, A29, A30 .= (Morph-Map (F3(),c,d)) . g by A25, A26, A29, A33, A34, FUNCTOR0:def_16 ; dom (Morph-Map (F3(),a,b)) = <^a,b^> by A25, A26, FUNCT_2:def_1; hence x in proj2 (G . i) by A23, A29, A33, A34, A35, FUNCT_1:def_3; ::_thesis: verum end; thus rng the ObjectMap of F3() c= [: the carrier of F2(), the carrier of F2():] ; :: according to FUNCTOR0:def_7,FUNCT_2:def_3,XBOOLE_0:def_10 ::_thesis: [: the carrier of F2(), the carrier of F2():] c= rng the ObjectMap of F3() let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in [: the carrier of F2(), the carrier of F2():] or x in rng the ObjectMap of F3() ) assume x in [: the carrier of F2(), the carrier of F2():] ; ::_thesis: x in rng the ObjectMap of F3() then consider a, b being set such that A36: a in the carrier of F2() and A37: b in the carrier of F2() and A38: x = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of F2() by A36, A37; consider c, c9 being object of F1(), g being Morphism of c,c9 such that A39: a = F4(c) and a = F4(c9) and <^c,c9^> <> {} and idm a = F5(c,c9,g) by A5; consider d, d9 being object of F1(), h being Morphism of d,d9 such that A40: b = F4(d) and b = F4(d9) and <^d,d9^> <> {} and idm b = F5(d,d9,h) by A5; [d,c] in [: the carrier of F1(), the carrier of F1():] by ZFMISC_1:def_2; then A41: [d,c] in dom the ObjectMap of F3() by FUNCT_2:def_1; the ObjectMap of F3() . [d,c] = the ObjectMap of F3() . (d,c) .= [(F3() . c),(F3() . d)] by FUNCTOR0:23 .= [a,(F3() . d)] by A1, A39 .= x by A1, A38, A40 ; hence x in rng the ObjectMap of F3() by A41, FUNCT_1:def_3; ::_thesis: verum end; scheme :: YELLOW18:sch 13 CatAntiIsomorphism{ F1() -> category, F2() -> category, F3( set ) -> set , F4( set , set , set ) -> set } : F1(),F2() are_anti-isomorphic provided A1: ex F being contravariant Functor of F1(),F2() st ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) ) ) and A2: for a, b being object of F1() st F3(a) = F3(b) holds a = b and A3: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F4(a,b,f) = F4(a,b,g) holds f = g and A4: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( b = F3(c) & a = F3(d) & <^c,d^> <> {} & f = F4(c,d,g) ) proof consider F being contravariant Functor of F1(),F2() such that A5: for a being object of F1() holds F . a = F3(a) and A6: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F4(a,b,f) by A1; A7: for a, b being object of F1() st F3(a) = F3(b) holds a = b by A2; A8: for a, b being object of F1() st <^a,b^> <> {} holds for f, g being Morphism of a,b st F4(a,b,f) = F4(a,b,g) holds f = g by A3; A9: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of F1() ex g being Morphism of c,d st ( b = F3(c) & a = F3(d) & <^c,d^> <> {} & f = F4(c,d,g) ) by A4; take F ; :: according to FUNCTOR0:def_40 ::_thesis: ( F is bijective & F is contravariant ) thus F is bijective from YELLOW18:sch_12(A5, A6, A7, A8, A9); ::_thesis: F is contravariant thus F is contravariant ; ::_thesis: verum end; definition let A, B be category; predA,B are_equivalent means :: YELLOW18:def 2 ex F being covariant Functor of A,B ex G being covariant Functor of B,A st ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ); reflexivity for A being category ex F, G being covariant Functor of A,A st ( G * F, id A are_naturally_equivalent & F * G, id A are_naturally_equivalent ) proof let A be category; ::_thesis: ex F, G being covariant Functor of A,A st ( G * F, id A are_naturally_equivalent & F * G, id A are_naturally_equivalent ) take id A ; ::_thesis: ex G being covariant Functor of A,A st ( G * (id A), id A are_naturally_equivalent & (id A) * G, id A are_naturally_equivalent ) take id A ; ::_thesis: ( (id A) * (id A), id A are_naturally_equivalent & (id A) * (id A), id A are_naturally_equivalent ) thus ( (id A) * (id A), id A are_naturally_equivalent & (id A) * (id A), id A are_naturally_equivalent ) by FUNCTOR3:4; ::_thesis: verum end; symmetry for A, B being category st ex F being covariant Functor of A,B ex G being covariant Functor of B,A st ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ) holds ex F being covariant Functor of B,A ex G being covariant Functor of A,B st ( G * F, id B are_naturally_equivalent & F * G, id A are_naturally_equivalent ) ; end; :: deftheorem defines are_equivalent YELLOW18:def_2_:_ for A, B being category holds ( A,B are_equivalent iff ex F being covariant Functor of A,B ex G being covariant Functor of B,A st ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ) ); theorem Th3: :: YELLOW18:3 for A, B, C being non empty reflexive AltGraph for F1, F2 being feasible FunctorStr over A,B for G1, G2 being FunctorStr over B,C st FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) & FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) holds G1 * F1 = G2 * F2 proof let A, B, C be non empty reflexive AltGraph ; ::_thesis: for F1, F2 being feasible FunctorStr over A,B for G1, G2 being FunctorStr over B,C st FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) & FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) holds G1 * F1 = G2 * F2 let F1, F2 be feasible FunctorStr over A,B; ::_thesis: for G1, G2 being FunctorStr over B,C st FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) & FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) holds G1 * F1 = G2 * F2 let G1, G2 be FunctorStr over B,C; ::_thesis: ( FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) & FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) implies G1 * F1 = G2 * F2 ) assume that A1: FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) and A2: FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) ; ::_thesis: G1 * F1 = G2 * F2 A3: the ObjectMap of (G1 * F1) = the ObjectMap of G1 * the ObjectMap of F1 by FUNCTOR0:def_36; the MorphMap of (G1 * F1) = ( the MorphMap of G1 * the ObjectMap of F1) ** the MorphMap of F1 by FUNCTOR0:def_36; hence G1 * F1 = G2 * F2 by A1, A2, A3, FUNCTOR0:def_36; ::_thesis: verum end; theorem Th4: :: YELLOW18:4 for A, B, C being category st A,B are_equivalent & B,C are_equivalent holds A,C are_equivalent proof let A, B, C be category; ::_thesis: ( A,B are_equivalent & B,C are_equivalent implies A,C are_equivalent ) given F1 being covariant Functor of A,B, G1 being covariant Functor of B,A such that A1: G1 * F1, id A are_naturally_equivalent and A2: F1 * G1, id B are_naturally_equivalent ; :: according to YELLOW18:def_2 ::_thesis: ( not B,C are_equivalent or A,C are_equivalent ) given F2 being covariant Functor of B,C, G2 being covariant Functor of C,B such that A3: G2 * F2, id B are_naturally_equivalent and A4: F2 * G2, id C are_naturally_equivalent ; :: according to YELLOW18:def_2 ::_thesis: A,C are_equivalent take F = F2 * F1; :: according to YELLOW18:def_2 ::_thesis: ex G being covariant Functor of C,A st ( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent ) take G = G1 * G2; ::_thesis: ( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent ) FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F1, the MorphMap of F1 #) ; then A5: FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) * F1 = G1 * F1 by Th3; FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) = FunctorStr(# the ObjectMap of G2, the MorphMap of G2 #) ; then A6: FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) * G2 = F2 * G2 by Th3; A7: G1 * (id B) = FunctorStr(# the ObjectMap of G1, the MorphMap of G1 #) by FUNCTOR3:5; A8: F2 * (id B) = FunctorStr(# the ObjectMap of F2, the MorphMap of F2 #) by FUNCTOR3:5; A9: G * F2 = G1 * (G2 * F2) by FUNCTOR0:32; A10: F * G1 = F2 * (F1 * G1) by FUNCTOR0:32; A11: (G * F2) * F1 = G * F by FUNCTOR0:32; A12: (F * G1) * G2 = F * G by FUNCTOR0:32; A13: G * F2,G1 * (id B) are_naturally_equivalent by A3, A9, FUNCTOR3:35; A14: F * G1,F2 * (id B) are_naturally_equivalent by A2, A10, FUNCTOR3:35; A15: G * F,G1 * F1 are_naturally_equivalent by A5, A7, A11, A13, FUNCTOR3:36; F * G,F2 * G2 are_naturally_equivalent by A6, A8, A12, A14, FUNCTOR3:36; hence ( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent ) by A1, A4, A15, FUNCTOR3:33; ::_thesis: verum end; theorem Th5: :: YELLOW18:5 for A, B being category st A,B are_isomorphic holds A,B are_equivalent proof let A, B be category; ::_thesis: ( A,B are_isomorphic implies A,B are_equivalent ) assume A,B are_isomorphic ; ::_thesis: A,B are_equivalent then consider F being Functor of A,B such that A1: ( F is bijective & F is covariant ) by FUNCTOR0:def_39; reconsider F = F as covariant Functor of A,B by A1; consider G being Functor of B,A such that A2: G = F " and A3: ( G is bijective & G is covariant ) by A1, FUNCTOR0:48; reconsider G = G as covariant Functor of B,A by A3; take F ; :: according to YELLOW18:def_2 ::_thesis: ex G being covariant Functor of B,A st ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ) take G ; ::_thesis: ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ) thus ( G * F, id A are_naturally_equivalent & F * G, id B are_naturally_equivalent ) by A1, A2, FUNCTOR1:18, FUNCTOR1:19; ::_thesis: verum end; scheme :: YELLOW18:sch 14 NatTransLambda{ F1() -> category, F2() -> category, F3() -> covariant Functor of F1(),F2(), F4() -> covariant Functor of F1(),F2(), F5( set ) -> set } : ex t being natural_transformation of F3(),F4() st ( F3() is_naturally_transformable_to F4() & ( for a being object of F1() holds t ! a = F5(a) ) ) provided A1: for a being object of F1() holds F5(a) in <^(F3() . a),(F4() . a)^> and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b for g1 being Morphism of (F3() . a),(F4() . a) st g1 = F5(a) holds for g2 being Morphism of (F3() . b),(F4() . b) st g2 = F5(b) holds g2 * (F3() . f) = (F4() . f) * g1 proof consider t being ManySortedSet of the carrier of F1() such that A3: for a being Element of F1() holds t . a = F5(a) from PBOOLE:sch_5(); A4: F3() is_transformable_to F4() proof let a be object of F1(); :: according to FUNCTOR2:def_1 ::_thesis: not <^(F3() . a),(F4() . a)^> = {} thus not <^(F3() . a),(F4() . a)^> = {} by A1; ::_thesis: verum end; now__::_thesis:_for_a_being_object_of_F1()_holds_t_._a_is_Morphism_of_(F3()_._a),(F4()_._a) let a be object of F1(); ::_thesis: t . a is Morphism of (F3() . a),(F4() . a) t . a = F5(a) by A3; hence t . a is Morphism of (F3() . a),(F4() . a) by A1; ::_thesis: verum end; then reconsider t = t as transformation of F3(),F4() by A4, FUNCTOR2:def_2; A5: now__::_thesis:_for_a_being_object_of_F1()_holds_t_!_a_=_F5(a) let a be object of F1(); ::_thesis: t ! a = F5(a) t . a = F5(a) by A3; hence t ! a = F5(a) by A4, FUNCTOR2:def_4; ::_thesis: verum end; A6: F3() is_naturally_transformable_to F4() proof thus F3() is_transformable_to F4() by A4; :: according to FUNCTOR2:def_6 ::_thesis: ex b1 being transformation of F3(),F4() st for b2, b3 being Element of the carrier of F1() holds ( <^b2,b3^> = {} or for b4 being Element of <^b2,b3^> holds (b1 ! b3) * (F3() . b4) = (F4() . b4) * (b1 ! b2) ) take t ; ::_thesis: for b1, b2 being Element of the carrier of F1() holds ( <^b1,b2^> = {} or for b3 being Element of <^b1,b2^> holds (t ! b2) * (F3() . b3) = (F4() . b3) * (t ! b1) ) let a, b be object of F1(); ::_thesis: ( <^a,b^> = {} or for b1 being Element of <^a,b^> holds (t ! b) * (F3() . b1) = (F4() . b1) * (t ! a) ) A7: t ! a = F5(a) by A5; t ! b = F5(b) by A5; hence ( <^a,b^> = {} or for b1 being Element of <^a,b^> holds (t ! b) * (F3() . b1) = (F4() . b1) * (t ! a) ) by A2, A7; ::_thesis: verum end; now__::_thesis:_for_a,_b_being_object_of_F1()_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_(t_!_b)_*_(F3()_._f)_=_(F4()_._f)_*_(t_!_a) let a, b be object of F1(); ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds (t ! b) * (F3() . f) = (F4() . f) * (t ! a) ) A8: t ! a = F5(a) by A5; t ! b = F5(b) by A5; hence ( <^a,b^> <> {} implies for f being Morphism of a,b holds (t ! b) * (F3() . f) = (F4() . f) * (t ! a) ) by A2, A8; ::_thesis: verum end; then t is natural_transformation of F3(),F4() by A6, FUNCTOR2:def_7; hence ex t being natural_transformation of F3(),F4() st ( F3() is_naturally_transformable_to F4() & ( for a being object of F1() holds t ! a = F5(a) ) ) by A5, A6; ::_thesis: verum end; scheme :: YELLOW18:sch 15 NatEquivalenceLambda{ F1() -> category, F2() -> category, F3() -> covariant Functor of F1(),F2(), F4() -> covariant Functor of F1(),F2(), F5( set ) -> set } : ex t being natural_equivalence of F3(),F4() st ( F3(),F4() are_naturally_equivalent & ( for a being object of F1() holds t ! a = F5(a) ) ) provided A1: for a being object of F1() holds ( F5(a) in <^(F3() . a),(F4() . a)^> & <^(F4() . a),(F3() . a)^> <> {} & ( for f being Morphism of (F3() . a),(F4() . a) st f = F5(a) holds f is iso ) ) and A2: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b for g1 being Morphism of (F3() . a),(F4() . a) st g1 = F5(a) holds for g2 being Morphism of (F3() . b),(F4() . b) st g2 = F5(b) holds g2 * (F3() . f) = (F4() . f) * g1 proof A3: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b for g1 being Morphism of (F3() . a),(F4() . a) st g1 = F5(a) holds for g2 being Morphism of (F3() . b),(F4() . b) st g2 = F5(b) holds g2 * (F3() . f) = (F4() . f) * g1 by A2; A4: for a being object of F1() holds F5(a) in <^(F3() . a),(F4() . a)^> by A1; consider t being natural_transformation of F3(),F4() such that A5: F3() is_naturally_transformable_to F4() and A6: for a being object of F1() holds t ! a = F5(a) from YELLOW18:sch_14(A4, A3); A7: F4() is_transformable_to F3() proof let a be object of F1(); :: according to FUNCTOR2:def_1 ::_thesis: not <^(F4() . a),(F3() . a)^> = {} thus not <^(F4() . a),(F3() . a)^> = {} by A1; ::_thesis: verum end; A8: F3(),F4() are_naturally_equivalent proof thus F3() is_naturally_transformable_to F4() by A5; :: according to FUNCTOR3:def_4 ::_thesis: ( F4() is_transformable_to F3() & ex b1 being natural_transformation of F3(),F4() st for b2 being Element of the carrier of F1() holds b1 ! b2 is iso ) thus F4() is_transformable_to F3() by A7; ::_thesis: ex b1 being natural_transformation of F3(),F4() st for b2 being Element of the carrier of F1() holds b1 ! b2 is iso take t ; ::_thesis: for b1 being Element of the carrier of F1() holds t ! b1 is iso let a be object of F1(); ::_thesis: t ! a is iso t ! a = F5(a) by A6; hence t ! a is iso by A1; ::_thesis: verum end; now__::_thesis:_for_a_being_object_of_F1()_holds_t_!_a_is_iso let a be object of F1(); ::_thesis: t ! a is iso t ! a = F5(a) by A6; hence t ! a is iso by A1; ::_thesis: verum end; then t is natural_equivalence of F3(),F4() by A8, FUNCTOR3:def_5; hence ex t being natural_equivalence of F3(),F4() st ( F3(),F4() are_naturally_equivalent & ( for a being object of F1() holds t ! a = F5(a) ) ) by A6, A8; ::_thesis: verum end; begin definition let C1, C2 be non empty AltCatStr ; predC1,C2 are_opposite means :Def3: :: YELLOW18:def 3 ( the carrier of C2 = the carrier of C1 & the Arrows of C2 = ~ the Arrows of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) ); symmetry for C1, C2 being non empty AltCatStr st the carrier of C2 = the carrier of C1 & the Arrows of C2 = ~ the Arrows of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) holds ( the carrier of C1 = the carrier of C2 & the Arrows of C1 = ~ the Arrows of C2 & ( for a, b, c being object of C2 for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) ) ) proof let C1, C2 be non empty AltCatStr ; ::_thesis: ( the carrier of C2 = the carrier of C1 & the Arrows of C2 = ~ the Arrows of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) implies ( the carrier of C1 = the carrier of C2 & the Arrows of C1 = ~ the Arrows of C2 & ( for a, b, c being object of C2 for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) ) ) ) assume that A1: the carrier of C2 = the carrier of C1 and A2: the Arrows of C2 = ~ the Arrows of C1 and A3: for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ; ::_thesis: ( the carrier of C1 = the carrier of C2 & the Arrows of C1 = ~ the Arrows of C2 & ( for a, b, c being object of C2 for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) ) ) thus the carrier of C1 = the carrier of C2 by A1; ::_thesis: ( the Arrows of C1 = ~ the Arrows of C2 & ( for a, b, c being object of C2 for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) ) ) dom the Arrows of C1 = [: the carrier of C1, the carrier of C1:] by PARTFUN1:def_2; hence the Arrows of C1 = ~ the Arrows of C2 by A2, FUNCT_4:52; ::_thesis: for a, b, c being object of C2 for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) let a, b, c be object of C2; ::_thesis: for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) let a9, b9, c9 be object of C1; ::_thesis: ( a9 = a & b9 = b & c9 = c implies the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) ) assume that A4: a9 = a and A5: b9 = b and A6: c9 = c ; ::_thesis: the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) A7: the Comp of C2 . (c,b,a) = ~ ( the Comp of C1 . (a9,b9,c9)) by A3, A4, A5, A6; dom ( the Comp of C1 . (a9,b9,c9)) c= [:( the Arrows of C1 . (b9,c9)),( the Arrows of C1 . (a9,b9)):] ; hence the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C2 . (c,b,a)) by A7, FUNCT_4:52; ::_thesis: verum end; end; :: deftheorem Def3 defines are_opposite YELLOW18:def_3_:_ for C1, C2 being non empty AltCatStr holds ( C1,C2 are_opposite iff ( the carrier of C2 = the carrier of C1 & the Arrows of C2 = ~ the Arrows of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) ) ); theorem Th6: :: YELLOW18:6 for A, B being non empty AltCatStr st A,B are_opposite holds for a being object of A holds a is object of B proof let A, B be non empty AltCatStr ; ::_thesis: ( A,B are_opposite implies for a being object of A holds a is object of B ) assume the carrier of A = the carrier of B ; :: according to YELLOW18:def_3 ::_thesis: ( not the Arrows of B = ~ the Arrows of A or ex a, b, c being object of A ex a9, b9, c9 being object of B st ( a9 = a & b9 = b & c9 = c & not the Comp of B . (a9,b9,c9) = ~ ( the Comp of A . (c,b,a)) ) or for a being object of A holds a is object of B ) hence ( not the Arrows of B = ~ the Arrows of A or ex a, b, c being object of A ex a9, b9, c9 being object of B st ( a9 = a & b9 = b & c9 = c & not the Comp of B . (a9,b9,c9) = ~ ( the Comp of A . (c,b,a)) ) or for a being object of A holds a is object of B ) ; ::_thesis: verum end; theorem Th7: :: YELLOW18:7 for A, B being non empty AltCatStr st A,B are_opposite holds for a, b being object of A for a9, b9 being object of B st a9 = a & b9 = b holds <^a,b^> = <^b9,a9^> proof let A, B be non empty AltCatStr ; ::_thesis: ( A,B are_opposite implies for a, b being object of A for a9, b9 being object of B st a9 = a & b9 = b holds <^a,b^> = <^b9,a9^> ) assume that the carrier of B = the carrier of A and A1: the Arrows of B = ~ the Arrows of A ; :: according to YELLOW18:def_3 ::_thesis: ( ex a, b, c being object of A ex a9, b9, c9 being object of B st ( a9 = a & b9 = b & c9 = c & not the Comp of B . (a9,b9,c9) = ~ ( the Comp of A . (c,b,a)) ) or for a, b being object of A for a9, b9 being object of B st a9 = a & b9 = b holds <^a,b^> = <^b9,a9^> ) assume for a, b, c being object of A for a9, b9, c9 being object of B st a9 = a & b9 = b & c9 = c holds the Comp of B . (a9,b9,c9) = ~ ( the Comp of A . (c,b,a)) ; ::_thesis: for a, b being object of A for a9, b9 being object of B st a9 = a & b9 = b holds <^a,b^> = <^b9,a9^> let a, b be object of A; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds <^a,b^> = <^b9,a9^> let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies <^a,b^> = <^b9,a9^> ) thus ( a9 = a & b9 = b implies <^a,b^> = <^b9,a9^> ) by A1, ALTCAT_2:6; ::_thesis: verum end; theorem :: YELLOW18:8 for A, B being non empty AltCatStr st A,B are_opposite holds for a, b being object of A for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b holds f is Morphism of b9,a9 by Th7; theorem Th9: :: YELLOW18:9 for C1, C2 being non empty transitive AltCatStr holds ( C1,C2 are_opposite iff ( the carrier of C2 = the carrier of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) ) ) proof let C1, C2 be non empty transitive AltCatStr ; ::_thesis: ( C1,C2 are_opposite iff ( the carrier of C2 = the carrier of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) ) ) A1: dom the Arrows of C1 = [: the carrier of C1, the carrier of C1:] by PARTFUN1:def_2; A2: dom the Arrows of C2 = [: the carrier of C2, the carrier of C2:] by PARTFUN1:def_2; hereby ::_thesis: ( the carrier of C2 = the carrier of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) implies C1,C2 are_opposite ) assume A3: C1,C2 are_opposite ; ::_thesis: ( the carrier of C2 = the carrier of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) ) hence the carrier of C2 = the carrier of C1 by Def3; ::_thesis: for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) let a, b, c be object of C1; ::_thesis: for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) let a9, b9, c9 be object of C2; ::_thesis: ( a9 = a & b9 = b & c9 = c implies ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) assume that A4: a9 = a and A5: b9 = b and A6: c9 = c ; ::_thesis: ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) A7: [a,b] in dom the Arrows of C1 by A1, ZFMISC_1:def_2; A8: [b,c] in dom the Arrows of C1 by A1, ZFMISC_1:def_2; thus A9: <^a,b^> = (~ the Arrows of C1) . (b,a) by A7, FUNCT_4:def_2 .= <^b9,a9^> by A3, A4, A5, Def3 ; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) A10: <^b,c^> = (~ the Arrows of C1) . (c,b) by A8, FUNCT_4:def_2 .= <^c9,b9^> by A3, A5, A6, Def3 ; A11: the Comp of C2 . (c9,b9,a9) = ~ ( the Comp of C1 . (a,b,c)) by A3, A4, A5, A6, Def3; assume that A12: <^a,b^> <> {} and A13: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let g be Morphism of b,c; ::_thesis: for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f <^a,c^> <> {} by A12, A13, ALTCAT_1:def_2; then dom ( the Comp of C1 . (a,b,c)) = [:( the Arrows of C1 . (b,c)),( the Arrows of C1 . (a,b)):] by FUNCT_2:def_1; then A14: [g,f] in dom ( the Comp of C1 . (a,b,c)) by A12, A13, ZFMISC_1:def_2; let f9 be Morphism of b9,a9; ::_thesis: for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let g9 be Morphism of c9,b9; ::_thesis: ( f9 = f & g9 = g implies f9 * g9 = g * f ) assume that A15: f9 = f and A16: g9 = g ; ::_thesis: f9 * g9 = g * f thus f9 * g9 = (~ ( the Comp of C1 . (a,b,c))) . (f,g) by A9, A10, A11, A12, A13, A15, A16, ALTCAT_1:def_8 .= ( the Comp of C1 . (a,b,c)) . (g,f) by A14, FUNCT_4:def_2 .= g * f by A12, A13, ALTCAT_1:def_8 ; ::_thesis: verum end; assume that A17: the carrier of C2 = the carrier of C1 and A18: for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ; ::_thesis: C1,C2 are_opposite thus the carrier of C2 = the carrier of C1 by A17; :: according to YELLOW18:def_3 ::_thesis: ( the Arrows of C2 = ~ the Arrows of C1 & ( for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) ) A19: now__::_thesis:_for_x_being_set_holds_ (_(_x_in_dom_the_Arrows_of_C2_implies_ex_z,_y_being_set_st_ (_x_=_[y,z]_&_[z,y]_in_dom_the_Arrows_of_C1_)_)_&_(_ex_z,_y_being_set_st_ (_x_=_[y,z]_&_[z,y]_in_dom_the_Arrows_of_C1_)_implies_x_in_dom_the_Arrows_of_C2_)_) let x be set ; ::_thesis: ( ( x in dom the Arrows of C2 implies ex z, y being set st ( x = [y,z] & [z,y] in dom the Arrows of C1 ) ) & ( ex z, y being set st ( x = [y,z] & [z,y] in dom the Arrows of C1 ) implies x in dom the Arrows of C2 ) ) hereby ::_thesis: ( ex z, y being set st ( x = [y,z] & [z,y] in dom the Arrows of C1 ) implies x in dom the Arrows of C2 ) assume x in dom the Arrows of C2 ; ::_thesis: ex z, y being set st ( x = [y,z] & [z,y] in dom the Arrows of C1 ) then consider y, z being set such that A20: y in the carrier of C1 and A21: z in the carrier of C1 and A22: [y,z] = x by A17, ZFMISC_1:def_2; take z = z; ::_thesis: ex y being set st ( x = [y,z] & [z,y] in dom the Arrows of C1 ) take y = y; ::_thesis: ( x = [y,z] & [z,y] in dom the Arrows of C1 ) thus ( x = [y,z] & [z,y] in dom the Arrows of C1 ) by A1, A20, A21, A22, ZFMISC_1:def_2; ::_thesis: verum end; given z, y being set such that A23: x = [y,z] and A24: [z,y] in dom the Arrows of C1 ; ::_thesis: x in dom the Arrows of C2 A25: z in the carrier of C1 by A24, ZFMISC_1:87; y in the carrier of C1 by A24, ZFMISC_1:87; hence x in dom the Arrows of C2 by A2, A17, A23, A25, ZFMISC_1:def_2; ::_thesis: verum end; now__::_thesis:_for_y,_z_being_set_st_[y,z]_in_dom_the_Arrows_of_C1_holds_ the_Arrows_of_C2_._(z,y)_=_the_Arrows_of_C1_._(y,z) let y, z be set ; ::_thesis: ( [y,z] in dom the Arrows of C1 implies the Arrows of C2 . (z,y) = the Arrows of C1 . (y,z) ) assume [y,z] in dom the Arrows of C1 ; ::_thesis: the Arrows of C2 . (z,y) = the Arrows of C1 . (y,z) then reconsider a = y, b = z as object of C1 by ZFMISC_1:87; reconsider a9 = a, b9 = b as object of C2 by A17; thus the Arrows of C2 . (z,y) = <^b9,a9^> .= <^a,b^> by A18 .= the Arrows of C1 . (y,z) ; ::_thesis: verum end; hence the Arrows of C2 = ~ the Arrows of C1 by A19, FUNCT_4:def_2; ::_thesis: for a, b, c being object of C1 for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) let a, b, c be object of C1; ::_thesis: for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) let a9, b9, c9 be object of C2; ::_thesis: ( a9 = a & b9 = b & c9 = c implies the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) ) assume that A26: a9 = a and A27: b9 = b and A28: c9 = c ; ::_thesis: the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) A29: <^a9,b9^> = <^b,a^> by A18, A26, A27; A30: <^b9,c9^> = <^c,b^> by A18, A27, A28; A31: <^a9,c9^> = <^c,a^> by A18, A26, A28; ( [:<^b,a^>,<^c,b^>:] <> {} implies ( <^b,a^> <> {} & <^c,b^> <> {} ) ) by ZFMISC_1:90; then ( [:<^b,a^>,<^c,b^>:] <> {} implies <^c,a^> <> {} ) by ALTCAT_1:def_2; then A32: dom ( the Comp of C1 . (c,b,a)) = [:( the Arrows of C1 . (b,a)),( the Arrows of C1 . (c,b)):] by FUNCT_2:def_1; ( [:<^c,b^>,<^b,a^>:] <> {} implies ( <^b,a^> <> {} & <^c,b^> <> {} ) ) by ZFMISC_1:90; then ( [:<^c,b^>,<^b,a^>:] <> {} implies <^c,a^> <> {} ) by ALTCAT_1:def_2; then A33: dom ( the Comp of C2 . (a9,b9,c9)) = [:( the Arrows of C2 . (b9,c9)),( the Arrows of C2 . (a9,b9)):] by A29, A30, A31, FUNCT_2:def_1; A34: now__::_thesis:_for_x_being_set_holds_ (_(_x_in_dom_(_the_Comp_of_C2_._(a9,b9,c9))_implies_ex_z,_y_being_set_st_ (_x_=_[y,z]_&_[z,y]_in_dom_(_the_Comp_of_C1_._(c,b,a))_)_)_&_(_ex_z,_y_being_set_st_ (_x_=_[y,z]_&_[z,y]_in_dom_(_the_Comp_of_C1_._(c,b,a))_)_implies_x_in_dom_(_the_Comp_of_C2_._(a9,b9,c9))_)_) let x be set ; ::_thesis: ( ( x in dom ( the Comp of C2 . (a9,b9,c9)) implies ex z, y being set st ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) ) & ( ex z, y being set st ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) implies x in dom ( the Comp of C2 . (a9,b9,c9)) ) ) hereby ::_thesis: ( ex z, y being set st ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) implies x in dom ( the Comp of C2 . (a9,b9,c9)) ) assume x in dom ( the Comp of C2 . (a9,b9,c9)) ; ::_thesis: ex z, y being set st ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) then consider y, z being set such that A35: y in <^b9,c9^> and A36: z in <^a9,b9^> and A37: [y,z] = x by ZFMISC_1:def_2; take z = z; ::_thesis: ex y being set st ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) take y = y; ::_thesis: ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) thus ( x = [y,z] & [z,y] in dom ( the Comp of C1 . (c,b,a)) ) by A29, A30, A32, A35, A36, A37, ZFMISC_1:def_2; ::_thesis: verum end; given z, y being set such that A38: x = [y,z] and A39: [z,y] in dom ( the Comp of C1 . (c,b,a)) ; ::_thesis: x in dom ( the Comp of C2 . (a9,b9,c9)) A40: z in <^b,a^> by A39, ZFMISC_1:87; y in <^c,b^> by A39, ZFMISC_1:87; hence x in dom ( the Comp of C2 . (a9,b9,c9)) by A29, A30, A33, A38, A40, ZFMISC_1:def_2; ::_thesis: verum end; now__::_thesis:_for_y,_z_being_set_st_[y,z]_in_dom_(_the_Comp_of_C1_._(c,b,a))_holds_ (_the_Comp_of_C2_._(a9,b9,c9))_._(z,y)_=_(_the_Comp_of_C1_._(c,b,a))_._(y,z) let y, z be set ; ::_thesis: ( [y,z] in dom ( the Comp of C1 . (c,b,a)) implies ( the Comp of C2 . (a9,b9,c9)) . (z,y) = ( the Comp of C1 . (c,b,a)) . (y,z) ) assume A41: [y,z] in dom ( the Comp of C1 . (c,b,a)) ; ::_thesis: ( the Comp of C2 . (a9,b9,c9)) . (z,y) = ( the Comp of C1 . (c,b,a)) . (y,z) then A42: y in <^b,a^> by ZFMISC_1:87; A43: z in <^c,b^> by A41, ZFMISC_1:87; reconsider f = y as Morphism of b,a by A41, ZFMISC_1:87; reconsider g = z as Morphism of c,b by A41, ZFMISC_1:87; reconsider f9 = y as Morphism of a9,b9 by A18, A26, A27, A42; reconsider g9 = z as Morphism of b9,c9 by A18, A27, A28, A43; thus ( the Comp of C2 . (a9,b9,c9)) . (z,y) = g9 * f9 by A29, A30, A42, A43, ALTCAT_1:def_8 .= f * g by A18, A26, A27, A28, A42, A43 .= ( the Comp of C1 . (c,b,a)) . (y,z) by A42, A43, ALTCAT_1:def_8 ; ::_thesis: verum end; hence the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C1 . (c,b,a)) by A34, FUNCT_4:def_2; ::_thesis: verum end; theorem Th10: :: YELLOW18:10 for A, B being category st A,B are_opposite holds for a being object of A for b being object of B st a = b holds idm a = idm b proof let A, B be category; ::_thesis: ( A,B are_opposite implies for a being object of A for b being object of B st a = b holds idm a = idm b ) assume A1: A,B are_opposite ; ::_thesis: for a being object of A for b being object of B st a = b holds idm a = idm b let a be object of A; ::_thesis: for b being object of B st a = b holds idm a = idm b let b be object of B; ::_thesis: ( a = b implies idm a = idm b ) assume A2: a = b ; ::_thesis: idm a = idm b reconsider i = idm b as Morphism of a,a by A1, A2, Th9; now__::_thesis:_for_c_being_object_of_A_st_<^a,c^>_<>_{}_holds_ for_f_being_Morphism_of_a,c_holds_f_*_i_=_f let c be object of A; ::_thesis: ( <^a,c^> <> {} implies for f being Morphism of a,c holds f * i = f ) assume A3: <^a,c^> <> {} ; ::_thesis: for f being Morphism of a,c holds f * i = f let f be Morphism of a,c; ::_thesis: f * i = f reconsider d = c as object of B by A1, Th9; A4: <^a,c^> = <^d,b^> by A1, A2, Th9; reconsider g = f as Morphism of d,b by A1, A2, Th9; thus f * i = (idm b) * g by A1, A2, A3, Th9 .= f by A3, A4, ALTCAT_1:20 ; ::_thesis: verum end; hence idm a = idm b by ALTCAT_1:def_17; ::_thesis: verum end; theorem Th11: :: YELLOW18:11 for A, B being non empty transitive AltCatStr st A,B are_opposite & A is associative holds B is associative proof let A, B be non empty transitive AltCatStr ; ::_thesis: ( A,B are_opposite & A is associative implies B is associative ) assume that A1: A,B are_opposite and A2: A is associative ; ::_thesis: B is associative deffunc H1( set , set , set , set , set ) -> set = ( the Comp of A . (\$3,\$2,\$1)) . (\$4,\$5); A3: now__::_thesis:_for_a,_b,_c_being_object_of_B_st_<^a,b^>_<>_{}_&_<^b,c^>_<>_{}_holds_ for_f_being_Morphism_of_a,b for_g_being_Morphism_of_b,c_holds_g_*_f_=_H1(a,b,c,f,g) let a, b, c be object of B; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) ) assume that A4: <^a,b^> <> {} and A5: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) let g be Morphism of b,c; ::_thesis: g * f = H1(a,b,c,f,g) reconsider a9 = a, b9 = b, c9 = c as object of A by A1, Th6; A6: <^a,b^> = <^b9,a9^> by A1, Th7; A7: <^b,c^> = <^c9,b9^> by A1, Th7; reconsider f9 = f as Morphism of b9,a9 by A1, Th7; reconsider g9 = g as Morphism of c9,b9 by A1, Th7; thus g * f = f9 * g9 by A1, A4, A5, Th9 .= H1(a,b,c,f,g) by A4, A5, A6, A7, ALTCAT_1:def_8 ; ::_thesis: verum end; A8: now__::_thesis:_for_a,_b,_c,_d_being_object_of_B for_f,_g,_h_being_set_st_f_in_<^a,b^>_&_g_in_<^b,c^>_&_h_in_<^c,d^>_holds_ H1(a,c,d,H1(a,b,c,f,g),h)_=_H1(a,b,d,f,H1(b,c,d,g,h)) let a, b, c, d be object of B; ::_thesis: for f, g, h being set st f in <^a,b^> & g in <^b,c^> & h in <^c,d^> holds H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) let f, g, h be set ; ::_thesis: ( f in <^a,b^> & g in <^b,c^> & h in <^c,d^> implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ) reconsider a9 = a, b9 = b, c9 = c, d9 = d as object of A by A1, Def3; assume A9: f in <^a,b^> ; ::_thesis: ( g in <^b,c^> & h in <^c,d^> implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ) then A10: f in <^b9,a9^> by A1, Th9; reconsider f9 = f as Morphism of b9,a9 by A1, A9, Th9; assume A11: g in <^b,c^> ; ::_thesis: ( h in <^c,d^> implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ) then A12: g in <^c9,b9^> by A1, Th9; reconsider g9 = g as Morphism of c9,b9 by A1, A11, Th9; assume A13: h in <^c,d^> ; ::_thesis: H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) then A14: h in <^d9,c9^> by A1, Th9; reconsider h9 = h as Morphism of d9,c9 by A1, A13, Th9; A15: <^c9,a9^> <> {} by A10, A12, ALTCAT_1:def_2; A16: <^d9,b9^> <> {} by A12, A14, ALTCAT_1:def_2; thus H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,c,d,f9 * g9,h) by A10, A12, ALTCAT_1:def_8 .= (f9 * g9) * h9 by A14, A15, ALTCAT_1:def_8 .= f9 * (g9 * h9) by A2, A10, A12, A14, ALTCAT_1:21 .= H1(a,b,d,f,g9 * h9) by A10, A16, ALTCAT_1:def_8 .= H1(a,b,d,f,H1(b,c,d,g,h)) by A12, A14, ALTCAT_1:def_8 ; ::_thesis: verum end; thus B is associative from YELLOW18:sch_2(A3, A8); ::_thesis: verum end; theorem Th12: :: YELLOW18:12 for A, B being non empty transitive AltCatStr st A,B are_opposite & A is with_units holds B is with_units proof let A, B be non empty transitive AltCatStr ; ::_thesis: ( A,B are_opposite & A is with_units implies B is with_units ) assume A1: A,B are_opposite ; ::_thesis: ( not A is with_units or B is with_units ) assume A is with_units ; ::_thesis: B is with_units then reconsider A = A as non empty transitive with_units AltCatStr ; deffunc H1( set , set , set , set , set ) -> set = ( the Comp of A . (\$3,\$2,\$1)) . (\$4,\$5); A2: now__::_thesis:_for_a,_b,_c_being_object_of_B_st_<^a,b^>_<>_{}_&_<^b,c^>_<>_{}_holds_ for_f_being_Morphism_of_a,b for_g_being_Morphism_of_b,c_holds_g_*_f_=_H1(a,b,c,f,g) let a, b, c be object of B; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) ) assume that A3: <^a,b^> <> {} and A4: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) let g be Morphism of b,c; ::_thesis: g * f = H1(a,b,c,f,g) reconsider a9 = a, b9 = b, c9 = c as object of A by A1, Th6; A5: <^a,b^> = <^b9,a9^> by A1, Th7; A6: <^b,c^> = <^c9,b9^> by A1, Th7; reconsider f9 = f as Morphism of b9,a9 by A1, Th7; reconsider g9 = g as Morphism of c9,b9 by A1, Th7; thus g * f = f9 * g9 by A1, A3, A4, Th9 .= H1(a,b,c,f,g) by A3, A4, A5, A6, ALTCAT_1:def_8 ; ::_thesis: verum end; A7: now__::_thesis:_for_a_being_object_of_B_ex_f_being_set_st_ (_f_in_<^a,a^>_&_(_for_b_being_object_of_B for_g_being_set_st_g_in_<^a,b^>_holds_ H1(a,a,b,f,g)_=_g_)_) let a be object of B; ::_thesis: ex f being set st ( f in <^a,a^> & ( for b being object of B for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g ) ) reconsider a9 = a as object of A by A1, Th6; reconsider f = idm a9 as set ; take f = f; ::_thesis: ( f in <^a,a^> & ( for b being object of B for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g ) ) idm a9 in <^a9,a9^> ; hence f in <^a,a^> by A1, Th7; ::_thesis: for b being object of B for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g let b be object of B; ::_thesis: for g being set st g in <^a,b^> holds H1(a,a,b,f,g) = g let g be set ; ::_thesis: ( g in <^a,b^> implies H1(a,a,b,f,g) = g ) reconsider b9 = b as object of A by A1, Th6; assume A8: g in <^a,b^> ; ::_thesis: H1(a,a,b,f,g) = g then A9: g in <^b9,a9^> by A1, Th7; reconsider g9 = g as Morphism of b9,a9 by A1, A8, Th7; thus H1(a,a,b,f,g) = (idm a9) * g9 by A9, ALTCAT_1:def_8 .= g by A9, ALTCAT_1:20 ; ::_thesis: verum end; A10: now__::_thesis:_for_a_being_object_of_B_ex_f_being_set_st_ (_f_in_<^a,a^>_&_(_for_b_being_object_of_B for_g_being_set_st_g_in_<^b,a^>_holds_ H1(b,a,a,g,f)_=_g_)_) let a be object of B; ::_thesis: ex f being set st ( f in <^a,a^> & ( for b being object of B for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g ) ) reconsider a9 = a as object of A by A1, Th6; reconsider f = idm a9 as set ; take f = f; ::_thesis: ( f in <^a,a^> & ( for b being object of B for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g ) ) idm a9 in <^a9,a9^> ; hence f in <^a,a^> by A1, Th7; ::_thesis: for b being object of B for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g let b be object of B; ::_thesis: for g being set st g in <^b,a^> holds H1(b,a,a,g,f) = g let g be set ; ::_thesis: ( g in <^b,a^> implies H1(b,a,a,g,f) = g ) reconsider b9 = b as object of A by A1, Th6; assume A11: g in <^b,a^> ; ::_thesis: H1(b,a,a,g,f) = g then A12: g in <^a9,b9^> by A1, Th7; reconsider g9 = g as Morphism of a9,b9 by A1, A11, Th7; thus H1(b,a,a,g,f) = g9 * (idm a9) by A12, ALTCAT_1:def_8 .= g by A12, ALTCAT_1:def_17 ; ::_thesis: verum end; thus B is with_units from YELLOW18:sch_3(A2, A7, A10); ::_thesis: verum end; theorem Th13: :: YELLOW18:13 for C, C1, C2 being non empty AltCatStr st C,C1 are_opposite holds ( C,C2 are_opposite iff AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) proof let C, C1, C2 be non empty AltCatStr ; ::_thesis: ( C,C1 are_opposite implies ( C,C2 are_opposite iff AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) ) assume that A1: the carrier of C1 = the carrier of C and A2: the Arrows of C1 = ~ the Arrows of C and A3: for a, b, c being object of C for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds the Comp of C1 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) ; :: according to YELLOW18:def_3 ::_thesis: ( C,C2 are_opposite iff AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) thus ( C,C2 are_opposite implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) ::_thesis: ( AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) implies C,C2 are_opposite ) proof assume that A4: the carrier of C2 = the carrier of C and A5: the Arrows of C2 = ~ the Arrows of C and A6: for a, b, c being object of C for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) ; :: according to YELLOW18:def_3 ::_thesis: AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) A7: dom the Comp of C1 = [: the carrier of C1, the carrier of C1, the carrier of C1:] by PARTFUN1:def_2; A8: dom the Comp of C2 = [: the carrier of C2, the carrier of C2, the carrier of C2:] by PARTFUN1:def_2; now__::_thesis:_for_x_being_set_st_x_in_[:_the_carrier_of_C,_the_carrier_of_C,_the_carrier_of_C:]_holds_ the_Comp_of_C1_._x_=_the_Comp_of_C2_._x let x be set ; ::_thesis: ( x in [: the carrier of C, the carrier of C, the carrier of C:] implies the Comp of C1 . x = the Comp of C2 . x ) assume x in [: the carrier of C, the carrier of C, the carrier of C:] ; ::_thesis: the Comp of C1 . x = the Comp of C2 . x then consider a, b, c being set such that A9: a in the carrier of C and A10: b in the carrier of C and A11: c in the carrier of C and A12: x = [a,b,c] by MCART_1:68; reconsider a = a, b = b, c = c as object of C by A9, A10, A11; reconsider a1 = a, b1 = b, c1 = c as object of C1 by A1; reconsider a2 = a, b2 = b, c2 = c as object of C2 by A4; A13: the Comp of C1 . (a1,b1,c1) = ~ ( the Comp of C . (c,b,a)) by A3; the Comp of C2 . (a2,b2,c2) = ~ ( the Comp of C . (c,b,a)) by A6; hence the Comp of C1 . x = the Comp of C2 . (a2,b2,c2) by A12, A13, MULTOP_1:def_1 .= the Comp of C2 . x by A12, MULTOP_1:def_1 ; ::_thesis: verum end; hence AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) by A1, A2, A4, A5, A7, A8, FUNCT_1:2; ::_thesis: verum end; assume A14: AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ; ::_thesis: C,C2 are_opposite hence ( the carrier of C2 = the carrier of C & the Arrows of C2 = ~ the Arrows of C ) by A1, A2; :: according to YELLOW18:def_3 ::_thesis: for a, b, c being object of C for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) let a, b, c be object of C; ::_thesis: for a9, b9, c9 being object of C2 st a9 = a & b9 = b & c9 = c holds the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) let a9, b9, c9 be object of C2; ::_thesis: ( a9 = a & b9 = b & c9 = c implies the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) ) thus ( a9 = a & b9 = b & c9 = c implies the Comp of C2 . (a9,b9,c9) = ~ ( the Comp of C . (c,b,a)) ) by A3, A14; ::_thesis: verum end; definition let C be non empty transitive AltCatStr ; funcC opp -> non empty transitive strict AltCatStr means :Def4: :: YELLOW18:def 4 C,it are_opposite ; uniqueness for b1, b2 being non empty transitive strict AltCatStr st C,b1 are_opposite & C,b2 are_opposite holds b1 = b2 by Th13; existence ex b1 being non empty transitive strict AltCatStr st C,b1 are_opposite proof deffunc H1( set , set ) -> set = the Arrows of C . (\$2,\$1); deffunc H2( set , set , set , set , set ) -> set = ( the Comp of C . (\$3,\$2,\$1)) . (\$4,\$5); A1: now__::_thesis:_for_a,_b,_c_being_Element_of_C for_f,_g_being_set_st_f_in_H1(a,b)_&_g_in_H1(b,c)_holds_ H2(a,b,c,f,g)_in_H1(a,c) let a, b, c be Element of C; ::_thesis: for f, g being set st f in H1(a,b) & g in H1(b,c) holds H2(a,b,c,f,g) in H1(a,c) let f, g be set ; ::_thesis: ( f in H1(a,b) & g in H1(b,c) implies H2(a,b,c,f,g) in H1(a,c) ) reconsider a9 = a, b9 = b, c9 = c as object of C ; assume A2: f in H1(a,b) ; ::_thesis: ( g in H1(b,c) implies H2(a,b,c,f,g) in H1(a,c) ) then A3: f in <^b9,a9^> ; reconsider f9 = f as Morphism of b9,a9 by A2; assume A4: g in H1(b,c) ; ::_thesis: H2(a,b,c,f,g) in H1(a,c) then A5: g in <^c9,b9^> ; reconsider g9 = g as Morphism of c9,b9 by A4; A6: <^c9,a9^> <> {} by A3, A5, ALTCAT_1:def_2; H2(a,b,c,f,g) = f9 * g9 by A2, A4, ALTCAT_1:def_8; hence H2(a,b,c,f,g) in H1(a,c) by A6; ::_thesis: verum end; ex C1 being non empty transitive strict AltCatStr st ( the carrier of C1 = the carrier of C & ( for a, b being object of C1 holds <^a,b^> = H1(a,b) ) & ( for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H2(a,b,c,f,g) ) ) from YELLOW18:sch_1(A1); then consider C1 being non empty transitive strict AltCatStr such that A7: the carrier of C1 = the carrier of C and A8: for a, b being object of C1 holds <^a,b^> = the Arrows of C . (b,a) and A9: for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = ( the Comp of C . (c,b,a)) . (f,g) ; take C1 ; ::_thesis: C,C1 are_opposite now__::_thesis:_for_a,_b,_c_being_object_of_C for_a9,_b9,_c9_being_object_of_C1_st_a9_=_a_&_b9_=_b_&_c9_=_c_holds_ (_<^a,b^>_=_<^b9,a9^>_&_(_<^a,b^>_<>_{}_&_<^b,c^>_<>_{}_implies_for_f_being_Morphism_of_a,b for_g_being_Morphism_of_b,c for_f9_being_Morphism_of_b9,a9 for_g9_being_Morphism_of_c9,b9_st_f9_=_f_&_g9_=_g_holds_ f9_*_g9_=_g_*_f_)_) let a, b, c be object of C; ::_thesis: for a9, b9, c9 being object of C1 st a9 = a & b9 = b & c9 = c holds ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) let a9, b9, c9 be object of C1; ::_thesis: ( a9 = a & b9 = b & c9 = c implies ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) ) assume that A10: a9 = a and A11: b9 = b and A12: c9 = c ; ::_thesis: ( <^a,b^> = <^b9,a9^> & ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) ) thus A13: <^a,b^> = <^b9,a9^> by A8, A10, A11; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f ) A14: <^b,c^> = <^c9,b9^> by A8, A11, A12; assume that A15: <^a,b^> <> {} and A16: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let g be Morphism of b,c; ::_thesis: for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let f9 be Morphism of b9,a9; ::_thesis: for g9 being Morphism of c9,b9 st f9 = f & g9 = g holds f9 * g9 = g * f let g9 be Morphism of c9,b9; ::_thesis: ( f9 = f & g9 = g implies f9 * g9 = g * f ) assume that A17: f9 = f and A18: g9 = g ; ::_thesis: f9 * g9 = g * f thus f9 * g9 = ( the Comp of C . (a,b,c)) . (g,f) by A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 .= g * f by A15, A16, ALTCAT_1:def_8 ; ::_thesis: verum end; hence C,C1 are_opposite by A7, Th9; ::_thesis: verum end; end; :: deftheorem Def4 defines opp YELLOW18:def_4_:_ for C being non empty transitive AltCatStr for b2 being non empty transitive strict AltCatStr holds ( b2 = C opp iff C,b2 are_opposite ); registration let C be non empty transitive associative AltCatStr ; clusterC opp -> non empty transitive strict associative ; coherence C opp is associative proof C,C opp are_opposite by Def4; hence C opp is associative by Th11; ::_thesis: verum end; end; registration let C be non empty transitive with_units AltCatStr ; clusterC opp -> non empty transitive strict with_units ; coherence C opp is with_units proof C,C opp are_opposite by Def4; hence C opp is with_units by Th12; ::_thesis: verum end; end; definition let A, B be category; assume B1: A,B are_opposite ; deffunc H1( set ) -> set = \$1; deffunc H2( set , set , set ) -> set = \$3; A1: for a being object of A holds H1(a) is object of B by B1, Def3; A2: now__::_thesis:_for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_H2(a,b,f)_in_the_Arrows_of_B_._(H1(b),H1(a)) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds H2(a,b,f) in the Arrows of B . (H1(b),H1(a)) ) assume A3: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds H2(a,b,f) in the Arrows of B . (H1(b),H1(a)) let f be Morphism of a,b; ::_thesis: H2(a,b,f) in the Arrows of B . (H1(b),H1(a)) reconsider a9 = a, b9 = b as object of B by A1; <^a,b^> = <^b9,a9^> by B1, Th9 .= the Arrows of B . (b,a) ; hence H2(a,b,f) in the Arrows of B . (H1(b),H1(a)) by A3; ::_thesis: verum end; A4: for a, b, c being object of A st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of B st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of b9,a9 for g9 being Morphism of c9,b9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = f9 * g9 by B1, Th9; A5: for a being object of A for a9 being object of B st a9 = H1(a) holds H2(a,a, idm a) = idm a9 by B1, Th10; func dualizing-func (A,B) -> strict contravariant Functor of A,B means :Def5: :: YELLOW18:def 5 ( ( for a being object of A holds it . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds it . f = f ) ); existence ex b1 being strict contravariant Functor of A,B st ( ( for a being object of A holds b1 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds b1 . f = f ) ) proof thus ex F being strict contravariant Functor of A,B st ( ( for a being object of A holds F . a = H1(a) ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = H2(a,b,f) ) ) from YELLOW18:sch_9(A1, A2, A4, A5); ::_thesis: verum end; uniqueness for b1, b2 being strict contravariant Functor of A,B st ( for a being object of A holds b1 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds b1 . f = f ) & ( for a being object of A holds b2 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds b2 . f = f ) holds b1 = b2 proof let F, G be strict contravariant Functor of A,B; ::_thesis: ( ( for a being object of A holds F . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = f ) & ( for a being object of A holds G . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds G . f = f ) implies F = G ) assume that A6: for a being object of A holds F . a = a and A7: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = f and A8: for a being object of A holds G . a = a and A9: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds G . f = f ; ::_thesis: F = G A10: now__::_thesis:_for_a_being_object_of_A_holds_F_._a_=_G_._a let a be object of A; ::_thesis: F . a = G . a thus F . a = a by A6 .= G . a by A8 ; ::_thesis: verum end; now__::_thesis:_for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_F_._f_=_G_._f let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds F . f = G . f ) assume A11: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds F . f = G . f let f be Morphism of a,b; ::_thesis: F . f = G . f thus F . f = f by A7, A11 .= G . f by A9, A11 ; ::_thesis: verum end; hence F = G by A10, Th2; ::_thesis: verum end; end; :: deftheorem Def5 defines dualizing-func YELLOW18:def_5_:_ for A, B being category st A,B are_opposite holds for b3 being strict contravariant Functor of A,B holds ( b3 = dualizing-func (A,B) iff ( ( for a being object of A holds b3 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds b3 . f = f ) ) ); theorem Th14: :: YELLOW18:14 for A, B being category st A,B are_opposite holds (dualizing-func (A,B)) * (dualizing-func (B,A)) = id B proof let A, B be category; ::_thesis: ( A,B are_opposite implies (dualizing-func (A,B)) * (dualizing-func (B,A)) = id B ) assume A1: A,B are_opposite ; ::_thesis: (dualizing-func (A,B)) * (dualizing-func (B,A)) = id B A2: now__::_thesis:_for_a_being_object_of_B_holds_((dualizing-func_(A,B))_*_(dualizing-func_(B,A)))_._a_=_(id_B)_._a let a be object of B; ::_thesis: ((dualizing-func (A,B)) * (dualizing-func (B,A))) . a = (id B) . a thus ((dualizing-func (A,B)) * (dualizing-func (B,A))) . a = (dualizing-func (A,B)) . ((dualizing-func (B,A)) . a) by FUNCTOR0:33 .= (dualizing-func (B,A)) . a by A1, Def5 .= a by A1, Def5 .= (id B) . a by FUNCTOR0:29 ; ::_thesis: verum end; now__::_thesis:_for_a,_b_being_object_of_B_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_((dualizing-func_(A,B))_*_(dualizing-func_(B,A)))_._f_=_(id_B)_._f let a, b be object of B; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds ((dualizing-func (A,B)) * (dualizing-func (B,A))) . f = (id B) . f ) assume A3: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds ((dualizing-func (A,B)) * (dualizing-func (B,A))) . f = (id B) . f then A4: <^((dualizing-func (B,A)) . b),((dualizing-func (B,A)) . a)^> <> {} by FUNCTOR0:def_19; let f be Morphism of a,b; ::_thesis: ((dualizing-func (A,B)) * (dualizing-func (B,A))) . f = (id B) . f thus ((dualizing-func (A,B)) * (dualizing-func (B,A))) . f = (dualizing-func (A,B)) . ((dualizing-func (B,A)) . f) by A3, FUNCTOR3:7 .= (dualizing-func (B,A)) . f by A1, A4, Def5 .= f by A1, A3, Def5 .= (id B) . f by A3, FUNCTOR0:31 ; ::_thesis: verum end; hence (dualizing-func (A,B)) * (dualizing-func (B,A)) = id B by A2, Th1; ::_thesis: verum end; theorem Th15: :: YELLOW18:15 for A, B being category st A,B are_opposite holds dualizing-func (A,B) is bijective proof let A, B be category; ::_thesis: ( A,B are_opposite implies dualizing-func (A,B) is bijective ) assume A1: A,B are_opposite ; ::_thesis: dualizing-func (A,B) is bijective set F = dualizing-func (A,B); deffunc H1( set ) -> set = \$1; deffunc H2( set , set , set ) -> set = \$3; A2: for a being object of A holds (dualizing-func (A,B)) . a = H1(a) by A1, Def5; A3: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (dualizing-func (A,B)) . f = H2(a,b,f) by A1, Def5; A4: for a, b being object of A st H1(a) = H1(b) holds a = b ; A5: for a, b being object of A st <^a,b^> <> {} holds for f, g being Morphism of a,b st H2(a,b,f) = H2(a,b,g) holds f = g ; A6: now__::_thesis:_for_a,_b_being_object_of_B_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_ex_c,_d_being_object_of_A_ex_g_being_Morphism_of_c,d_st_ (_b_=_H1(c)_&_a_=_H1(d)_&_<^c,d^>_<>_{}_&_f_=_H2(c,d,g)_) let a, b be object of B; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b ex c, d being object of A ex g being Morphism of c,d st ( b = H1(c) & a = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) ) reconsider a9 = a, b9 = b as object of A by A1, Def3; A7: <^a,b^> = <^b9,a9^> by A1, Th9; assume A8: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b ex c, d being object of A ex g being Morphism of c,d st ( b = H1(c) & a = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) let f be Morphism of a,b; ::_thesis: ex c, d being object of A ex g being Morphism of c,d st ( b = H1(c) & a = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) thus ex c, d being object of A ex g being Morphism of c,d st ( b = H1(c) & a = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) by A7, A8; ::_thesis: verum end; dualizing-func (A,B) is bijective from YELLOW18:sch_12(A2, A3, A4, A5, A6); hence dualizing-func (A,B) is bijective ; ::_thesis: verum end; registration let A be category; cluster dualizing-func (A,(A opp)) -> strict contravariant bijective ; coherence dualizing-func (A,(A opp)) is bijective proof A,A opp are_opposite by Def4; hence dualizing-func (A,(A opp)) is bijective by Th15; ::_thesis: verum end; cluster dualizing-func ((A opp),A) -> strict contravariant bijective ; coherence dualizing-func ((A opp),A) is bijective proof A,A opp are_opposite by Def4; hence dualizing-func ((A opp),A) is bijective by Th15; ::_thesis: verum end; end; theorem :: YELLOW18:16 for A, B being category st A,B are_opposite holds A,B are_anti-isomorphic proof let A, B be category; ::_thesis: ( A,B are_opposite implies A,B are_anti-isomorphic ) assume A,B are_opposite ; ::_thesis: A,B are_anti-isomorphic then dualizing-func (A,B) is bijective by Th15; hence A,B are_anti-isomorphic by FUNCTOR0:def_40; ::_thesis: verum end; theorem Th17: :: YELLOW18:17 for A, B, C being category st A,B are_opposite holds ( A,C are_isomorphic iff B,C are_anti-isomorphic ) proof let A, B, C be category; ::_thesis: ( A,B are_opposite implies ( A,C are_isomorphic iff B,C are_anti-isomorphic ) ) assume A,B are_opposite ; ::_thesis: ( A,C are_isomorphic iff B,C are_anti-isomorphic ) then A1: dualizing-func (A,B) is bijective by Th15; hereby ::_thesis: ( B,C are_anti-isomorphic implies A,C are_isomorphic ) assume A,C are_isomorphic ; ::_thesis: B,C are_anti-isomorphic then consider F being Functor of C,A such that A2: ( F is bijective & F is covariant ) by FUNCTOR0:def_39; reconsider F = F as covariant Functor of C,A by A2; ( (dualizing-func (A,B)) * F is bijective & (dualizing-func (A,B)) * F is contravariant ) by A1, A2, FUNCTOR1:12; hence B,C are_anti-isomorphic by FUNCTOR0:def_40; ::_thesis: verum end; assume B,C are_anti-isomorphic ; ::_thesis: A,C are_isomorphic then consider F being Functor of B,C such that A3: ( F is bijective & F is contravariant ) by FUNCTOR0:def_40; reconsider F = F as contravariant Functor of B,C by A3; ( F * (dualizing-func (A,B)) is bijective & F * (dualizing-func (A,B)) is covariant ) by A1, A3, FUNCTOR1:12; hence A,C are_isomorphic by FUNCTOR0:def_39; ::_thesis: verum end; theorem :: YELLOW18:18 for A, B, C, D being category st A,B are_opposite & C,D are_opposite & A,C are_isomorphic holds B,D are_isomorphic proof let A, B, C, D be category; ::_thesis: ( A,B are_opposite & C,D are_opposite & A,C are_isomorphic implies B,D are_isomorphic ) assume that A1: A,B are_opposite and A2: C,D are_opposite ; ::_thesis: ( not A,C are_isomorphic or B,D are_isomorphic ) ( A,C are_isomorphic implies B,C are_anti-isomorphic ) by A1, Th17; hence ( not A,C are_isomorphic or B,D are_isomorphic ) by A2, Th17; ::_thesis: verum end; theorem :: YELLOW18:19 for A, B, C, D being category st A,B are_opposite & C,D are_opposite & A,C are_anti-isomorphic holds B,D are_anti-isomorphic proof let A, B, C, D be category; ::_thesis: ( A,B are_opposite & C,D are_opposite & A,C are_anti-isomorphic implies B,D are_anti-isomorphic ) assume that A1: A,B are_opposite and A2: C,D are_opposite ; ::_thesis: ( not A,C are_anti-isomorphic or B,D are_anti-isomorphic ) ( A,C are_anti-isomorphic implies B,C are_isomorphic ) by A1, Th17; hence ( not A,C are_anti-isomorphic or B,D are_anti-isomorphic ) by A2, Th17; ::_thesis: verum end; Lm1: now__::_thesis:_for_A,_B_being_category_st_A,B_are_opposite_holds_ for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_&_<^b,a^>_<>_{}_holds_ for_a9,_b9_being_object_of_B_st_a9_=_a_&_b9_=_b_holds_ for_f_being_Morphism_of_a,b for_f9_being_Morphism_of_b9,a9_st_f9_=_f_holds_ (_(_f_is_retraction_implies_f9_is_coretraction_)_&_(_f_is_coretraction_implies_f9_is_retraction_)_) let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) ) assume A1: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) ) assume that A2: <^a,b^> <> {} and A3: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) ) assume that A4: a9 = a and A5: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) let f be Morphism of a,b; ::_thesis: for f9 being Morphism of b9,a9 st f9 = f holds ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) let f9 be Morphism of b9,a9; ::_thesis: ( f9 = f implies ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) ) assume A6: f9 = f ; ::_thesis: ( ( f is retraction implies f9 is coretraction ) & ( f is coretraction implies f9 is retraction ) ) thus ( f is retraction implies f9 is coretraction ) ::_thesis: ( f is coretraction implies f9 is retraction ) proof given g being Morphism of b,a such that A7: g is_right_inverse_of f ; :: according to ALTCAT_3:def_2 ::_thesis: f9 is coretraction reconsider g9 = g as Morphism of a9,b9 by A1, A4, A5, Th7; take g9 ; :: according to ALTCAT_3:def_3 ::_thesis: g9 is_left_inverse_of f9 f * g = idm b by A7, ALTCAT_3:def_1 .= idm b9 by A1, A5, Th10 ; hence g9 * f9 = idm b9 by A1, A2, A3, A4, A5, A6, Th9; :: according to ALTCAT_3:def_1 ::_thesis: verum end; thus ( f is coretraction implies f9 is retraction ) ::_thesis: verum proof given g being Morphism of b,a such that A8: g is_left_inverse_of f ; :: according to ALTCAT_3:def_3 ::_thesis: f9 is retraction reconsider g9 = g as Morphism of a9,b9 by A1, A4, A5, Th7; take g9 ; :: according to ALTCAT_3:def_2 ::_thesis: f9 is_left_inverse_of g9 g * f = idm a by A8, ALTCAT_3:def_1 .= idm a9 by A1, A4, Th10 ; hence f9 * g9 = idm a9 by A1, A2, A3, A4, A5, A6, Th9; :: according to ALTCAT_3:def_1 ::_thesis: verum end; end; theorem :: YELLOW18:20 for A, B being category st A,B are_opposite holds for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) proof let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) ) assume A1: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) ) assume that A2: <^a,b^> <> {} and A3: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) ) assume that A4: a9 = a and A5: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) A6: <^b9,a9^> = <^a,b^> by A1, A4, A5, Th9; <^a9,b9^> = <^b,a^> by A1, A4, A5, Th9; hence for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is retraction iff f9 is coretraction ) by A1, A2, A3, A4, A5, A6, Lm1; ::_thesis: verum end; theorem :: YELLOW18:21 for A, B being category st A,B are_opposite holds for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) proof let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) ) assume A1: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) ) assume that A2: <^a,b^> <> {} and A3: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) ) assume that A4: a9 = a and A5: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) A6: <^b9,a9^> = <^a,b^> by A1, A4, A5, Th9; <^a9,b9^> = <^b,a^> by A1, A4, A5, Th9; hence for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is coretraction iff f9 is retraction ) by A1, A2, A3, A4, A5, A6, Lm1; ::_thesis: verum end; theorem Th22: :: YELLOW18:22 for A, B being category st A,B are_opposite holds for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " proof let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " ) assume A1: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " ) assume that A2: <^a,b^> <> {} and A3: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " ) assume that A4: a9 = a and A5: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " A6: <^b9,a9^> = <^a,b^> by A1, A4, A5, Th9; A7: <^a9,b9^> = <^b,a^> by A1, A4, A5, Th9; let f be Morphism of a,b; ::_thesis: for f9 being Morphism of b9,a9 st f9 = f & f is retraction & f is coretraction holds f9 " = f " let f9 be Morphism of b9,a9; ::_thesis: ( f9 = f & f is retraction & f is coretraction implies f9 " = f " ) assume that A8: f9 = f and A9: ( f is retraction & f is coretraction ) ; ::_thesis: f9 " = f " reconsider g = f " as Morphism of a9,b9 by A1, A4, A5, Th7; A10: (f ") * f = idm a by A2, A3, A9, ALTCAT_3:2; A11: f * (f ") = idm b by A2, A3, A9, ALTCAT_3:2; A12: f9 * g = idm a by A1, A2, A3, A4, A5, A8, A10, Th9; A13: g * f9 = idm b by A1, A2, A3, A4, A5, A8, A11, Th9; A14: f9 * g = idm a9 by A1, A4, A12, Th10; A15: g * f9 = idm b9 by A1, A5, A13, Th10; A16: ( f9 is retraction & f9 is coretraction ) by A1, A2, A3, A4, A5, A8, A9, Lm1; A17: g is_left_inverse_of f9 by A15, ALTCAT_3:def_1; g is_right_inverse_of f9 by A14, ALTCAT_3:def_1; hence f9 " = f " by A2, A3, A6, A7, A16, A17, ALTCAT_3:def_4; ::_thesis: verum end; theorem Th23: :: YELLOW18:23 for A, B being category st A,B are_opposite holds for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) proof let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) ) assume A1: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) ) assume that A2: <^a,b^> <> {} and A3: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) ) assume that A4: a9 = a and A5: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) A6: <^b9,a9^> = <^a,b^> by A1, A4, A5, Th9; A7: <^a9,b9^> = <^b,a^> by A1, A4, A5, Th9; now__::_thesis:_for_A,_B_being_category_st_A,B_are_opposite_holds_ for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_&_<^b,a^>_<>_{}_holds_ for_a9,_b9_being_object_of_B_st_a9_=_a_&_b9_=_b_holds_ for_f_being_Morphism_of_a,b for_f9_being_Morphism_of_b9,a9_st_f9_=_f_&_f_is_iso_holds_ f9_is_iso let A, B be category; ::_thesis: ( A,B are_opposite implies for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso ) assume A8: A,B are_opposite ; ::_thesis: for a, b being object of A st <^a,b^> <> {} & <^b,a^> <> {} holds for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso let a, b be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso ) assume that A9: <^a,b^> <> {} and A10: <^b,a^> <> {} ; ::_thesis: for a9, b9 being object of B st a9 = a & b9 = b holds for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso let a9, b9 be object of B; ::_thesis: ( a9 = a & b9 = b implies for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso ) assume that A11: a9 = a and A12: b9 = b ; ::_thesis: for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso let f be Morphism of a,b; ::_thesis: for f9 being Morphism of b9,a9 st f9 = f & f is iso holds f9 is iso let f9 be Morphism of b9,a9; ::_thesis: ( f9 = f & f is iso implies f9 is iso ) assume A13: f9 = f ; ::_thesis: ( f is iso implies f9 is iso ) assume A14: f is iso ; ::_thesis: f9 is iso then A15: f * (f ") = idm b by ALTCAT_3:def_5; A16: (f ") * f = idm a by A14, ALTCAT_3:def_5; ( f is retraction & f is coretraction ) by A14, ALTCAT_3:5; then A17: f9 " = f " by A8, A9, A10, A11, A12, A13, Th22; A18: idm a = idm a9 by A8, A11, Th10; A19: idm b = idm b9 by A8, A12, Th10; A20: f9 * (f9 ") = idm a9 by A8, A9, A10, A11, A12, A13, A16, A17, A18, Th9; (f9 ") * f9 = idm b9 by A8, A9, A10, A11, A12, A13, A15, A17, A19, Th9; hence f9 is iso by A20, ALTCAT_3:def_5; ::_thesis: verum end; hence for f being Morphism of a,b for f9 being Morphism of b9,a9 st f9 = f holds ( f is iso iff f9 is iso ) by A1, A2, A3, A4, A5, A6, A7; ::_thesis: verum end; theorem Th24: :: YELLOW18:24 for A, B, C, D being category st A,B are_opposite & C,D are_opposite holds for F, G being covariant Functor of B,C st F,G are_naturally_equivalent holds ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent proof let A, B, C, D be category; ::_thesis: ( A,B are_opposite & C,D are_opposite implies for F, G being covariant Functor of B,C st F,G are_naturally_equivalent holds ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent ) assume that A1: A,B are_opposite and A2: C,D are_opposite ; ::_thesis: for F, G being covariant Functor of B,C st F,G are_naturally_equivalent holds ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent let F, G be covariant Functor of B,C; ::_thesis: ( F,G are_naturally_equivalent implies ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent ) assume that A3: F is_naturally_transformable_to G and A4: G is_transformable_to F ; :: according to FUNCTOR3:def_4 ::_thesis: ( for b1 being natural_transformation of F,G holds not for b2 being Element of the carrier of B holds b1 ! b2 is iso or ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent ) given t being natural_transformation of F,G such that A5: for a being object of B holds t ! a is iso ; ::_thesis: ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) are_naturally_equivalent set dAB = dualizing-func (A,B); set dCD = dualizing-func (C,D); set dF = ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)); set dG = ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)); A6: F is_transformable_to G by A3, FUNCTOR2:def_6; A7: now__::_thesis:_for_a_being_object_of_A_holds_ (_(((dualizing-func_(C,D))_*_G)_*_(dualizing-func_(A,B)))_._a_=_(dualizing-func_(C,D))_._(G_._((dualizing-func_(A,B))_._a))_&_(((dualizing-func_(C,D))_*_F)_*_(dualizing-func_(A,B)))_._a_=_(dualizing-func_(C,D))_._(F_._((dualizing-func_(A,B))_._a))_&_(((dualizing-func_(C,D))_*_G)_*_(dualizing-func_(A,B)))_._a_=_G_._((dualizing-func_(A,B))_._a)_&_(((dualizing-func_(C,D))_*_F)_*_(dualizing-func_(A,B)))_._a_=_F_._((dualizing-func_(A,B))_._a)_&_<^((((dualizing-func_(C,D))_*_G)_*_(dualizing-func_(A,B)))_._a),((((dualizing-func_(C,D))_*_F)_*_(dualizing-func_(A,B)))_._a)^>_=_<^(F_._((dualizing-func_(A,B))_._a)),(G_._((dualizing-func_(A,B))_._a))^>_) let a be object of A; ::_thesis: ( (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = (dualizing-func (C,D)) . (G . ((dualizing-func (A,B)) . a)) & (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = (dualizing-func (C,D)) . (F . ((dualizing-func (A,B)) . a)) & (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) & (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) & <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> ) A8: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = ((dualizing-func (C,D)) * G) . ((dualizing-func (A,B)) . a) by FUNCTOR0:33; (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = ((dualizing-func (C,D)) * F) . ((dualizing-func (A,B)) . a) by FUNCTOR0:33; hence ( (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = (dualizing-func (C,D)) . (G . ((dualizing-func (A,B)) . a)) & (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = (dualizing-func (C,D)) . (F . ((dualizing-func (A,B)) . a)) ) by A8, FUNCTOR0:33; ::_thesis: ( (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) & (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) & <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> ) hence ( (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) & (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) ) by A2, Def5; ::_thesis: <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> hence <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> by A2, Th9; ::_thesis: verum end; A9: ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) is_transformable_to ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) proof let a be object of A; :: according to FUNCTOR2:def_1 ::_thesis: not <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = {} <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> by A7; hence not <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> = {} by A6, FUNCTOR2:def_1; ::_thesis: verum end; dom t = the carrier of B by PARTFUN1:def_2 .= the carrier of A by A1, Def3 ; then reconsider dt = t as ManySortedSet of the carrier of A by PARTFUN1:def_2, RELAT_1:def_18; dt is transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) proof thus ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) is_transformable_to ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) by A9; :: according to FUNCTOR2:def_2 ::_thesis: for b1 being Element of the carrier of A holds dt . b1 is Element of <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . b1),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . b1)^> let a be object of A; ::_thesis: dt . a is Element of <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> set b = (dualizing-func (A,B)) . a; A10: (dualizing-func (A,B)) . a = a by A1, Def5; t . ((dualizing-func (A,B)) . a) = t ! ((dualizing-func (A,B)) . a) by A6, FUNCTOR2:def_4; hence dt . a is Element of <^((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a)^> by A7, A10; ::_thesis: verum end; then reconsider dt = dt as transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) ; A11: now__::_thesis:_for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_(dt_!_b)_*_((((dualizing-func_(C,D))_*_G)_*_(dualizing-func_(A,B)))_._f)_=_((((dualizing-func_(C,D))_*_F)_*_(dualizing-func_(A,B)))_._f)_*_(dt_!_a) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds (dt ! b) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f) * (dt ! a) ) assume A12: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds (dt ! b) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f) * (dt ! a) let f be Morphism of a,b; ::_thesis: (dt ! b) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f) * (dt ! a) set b9 = (dualizing-func (A,B)) . b; set a9 = (dualizing-func (A,B)) . a; set f9 = (dualizing-func (A,B)) . f; A13: (dualizing-func (A,B)) . a = a by A1, Def5; A14: (dualizing-func (A,B)) . b = b by A1, Def5; then A15: <^((dualizing-func (A,B)) . b),((dualizing-func (A,B)) . a)^> = <^a,b^> by A1, A13, Th9; A16: t ! ((dualizing-func (A,B)) . a) = t . a by A6, A13, FUNCTOR2:def_4; A17: t ! ((dualizing-func (A,B)) . b) = t . b by A6, A14, FUNCTOR2:def_4; A18: dt ! a = t . a by A9, FUNCTOR2:def_4; A19: dt ! b = t . b by A9, FUNCTOR2:def_4; A20: <^(F . ((dualizing-func (A,B)) . b)),(F . ((dualizing-func (A,B)) . a))^> <> {} by A12, A15, FUNCTOR0:def_18; A21: <^(G . ((dualizing-func (A,B)) . b)),(G . ((dualizing-func (A,B)) . a))^> <> {} by A12, A15, FUNCTOR0:def_18; A22: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f = ((dualizing-func (C,D)) * F) . ((dualizing-func (A,B)) . f) by A12, FUNCTOR3:7; A23: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f = ((dualizing-func (C,D)) * G) . ((dualizing-func (A,B)) . f) by A12, FUNCTOR3:7; A24: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f = (dualizing-func (C,D)) . (F . ((dualizing-func (A,B)) . f)) by A12, A15, A22, FUNCTOR3:8; A25: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f = (dualizing-func (C,D)) . (G . ((dualizing-func (A,B)) . f)) by A12, A15, A23, FUNCTOR3:8; A26: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f = F . ((dualizing-func (A,B)) . f) by A2, A20, A24, Def5; A27: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f = G . ((dualizing-func (A,B)) . f) by A2, A21, A25, Def5; A28: <^(F . ((dualizing-func (A,B)) . b)),(G . ((dualizing-func (A,B)) . b))^> <> {} by A6, FUNCTOR2:def_1; A29: <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> <> {} by A6, FUNCTOR2:def_1; A30: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) by A7; A31: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) by A7; A32: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . b = G . ((dualizing-func (A,B)) . b) by A7; A33: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . b = F . ((dualizing-func (A,B)) . b) by A7; hence (dt ! b) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . f) = (G . ((dualizing-func (A,B)) . f)) * (t ! ((dualizing-func (A,B)) . b)) by A2, A17, A19, A21, A27, A28, A30, A32, Th9 .= (t ! ((dualizing-func (A,B)) . a)) * (F . ((dualizing-func (A,B)) . f)) by A3, A12, A15, FUNCTOR2:def_7 .= ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . f) * (dt ! a) by A2, A16, A18, A20, A26, A29, A30, A31, A33, Th9 ; ::_thesis: verum end; thus ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) is_naturally_transformable_to ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) :: according to FUNCTOR3:def_4 ::_thesis: ( ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) is_transformable_to ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) & ex b1 being natural_transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) st for b2 being Element of the carrier of A holds b1 ! b2 is iso ) proof thus ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) is_transformable_to ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) by A9; :: according to FUNCTOR2:def_6 ::_thesis: ex b1 being transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) st for b2, b3 being Element of the carrier of A holds ( <^b2,b3^> = {} or for b4 being Element of <^b2,b3^> holds (b1 ! b3) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . b4) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . b4) * (b1 ! b2) ) take dt ; ::_thesis: for b1, b2 being Element of the carrier of A holds ( <^b1,b2^> = {} or for b3 being Element of <^b1,b2^> holds (dt ! b2) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . b3) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . b3) * (dt ! b1) ) thus for b1, b2 being Element of the carrier of A holds ( <^b1,b2^> = {} or for b3 being Element of <^b1,b2^> holds (dt ! b2) * ((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . b3) = ((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . b3) * (dt ! b1) ) by A11; ::_thesis: verum end; then reconsider dt = dt as natural_transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) by A11, FUNCTOR2:def_7; thus ((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) is_transformable_to ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)) ::_thesis: ex b1 being natural_transformation of ((dualizing-func (C,D)) * G) * (dualizing-func (A,B)),((dualizing-func (C,D)) * F) * (dualizing-func (A,B)) st for b2 being Element of the carrier of A holds b1 ! b2 is iso proof let a be object of A; :: according to FUNCTOR2:def_1 ::_thesis: not <^((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a)^> = {} A34: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) by A7; (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) by A7; then <^((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a)^> = <^(G . ((dualizing-func (A,B)) . a)),(F . ((dualizing-func (A,B)) . a))^> by A2, A34, Th9; hence not <^((((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a),((((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a)^> = {} by A4, FUNCTOR2:def_1; ::_thesis: verum end; take dt ; ::_thesis: for b1 being Element of the carrier of A holds dt ! b1 is iso let a be object of A; ::_thesis: dt ! a is iso A35: (((dualizing-func (C,D)) * G) * (dualizing-func (A,B))) . a = G . ((dualizing-func (A,B)) . a) by A7; A36: (((dualizing-func (C,D)) * F) * (dualizing-func (A,B))) . a = F . ((dualizing-func (A,B)) . a) by A7; A37: (dualizing-func (A,B)) . a = a by A1, Def5; A38: dt ! a = t . a by A9, FUNCTOR2:def_4; A39: t ! ((dualizing-func (A,B)) . a) = t . a by A6, A37, FUNCTOR2:def_4; A40: t ! ((dualizing-func (A,B)) . a) is iso by A5; A41: <^(F . ((dualizing-func (A,B)) . a)),(G . ((dualizing-func (A,B)) . a))^> <> {} by A6, FUNCTOR2:def_1; <^(G . ((dualizing-func (A,B)) . a)),(F . ((dualizing-func (A,B)) . a))^> <> {} by A4, FUNCTOR2:def_1; hence dt ! a is iso by A2, A35, A36, A38, A39, A40, A41, Th23; ::_thesis: verum end; theorem Th25: :: YELLOW18:25 for A, B, C, D being category st A,B are_opposite & C,D are_opposite & A,C are_equivalent holds B,D are_equivalent proof let A, B, C, D be category; ::_thesis: ( A,B are_opposite & C,D are_opposite & A,C are_equivalent implies B,D are_equivalent ) assume that A1: A,B are_opposite and A2: C,D are_opposite ; ::_thesis: ( not A,C are_equivalent or B,D are_equivalent ) given F being covariant Functor of A,C, G being covariant Functor of C,A such that A3: G * F, id A are_naturally_equivalent and A4: F * G, id C are_naturally_equivalent ; :: according to YELLOW18:def_2 ::_thesis: B,D are_equivalent take dF = ((dualizing-func (C,D)) * F) * (dualizing-func (B,A)); :: according to YELLOW18:def_2 ::_thesis: ex G being covariant Functor of D,B st ( G * dF, id B are_naturally_equivalent & dF * G, id D are_naturally_equivalent ) take dG = ((dualizing-func (A,B)) * G) * (dualizing-func (D,C)); ::_thesis: ( dG * dF, id B are_naturally_equivalent & dF * dG, id D are_naturally_equivalent ) A5: G * (id C) = FunctorStr(# the ObjectMap of G, the MorphMap of G #) by FUNCTOR3:5; A6: (dualizing-func (A,B)) * (id A) = dualizing-func (A,B) by FUNCTOR3:5; A7: id C = (dualizing-func (D,C)) * (dualizing-func (C,D)) by A2, Th14; A8: ((dualizing-func (A,B)) * (G * F)) * (dualizing-func (B,A)) = (((dualizing-func (A,B)) * G) * F) * (dualizing-func (B,A)) by FUNCTOR0:32 .= ((dualizing-func (A,B)) * G) * (F * (dualizing-func (B,A))) by FUNCTOR0:32 .= ((dualizing-func (A,B)) * (G * (id C))) * (F * (dualizing-func (B,A))) by A5, Th3 .= (((dualizing-func (A,B)) * G) * (id C)) * (F * (dualizing-func (B,A))) by FUNCTOR0:32 .= (dG * (dualizing-func (C,D))) * (F * (dualizing-func (B,A))) by A7, FUNCTOR0:32 .= dG * ((dualizing-func (C,D)) * (F * (dualizing-func (B,A)))) by FUNCTOR0:32 .= dG * dF by FUNCTOR0:32 ; ((dualizing-func (A,B)) * (id A)) * (dualizing-func (B,A)) = id B by A1, A6, Th14; hence dG * dF, id B are_naturally_equivalent by A1, A3, A8, Th24; ::_thesis: dF * dG, id D are_naturally_equivalent A9: F * (id A) = FunctorStr(# the ObjectMap of F, the MorphMap of F #) by FUNCTOR3:5; A10: (dualizing-func (C,D)) * (id C) = dualizing-func (C,D) by FUNCTOR3:5; A11: id A = (dualizing-func (B,A)) * (dualizing-func (A,B)) by A1, Th14; A12: ((dualizing-func (C,D)) * (F * G)) * (dualizing-func (D,C)) = (((dualizing-func (C,D)) * F) * G) * (dualizing-func (D,C)) by FUNCTOR0:32 .= ((dualizing-func (C,D)) * F) * (G * (dualizing-func (D,C))) by FUNCTOR0:32 .= ((dualizing-func (C,D)) * (F * (id A))) * (G * (dualizing-func (D,C))) by A9, Th3 .= (((dualizing-func (C,D)) * F) * (id A)) * (G * (dualizing-func (D,C))) by FUNCTOR0:32 .= (dF * (dualizing-func (A,B))) * (G * (dualizing-func (D,C))) by A11, FUNCTOR0:32 .= dF * ((dualizing-func (A,B)) * (G * (dualizing-func (D,C)))) by FUNCTOR0:32 .= dF * dG by FUNCTOR0:32 ; ((dualizing-func (C,D)) * (id C)) * (dualizing-func (D,C)) = id D by A2, A10, Th14; hence dF * dG, id D are_naturally_equivalent by A2, A4, A12, Th24; ::_thesis: verum end; definition let A, B be category; predA,B are_dual means :Def6: :: YELLOW18:def 6 A,B opp are_equivalent ; symmetry for A, B being category st A,B opp are_equivalent holds B,A opp are_equivalent proof let A, B be category; ::_thesis: ( A,B opp are_equivalent implies B,A opp are_equivalent ) A1: A,A opp are_opposite by Def4; B,B opp are_opposite by Def4; hence ( A,B opp are_equivalent implies B,A opp are_equivalent ) by A1, Th25; ::_thesis: verum end; end; :: deftheorem Def6 defines are_dual YELLOW18:def_6_:_ for A, B being category holds ( A,B are_dual iff A,B opp are_equivalent ); theorem :: YELLOW18:26 for A, B being category st A,B are_anti-isomorphic holds A,B are_dual proof let A, B be category; ::_thesis: ( A,B are_anti-isomorphic implies A,B are_dual ) A1: B,B opp are_opposite by Def4; assume A,B are_anti-isomorphic ; ::_thesis: A,B are_dual then A,B opp are_isomorphic by A1, Th17; hence A,B opp are_equivalent by Th5; :: according to YELLOW18:def_6 ::_thesis: verum end; theorem :: YELLOW18:27 for A, B, C being category st A,B are_opposite holds ( A,C are_equivalent iff B,C are_dual ) proof let A, B, C be category; ::_thesis: ( A,B are_opposite implies ( A,C are_equivalent iff B,C are_dual ) ) assume A1: A,B are_opposite ; ::_thesis: ( A,C are_equivalent iff B,C are_dual ) A2: ( B,C are_dual iff B,C opp are_equivalent ) by Def6; C,C opp are_opposite by Def4; hence ( A,C are_equivalent iff B,C are_dual ) by A1, A2, Th25; ::_thesis: verum end; theorem :: YELLOW18:28 for A, B, C being category st A,B are_dual & B,C are_equivalent holds A,C are_dual proof let A, B, C be category; ::_thesis: ( A,B are_dual & B,C are_equivalent implies A,C are_dual ) assume that A1: A,B opp are_equivalent and A2: B,C are_equivalent ; :: according to YELLOW18:def_6 ::_thesis: A,C are_dual A3: B,B opp are_opposite by Def4; C,C opp are_opposite by Def4; then B opp ,C opp are_equivalent by A2, A3, Th25; hence A,C opp are_equivalent by A1, Th4; :: according to YELLOW18:def_6 ::_thesis: verum end; theorem :: YELLOW18:29 for A, B, C being category st A,B are_dual & B,C are_dual holds A,C are_equivalent proof let A, B, C be category; ::_thesis: ( A,B are_dual & B,C are_dual implies A,C are_equivalent ) assume that A1: A,B opp are_equivalent and A2: B,C are_dual ; :: according to YELLOW18:def_6 ::_thesis: A,C are_equivalent C,B opp are_equivalent by A2, Def6; hence A,C are_equivalent by A1, Th4; ::_thesis: verum end; begin theorem Th30: :: YELLOW18:30 for X, Y, x being set holds ( x in Funcs (X,Y) iff ( x is Function & proj1 x = X & proj2 x c= Y ) ) proof let X, Y, x be set ; ::_thesis: ( x in Funcs (X,Y) iff ( x is Function & proj1 x = X & proj2 x c= Y ) ) hereby ::_thesis: ( x is Function & proj1 x = X & proj2 x c= Y implies x in Funcs (X,Y) ) assume x in Funcs (X,Y) ; ::_thesis: ( x is Function & proj1 x = X & proj2 x c= Y ) then ex f being Function st ( x = f & dom f = X & rng f c= Y ) by FUNCT_2:def_2; hence ( x is Function & proj1 x = X & proj2 x c= Y ) ; ::_thesis: verum end; assume x is Function ; ::_thesis: ( not proj1 x = X or not proj2 x c= Y or x in Funcs (X,Y) ) then reconsider x = x as Function ; dom x = proj1 x ; hence ( not proj1 x = X or not proj2 x c= Y or x in Funcs (X,Y) ) by FUNCT_2:def_2; ::_thesis: verum end; definition let C be category; attrC is para-functional means :: YELLOW18:def 7 ex F being ManySortedSet of C st for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((F . a1),(F . a2)); end; :: deftheorem defines para-functional YELLOW18:def_7_:_ for C being category holds ( C is para-functional iff ex F being ManySortedSet of C st for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((F . a1),(F . a2)) ); registration cluster non empty transitive quasi-functional associative with_units -> para-functional for AltCatStr ; coherence for b1 being category st b1 is quasi-functional holds b1 is para-functional proof let C be category; ::_thesis: ( C is quasi-functional implies C is para-functional ) assume A1: for a1, a2 being object of C holds <^a1,a2^> c= Funcs (a1,a2) ; :: according to ALTCAT_1:def_11 ::_thesis: C is para-functional reconsider F = id the carrier of C as ManySortedSet of C ; take F ; :: according to YELLOW18:def_7 ::_thesis: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((F . a1),(F . a2)) let a1, a2 be object of C; ::_thesis: <^a1,a2^> c= Funcs ((F . a1),(F . a2)) A2: F . a1 = a1 by FUNCT_1:18; F . a2 = a2 by FUNCT_1:18; hence <^a1,a2^> c= Funcs ((F . a1),(F . a2)) by A1, A2; ::_thesis: verum end; end; definition let C be category; let a be set ; funcC -carrier_of a -> set means :Def8: :: YELLOW18:def 8 ex b being object of C st ( b = a & it = proj1 (idm b) ) if a is object of C otherwise it = {} ; consistency for b1 being set holds verum ; existence ( ( a is object of C implies ex b1 being set ex b being object of C st ( b = a & b1 = proj1 (idm b) ) ) & ( a is not object of C implies ex b1 being set st b1 = {} ) ) proof hereby ::_thesis: ( a is not object of C implies ex b1 being set st b1 = {} ) assume a is object of C ; ::_thesis: ex x being set ex b being object of C st ( b = a & x = proj1 (idm b) ) then reconsider b = a as object of C ; take x = proj1 (idm b); ::_thesis: ex b being object of C st ( b = a & x = proj1 (idm b) ) take b = b; ::_thesis: ( b = a & x = proj1 (idm b) ) thus ( b = a & x = proj1 (idm b) ) ; ::_thesis: verum end; thus ( a is not object of C implies ex b1 being set st b1 = {} ) ; ::_thesis: verum end; uniqueness for b1, b2 being set holds ( ( a is object of C & ex b being object of C st ( b = a & b1 = proj1 (idm b) ) & ex b being object of C st ( b = a & b2 = proj1 (idm b) ) implies b1 = b2 ) & ( a is not object of C & b1 = {} & b2 = {} implies b1 = b2 ) ) ; end; :: deftheorem Def8 defines -carrier_of YELLOW18:def_8_:_ for C being category for a being set for b3 being set holds ( ( a is object of C implies ( b3 = C -carrier_of a iff ex b being object of C st ( b = a & b3 = proj1 (idm b) ) ) ) & ( a is not object of C implies ( b3 = C -carrier_of a iff b3 = {} ) ) ); notation let C be category; let a be object of C; synonym the_carrier_of a for C -carrier_of a; end; definition let C be category; let a be object of C; redefine func C -carrier_of a equals :: YELLOW18:def 9 proj1 (idm a); compatibility for b1 being set holds ( b1 = C -carrier_of a iff b1 = proj1 (idm a) ) by Def8; end; :: deftheorem defines -carrier_of YELLOW18:def_9_:_ for C being category for a being object of C holds C -carrier_of a = proj1 (idm a); theorem Th31: :: YELLOW18:31 for A being non empty set for a being object of (EnsCat A) holds idm a = id a proof let A be non empty set ; ::_thesis: for a being object of (EnsCat A) holds idm a = id a let a be object of (EnsCat A); ::_thesis: idm a = id a <^a,a^> = Funcs (a,a) by ALTCAT_1:def_14; then reconsider e = id a as Morphism of a,a by ALTCAT_1:1; now__::_thesis:_for_b_being_object_of_(EnsCat_A)_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_f_*_e_=_f let b be object of (EnsCat A); ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds f * e = f ) assume A1: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds f * e = f let f be Morphism of a,b; ::_thesis: f * e = f A2: <^a,b^> = Funcs (a,b) by ALTCAT_1:def_14; then reconsider g = f as Function ; A3: dom g = a by A1, A2, Th30; thus f * e = g * (id a) by A1, ALTCAT_1:def_12 .= f by A3, RELAT_1:52 ; ::_thesis: verum end; hence idm a = id a by ALTCAT_1:def_17; ::_thesis: verum end; theorem Th32: :: YELLOW18:32 for A being non empty set for a being object of (EnsCat A) holds the_carrier_of a = a proof let A be non empty set ; ::_thesis: for a being object of (EnsCat A) holds the_carrier_of a = a let a be object of (EnsCat A); ::_thesis: the_carrier_of a = a thus the_carrier_of a = proj1 (id a) by Th31 .= a ; ::_thesis: verum end; definition let C be category; attrC is set-id-inheriting means :Def10: :: YELLOW18:def 10 for a being object of C holds idm a = id (the_carrier_of a); end; :: deftheorem Def10 defines set-id-inheriting YELLOW18:def_10_:_ for C being category holds ( C is set-id-inheriting iff for a being object of C holds idm a = id (the_carrier_of a) ); registration let A be non empty set ; cluster EnsCat A -> set-id-inheriting ; coherence EnsCat A is set-id-inheriting proof let a be object of (EnsCat A); :: according to YELLOW18:def_10 ::_thesis: idm a = id (the_carrier_of a) thus idm a = id a by Th31 .= id (the_carrier_of a) by Th32 ; ::_thesis: verum end; end; definition let C be category; attrC is concrete means :Def11: :: YELLOW18:def 11 ( C is para-functional & C is semi-functional & C is set-id-inheriting ); end; :: deftheorem Def11 defines concrete YELLOW18:def_11_:_ for C being category holds ( C is concrete iff ( C is para-functional & C is semi-functional & C is set-id-inheriting ) ); registration cluster non empty transitive associative with_units concrete -> semi-functional para-functional set-id-inheriting for AltCatStr ; coherence for b1 being category st b1 is concrete holds ( b1 is para-functional & b1 is semi-functional & b1 is set-id-inheriting ) by Def11; cluster non empty transitive semi-functional associative with_units para-functional set-id-inheriting -> concrete for AltCatStr ; coherence for b1 being category st b1 is para-functional & b1 is semi-functional & b1 is set-id-inheriting holds b1 is concrete by Def11; end; registration cluster non empty transitive strict quasi-functional associative with_units reflexive concrete for AltCatStr ; existence ex b1 being category st ( b1 is concrete & b1 is quasi-functional & b1 is strict ) proof take EnsCat NAT ; ::_thesis: ( EnsCat NAT is concrete & EnsCat NAT is quasi-functional & EnsCat NAT is strict ) thus ( EnsCat NAT is concrete & EnsCat NAT is quasi-functional & EnsCat NAT is strict ) ; ::_thesis: verum end; end; theorem Th33: :: YELLOW18:33 for C being category holds ( C is para-functional iff for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) ) proof let C be category; ::_thesis: ( C is para-functional iff for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) ) thus ( C is para-functional implies for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) ) ::_thesis: ( ( for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) ) implies C is para-functional ) proof given F being ManySortedSet of C such that A1: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((F . a1),(F . a2)) ; :: according to YELLOW18:def_7 ::_thesis: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) let a1, a2 be object of C; ::_thesis: <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) A2: idm a1 in <^a1,a1^> ; A3: <^a1,a1^> c= Funcs ((F . a1),(F . a1)) by A1; A4: <^a2,a2^> c= Funcs ((F . a2),(F . a2)) by A1; A5: idm a2 in <^a2,a2^> ; A6: ex f1 being Function st ( idm a1 = f1 & dom f1 = F . a1 & rng f1 c= F . a1 ) by A2, A3, FUNCT_2:def_2; ex f2 being Function st ( idm a2 = f2 & dom f2 = F . a2 & rng f2 c= F . a2 ) by A4, A5, FUNCT_2:def_2; hence <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) by A1, A6; ::_thesis: verum end; assume A7: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((the_carrier_of a1),(the_carrier_of a2)) ; ::_thesis: C is para-functional deffunc H1( set ) -> set = C -carrier_of \$1; consider F being ManySortedSet of the carrier of C such that A8: for a being Element of C holds F . a = H1(a) from PBOOLE:sch_5(); take F ; :: according to YELLOW18:def_7 ::_thesis: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((F . a1),(F . a2)) let a, b be object of C; ::_thesis: <^a,b^> c= Funcs ((F . a),(F . b)) A9: F . a = the_carrier_of a by A8; F . b = the_carrier_of b by A8; hence <^a,b^> c= Funcs ((F . a),(F . b)) by A7, A9; ::_thesis: verum end; theorem Th34: :: YELLOW18:34 for C being para-functional category for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b holds f is Function of (the_carrier_of a),(the_carrier_of b) proof let C be para-functional category; ::_thesis: for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b holds f is Function of (the_carrier_of a),(the_carrier_of b) let a, b be object of C; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds f is Function of (the_carrier_of a),(the_carrier_of b) ) assume A1: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds f is Function of (the_carrier_of a),(the_carrier_of b) let f be Morphism of a,b; ::_thesis: f is Function of (the_carrier_of a),(the_carrier_of b) A2: <^a,b^> c= Funcs ((the_carrier_of a),(the_carrier_of b)) by Th33; f in <^a,b^> by A1; hence f is Function of (the_carrier_of a),(the_carrier_of b) by A2, FUNCT_2:66; ::_thesis: verum end; registration let A be para-functional category; let a, b be object of A; cluster -> Relation-like Function-like for Element of <^a,b^>; coherence for b1 being Morphism of a,b holds ( b1 is Function-like & b1 is Relation-like ) proof let f be Morphism of a,b; ::_thesis: ( f is Function-like & f is Relation-like ) percases ( <^a,b^> <> {} or <^a,b^> = {} ) ; suppose <^a,b^> <> {} ; ::_thesis: ( f is Function-like & f is Relation-like ) hence ( f is Function-like & f is Relation-like ) by Th34; ::_thesis: verum end; suppose <^a,b^> = {} ; ::_thesis: ( f is Function-like & f is Relation-like ) hence ( f is Function-like & f is Relation-like ) ; ::_thesis: verum end; end; end; end; theorem Th35: :: YELLOW18:35 for C being para-functional category for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b holds ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) proof let C be para-functional category; ::_thesis: for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b holds ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) let a, b be object of C; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) ) assume A1: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) let f be Morphism of a,b; ::_thesis: ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) A2: <^a,b^> c= Funcs ((the_carrier_of a),(the_carrier_of b)) by Th33; f in <^a,b^> by A1; hence ( dom f = the_carrier_of a & rng f c= the_carrier_of b ) by A2, FUNCT_2:92; ::_thesis: verum end; theorem Th36: :: YELLOW18:36 for C being semi-functional para-functional category for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = g * f proof let C be semi-functional para-functional category; ::_thesis: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = g * f let a, b, c be object of C; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c holds g * f = g * f ) assume that A1: <^a,b^> <> {} and A2: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c holds g * f = g * f let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c holds g * f = g * f let g be Morphism of b,c; ::_thesis: g * f = g * f <^a,c^> <> {} by A1, A2, ALTCAT_1:def_2; hence g * f = g * f by A1, A2, ALTCAT_1:def_12; ::_thesis: verum end; theorem Th37: :: YELLOW18:37 for C being semi-functional para-functional category for a being object of C st id (the_carrier_of a) in <^a,a^> holds idm a = id (the_carrier_of a) proof let C be semi-functional para-functional category; ::_thesis: for a being object of C st id (the_carrier_of a) in <^a,a^> holds idm a = id (the_carrier_of a) let a be object of C; ::_thesis: ( id (the_carrier_of a) in <^a,a^> implies idm a = id (the_carrier_of a) ) assume id (the_carrier_of a) in <^a,a^> ; ::_thesis: idm a = id (the_carrier_of a) then reconsider f = id (the_carrier_of a) as Morphism of a,a ; now__::_thesis:_for_b_being_object_of_C_st_<^a,b^>_<>_{}_holds_ for_g_being_Morphism_of_a,b_holds_g_*_f_=_g let b be object of C; ::_thesis: ( <^a,b^> <> {} implies for g being Morphism of a,b holds g * f = g ) assume A1: <^a,b^> <> {} ; ::_thesis: for g being Morphism of a,b holds g * f = g let g be Morphism of a,b; ::_thesis: g * f = g A2: dom g = the_carrier_of a by A1, Th35; thus g * f = g * (id (the_carrier_of a)) by A1, Th36 .= g by A2, RELAT_1:52 ; ::_thesis: verum end; hence idm a = id (the_carrier_of a) by ALTCAT_1:def_17; ::_thesis: verum end; scheme :: YELLOW18:sch 16 ConcreteCategoryLambda{ F1() -> non empty set , F2( set , set ) -> set , F3( set ) -> set } : ex C being strict concrete category st ( the carrier of C = F1() & ( for a being object of C holds the_carrier_of a = F3(a) ) & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) ) provided A1: for a, b, c being Element of F1() for f, g being Function st f in F2(a,b) & g in F2(b,c) holds g * f in F2(a,c) and A2: for a, b being Element of F1() holds F2(a,b) c= Funcs (F3(a),F3(b)) and A3: for a being Element of F1() holds id F3(a) in F2(a,a) proof deffunc H1( set , set , set , set , set ) -> set = \$4 (#) \$5; A4: now__::_thesis:_for_a,_b_being_Element_of_F1() for_f_being_set_st_f_in_F2(a,b)_holds_ f_is_Function let a, b be Element of F1(); ::_thesis: for f being set st f in F2(a,b) holds f is Function let f be set ; ::_thesis: ( f in F2(a,b) implies f is Function ) assume A5: f in F2(a,b) ; ::_thesis: f is Function F2(a,b) c= Funcs (F3(a),F3(b)) by A2; hence f is Function by A5; ::_thesis: verum end; A6: for a, b, c being Element of F1() for f, g being set st f in F2(a,b) & g in F2(b,c) holds H1(a,b,c,f,g) in F2(a,c) proof let a, b, c be Element of F1(); ::_thesis: for f, g being set st f in F2(a,b) & g in F2(b,c) holds H1(a,b,c,f,g) in F2(a,c) let f, g be set ; ::_thesis: ( f in F2(a,b) & g in F2(b,c) implies H1(a,b,c,f,g) in F2(a,c) ) assume that A7: f in F2(a,b) and A8: g in F2(b,c) ; ::_thesis: H1(a,b,c,f,g) in F2(a,c) reconsider f = f, g = g as Function by A4, A7, A8; g * f = f (#) g ; hence H1(a,b,c,f,g) in F2(a,c) by A1, A7, A8; ::_thesis: verum end; A9: for a, b, c, d being Element of F1() for f, g, h being set st f in F2(a,b) & g in F2(b,c) & h in F2(c,d) holds H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) proof let a, b, c, d be Element of F1(); ::_thesis: for f, g, h being set st f in F2(a,b) & g in F2(b,c) & h in F2(c,d) holds H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) let f, g, h be set ; ::_thesis: ( f in F2(a,b) & g in F2(b,c) & h in F2(c,d) implies H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ) assume that A10: f in F2(a,b) and A11: g in F2(b,c) and A12: h in F2(c,d) ; ::_thesis: H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) reconsider f = f, g = g, h = h as Function by A4, A10, A11, A12; (f (#) g) (#) h = f (#) (h * g) by RELAT_1:36; hence H1(a,c,d,H1(a,b,c,f,g),h) = H1(a,b,d,f,H1(b,c,d,g,h)) ; ::_thesis: verum end; A13: for a being Element of F1() ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g ) ) proof let a be Element of F1(); ::_thesis: ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g ) ) take f = id F3(a); ::_thesis: ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g ) ) thus f in F2(a,a) by A3; ::_thesis: for b being Element of F1() for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g let b be Element of F1(); ::_thesis: for g being set st g in F2(a,b) holds H1(a,a,b,f,g) = g let g be set ; ::_thesis: ( g in F2(a,b) implies H1(a,a,b,f,g) = g ) assume A14: g in F2(a,b) ; ::_thesis: H1(a,a,b,f,g) = g F2(a,b) c= Funcs (F3(a),F3(b)) by A2; then consider h being Function such that A15: g = h and A16: dom h = F3(a) and rng h c= F3(b) by A14, FUNCT_2:def_2; thus f (#) g = g by A15, A16, RELAT_1:52; ::_thesis: verum end; A17: for a being Element of F1() ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g ) ) proof let a be Element of F1(); ::_thesis: ex f being set st ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g ) ) take f = id F3(a); ::_thesis: ( f in F2(a,a) & ( for b being Element of F1() for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g ) ) thus f in F2(a,a) by A3; ::_thesis: for b being Element of F1() for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g let b be Element of F1(); ::_thesis: for g being set st g in F2(b,a) holds H1(b,a,a,g,f) = g let g be set ; ::_thesis: ( g in F2(b,a) implies H1(b,a,a,g,f) = g ) assume A18: g in F2(b,a) ; ::_thesis: H1(b,a,a,g,f) = g F2(b,a) c= Funcs (F3(b),F3(a)) by A2; then consider h being Function such that A19: g = h and dom h = F3(b) and A20: rng h c= F3(a) by A18, FUNCT_2:def_2; thus g (#) f = g by A19, A20, RELAT_1:53; ::_thesis: verum end; consider C being strict category such that A21: the carrier of C = F1() and A22: for a, b being object of C holds <^a,b^> = F2(a,b) and A23: for a, b, c being object of C st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) from YELLOW18:sch_4(A6, A9, A13, A17); consider D being ManySortedSet of C such that A24: for x being Element of C holds D . x = F3(x) from PBOOLE:sch_5(); A25: C is para-functional proof take D ; :: according to YELLOW18:def_7 ::_thesis: for a1, a2 being object of C holds <^a1,a2^> c= Funcs ((D . a1),(D . a2)) let a1, a2 be object of C; ::_thesis: <^a1,a2^> c= Funcs ((D . a1),(D . a2)) A26: <^a1,a2^> = F2(a1,a2) by A22; A27: F3(a1) = D . a1 by A24; F3(a2) = D . a2 by A24; hence <^a1,a2^> c= Funcs ((D . a1),(D . a2)) by A2, A21, A26, A27; ::_thesis: verum end; A28: C is semi-functional proof let a1, a2, a3 be object of C; :: according to ALTCAT_1:def_12 ::_thesis: ( <^a1,a2^> = {} or <^a2,a3^> = {} or <^a1,a3^> = {} or for b1 being Element of <^a1,a2^> for b2 being Element of <^a2,a3^> for b3, b4 being set holds ( not b1 = b3 or not b2 = b4 or b2 * b1 = b3 (#) b4 ) ) assume that A29: <^a1,a2^> <> {} and A30: <^a2,a3^> <> {} and <^a1,a3^> <> {} ; ::_thesis: for b1 being Element of <^a1,a2^> for b2 being Element of <^a2,a3^> for b3, b4 being set holds ( not b1 = b3 or not b2 = b4 or b2 * b1 = b3 (#) b4 ) let f be Morphism of a1,a2; ::_thesis: for b1 being Element of <^a2,a3^> for b2, b3 being set holds ( not f = b2 or not b1 = b3 or b1 * f = b2 (#) b3 ) let g be Morphism of a2,a3; ::_thesis: for b1, b2 being set holds ( not f = b1 or not g = b2 or g * f = b1 (#) b2 ) let f9, g9 be Function; ::_thesis: ( not f = f9 or not g = g9 or g * f = f9 (#) g9 ) assume that A31: f = f9 and A32: g = g9 ; ::_thesis: g * f = f9 (#) g9 thus g * f = g9 * f9 by A23, A29, A30, A31, A32; ::_thesis: verum end; A33: now__::_thesis:_for_a_being_object_of_C_holds_idm_a_=_id_F3(a) let a be object of C; ::_thesis: idm a = id F3(a) id F3(a) in F2(a,a) by A3, A21; then reconsider e = id F3(a) as Morphism of a,a by A22; now__::_thesis:_for_b_being_object_of_C_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_f_*_e_=_f let b be object of C; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds f * e = f ) assume A34: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds f * e = f let f be Morphism of a,b; ::_thesis: f * e = f A35: <^a,b^> = F2(a,b) by A22; A36: F2(a,b) c= Funcs (F3(a),F3(b)) by A2, A21; f in <^a,b^> by A34; then consider h being Function such that A37: f = h and A38: dom h = F3(a) and rng h c= F3(b) by A35, A36, FUNCT_2:def_2; thus f * e = h * (id F3(a)) by A28, A34, A37, ALTCAT_1:def_12 .= f by A37, A38, RELAT_1:52 ; ::_thesis: verum end; hence idm a = id F3(a) by ALTCAT_1:def_17; ::_thesis: verum end; A39: now__::_thesis:_for_i_being_set_st_i_in_the_carrier_of_C_holds_ C_-carrier_of_i_=_D_._i let i be set ; ::_thesis: ( i in the carrier of C implies C -carrier_of i = D . i ) assume i in the carrier of C ; ::_thesis: C -carrier_of i = D . i then reconsider a = i as object of C ; thus C -carrier_of i = proj1 (idm a) by Def8 .= proj1 (id F3(a)) by A33 .= F3(a) .= D . i by A24 ; ::_thesis: verum end; C is set-id-inheriting proof let a be object of C; :: according to YELLOW18:def_10 ::_thesis: idm a = id (the_carrier_of a) thus idm a = id F3(a) by A33 .= id (D . a) by A24 .= id (the_carrier_of a) by A39 ; ::_thesis: verum end; then reconsider C = C as strict semi-functional para-functional set-id-inheriting category by A25, A28; take C ; ::_thesis: ( the carrier of C = F1() & ( for a being object of C holds the_carrier_of a = F3(a) ) & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) ) thus the carrier of C = F1() by A21; ::_thesis: ( ( for a being object of C holds the_carrier_of a = F3(a) ) & ( for a, b being object of C holds <^a,b^> = F2(a,b) ) ) hereby ::_thesis: for a, b being object of C holds <^a,b^> = F2(a,b) let a be object of C; ::_thesis: the_carrier_of a = F3(a) thus the_carrier_of a = D . a by A39 .= F3(a) by A24 ; ::_thesis: verum end; thus for a, b being object of C holds <^a,b^> = F2(a,b) by A22; ::_thesis: verum end; scheme :: YELLOW18:sch 17 ConcreteCategoryQuasiLambda{ F1() -> non empty set , P1[ set , set , set ], F2( set ) -> set } : ex C being strict concrete category st ( the carrier of C = F1() & ( for a being object of C holds the_carrier_of a = F2(a) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) ) provided A1: for a, b, c being Element of F1() for f, g being Function st P1[a,b,f] & P1[b,c,g] holds P1[a,c,g * f] and A2: for a being Element of F1() holds P1[a,a, id F2(a)] proof set A = F1(); defpred S1[ set , set ] means ex a, b being set st ( \$1 = [a,b] & ( for f being set holds ( f in \$2 iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) ); A3: now__::_thesis:_for_x_being_set_st_x_in_[:F1(),F1():]_holds_ ex_y_being_set_st_S1[x,y] let x be set ; ::_thesis: ( x in [:F1(),F1():] implies ex y being set st S1[x,y] ) assume x in [:F1(),F1():] ; ::_thesis: ex y being set st S1[x,y] then consider a, b being set such that a in F1() and b in F1() and A4: x = [a,b] by ZFMISC_1:def_2; defpred S2[ set ] means P1[a,b,\$1]; consider y being set such that A5: for f being set holds ( f in y iff ( f in Funcs (F2(a),F2(b)) & S2[f] ) ) from XBOOLE_0:sch_1(); take y = y; ::_thesis: S1[x,y] thus S1[x,y] by A4, A5; ::_thesis: verum end; consider F being Function such that dom F = [:F1(),F1():] and A6: for x being set st x in [:F1(),F1():] holds S1[x,F . x] from CLASSES1:sch_1(A3); A7: now__::_thesis:_for_a,_b_being_set_st_a_in_F1()_&_b_in_F1()_holds_ for_f_being_set_holds_ (_f_in_F_._[a,b]_iff_(_P1[a,b,f]_&_f_in_Funcs_(F2(a),F2(b))_)_) let a, b be set ; ::_thesis: ( a in F1() & b in F1() implies for f being set holds ( f in F . [a,b] iff ( P1[a,b,f] & f in Funcs (F2(a),F2(b)) ) ) ) assume that A8: a in F1() and A9: b in F1() ; ::_thesis: for f being set holds ( f in F . [a,b] iff ( P1[a,b,f] & f in Funcs (F2(a),F2(b)) ) ) [a,b] in [:F1(),F1():] by A8, A9, ZFMISC_1:87; then consider a9, b9 being set such that A10: [a,b] = [a9,b9] and A11: for f being set holds ( f in F . [a,b] iff ( f in Funcs (F2(a9),F2(b9)) & P1[a9,b9,f] ) ) by A6; A12: a = a9 by A10, XTUPLE_0:1; A13: b = b9 by A10, XTUPLE_0:1; let f be set ; ::_thesis: ( f in F . [a,b] iff ( P1[a,b,f] & f in Funcs (F2(a),F2(b)) ) ) thus ( f in F . [a,b] iff ( P1[a,b,f] & f in Funcs (F2(a),F2(b)) ) ) by A11, A12, A13; ::_thesis: verum end; deffunc H1( set , set ) -> set = F . [\$1,\$2]; A14: now__::_thesis:_for_a,_b,_c_being_Element_of_F1() for_f,_g_being_Function_st_f_in_H1(a,b)_&_g_in_H1(b,c)_holds_ g_*_f_in_H1(a,c) let a, b, c be Element of F1(); ::_thesis: for f, g being Function st f in H1(a,b) & g in H1(b,c) holds g * f in H1(a,c) let f, g be Function; ::_thesis: ( f in H1(a,b) & g in H1(b,c) implies g * f in H1(a,c) ) assume that A15: f in H1(a,b) and A16: g in H1(b,c) ; ::_thesis: g * f in H1(a,c) A17: P1[a,b,f] by A7, A15; A18: f in Funcs (F2(a),F2(b)) by A7, A15; A19: P1[b,c,g] by A7, A16; A20: g in Funcs (F2(b),F2(c)) by A7, A16; A21: dom f = F2(a) by A18, Th30; A22: rng f c= F2(b) by A18, Th30; A23: dom g = F2(b) by A20, Th30; A24: rng g c= F2(c) by A20, Th30; A25: rng (g * f) c= rng g by RELAT_1:26; A26: dom (g * f) = F2(a) by A21, A22, A23, RELAT_1:27; rng (g * f) c= F2(c) by A24, A25, XBOOLE_1:1; then A27: g * f in Funcs (F2(a),F2(c)) by A26, FUNCT_2:def_2; P1[a,c,g * f] by A1, A17, A19; hence g * f in H1(a,c) by A7, A27; ::_thesis: verum end; A28: now__::_thesis:_for_a,_b_being_Element_of_F1()_holds_H1(a,b)_c=_Funcs_(F2(a),F2(b)) let a, b be Element of F1(); ::_thesis: H1(a,b) c= Funcs (F2(a),F2(b)) thus H1(a,b) c= Funcs (F2(a),F2(b)) ::_thesis: verum proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in H1(a,b) or x in Funcs (F2(a),F2(b)) ) thus ( not x in H1(a,b) or x in Funcs (F2(a),F2(b)) ) by A7; ::_thesis: verum end; end; A29: for a being Element of F1() holds id F2(a) in H1(a,a) proof let a be Element of F1(); ::_thesis: id F2(a) in H1(a,a) A30: dom (id F2(a)) = F2(a) ; A31: rng (id F2(a)) = F2(a) ; A32: P1[a,a, id F2(a)] by A2; id F2(a) in Funcs (F2(a),F2(a)) by A30, A31, FUNCT_2:def_2; hence id F2(a) in H1(a,a) by A7, A32; ::_thesis: verum end; consider C being strict semi-functional para-functional set-id-inheriting category such that A33: the carrier of C = F1() and A34: for a being object of C holds the_carrier_of a = F2(a) and A35: for a, b being object of C holds <^a,b^> = H1(a,b) from YELLOW18:sch_16(A14, A28, A29); take C ; ::_thesis: ( the carrier of C = F1() & ( for a being object of C holds the_carrier_of a = F2(a) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) ) thus the carrier of C = F1() by A33; ::_thesis: ( ( for a being object of C holds the_carrier_of a = F2(a) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) ) thus for a being object of C holds the_carrier_of a = F2(a) by A34; ::_thesis: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) let a, b be Element of F1(); ::_thesis: for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) let f be Function; ::_thesis: ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) reconsider a = a, b = b as object of C by A33; the Arrows of C . (a,b) = <^a,b^> .= F . [a,b] by A35 ; hence ( f in the Arrows of C . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) by A7; ::_thesis: verum end; scheme :: YELLOW18:sch 18 ConcreteCategoryEx{ F1() -> non empty set , F2( set ) -> set , P1[ set , set ], P2[ set , set , set ] } : ex C being strict concrete category st ( the carrier of C = F1() & ( for a being object of C for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) ) ) provided A1: for a, b, c being Element of F1() for f, g being Function st P2[a,b,f] & P2[b,c,g] holds P2[a,c,g * f] and A2: for a being Element of F1() for X being set st ( for x being set holds ( x in X iff ( x in F2(a) & P1[a,x] ) ) ) holds P2[a,a, id X] proof A3: for a, b, c being Element of F1() for f, g being Function st P2[a,b,f] & P2[b,c,g] holds P2[a,c,g * f] by A1; consider D being Function such that dom D = F1() and A4: for a being set st a in F1() holds for y being set holds ( y in D . a iff ( y in F2(a) & P1[a,y] ) ) from CARD_3:sch_2(); deffunc H1( set ) -> set = D . \$1; A5: now__::_thesis:_for_a_being_Element_of_F1()_holds_P2[a,a,_id_H1(a)] let a be Element of F1(); ::_thesis: P2[a,a, id H1(a)] for y being set holds ( y in D . a iff ( y in F2(a) & P1[a,y] ) ) by A4; hence P2[a,a, id H1(a)] by A2; ::_thesis: verum end; consider C being strict semi-functional para-functional set-id-inheriting category such that A6: the carrier of C = F1() and A7: for a being object of C holds the_carrier_of a = H1(a) and A8: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) from YELLOW18:sch_17(A3, A5); take C ; ::_thesis: ( the carrier of C = F1() & ( for a being object of C for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) ) ) thus the carrier of C = F1() by A6; ::_thesis: ( ( for a being object of C for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) ) ) hereby ::_thesis: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) let a be object of C; ::_thesis: for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) the_carrier_of a = D . a by A7; hence for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) by A4, A6; ::_thesis: verum end; let a, b be Element of F1(); ::_thesis: for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) A9: D . a = C -carrier_of a by A6, A7; D . b = C -carrier_of b by A6, A7; hence for f being Function holds ( f in the Arrows of C . (a,b) iff ( f in Funcs ((C -carrier_of a),(C -carrier_of b)) & P2[a,b,f] ) ) by A8, A9; ::_thesis: verum end; scheme :: YELLOW18:sch 19 ConcreteCategoryUniq1{ F1() -> non empty set , F2( set , set ) -> set } : for C1, C2 being semi-functional para-functional category st the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) proof deffunc H1( set , set , set , set , set ) -> set = \$4 (#) \$5; A1: for C1, C2 being non empty transitive AltCatStr st the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) & ( for a, b, c being object of C2 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = H1(a,b,c,f,g) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) from YELLOW18:sch_5(); let C1, C2 be semi-functional para-functional category; ::_thesis: ( the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) A2: for C1 being semi-functional para-functional category for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = f (#) g by Th36; then A3: for a, b, c being object of C1 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = f (#) g ; for a, b, c being object of C2 st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c holds g * f = f (#) g by A2; hence ( the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = F2(a,b) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = F2(a,b) ) implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) by A1, A3; ::_thesis: verum end; scheme :: YELLOW18:sch 20 ConcreteCategoryUniq2{ F1() -> non empty set , P1[ set , set , set ], F2( set ) -> set } : for C1, C2 being semi-functional para-functional category st the carrier of C1 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) & the carrier of C2 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) proof let C1, C2 be semi-functional para-functional category; ::_thesis: ( the carrier of C1 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) & the carrier of C2 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ) implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) assume that A1: the carrier of C1 = F1() and A2: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) and A3: the carrier of C2 = F1() and A4: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (F2(a),F2(b)) & P1[a,b,f] ) ) ; ::_thesis: AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) deffunc H1( set , set ) -> set = the Arrows of C1 . (\$1,\$2); A5: for C1, C2 being semi-functional para-functional category st the carrier of C1 = F1() & ( for a, b being object of C1 holds <^a,b^> = H1(a,b) ) & the carrier of C2 = F1() & ( for a, b being object of C2 holds <^a,b^> = H1(a,b) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) from YELLOW18:sch_19(); A6: for a, b being object of C1 holds <^a,b^> = H1(a,b) ; now__::_thesis:_for_a,_b_being_object_of_C2_holds_<^a,b^>_=_H1(a,b) let a, b be object of C2; ::_thesis: <^a,b^> = H1(a,b) reconsider x = a, y = b as Element of F1() by A3; reconsider a9 = x, b9 = y as object of C1 by A1; thus <^a,b^> = H1(a,b) ::_thesis: verum proof hereby :: according to TARSKI:def_3,XBOOLE_0:def_10 ::_thesis: H1(a,b) c= <^a,b^> let z be set ; ::_thesis: ( z in <^a,b^> implies z in H1(a,b) ) assume A7: z in <^a,b^> ; ::_thesis: z in H1(a,b) then A8: z in Funcs (F2(x),F2(y)) by A4; P1[x,y,z] by A4, A7; hence z in H1(a,b) by A2, A8; ::_thesis: verum end; let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in H1(a,b) or z in <^a,b^> ) assume A9: z in H1(a,b) ; ::_thesis: z in <^a,b^> then A10: z is Morphism of a9,b9 ; then A11: z in Funcs (F2(x),F2(y)) by A2, A9; P1[x,y,z] by A2, A9, A10; hence z in <^a,b^> by A4, A11; ::_thesis: verum end; end; hence AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) by A1, A3, A5, A6; ::_thesis: verum end; scheme :: YELLOW18:sch 21 ConcreteCategoryUniq3{ F1() -> non empty set , F2( set ) -> set , P1[ set , set ], P2[ set , set , set ] } : for C1, C2 being semi-functional para-functional category st the carrier of C1 = F1() & ( for a being object of C1 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs ((C1 -carrier_of a),(C1 -carrier_of b)) & P2[a,b,f] ) ) ) & the carrier of C2 = F1() & ( for a being object of C2 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs ((C2 -carrier_of a),(C2 -carrier_of b)) & P2[a,b,f] ) ) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) proof let C1, C2 be semi-functional para-functional category; ::_thesis: ( the carrier of C1 = F1() & ( for a being object of C1 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs ((C1 -carrier_of a),(C1 -carrier_of b)) & P2[a,b,f] ) ) ) & the carrier of C2 = F1() & ( for a being object of C2 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) ) & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs ((C2 -carrier_of a),(C2 -carrier_of b)) & P2[a,b,f] ) ) ) implies AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) ) assume that A1: the carrier of C1 = F1() and A2: for a being object of C1 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) and A3: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs ((C1 -carrier_of a),(C1 -carrier_of b)) & P2[a,b,f] ) ) and A4: the carrier of C2 = F1() and A5: for a being object of C2 for x being set holds ( x in the_carrier_of a iff ( x in F2(a) & P1[a,x] ) ) and A6: for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs ((C2 -carrier_of a),(C2 -carrier_of b)) & P2[a,b,f] ) ) ; ::_thesis: AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) deffunc H1( set ) -> set = C1 -carrier_of \$1; A7: for C1, C2 being semi-functional para-functional category st the carrier of C1 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) ) & the carrier of C2 = F1() & ( for a, b being Element of F1() for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) from YELLOW18:sch_20(); A8: now__::_thesis:_for_a_being_Element_of_F1()_holds_C1_-carrier_of_a_=_C2_-carrier_of_a let a be Element of F1(); ::_thesis: C1 -carrier_of a = C2 -carrier_of a reconsider a1 = a as object of C1 by A1; reconsider a2 = a as object of C2 by A4; now__::_thesis:_for_x_being_set_holds_ (_x_in_the_carrier_of_a1_iff_x_in_the_carrier_of_a2_) let x be set ; ::_thesis: ( x in the_carrier_of a1 iff x in the_carrier_of a2 ) ( x in the_carrier_of a1 iff ( x in F2(a) & P1[a,x] ) ) by A2; hence ( x in the_carrier_of a1 iff x in the_carrier_of a2 ) by A5; ::_thesis: verum end; hence C1 -carrier_of a = C2 -carrier_of a by TARSKI:1; ::_thesis: verum end; now__::_thesis:_for_a,_b_being_Element_of_F1() for_f_being_Function_holds_ (_f_in_the_Arrows_of_C2_._(a,b)_iff_(_f_in_Funcs_(H1(a),H1(b))_&_P2[a,b,f]_)_) let a, b be Element of F1(); ::_thesis: for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) let f be Function; ::_thesis: ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) A9: H1(a) = C2 -carrier_of a by A8; H1(b) = C2 -carrier_of b by A8; hence ( f in the Arrows of C2 . (a,b) iff ( f in Funcs (H1(a),H1(b)) & P2[a,b,f] ) ) by A6, A9; ::_thesis: verum end; hence AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) by A1, A3, A4, A7; ::_thesis: verum end; begin theorem Th38: :: YELLOW18:38 for C being concrete category for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is retraction holds rng f = the_carrier_of b proof let C be concrete category; ::_thesis: for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is retraction holds rng f = the_carrier_of b let a, b be object of C; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for f being Morphism of a,b st f is retraction holds rng f = the_carrier_of b ) assume that A1: <^a,b^> <> {} and A2: <^b,a^> <> {} ; ::_thesis: for f being Morphism of a,b st f is retraction holds rng f = the_carrier_of b let f be Morphism of a,b; ::_thesis: ( f is retraction implies rng f = the_carrier_of b ) given g being Morphism of b,a such that A3: g is_right_inverse_of f ; :: according to ALTCAT_3:def_2 ::_thesis: rng f = the_carrier_of b A4: f * g = idm b by A3, ALTCAT_3:def_1; A5: f * g = f * g by A1, A2, Th36; A6: f is Function of (the_carrier_of a),(the_carrier_of b) by A1, Th34; A7: g is Function of (the_carrier_of b),(the_carrier_of a) by A2, Th34; idm b = id (the_carrier_of b) by Def10; hence rng f = the_carrier_of b by A4, A5, A6, A7, FUNCT_2:18; ::_thesis: verum end; theorem Th39: :: YELLOW18:39 for C being concrete category for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is coretraction holds f is one-to-one proof let C be concrete category; ::_thesis: for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is coretraction holds f is one-to-one let a, b be object of C; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for f being Morphism of a,b st f is coretraction holds f is one-to-one ) assume that A1: <^a,b^> <> {} and A2: <^b,a^> <> {} ; ::_thesis: for f being Morphism of a,b st f is coretraction holds f is one-to-one let f be Morphism of a,b; ::_thesis: ( f is coretraction implies f is one-to-one ) given g being Morphism of b,a such that A3: g is_left_inverse_of f ; :: according to ALTCAT_3:def_3 ::_thesis: f is one-to-one A4: g * f = idm a by A3, ALTCAT_3:def_1; A5: g * f = g * f by A1, A2, Th36; A6: dom f = the_carrier_of a by A1, Th35; idm a = id (the_carrier_of a) by Def10; hence f is one-to-one by A4, A5, A6, FUNCT_1:31; ::_thesis: verum end; theorem Th40: :: YELLOW18:40 for C being concrete category for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is iso holds ( f is one-to-one & rng f = the_carrier_of b ) proof let C be concrete category; ::_thesis: for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is iso holds ( f is one-to-one & rng f = the_carrier_of b ) let a, b be object of C; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for f being Morphism of a,b st f is iso holds ( f is one-to-one & rng f = the_carrier_of b ) ) assume that A1: <^a,b^> <> {} and A2: <^b,a^> <> {} ; ::_thesis: for f being Morphism of a,b st f is iso holds ( f is one-to-one & rng f = the_carrier_of b ) let f be Morphism of a,b; ::_thesis: ( f is iso implies ( f is one-to-one & rng f = the_carrier_of b ) ) assume f is iso ; ::_thesis: ( f is one-to-one & rng f = the_carrier_of b ) then ( f is retraction & f is coretraction ) by ALTCAT_3:5; hence ( f is one-to-one & rng f = the_carrier_of b ) by A1, A2, Th38, Th39; ::_thesis: verum end; theorem Th41: :: YELLOW18:41 for C being semi-functional para-functional category for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b st f is one-to-one & f " in <^b,a^> holds f is iso proof let C be semi-functional para-functional category; ::_thesis: for a, b being object of C st <^a,b^> <> {} holds for f being Morphism of a,b st f is one-to-one & f " in <^b,a^> holds f is iso let a, b be object of C; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b st f is one-to-one & f " in <^b,a^> holds f is iso ) assume A1: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b st f is one-to-one & f " in <^b,a^> holds f is iso let f be Morphism of a,b; ::_thesis: ( f is one-to-one & f " in <^b,a^> implies f is iso ) assume A2: f is one-to-one ; ::_thesis: ( not f " in <^b,a^> or f is iso ) assume A3: f " in <^b,a^> ; ::_thesis: f is iso then reconsider g = f " as Morphism of b,a ; dom g = the_carrier_of b by A3, Th35; then A4: rng f = the_carrier_of b by A2, FUNCT_1:33; A5: (f ") * f = id (dom f) by A2, FUNCT_1:39; A6: f * (f ") = id (rng f) by A2, FUNCT_1:39; A7: dom f = the_carrier_of a by A1, Th35; A8: f * g = id (the_carrier_of b) by A1, A3, A4, A6, Th36; A9: g * f = id (the_carrier_of a) by A1, A3, A5, A7, Th36; A10: idm b = f * g by A8, Th37; A11: idm a = g * f by A9, Th37; then A12: g is_left_inverse_of f by ALTCAT_3:def_1; A13: g is_right_inverse_of f by A10, ALTCAT_3:def_1; then ( f is retraction & f is coretraction ) by A12, ALTCAT_3:def_2, ALTCAT_3:def_3; hence ( f * (f ") = idm b & (f ") * f = idm a ) by A1, A3, A10, A11, A12, A13, ALTCAT_3:def_4; :: according to ALTCAT_3:def_5 ::_thesis: verum end; theorem :: YELLOW18:42 for C being concrete category for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is iso holds f " = f " proof let C be concrete category; ::_thesis: for a, b being object of C st <^a,b^> <> {} & <^b,a^> <> {} holds for f being Morphism of a,b st f is iso holds f " = f " let a, b be object of C; ::_thesis: ( <^a,b^> <> {} & <^b,a^> <> {} implies for f being Morphism of a,b st f is iso holds f " = f " ) assume that A1: <^a,b^> <> {} and A2: <^b,a^> <> {} ; ::_thesis: for f being Morphism of a,b st f is iso holds f " = f " let f be Morphism of a,b; ::_thesis: ( f is iso implies f " = f " ) assume A3: f is iso ; ::_thesis: f " = f " then A4: (f ") * f = idm a by ALTCAT_3:def_5; A5: (f ") * f = (f ") * f by A1, A2, Th36; A6: dom (f ") = the_carrier_of b by A2, Th35; A7: dom f = the_carrier_of a by A1, Th35; A8: f is one-to-one by A1, A2, A3, Th40; A9: rng f = the_carrier_of b by A1, A2, A3, Th40; idm a = id (the_carrier_of a) by Def10; hence f " = f " by A4, A5, A6, A7, A8, A9, FUNCT_1:41; ::_thesis: verum end; scheme :: YELLOW18:sch 22 ConcreteCatEquivalence{ F1() -> semi-functional para-functional category, F2() -> semi-functional para-functional category, F3( set ) -> set , F4( set ) -> set , F5( set , set , set ) -> Function, F6( set , set , set ) -> Function, F7( set ) -> Function, F8( set ) -> Function } : F1(),F2() are_equivalent provided A1: ex F being covariant Functor of F1(),F2() st ( ( for a being object of F1() holds F . a = F3(a) ) & ( for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F5(a,b,f) ) ) and A2: ex G being covariant Functor of F2(),F1() st ( ( for a being object of F2() holds G . a = F4(a) ) & ( for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b holds G . f = F6(a,b,f) ) ) and A3: for a, b being object of F1() st a = F4(F3(b)) holds ( F7(b) in <^a,b^> & F7(b) " in <^b,a^> & F7(b) is one-to-one ) and A4: for a, b being object of F2() st b = F3(F4(a)) holds ( F8(a) in <^a,b^> & F8(a) " in <^b,a^> & F8(a) is one-to-one ) and A5: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F7(b) * F6(F3(a),F3(b),F5(a,b,f)) = f * F7(a) and A6: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b holds F5(F4(a),F4(b),F6(a,b,f)) * F8(a) = F8(b) * f proof consider F being covariant Functor of F1(),F2() such that A7: for a being object of F1() holds F . a = F3(a) and A8: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b holds F . f = F5(a,b,f) by A1; consider G being covariant Functor of F2(),F1() such that A9: for a being object of F2() holds G . a = F4(a) and A10: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b holds G . f = F6(a,b,f) by A2; take F ; :: according to YELLOW18:def_2 ::_thesis: ex G being covariant Functor of F2(),F1() st ( G * F, id F1() are_naturally_equivalent & F * G, id F2() are_naturally_equivalent ) take G ; ::_thesis: ( G * F, id F1() are_naturally_equivalent & F * G, id F2() are_naturally_equivalent ) set GF = G * F; set I = id F1(); A11: for a being object of F1() holds ( F7(a) in <^((G * F) . a),((id F1()) . a)^> & <^((id F1()) . a),((G * F) . a)^> <> {} & ( for f being Morphism of ((G * F) . a),((id F1()) . a) st f = F7(a) holds f is iso ) ) proof let a be object of F1(); ::_thesis: ( F7(a) in <^((G * F) . a),((id F1()) . a)^> & <^((id F1()) . a),((G * F) . a)^> <> {} & ( for f being Morphism of ((G * F) . a),((id F1()) . a) st f = F7(a) holds f is iso ) ) A12: (G * F) . a = G . (F . a) by FUNCTOR0:33 .= F4((F . a)) by A9 .= F4(F3(a)) by A7 ; A13: (id F1()) . a = a by FUNCTOR0:29; then A14: F7(a) in <^((G * F) . a),((id F1()) . a)^> by A3, A12; A15: F7(a) " in <^((id F1()) . a),((G * F) . a)^> by A3, A12, A13; F7(a) is one-to-one by A3, A12; hence ( F7(a) in <^((G * F) . a),((id F1()) . a)^> & <^((id F1()) . a),((G * F) . a)^> <> {} & ( for f being Morphism of ((G * F) . a),((id F1()) . a) st f = F7(a) holds f is iso ) ) by A14, A15, Th41; ::_thesis: verum end; A16: for a, b being object of F1() st <^a,b^> <> {} holds for f being Morphism of a,b for g1 being Morphism of ((G * F) . a),((id F1()) . a) st g1 = F7(a) holds for g2 being Morphism of ((G * F) . b),((id F1()) . b) st g2 = F7(b) holds g2 * ((G * F) . f) = ((id F1()) . f) * g1 proof let a, b be object of F1(); ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b for g1 being Morphism of ((G * F) . a),((id F1()) . a) st g1 = F7(a) holds for g2 being Morphism of ((G * F) . b),((id F1()) . b) st g2 = F7(b) holds g2 * ((G * F) . f) = ((id F1()) . f) * g1 ) assume A17: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b for g1 being Morphism of ((G * F) . a),((id F1()) . a) st g1 = F7(a) holds for g2 being Morphism of ((G * F) . b),((id F1()) . b) st g2 = F7(b) holds g2 * ((G * F) . f) = ((id F1()) . f) * g1 A18: F7(a) in <^((G * F) . a),((id F1()) . a)^> by A11; A19: F7(b) in <^((G * F) . b),((id F1()) . b)^> by A11; reconsider g2 = F7(b) as Morphism of ((G * F) . b),((id F1()) . b) by A11; A20: <^((G * F) . a),((G * F) . b)^> <> {} by A17, FUNCTOR0:def_18; A21: <^((id F1()) . a),((id F1()) . b)^> <> {} by A17, FUNCTOR0:def_18; let f be Morphism of a,b; ::_thesis: for g1 being Morphism of ((G * F) . a),((id F1()) . a) st g1 = F7(a) holds for g2 being Morphism of ((G * F) . b),((id F1()) . b) st g2 = F7(b) holds g2 * ((G * F) . f) = ((id F1()) . f) * g1 A22: (G * F) . f = G . (F . f) by A17, FUNCTOR3:6; A23: F3(a) = F . a by A7; A24: F3(b) = F . b by A7; A25: F5(a,b,f) = F . f by A8, A17; <^(F . a),(F . b)^> <> {} by A17, FUNCTOR0:def_18; then F6(F3(a),F3(b),F5(a,b,f)) = (G * F) . f by A10, A22, A23, A24, A25; then g2 * ((G * F) . f) = F7(b) * F6(F3(a),F3(b),F5(a,b,f)) by A19, A20, Th36 .= f * F7(a) by A5, A17 .= ((id F1()) . f) * F7(a) by A17, FUNCTOR0:31 ; hence for g1 being Morphism of ((G * F) . a),((id F1()) . a) st g1 = F7(a) holds for g2 being Morphism of ((G * F) . b),((id F1()) . b) st g2 = F7(b) holds g2 * ((G * F) . f) = ((id F1()) . f) * g1 by A18, A21, Th36; ::_thesis: verum end; ex t being natural_equivalence of G * F, id F1() st ( G * F, id F1() are_naturally_equivalent & ( for a being object of F1() holds t ! a = F7(a) ) ) from YELLOW18:sch_15(A11, A16); hence G * F, id F1() are_naturally_equivalent ; ::_thesis: F * G, id F2() are_naturally_equivalent set I = id F2(); set FG = F * G; A26: for a being object of F2() holds ( F8(a) in <^((id F2()) . a),((F * G) . a)^> & <^((F * G) . a),((id F2()) . a)^> <> {} & ( for f being Morphism of ((id F2()) . a),((F * G) . a) st f = F8(a) holds f is iso ) ) proof let a be object of F2(); ::_thesis: ( F8(a) in <^((id F2()) . a),((F * G) . a)^> & <^((F * G) . a),((id F2()) . a)^> <> {} & ( for f being Morphism of ((id F2()) . a),((F * G) . a) st f = F8(a) holds f is iso ) ) A27: (F * G) . a = F . (G . a) by FUNCTOR0:33 .= F3((G . a)) by A7 .= F3(F4(a)) by A9 ; A28: (id F2()) . a = a by FUNCTOR0:29; then A29: F8(a) in <^((id F2()) . a),((F * G) . a)^> by A4, A27; A30: F8(a) " in <^((F * G) . a),((id F2()) . a)^> by A4, A27, A28; F8(a) is one-to-one by A4, A27; hence ( F8(a) in <^((id F2()) . a),((F * G) . a)^> & <^((F * G) . a),((id F2()) . a)^> <> {} & ( for f being Morphism of ((id F2()) . a),((F * G) . a) st f = F8(a) holds f is iso ) ) by A29, A30, Th41; ::_thesis: verum end; A31: for a, b being object of F2() st <^a,b^> <> {} holds for f being Morphism of a,b for g1 being Morphism of ((id F2()) . a),((F * G) . a) st g1 = F8(a) holds for g2 being Morphism of ((id F2()) . b),((F * G) . b) st g2 = F8(b) holds g2 * ((id F2()) . f) = ((F * G) . f) * g1 proof let a, b be object of F2(); ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b for g1 being Morphism of ((id F2()) . a),((F * G) . a) st g1 = F8(a) holds for g2 being Morphism of ((id F2()) . b),((F * G) . b) st g2 = F8(b) holds g2 * ((id F2()) . f) = ((F * G) . f) * g1 ) assume A32: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b for g1 being Morphism of ((id F2()) . a),((F * G) . a) st g1 = F8(a) holds for g2 being Morphism of ((id F2()) . b),((F * G) . b) st g2 = F8(b) holds g2 * ((id F2()) . f) = ((F * G) . f) * g1 A33: F8(a) in <^((id F2()) . a),((F * G) . a)^> by A26; reconsider g1 = F8(a) as Morphism of ((id F2()) . a),((F * G) . a) by A26; A34: F8(b) in <^((id F2()) . b),((F * G) . b)^> by A26; A35: <^((F * G) . a),((F * G) . b)^> <> {} by A32, FUNCTOR0:def_18; A36: <^((id F2()) . a),((id F2()) . b)^> <> {} by A32, FUNCTOR0:def_18; let f be Morphism of a,b; ::_thesis: for g1 being Morphism of ((id F2()) . a),((F * G) . a) st g1 = F8(a) holds for g2 being Morphism of ((id F2()) . b),((F * G) . b) st g2 = F8(b) holds g2 * ((id F2()) . f) = ((F * G) . f) * g1 A37: (F * G) . f = F . (G . f) by A32, FUNCTOR3:6; A38: F4(a) = G . a by A9; A39: F4(b) = G . b by A9; A40: F6(a,b,f) = G . f by A10, A32; <^(G . a),(G . b)^> <> {} by A32, FUNCTOR0:def_18; then F5(F4(a),F4(b),F6(a,b,f)) = (F * G) . f by A8, A37, A38, A39, A40; then ((F * G) . f) * g1 = F5(F4(a),F4(b),F6(a,b,f)) * F8(a) by A33, A35, Th36 .= F8(b) * f by A6, A32 .= F8(b) * ((id F2()) . f) by A32, FUNCTOR0:31 ; hence for g1 being Morphism of ((id F2()) . a),((F * G) . a) st g1 = F8(a) holds for g2 being Morphism of ((id F2()) . b),((F * G) . b) st g2 = F8(b) holds g2 * ((id F2()) . f) = ((F * G) . f) * g1 by A34, A36, Th36; ::_thesis: verum end; ex t being natural_equivalence of id F2(),F * G st ( id F2(),F * G are_naturally_equivalent & ( for a being object of F2() holds t ! a = F8(a) ) ) from YELLOW18:sch_15(A26, A31); hence F * G, id F2() are_naturally_equivalent ; ::_thesis: verum end; begin definition let C be category; defpred S1[ set , set ] means \$1 = \$2 `22 ; defpred S2[ set , set , Function] means ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = \$1 & fb = \$2 & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds \$3 . [h,[o,fa]] = [(g * h),[o,fb]] ) ); deffunc H1( set ) -> set = Union (disjoin the Arrows of C); A1: for a, b, c being Element of C for f, g being Function st S2[a,b,f] & S2[b,c,g] holds S2[a,c,g * f] proof let a, b, c be Element of C; ::_thesis: for f, g being Function st S2[a,b,f] & S2[b,c,g] holds S2[a,c,g * f] let f, g be Function; ::_thesis: ( S2[a,b,f] & S2[b,c,g] implies S2[a,c,g * f] ) given fa, fb being object of C, ff being Morphism of fa,fb such that A2: fa = a and A3: fb = b and A4: <^fa,fb^> <> {} and A5: for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(ff * h),[o,fb]] ; ::_thesis: ( not S2[b,c,g] or S2[a,c,g * f] ) given ga, gb being object of C, gf being Morphism of ga,gb such that A6: ga = b and A7: gb = c and A8: <^ga,gb^> <> {} and A9: for o being object of C st <^o,ga^> <> {} holds for h being Morphism of o,ga holds g . [h,[o,ga]] = [(gf * h),[o,gb]] ; ::_thesis: S2[a,c,g * f] reconsider gf = gf as Morphism of fb,gb by A3, A6; take fa ; ::_thesis: ex fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = c & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(g * h),[o,fb]] ) ) take gb ; ::_thesis: ex g being Morphism of fa,gb st ( fa = a & gb = c & <^fa,gb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(g * h),[o,gb]] ) ) take k = gf * ff; ::_thesis: ( fa = a & gb = c & <^fa,gb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] ) ) thus ( fa = a & gb = c & <^fa,gb^> <> {} ) by A2, A3, A4, A6, A7, A8, ALTCAT_1:def_2; ::_thesis: for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] let o be object of C; ::_thesis: ( <^o,fa^> <> {} implies for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] ) assume A10: <^o,fa^> <> {} ; ::_thesis: for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] A11: <^o,fb^> <> {} by A4, A10, ALTCAT_1:def_2; let h be Morphism of o,fa; ::_thesis: (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] A12: f . [h,[o,fa]] = [(ff * h),[o,fb]] by A5, A10; then [h,[o,fa]] in dom f by FUNCT_1:def_2; hence (g * f) . [h,[o,fa]] = g . [(ff * h),[o,fb]] by A12, FUNCT_1:13 .= [(gf * (ff * h)),[o,gb]] by A3, A6, A9, A11 .= [(k * h),[o,gb]] by A3, A4, A6, A8, A10, ALTCAT_1:21 ; ::_thesis: verum end; A13: for a being Element of C for X being set st ( for x being set holds ( x in X iff ( x in H1(a) & S1[a,x] ) ) ) holds S2[a,a, id X] proof let a be Element of C; ::_thesis: for X being set st ( for x being set holds ( x in X iff ( x in H1(a) & S1[a,x] ) ) ) holds S2[a,a, id X] let X be set ; ::_thesis: ( ( for x being set holds ( x in X iff ( x in H1(a) & S1[a,x] ) ) ) implies S2[a,a, id X] ) assume A14: for x being set holds ( x in X iff ( x in Union (disjoin the Arrows of C) & S1[a,x] ) ) ; ::_thesis: S2[a,a, id X] reconsider fa = a as object of C ; take fa ; ::_thesis: ex fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = a & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fb]] ) ) take fa ; ::_thesis: ex g being Morphism of fa,fa st ( fa = a & fa = a & <^fa,fa^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fa]] ) ) take g = idm fa; ::_thesis: ( fa = a & fa = a & <^fa,fa^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fa]] ) ) thus ( fa = a & fa = a & <^fa,fa^> <> {} ) ; ::_thesis: for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fa]] let o be object of C; ::_thesis: ( <^o,fa^> <> {} implies for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fa]] ) assume A15: <^o,fa^> <> {} ; ::_thesis: for h being Morphism of o,fa holds (id X) . [h,[o,fa]] = [(g * h),[o,fa]] let h be Morphism of o,fa; ::_thesis: (id X) . [h,[o,fa]] = [(g * h),[o,fa]] A16: [h,[o,fa]] `1 = h ; A17: [h,[o,fa]] `2 = [o,fa] ; A18: [h,[o,fa]] `22 = fa by MCART_1:85; dom the Arrows of C = [: the carrier of C, the carrier of C:] by PARTFUN1:def_2; then [o,fa] in dom the Arrows of C by ZFMISC_1:def_2; then [h,[o,fa]] in Union (disjoin the Arrows of C) by A15, A16, A17, CARD_3:22; then [h,[o,fa]] in X by A14, A18; hence (id X) . [h,[o,fa]] = [h,[o,fa]] by FUNCT_1:18 .= [(g * h),[o,fa]] by A15, ALTCAT_1:20 ; ::_thesis: verum end; func Concretized C -> strict concrete category means :Def12: :: YELLOW18:def 12 ( the carrier of it = the carrier of C & ( for a being object of it for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of it . (a,b) iff ( f in Funcs ((it -carrier_of a),(it -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) ); uniqueness for b1, b2 being strict concrete category st the carrier of b1 = the carrier of C & ( for a being object of b1 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b1 . (a,b) iff ( f in Funcs ((b1 -carrier_of a),(b1 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) & the carrier of b2 = the carrier of C & ( for a being object of b2 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b2 . (a,b) iff ( f in Funcs ((b2 -carrier_of a),(b2 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) holds b1 = b2 proof for C1, C2 being semi-functional para-functional category st the carrier of C1 = the carrier of C & ( for a being object of C1 for x being set holds ( x in the_carrier_of a iff ( x in H1(a) & S1[a,x] ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of C1 . (a,b) iff ( f in Funcs ((C1 -carrier_of a),(C1 -carrier_of b)) & S2[a,b,f] ) ) ) & the carrier of C2 = the carrier of C & ( for a being object of C2 for x being set holds ( x in the_carrier_of a iff ( x in H1(a) & S1[a,x] ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of C2 . (a,b) iff ( f in Funcs ((C2 -carrier_of a),(C2 -carrier_of b)) & S2[a,b,f] ) ) ) holds AltCatStr(# the carrier of C1, the Arrows of C1, the Comp of C1 #) = AltCatStr(# the carrier of C2, the Arrows of C2, the Comp of C2 #) from YELLOW18:sch_21(); hence for b1, b2 being strict concrete category st the carrier of b1 = the carrier of C & ( for a being object of b1 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b1 . (a,b) iff ( f in Funcs ((b1 -carrier_of a),(b1 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) & the carrier of b2 = the carrier of C & ( for a being object of b2 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b2 . (a,b) iff ( f in Funcs ((b2 -carrier_of a),(b2 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) holds b1 = b2 ; ::_thesis: verum end; existence ex b1 being strict concrete category st ( the carrier of b1 = the carrier of C & ( for a being object of b1 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b1 . (a,b) iff ( f in Funcs ((b1 -carrier_of a),(b1 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) ) proof thus ex C9 being strict concrete category st ( the carrier of C9 = the carrier of C & ( for a being object of C9 for x being set holds ( x in the_carrier_of a iff ( x in H1(a) & S1[a,x] ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of C9 . (a,b) iff ( f in Funcs ((C9 -carrier_of a),(C9 -carrier_of b)) & S2[a,b,f] ) ) ) ) from YELLOW18:sch_18(A1, A13); ::_thesis: verum end; end; :: deftheorem Def12 defines Concretized YELLOW18:def_12_:_ for C being category for b2 being strict concrete category holds ( b2 = Concretized C iff ( the carrier of b2 = the carrier of C & ( for a being object of b2 for x being set holds ( x in the_carrier_of a iff ( x in Union (disjoin the Arrows of C) & a = x `22 ) ) ) & ( for a, b being Element of C for f being Function holds ( f in the Arrows of b2 . (a,b) iff ( f in Funcs ((b2 -carrier_of a),(b2 -carrier_of b)) & ex fa, fb being object of C ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] ) ) ) ) ) ) ); theorem Th43: :: YELLOW18:43 for A being category for a being object of A for x being set holds ( x in (Concretized A) -carrier_of a iff ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) ) proof let A be category; ::_thesis: for a being object of A for x being set holds ( x in (Concretized A) -carrier_of a iff ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) ) let a be object of A; ::_thesis: for x being set holds ( x in (Concretized A) -carrier_of a iff ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) ) let x be set ; ::_thesis: ( x in (Concretized A) -carrier_of a iff ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) ) set B = Concretized A; reconsider ac = a as object of (Concretized A) by Def12; A1: ( x in the_carrier_of ac iff ( x in Union (disjoin the Arrows of A) & ac = x `22 ) ) by Def12; A2: dom the Arrows of A = [: the carrier of A, the carrier of A:] by PARTFUN1:def_2; hereby ::_thesis: ( ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) implies x in (Concretized A) -carrier_of a ) assume A3: x in (Concretized A) -carrier_of a ; ::_thesis: ex b being object of A ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) then A4: x `2 in dom the Arrows of A by A1, CARD_3:22; A5: x `1 in the Arrows of A . (x `2) by A1, A3, CARD_3:22; A6: x = [(x `1),(x `2)] by A1, A3, CARD_3:22; consider b, c being set such that A7: b in the carrier of A and c in the carrier of A and A8: x `2 = [b,c] by A4, ZFMISC_1:def_2; reconsider b = b as object of A by A7; take b = b; ::_thesis: ex f being Morphism of b,a st ( <^b,a^> <> {} & x = [f,[b,a]] ) reconsider f = x `1 as Morphism of b,a by A1, A3, A5, A6, A8, MCART_1:85; take f = f; ::_thesis: ( <^b,a^> <> {} & x = [f,[b,a]] ) thus ( <^b,a^> <> {} & x = [f,[b,a]] ) by A1, A3, A5, A6, A8, MCART_1:85; ::_thesis: verum end; given b being object of A, f being Morphism of b,a such that A9: <^b,a^> <> {} and A10: x = [f,[b,a]] ; ::_thesis: x in (Concretized A) -carrier_of a A11: x `1 = f by A10, MCART_1:7; A12: x `2 = [b,a] by A10, MCART_1:7; [b,a] in dom the Arrows of A by A2, ZFMISC_1:def_2; hence x in (Concretized A) -carrier_of a by A1, A9, A10, A11, A12, CARD_3:22, MCART_1:85; ::_thesis: verum end; registration let A be category; let a be object of A; cluster(Concretized A) -carrier_of a -> non empty ; coherence not (Concretized A) -carrier_of a is empty proof [(idm a),[a,a]] in (Concretized A) -carrier_of a by Th43; hence not (Concretized A) -carrier_of a is empty ; ::_thesis: verum end; end; theorem Th44: :: YELLOW18:44 for A being category for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b ex F being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) proof let A be category; ::_thesis: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b ex F being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b ex F being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) ) assume A1: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b ex F being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) set B = Concretized A; let f be Morphism of a,b; ::_thesis: ex F being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) defpred S1[ set , set ] means ex o being object of A ex g being Morphism of o,a st ( <^o,a^> <> {} & \$1 = [g,[o,a]] & \$2 = [(f * g),[o,b]] ); A2: for x being set st x in (Concretized A) -carrier_of a holds ex y being set st ( y in (Concretized A) -carrier_of b & S1[x,y] ) proof let x be set ; ::_thesis: ( x in (Concretized A) -carrier_of a implies ex y being set st ( y in (Concretized A) -carrier_of b & S1[x,y] ) ) assume x in (Concretized A) -carrier_of a ; ::_thesis: ex y being set st ( y in (Concretized A) -carrier_of b & S1[x,y] ) then consider o being object of A, g being Morphism of o,a such that A3: <^o,a^> <> {} and A4: x = [g,[o,a]] by Th43; take [(f * g),[o,b]] ; ::_thesis: ( [(f * g),[o,b]] in (Concretized A) -carrier_of b & S1[x,[(f * g),[o,b]]] ) <^o,b^> <> {} by A1, A3, ALTCAT_1:def_2; hence ( [(f * g),[o,b]] in (Concretized A) -carrier_of b & S1[x,[(f * g),[o,b]]] ) by A3, A4, Th43; ::_thesis: verum end; consider F being Function such that A5: ( dom F = (Concretized A) -carrier_of a & rng F c= (Concretized A) -carrier_of b ) and A6: for x being set st x in (Concretized A) -carrier_of a holds S1[x,F . x] from FUNCT_1:sch_5(A2); A7: F in Funcs (((Concretized A) -carrier_of a),((Concretized A) -carrier_of b)) by A5, FUNCT_2:def_2; then reconsider F = F as Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) by FUNCT_2:66; take F ; ::_thesis: ( F in the Arrows of (Concretized A) . (a,b) & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] ) ) ex fa, fb being object of A ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] ) ) proof take fa = a; ::_thesis: ex fb being object of A ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] ) ) take fb = b; ::_thesis: ex g being Morphism of fa,fb st ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] ) ) reconsider g = f as Morphism of fa,fb ; take g ; ::_thesis: ( fa = a & fb = b & <^fa,fb^> <> {} & ( for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] ) ) thus ( fa = a & fb = b & <^fa,fb^> <> {} ) by A1; ::_thesis: for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] let o be object of A; ::_thesis: ( <^o,fa^> <> {} implies for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] ) assume A8: <^o,fa^> <> {} ; ::_thesis: for h being Morphism of o,fa holds F . [h,[o,fa]] = [(g * h),[o,fb]] let h be Morphism of o,fa; ::_thesis: F . [h,[o,fa]] = [(g * h),[o,fb]] [h,[o,fa]] in (Concretized A) -carrier_of fa by A8, Th43; then consider c being object of A, k being Morphism of c,fa such that <^c,fa^> <> {} and A9: [h,[o,fa]] = [k,[c,fa]] and A10: F . [h,[o,fa]] = [(g * k),[c,fb]] by A6; [o,fa] = [c,fa] by A9, XTUPLE_0:1; then o = c by XTUPLE_0:1; hence F . [h,[o,fa]] = [(g * h),[o,fb]] by A9, A10, XTUPLE_0:1; ::_thesis: verum end; hence F in the Arrows of (Concretized A) . (a,b) by A7, Def12; ::_thesis: for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] let c be object of A; ::_thesis: for g being Morphism of c,a st <^c,a^> <> {} holds F . [g,[c,a]] = [(f * g),[c,b]] let g be Morphism of c,a; ::_thesis: ( <^c,a^> <> {} implies F . [g,[c,a]] = [(f * g),[c,b]] ) assume <^c,a^> <> {} ; ::_thesis: F . [g,[c,a]] = [(f * g),[c,b]] then [g,[c,a]] in (Concretized A) -carrier_of a by Th43; then consider o being object of A, h being Morphism of o,a such that <^o,a^> <> {} and A11: [g,[c,a]] = [h,[o,a]] and A12: F . [g,[c,a]] = [(f * h),[o,b]] by A6; [c,a] = [o,a] by A11, XTUPLE_0:1; then c = o by XTUPLE_0:1; hence F . [g,[c,a]] = [(f * g),[c,b]] by A11, A12, XTUPLE_0:1; ::_thesis: verum end; theorem Th45: :: YELLOW18:45 for A being category for a, b being object of A for F1, F2 being Function st F1 in the Arrows of (Concretized A) . (a,b) & F2 in the Arrows of (Concretized A) . (a,b) & F1 . [(idm a),[a,a]] = F2 . [(idm a),[a,a]] holds F1 = F2 proof let A be category; ::_thesis: for a, b being object of A for F1, F2 being Function st F1 in the Arrows of (Concretized A) . (a,b) & F2 in the Arrows of (Concretized A) . (a,b) & F1 . [(idm a),[a,a]] = F2 . [(idm a),[a,a]] holds F1 = F2 let a, b be object of A; ::_thesis: for F1, F2 being Function st F1 in the Arrows of (Concretized A) . (a,b) & F2 in the Arrows of (Concretized A) . (a,b) & F1 . [(idm a),[a,a]] = F2 . [(idm a),[a,a]] holds F1 = F2 set B = Concretized A; let F1, F2 be Function; ::_thesis: ( F1 in the Arrows of (Concretized A) . (a,b) & F2 in the Arrows of (Concretized A) . (a,b) & F1 . [(idm a),[a,a]] = F2 . [(idm a),[a,a]] implies F1 = F2 ) assume that A1: F1 in the Arrows of (Concretized A) . (a,b) and A2: F2 in the Arrows of (Concretized A) . (a,b) and A3: F1 . [(idm a),[a,a]] = F2 . [(idm a),[a,a]] ; ::_thesis: F1 = F2 A4: F1 in Funcs (((Concretized A) -carrier_of a),((Concretized A) -carrier_of b)) by A1, Def12; A5: F2 in Funcs (((Concretized A) -carrier_of a),((Concretized A) -carrier_of b)) by A2, Def12; A6: dom F1 = (Concretized A) -carrier_of a by A4, FUNCT_2:92; A7: dom F2 = (Concretized A) -carrier_of a by A5, FUNCT_2:92; consider fa, fb being object of A, f being Morphism of fa,fb such that A8: fa = a and A9: fb = b and A10: <^fa,fb^> <> {} and A11: for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds F1 . [h,[o,fa]] = [(f * h),[o,fb]] by A1, Def12; consider ga, gb being object of A, g being Morphism of ga,gb such that A12: ga = a and A13: gb = b and <^ga,gb^> <> {} and A14: for o being object of A st <^o,ga^> <> {} holds for h being Morphism of o,ga holds F2 . [h,[o,ga]] = [(g * h),[o,gb]] by A2, Def12; reconsider f = f, g = g as Morphism of a,b by A8, A9, A12, A13; A15: F1 . [(idm a),[a,a]] = [(f * (idm a)),[a,b]] by A8, A9, A11; A16: f * (idm a) = f by A8, A9, A10, ALTCAT_1:def_17; A17: g * (idm a) = g by A8, A9, A10, ALTCAT_1:def_17; F2 . [(idm a),[a,a]] = [(g * (idm a)),[a,b]] by A12, A13, A14; then A18: f = g by A3, A15, A16, A17, XTUPLE_0:1; now__::_thesis:_for_x_being_set_st_x_in_(Concretized_A)_-carrier_of_a_holds_ F1_._x_=_F2_._x let x be set ; ::_thesis: ( x in (Concretized A) -carrier_of a implies F1 . x = F2 . x ) assume x in (Concretized A) -carrier_of a ; ::_thesis: F1 . x = F2 . x then consider bb being object of A, ff being Morphism of bb,a such that A19: <^bb,a^> <> {} and A20: x = [ff,[bb,a]] by Th43; thus F1 . x = [(f * ff),[bb,b]] by A8, A9, A11, A19, A20 .= F2 . x by A12, A13, A14, A18, A19, A20 ; ::_thesis: verum end; hence F1 = F2 by A6, A7, FUNCT_1:2; ::_thesis: verum end; scheme :: YELLOW18:sch 23 NonUniqMSFunctionEx{ F1() -> set , F2() -> ManySortedSet of F1(), F3() -> ManySortedSet of F1(), P1[ set , set , set ] } : ex F being ManySortedFunction of F2(),F3() st for i, x being set st i in F1() & x in F2() . i holds ( (F . i) . x in F3() . i & P1[i,x,(F . i) . x] ) provided A1: for i, x being set st i in F1() & x in F2() . i holds ex y being set st ( y in F3() . i & P1[i,x,y] ) proof defpred S1[ set , set ] means ex f being Function of (F2() . \$1),(F3() . \$1) st ( \$2 = f & ( for x being set st x in F2() . \$1 holds ( f . x in F3() . \$1 & P1[\$1,x,f . x] ) ) ); A2: for i being set st i in F1() holds ex y being set st S1[i,y] proof let i be set ; ::_thesis: ( i in F1() implies ex y being set st S1[i,y] ) assume A3: i in F1() ; ::_thesis: ex y being set st S1[i,y] defpred S2[ set , set ] means ( \$2 in F3() . i & P1[i,\$1,\$2] ); A4: now__::_thesis:_for_x_being_set_st_x_in_F2()_._i_holds_ ex_y_being_set_st_ (_y_in_F3()_._i_&_S2[x,y]_) let x be set ; ::_thesis: ( x in F2() . i implies ex y being set st ( y in F3() . i & S2[x,y] ) ) assume x in F2() . i ; ::_thesis: ex y being set st ( y in F3() . i & S2[x,y] ) then ex y being set st ( y in F3() . i & P1[i,x,y] ) by A1, A3; hence ex y being set st ( y in F3() . i & S2[x,y] ) ; ::_thesis: verum end; consider f being Function such that A5: ( dom f = F2() . i & rng f c= F3() . i ) and A6: for x being set st x in F2() . i holds S2[x,f . x] from FUNCT_1:sch_5(A4); reconsider f = f as Function of (F2() . i),(F3() . i) by A5, FUNCT_2:2; take f ; ::_thesis: S1[i,f] take f ; ::_thesis: ( f = f & ( for x being set st x in F2() . i holds ( f . x in F3() . i & P1[i,x,f . x] ) ) ) thus ( f = f & ( for x being set st x in F2() . i holds ( f . x in F3() . i & P1[i,x,f . x] ) ) ) by A6; ::_thesis: verum end; consider F being Function such that A7: dom F = F1() and A8: for i being set st i in F1() holds S1[i,F . i] from CLASSES1:sch_1(A2); reconsider F = F as ManySortedSet of F1() by A7, PARTFUN1:def_2, RELAT_1:def_18; now__::_thesis:_for_i_being_set_st_i_in_F1()_holds_ F_._i_is_Function_of_(F2()_._i),(F3()_._i) let i be set ; ::_thesis: ( i in F1() implies F . i is Function of (F2() . i),(F3() . i) ) assume i in F1() ; ::_thesis: F . i is Function of (F2() . i),(F3() . i) then ex f being Function of (F2() . i),(F3() . i) st ( F . i = f & ( for x being set st x in F2() . i holds ( f . x in F3() . i & P1[i,x,f . x] ) ) ) by A8; hence F . i is Function of (F2() . i),(F3() . i) ; ::_thesis: verum end; then reconsider F = F as ManySortedFunction of F2(),F3() by PBOOLE:def_15; take F ; ::_thesis: for i, x being set st i in F1() & x in F2() . i holds ( (F . i) . x in F3() . i & P1[i,x,(F . i) . x] ) let i, x be set ; ::_thesis: ( i in F1() & x in F2() . i implies ( (F . i) . x in F3() . i & P1[i,x,(F . i) . x] ) ) assume i in F1() ; ::_thesis: ( not x in F2() . i or ( (F . i) . x in F3() . i & P1[i,x,(F . i) . x] ) ) then ex f being Function of (F2() . i),(F3() . i) st ( F . i = f & ( for x being set st x in F2() . i holds ( f . x in F3() . i & P1[i,x,f . x] ) ) ) by A8; hence ( not x in F2() . i or ( (F . i) . x in F3() . i & P1[i,x,(F . i) . x] ) ) ; ::_thesis: verum end; definition let A be category; set B = Concretized A; func Concretization A -> strict covariant Functor of A, Concretized A means :Def13: :: YELLOW18:def 13 ( ( for a being object of A holds it . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (it . f) . [(idm a),[a,a]] = [f,[a,b]] ) ); uniqueness for b1, b2 being strict covariant Functor of A, Concretized A st ( for a being object of A holds b1 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (b1 . f) . [(idm a),[a,a]] = [f,[a,b]] ) & ( for a being object of A holds b2 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (b2 . f) . [(idm a),[a,a]] = [f,[a,b]] ) holds b1 = b2 proof let F, G be strict covariant Functor of A, Concretized A; ::_thesis: ( ( for a being object of A holds F . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (F . f) . [(idm a),[a,a]] = [f,[a,b]] ) & ( for a being object of A holds G . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (G . f) . [(idm a),[a,a]] = [f,[a,b]] ) implies F = G ) assume that A1: for a being object of A holds F . a = a and A2: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (F . f) . [(idm a),[a,a]] = [f,[a,b]] and A3: for a being object of A holds G . a = a and A4: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (G . f) . [(idm a),[a,a]] = [f,[a,b]] ; ::_thesis: F = G A5: now__::_thesis:_for_a_being_object_of_A_holds_F_._a_=_G_._a let a be object of A; ::_thesis: F . a = G . a thus F . a = a by A1 .= G . a by A3 ; ::_thesis: verum end; now__::_thesis:_for_a,_b_being_object_of_A_st_<^a,b^>_<>_{}_holds_ for_f_being_Morphism_of_a,b_holds_F_._f_=_G_._f let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds F . f = G . f ) assume A6: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds F . f = G . f let f be Morphism of a,b; ::_thesis: F . f = G . f A7: (F . f) . [(idm a),[a,a]] = [f,[a,b]] by A2, A6; A8: (G . f) . [(idm a),[a,a]] = [f,[a,b]] by A4, A6; A9: <^(F . a),(F . b)^> <> {} by A6, FUNCTOR0:def_18; A10: F . a = a by A1; A11: F . b = b by A1; A12: G . a = a by A3; G . b = b by A3; hence F . f = G . f by A7, A8, A9, A10, A11, A12, Th45; ::_thesis: verum end; hence F = G by A5, Th1; ::_thesis: verum end; existence ex b1 being strict covariant Functor of A, Concretized A st ( ( for a being object of A holds b1 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (b1 . f) . [(idm a),[a,a]] = [f,[a,b]] ) ) proof deffunc H1( set ) -> set = \$1; A13: the carrier of (Concretized A) = the carrier of A by Def12; A14: for a being object of A holds H1(a) is object of (Concretized A) by Def12; reconsider AA = the Arrows of (Concretized A) as ManySortedSet of [: the carrier of A, the carrier of A:] by A13; defpred S1[ set , set , set ] means ex a, b being object of A ex f being Morphism of a,b ex G being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) st ( \$1 = [a,b] & \$2 = f & \$3 = G & ( for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds G . [g,[c,a]] = [(f * g),[c,b]] ) ); A15: for i, x being set st i in [: the carrier of A, the carrier of A:] & x in the Arrows of A . i holds ex y being set st ( y in AA . i & S1[i,x,y] ) proof let i, x be set ; ::_thesis: ( i in [: the carrier of A, the carrier of A:] & x in the Arrows of A . i implies ex y being set st ( y in AA . i & S1[i,x,y] ) ) assume i in [: the carrier of A, the carrier of A:] ; ::_thesis: ( not x in the Arrows of A . i or ex y being set st ( y in AA . i & S1[i,x,y] ) ) then consider a, b being set such that A16: a in the carrier of A and A17: b in the carrier of A and A18: i = [a,b] by ZFMISC_1:def_2; reconsider a = a, b = b as object of A by A16, A17; assume A19: x in the Arrows of A . i ; ::_thesis: ex y being set st ( y in AA . i & S1[i,x,y] ) then reconsider f = x as Morphism of a,b by A18; consider G being Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) such that A20: G in AA . (a,b) and A21: for c being object of A for g being Morphism of c,a st <^c,a^> <> {} holds G . [g,[c,a]] = [(f * g),[c,b]] by A18, A19, Th44; take G ; ::_thesis: ( G in AA . i & S1[i,x,G] ) thus ( G in AA . i & S1[i,x,G] ) by A18, A20, A21; ::_thesis: verum end; consider F being ManySortedFunction of the Arrows of A,AA such that A22: for i, x being set st i in [: the carrier of A, the carrier of A:] & x in the Arrows of A . i holds ( (F . i) . x in AA . i & S1[i,x,(F . i) . x] ) from YELLOW18:sch_23(A15); deffunc H2( set , set , set ) -> set = (F . [\$1,\$2]) . \$3; A23: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds H2(a,b,f) in the Arrows of (Concretized A) . (H1(a),H1(b)) proof let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds H2(a,b,f) in the Arrows of (Concretized A) . (H1(a),H1(b)) ) assume A24: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds H2(a,b,f) in the Arrows of (Concretized A) . (H1(a),H1(b)) let f be Morphism of a,b; ::_thesis: H2(a,b,f) in the Arrows of (Concretized A) . (H1(a),H1(b)) [a,b] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; hence H2(a,b,f) in the Arrows of (Concretized A) . (H1(a),H1(b)) by A22, A24; ::_thesis: verum end; A25: for a, b, c being object of A st <^a,b^> <> {} & <^b,c^> <> {} holds for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of (Concretized A) st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 proof let a, b, c be object of A; ::_thesis: ( <^a,b^> <> {} & <^b,c^> <> {} implies for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of (Concretized A) st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 ) assume that A26: <^a,b^> <> {} and A27: <^b,c^> <> {} ; ::_thesis: for f being Morphism of a,b for g being Morphism of b,c for a9, b9, c9 being object of (Concretized A) st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 let f be Morphism of a,b; ::_thesis: for g being Morphism of b,c for a9, b9, c9 being object of (Concretized A) st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 let g be Morphism of b,c; ::_thesis: for a9, b9, c9 being object of (Concretized A) st a9 = H1(a) & b9 = H1(b) & c9 = H1(c) holds for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 let a9, b9, c9 be object of (Concretized A); ::_thesis: ( a9 = H1(a) & b9 = H1(b) & c9 = H1(c) implies for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 ) assume that A28: a9 = a and A29: b9 = b and A30: c9 = c ; ::_thesis: for f9 being Morphism of a9,b9 for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 let f9 be Morphism of a9,b9; ::_thesis: for g9 being Morphism of b9,c9 st f9 = H2(a,b,f) & g9 = H2(b,c,g) holds H2(a,c,g * f) = g9 * f9 let g9 be Morphism of b9,c9; ::_thesis: ( f9 = H2(a,b,f) & g9 = H2(b,c,g) implies H2(a,c,g * f) = g9 * f9 ) assume that A31: f9 = (F . [a,b]) . f and A32: g9 = (F . [b,c]) . g ; ::_thesis: H2(a,c,g * f) = g9 * f9 A33: [a,b] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; then consider a1, b1 being object of A, f1 being Morphism of a1,b1, G1 being Function of ((Concretized A) -carrier_of a1),((Concretized A) -carrier_of b1) such that A34: [a,b] = [a1,b1] and A35: f = f1 and A36: (F . [a,b]) . f = G1 and A37: for c being object of A for g being Morphism of c,a1 st <^c,a1^> <> {} holds G1 . [g,[c,a1]] = [(f1 * g),[c,b1]] by A22, A26; A38: [b,c] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; then consider b2, c2 being object of A, g2 being Morphism of b2,c2, G2 being Function of ((Concretized A) -carrier_of b2),((Concretized A) -carrier_of c2) such that A39: [b,c] = [b2,c2] and A40: g = g2 and A41: (F . [b,c]) . g = G2 and A42: for c being object of A for g being Morphism of c,b2 st <^c,b2^> <> {} holds G2 . [g,[c,b2]] = [(g2 * g),[c,c2]] by A22, A27; A43: <^a,c^> <> {} by A26, A27, ALTCAT_1:def_2; [a,c] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; then consider a3, c3 being object of A, h3 being Morphism of a3,c3, G3 being Function of ((Concretized A) -carrier_of a3),((Concretized A) -carrier_of c3) such that A44: [a,c] = [a3,c3] and A45: g * f = h3 and A46: (F . [a,c]) . (g * f) = G3 and A47: for c being object of A for g being Morphism of c,a3 st <^c,a3^> <> {} holds G3 . [g,[c,a3]] = [(h3 * g),[c,c3]] by A22, A43; A48: (F . [a,b]) . f in <^a9,b9^> by A22, A26, A28, A29, A33; A49: (F . [b,c]) . g in <^b9,c9^> by A22, A27, A29, A30, A38; A50: a = a1 by A34, XTUPLE_0:1; A51: b = b1 by A34, XTUPLE_0:1; A52: b = b2 by A39, XTUPLE_0:1; A53: c = c2 by A39, XTUPLE_0:1; A54: a = a3 by A44, XTUPLE_0:1; A55: c = c3 by A44, XTUPLE_0:1; reconsider G1 = G1 as Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of b) by A34, A50, XTUPLE_0:1; reconsider G2 = G2 as Function of ((Concretized A) -carrier_of b),((Concretized A) -carrier_of c) by A39, A52, XTUPLE_0:1; reconsider G3 = G3 as Function of ((Concretized A) -carrier_of a),((Concretized A) -carrier_of c) by A44, A54, XTUPLE_0:1; now__::_thesis:_for_x_being_Element_of_(Concretized_A)_-carrier_of_a_holds_G3_._x_=_(G2_*_G1)_._x let x be Element of (Concretized A) -carrier_of a; ::_thesis: G3 . x = (G2 * G1) . x consider bb being object of A, ff being Morphism of bb,a such that A56: <^bb,a^> <> {} and A57: x = [ff,[bb,a]] by Th43; A58: <^bb,b^> <> {} by A26, A56, ALTCAT_1:def_2; thus G3 . x = [((g * f) * ff),[bb,c]] by A45, A47, A54, A55, A56, A57 .= [(g * (f * ff)),[bb,c]] by A26, A27, A56, ALTCAT_1:21 .= G2 . [(f * ff),[bb,b]] by A40, A42, A52, A53, A58 .= G2 . (G1 . x) by A35, A37, A50, A51, A56, A57 .= (G2 * G1) . x by FUNCT_2:15 ; ::_thesis: verum end; then G3 = G2 * G1 by FUNCT_2:63; hence H2(a,c,g * f) = g9 * f9 by A31, A32, A36, A41, A46, A48, A49, Th36; ::_thesis: verum end; A59: for a being object of A for a9 being object of (Concretized A) st a9 = H1(a) holds H2(a,a, idm a) = idm a9 proof let a be object of A; ::_thesis: for a9 being object of (Concretized A) st a9 = H1(a) holds H2(a,a, idm a) = idm a9 let a9 be object of (Concretized A); ::_thesis: ( a9 = H1(a) implies H2(a,a, idm a) = idm a9 ) assume A60: a9 = a ; ::_thesis: H2(a,a, idm a) = idm a9 [a,a] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; then consider c, b being object of A, f being Morphism of c,b, G being Function of ((Concretized A) -carrier_of c),((Concretized A) -carrier_of b) such that A61: [a,a] = [c,b] and A62: idm a = f and A63: (F . [a,a]) . (idm a) = G and A64: for d being object of A for g being Morphism of d,c st <^d,c^> <> {} holds G . [g,[d,c]] = [(f * g),[d,b]] by A22; A65: idm a9 = id (the_carrier_of a9) by Def10; A66: a = c by A61, XTUPLE_0:1; A67: a = b by A61, XTUPLE_0:1; now__::_thesis:_for_x_being_Element_of_the_carrier_of_a9_holds_G_._x_=_(id_(the_carrier_of_a9))_._x let x be Element of the_carrier_of a9; ::_thesis: G . x = (id (the_carrier_of a9)) . x consider bb being object of A, ff being Morphism of bb,a such that A68: <^bb,a^> <> {} and A69: x = [ff,[bb,a]] by A60, Th43; thus G . x = [((idm a) * ff),[bb,a]] by A62, A64, A66, A67, A68, A69 .= x by A68, A69, ALTCAT_1:20 .= (id (the_carrier_of a9)) . x by A60, FUNCT_1:18 ; ::_thesis: verum end; hence H2(a,a, idm a) = idm a9 by A60, A63, A65, A66, A67, FUNCT_2:63; ::_thesis: verum end; consider FF being strict covariant Functor of A, Concretized A such that A70: for a being object of A holds FF . a = H1(a) and A71: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds FF . f = H2(a,b,f) from YELLOW18:sch_8(A14, A23, A25, A59); take FF ; ::_thesis: ( ( for a being object of A holds FF . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (FF . f) . [(idm a),[a,a]] = [f,[a,b]] ) ) thus for a being object of A holds FF . a = a by A70; ::_thesis: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (FF . f) . [(idm a),[a,a]] = [f,[a,b]] let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b holds (FF . f) . [(idm a),[a,a]] = [f,[a,b]] ) assume A72: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b holds (FF . f) . [(idm a),[a,a]] = [f,[a,b]] let f be Morphism of a,b; ::_thesis: (FF . f) . [(idm a),[a,a]] = [f,[a,b]] [a,b] in [: the carrier of A, the carrier of A:] by ZFMISC_1:def_2; then consider a9, b9 being object of A, f9 being Morphism of a9,b9, G being Function of ((Concretized A) -carrier_of a9),((Concretized A) -carrier_of b9) such that A73: [a,b] = [a9,b9] and A74: f = f9 and A75: (F . [a,b]) . f = G and A76: for c being object of A for g being Morphism of c,a9 st <^c,a9^> <> {} holds G . [g,[c,a9]] = [(f9 * g),[c,b9]] by A22, A72; A77: G = FF . f by A71, A72, A75; A78: a = a9 by A73, XTUPLE_0:1; b = b9 by A73, XTUPLE_0:1; hence (FF . f) . [(idm a),[a,a]] = [(f * (idm a)),[a,b]] by A74, A76, A77, A78 .= [f,[a,b]] by A72, ALTCAT_1:def_17 ; ::_thesis: verum end; end; :: deftheorem Def13 defines Concretization YELLOW18:def_13_:_ for A being category for b2 being strict covariant Functor of A, Concretized A holds ( b2 = Concretization A iff ( ( for a being object of A holds b2 . a = a ) & ( for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (b2 . f) . [(idm a),[a,a]] = [f,[a,b]] ) ) ); registration let A be category; cluster Concretization A -> strict covariant bijective ; coherence Concretization A is bijective proof set B = Concretized A; set FF = Concretization A; deffunc H1( set ) -> set = A; A1: for a being object of A holds (Concretization A) . a = H1(a) by Def13; deffunc H2( object of A, object of A, Morphism of A,c2) -> Element of <^((Concretization A) . A),((Concretization A) . c2)^> = (Concretization A) . c3; A2: for a, b being object of A st <^a,b^> <> {} holds for f being Morphism of a,b holds (Concretization A) . f = H2(a,b,f) ; A3: for a, b being object of A st H1(a) = H1(b) holds a = b ; A4: for a, b being object of A st <^a,b^> <> {} holds for f, g being Morphism of a,b st H2(a,b,f) = H2(a,b,g) holds f = g proof let a, b be object of A; ::_thesis: ( <^a,b^> <> {} implies for f, g being Morphism of a,b st H2(a,b,f) = H2(a,b,g) holds f = g ) assume A5: <^a,b^> <> {} ; ::_thesis: for f, g being Morphism of a,b st H2(a,b,f) = H2(a,b,g) holds f = g let f, g be Morphism of a,b; ::_thesis: ( H2(a,b,f) = H2(a,b,g) implies f = g ) A6: ((Concretization A) . f) . [(idm a),[a,a]] = [f,[a,b]] by A5, Def13; ((Concretization A) . g) . [(idm a),[a,a]] = [g,[a,b]] by A5, Def13; hence ( H2(a,b,f) = H2(a,b,g) implies f = g ) by A6, XTUPLE_0:1; ::_thesis: verum end; A7: for a, b being object of (Concretized A) st <^a,b^> <> {} holds for f being Morphism of a,b ex c, d being object of A ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) proof let a, b be object of (Concretized A); ::_thesis: ( <^a,b^> <> {} implies for f being Morphism of a,b ex c, d being object of A ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) ) assume A8: <^a,b^> <> {} ; ::_thesis: for f being Morphism of a,b ex c, d being object of A ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) reconsider c = a, d = b as object of A by Def12; let f be Morphism of a,b; ::_thesis: ex c, d being object of A ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) take c ; ::_thesis: ex d being object of A ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) take d ; ::_thesis: ex g being Morphism of c,d st ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) consider fa, fb being object of A, g being Morphism of fa,fb such that A9: fa = c and A10: fb = d and A11: <^fa,fb^> <> {} and A12: for o being object of A st <^o,fa^> <> {} holds for h being Morphism of o,fa holds f . [h,[o,fa]] = [(g * h),[o,fb]] by A8, Def12; reconsider g = g as Morphism of c,d by A9, A10; take g ; ::_thesis: ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) A13: ((Concretization A) . g) . [(idm c),[c,c]] = [g,[c,d]] by A9, A10, A11, Def13; g * (idm c) = g by A9, A10, A11, ALTCAT_1:def_17; then A14: ((Concretization A) . g) . [(idm c),[c,c]] = f . [(idm c),[c,c]] by A9, A10, A12, A13; A15: (Concretization A) . c = a by Def13; (Concretization A) . d = b by Def13; hence ( a = H1(c) & b = H1(d) & <^c,d^> <> {} & f = H2(c,d,g) ) by A8, A9, A10, A11, A14, A15, Th45; ::_thesis: verum end; thus Concretization A is bijective from YELLOW18:sch_10(A1, A2, A3, A4, A7); ::_thesis: verum end; end; theorem :: YELLOW18:46 for A being category holds A, Concretized A are_isomorphic proof let A be category; ::_thesis: A, Concretized A are_isomorphic take Concretization A ; :: according to FUNCTOR0:def_39 ::_thesis: ( Concretization A is bijective & Concretization A is covariant ) thus ( Concretization A is bijective & Concretization A is covariant ) ; ::_thesis: verum end;