cat_8.miz



    begin

    theorem :: CAT_8:1

    

     Th1: for C be composable associative CategoryStr, f1,f2,f3 be morphism of C st f1 |> f2 & f2 |> f3 holds ((f1 (*) f2) (*) f3) = (f1 (*) (f2 (*) f3))

    proof

      let C be composable associative CategoryStr;

      let f1,f2,f3 be morphism of C;

      assume

       A1: f1 |> f2 & f2 |> f3;

      C is left_composable right_composable by CAT_6:def 11;

      then (f1 (*) f2) |> f3 & f1 |> (f2 (*) f3) by A1, CAT_6:def 8, CAT_6:def 9;

      hence ((f1 (*) f2) (*) f3) = (f1 (*) (f2 (*) f3)) by A1, CAT_6:def 10;

    end;

    theorem :: CAT_8:2

    

     Th2: for C be composable associative CategoryStr, f1,f2,f3,f4 be morphism of C st f1 |> f2 & f2 |> f3 & f3 |> f4 holds (((f1 (*) f2) (*) f3) (*) f4) = ((f1 (*) f2) (*) (f3 (*) f4)) & (((f1 (*) f2) (*) f3) (*) f4) = ((f1 (*) (f2 (*) f3)) (*) f4) & (((f1 (*) f2) (*) f3) (*) f4) = (f1 (*) ((f2 (*) f3) (*) f4)) & (((f1 (*) f2) (*) f3) (*) f4) = (f1 (*) (f2 (*) (f3 (*) f4)))

    proof

      let C be composable associative CategoryStr;

      let f1,f2,f3,f4 be morphism of C;

      assume

       A1: f1 |> f2 & f2 |> f3 & f3 |> f4;

      C is left_composable right_composable by CAT_6:def 11;

      then

       A2: (f1 (*) f2) |> f3 & f1 |> (f2 (*) f3) & (f2 (*) f3) |> f4 & f2 |> (f3 (*) f4) by A1, CAT_6:def 8, CAT_6:def 9;

      

       A3: ((f1 (*) f2) (*) (f3 (*) f4)) = (f1 (*) (f2 (*) (f3 (*) f4))) by A1, A2, Th1;

      (f1 (*) (f2 (*) (f3 (*) f4))) = (f1 (*) ((f2 (*) f3) (*) f4)) by A1, Th1;

      hence thesis by A3, A1, A2, Th1;

    end;

    theorem :: CAT_8:3

    

     Th3: for C be composable CategoryStr, f,f1,f2 be morphism of C st f1 |> f2 holds ((f1 (*) f2) |> f iff f2 |> f) & (f |> (f1 (*) f2) iff f |> f1)

    proof

      let C be composable CategoryStr;

      let f,f1,f2 be morphism of C;

      assume

       A1: f1 |> f2;

      C is left_composable & C is right_composable by CAT_6:def 11;

      hence thesis by A1, CAT_6:def 8, CAT_6:def 9;

    end;

    theorem :: CAT_8:4

    

     Th4: for C be composable with_identities CategoryStr, f1,f2 be morphism of C st f1 |> f2 holds (f1 is identity implies (f1 (*) f2) = f2) & (f2 is identity implies (f1 (*) f2) = f1)

    proof

      let C be composable with_identities CategoryStr;

      let f1,f2 be morphism of C;

      assume

       A1: f1 |> f2;

      then

       A2: C is non empty by CAT_6: 1;

      thus f1 is identity implies (f1 (*) f2) = f2

      proof

        assume f1 is identity;

        then ( dom f1) = f1 by CAT_7: 6;

        then ( cod f2) = f1 by A1, A2, CAT_7: 5;

        hence (f1 (*) f2) = f2 by A2, CAT_7: 9;

      end;

      assume f2 is identity;

      then ( cod f2) = f2 by CAT_7: 6;

      then ( dom f1) = f2 by A1, A2, CAT_7: 5;

      hence (f1 (*) f2) = f1 by A2, CAT_7: 8;

    end;

    theorem :: CAT_8:5

    

     Th5: for C be non empty with_identities CategoryStr, f be morphism of C holds ex f1,f2 be morphism of C st f1 is identity & f2 is identity & f1 |> f & f |> f2

    proof

      let C be non empty with_identities CategoryStr;

      let f be morphism of C;

      f in ( Mor C);

      then

       A1: f in the carrier of C by CAT_6:def 1;

      then

      consider f1 be morphism of C such that

       A2: f1 |> f & f1 is left_identity by CAT_6:def 6, CAT_6:def 12;

      consider f2 be morphism of C such that

       A3: f |> f2 & f2 is right_identity by A1, CAT_6:def 7, CAT_6:def 12;

      take f1, f2;

      f1 is right_identity by A2, CAT_6: 9;

      hence f1 is identity by A2, CAT_6:def 14;

      f2 is left_identity by A3, CAT_6: 9;

      hence f2 is identity by A3, CAT_6:def 14;

      thus thesis by A2, A3;

    end;

    theorem :: CAT_8:6

    

     Th6: for C be CategoryStr, a,b be Object of C holds for f be Morphism of a, b st ( Hom (a,b)) = {f} holds for g be Morphism of a, b holds f = g

    proof

      let C be CategoryStr, a,b be Object of C;

      let f be Morphism of a, b such that

       A1: ( Hom (a,b)) = {f};

      let g be Morphism of a, b;

      g in {f} by A1, CAT_7:def 3;

      hence thesis by TARSKI:def 1;

    end;

    theorem :: CAT_8:7

    

     Th7: for C be CategoryStr, a,b be Object of C holds for f be Morphism of a, b st ( Hom (a,b)) <> {} & for g be Morphism of a, b holds f = g holds ( Hom (a,b)) = {f}

    proof

      let C be CategoryStr, a,b be Object of C;

      let f be Morphism of a, b such that

       A1: ( Hom (a,b)) <> {} and

       A2: for g be Morphism of a, b holds f = g;

      for x be object holds x in ( Hom (a,b)) iff x = f

      proof

        let x be object;

        thus x in ( Hom (a,b)) implies x = f

        proof

          assume x in ( Hom (a,b));

          then x in { f where f be morphism of C : ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f } by CAT_7:def 1;

          then

          consider g be morphism of C such that

           A3: x = g and

           A4: ex f1,f2 be morphism of C st a = f1 & b = f2 & g |> f1 & f2 |> g;

          g in { f where f be morphism of C : ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f } by A4;

          then g in ( Hom (a,b)) by CAT_7:def 1;

          then g is Morphism of a, b by CAT_7:def 3;

          hence thesis by A2, A3;

        end;

        thus thesis by A1, CAT_7:def 3;

      end;

      hence thesis by TARSKI:def 1;

    end;

    theorem :: CAT_8:8

    

     Th8: for x be object, C be CategoryStr st the carrier of C = {x} & the composition of C = { [ [x, x], x]} holds C is non empty category

    proof

      let x be object;

      let C be CategoryStr;

      assume

       A1: the carrier of C = {x};

      assume

       A2: the composition of C = { [ [x, x], x]};

      

       A3: the carrier of C = the carrier of ( DiscreteCat {x}) by A1, CAT_6:def 16;

      for y be object holds y in the composition of ( DiscreteCat {x}) iff y in { [ [x, x], x]}

      proof

        let y be object;

        hereby

          assume y in the composition of ( DiscreteCat {x});

          then

          consider x1,x2 be object such that

           A4: y = [x1, x2] & x1 in [:the carrier of ( DiscreteCat {x}), the carrier of ( DiscreteCat {x}):] & x2 in the carrier of ( DiscreteCat {x}) by RELSET_1: 2;

          

           A5: x1 in [: {x}, {x}:] & x2 = x by A3, A4, A1, TARSKI:def 1;

          x1 in { [x, x]} by ZFMISC_1: 29, A3, A4, A1;

          then x1 = [x, x] by TARSKI:def 1;

          hence y in { [ [x, x], x]} by A5, A4, TARSKI:def 1;

        end;

        assume

         A6: y in { [ [x, x], x]};

        x in the carrier of ( DiscreteCat {x}) by A3, A1, TARSKI:def 1;

        then

        reconsider f = x as morphism of ( DiscreteCat {x}) by CAT_6:def 1;

        

         A7: y = [ [f, f], f] by A6, TARSKI:def 1;

        

         A8: ( DiscreteCat {x}) is non empty by CAT_6:def 16;

        

         A9: f is identity by CAT_6:def 15;

        

         A10: f |> f by A8, CAT_6: 24, CAT_6:def 15;

        then

         A11: [f, f] in ( dom the composition of ( DiscreteCat {x})) by CAT_6:def 2;

        f = (f (*) f) by A9, A10, Th4;

        then (the composition of ( DiscreteCat {x}) . (f,f)) = f by A10, CAT_6:def 3;

        then (the composition of ( DiscreteCat {x}) . [f, f]) = f by BINOP_1:def 1;

        hence y in the composition of ( DiscreteCat {x}) by A7, A11, FUNCT_1: 1;

      end;

      then the composition of ( DiscreteCat {x}) = { [ [x, x], x]} by TARSKI: 2;

      hence thesis by A3, A2, CAT_6: 14, CAT_6: 15, CAT_6: 20;

    end;

    theorem :: CAT_8:9

    

     Th9: for C1,C2 be category, F be Functor of C1, C2 st F is isomorphism holds F is bijective

    proof

      let C1,C2 be category;

      let F be Functor of C1, C2;

      assume

       A1: F is isomorphism;

      then

       A2: F is covariant by CAT_7:def 19;

      consider G be Functor of C2, C1 such that

       A3: G is covariant & (G (*) F) = ( id C1) & (F (*) G) = ( id C2) by A1, CAT_7:def 19;

      

       A4: (F * G) = ( id C1) & (G * F) = ( id C2) by A2, A3, CAT_6:def 27;

      ( id C1) = ( id the carrier of C1) & ( id C2) = ( id the carrier of C2) by STRUCT_0:def 4;

      then F is one-to-one & F is onto by A4, FUNCT_2: 23;

      hence F is bijective;

    end;

    theorem :: CAT_8:10

    

     Th10: for C1,C2,C3 be composable with_identities CategoryStr st C1 ~= C2 & C2 ~= C3 holds C1 ~= C3

    proof

      let C1,C2,C3 be composable with_identities CategoryStr;

      assume

       A1: C1 ~= C2;

      assume

       A2: C2 ~= C3;

      per cases ;

        suppose

         A3: C2 is non empty & C3 is non empty;

        consider F be Functor of C1, C2 such that

         A4: F is covariant & F is bijective by A1, CAT_7: 12;

        consider G be Functor of C2, C3 such that

         A5: G is covariant & G is bijective by A2, CAT_7: 12;

        (F * G) is onto by A4, A5, A3, FUNCT_2: 27;

        then (G (*) F) is bijective by A4, A5, CAT_6:def 27;

        hence thesis by A4, A5, CAT_6: 35, CAT_7: 12;

      end;

        suppose C2 is empty or C3 is empty;

        then

         A6: C2 is empty & C3 is empty by A2, CAT_7: 15;

        then C1 is empty by A1, CAT_7: 15;

        hence thesis by A6, CAT_7: 13;

      end;

    end;

    theorem :: CAT_8:11

    for C1,C2 be category st C1 ~= C2 holds C1 is empty iff C2 is empty

    proof

      let C1,C2 be category;

      assume C1 ~= C2;

      then

      consider F be Functor of C1, C2, G be Functor of C2, C1 such that

       A1: F is covariant & G is covariant & (G (*) F) = ( id C1) & (F (*) G) = ( id C2) by CAT_6:def 28;

      thus thesis by A1, CAT_6: 31;

    end;

    registration

      let C1 be empty with_identities CategoryStr;

      let C2 be with_identities CategoryStr;

      cluster -> covariant for Functor of C1, C2;

      correctness

      proof

        let F be Functor of C1, C2;

        

         A1: for f be morphism of C1 st f is identity holds (F . f) is identity

        proof

          let f be morphism of C1;

          assume f is identity;

          

           A2: (F . f) = the Object of C2 by CAT_6:def 21;

          per cases ;

            suppose C2 is empty;

            hence (F . f) is identity by CAT_6: 10;

          end;

            suppose C2 is non empty;

            hence (F . f) is identity by A2, CAT_6: 22;

          end;

        end;

        for f1,f2 be morphism of C1 st f1 |> f2 holds (F . f1) |> (F . f2) & (F . (f1 (*) f2)) = ((F . f1) (*) (F . f2)) by CAT_6: 1;

        then F is multiplicative by CAT_6:def 23;

        hence thesis by A1, CAT_6:def 25, CAT_6:def 22;

      end;

    end

    theorem :: CAT_8:12

    for C1,C2 be with_identities CategoryStr, f be morphism of C1, F be Functor of C1, C2 st F is covariant & f is identity holds (F . f) is identity by CAT_6:def 22, CAT_6:def 25;

    theorem :: CAT_8:13

    

     Th13: for C1,C2 be with_identities CategoryStr, f1,f2 be morphism of C1, F be Functor of C1, C2 st F is covariant & f1 |> f2 holds (F . f1) |> (F . f2) & (F . (f1 (*) f2)) = ((F . f1) (*) (F . f2))

    proof

      let C1,C2 be with_identities CategoryStr;

      let f1,f2 be morphism of C1;

      let F be Functor of C1, C2;

      assume F is covariant;

      then

       A1: F is multiplicative by CAT_6:def 25;

      assume f1 |> f2;

      hence thesis by A1, CAT_6:def 23;

    end;

    theorem :: CAT_8:14

    

     Th14: for C be Category, f be Morphism of C, g be morphism of ( alter C) st f = g holds ( dom g) = ( id ( dom f)) & ( cod g) = ( id ( cod f))

    proof

      let C be Category;

      let f be Morphism of C;

      let g be morphism of ( alter C);

      assume

       A1: f = g;

      

       A2: ( alter C) = CategoryStr (# the carrier' of C, the Comp of C #) by CAT_6:def 34;

      consider d1 be morphism of ( alter C) such that

       A3: ( dom g) = d1 & g |> d1 & d1 is identity by CAT_6:def 18;

      reconsider d11 = d1 as Morphism of C by A2, CAT_6:def 1;

       [d1, d1] in ( dom the composition of ( alter C)) by A3, CAT_6: 24, CAT_6:def 2;

      then

       A4: ( dom d11) = ( cod d11) by A2, CAT_1:def 6;

      reconsider d2 = ( id ( dom f)) as morphism of ( alter C) by A2, CAT_6:def 1;

      

       A5: d1 is left_identity by A3, CAT_6:def 14;

      

       A6: for f1 be morphism of ( alter C) st f1 |> d2 holds (f1 (*) d2) = f1

      proof

        let f1 be morphism of ( alter C);

        reconsider f11 = f1 as Morphism of C by A2, CAT_6:def 1;

        assume f1 |> d2;

        then

         A7: [f11, ( id ( dom f))] in ( dom the Comp of C) by A2, CAT_6:def 2;

        then

         A8: ( dom f11) = ( cod ( id ( dom f))) by CAT_1:def 6;

        

        thus (f1 (*) d2) = (f11 (*) ( id ( dom f))) by A7, CAT_6: 40

        .= f1 by A8, CAT_1: 22;

      end;

       [f, d11] in ( dom the Comp of C) by A1, A2, A3, CAT_6:def 2;

      then ( dom d11) = ( cod ( id ( dom f))) by A4, CAT_1:def 6;

      then

       A9: [d1, d2] in ( dom the composition of ( alter C)) by A2, CAT_1:def 6;

      

       A10: d1 = (d1 (*) d2) by A9, A6, CAT_6:def 2

      .= d2 by A9, A5, CAT_6:def 2, CAT_6:def 4;

      thus ( dom g) = ( id ( dom f)) by A3, A10;

      consider c1 be morphism of ( alter C) such that

       A11: ( cod g) = c1 & c1 |> g & c1 is identity by CAT_6:def 19;

      reconsider c11 = c1 as Morphism of C by A2, CAT_6:def 1;

      reconsider c2 = ( id ( cod f)) as morphism of ( alter C) by A2, CAT_6:def 1;

      

       A12: c1 is left_identity by A11, CAT_6:def 14;

      

       A13: for f1 be morphism of ( alter C) st f1 |> c2 holds (f1 (*) c2) = f1

      proof

        let f1 be morphism of ( alter C);

        reconsider f11 = f1 as Morphism of C by A2, CAT_6:def 1;

        assume f1 |> c2;

        then

         A14: [f11, ( id ( cod f))] in ( dom the Comp of C) by A2, CAT_6:def 2;

        then

         A15: ( dom f11) = ( cod ( id ( cod f))) by CAT_1:def 6;

        

        thus (f1 (*) c2) = (f11 (*) ( id ( cod f))) by A14, CAT_6: 40

        .= f1 by A15, CAT_1: 22;

      end;

       [c11, f] in ( dom the Comp of C) by A1, A2, A11, CAT_6:def 2;

      then ( dom c11) = ( cod ( id ( cod f))) by CAT_1:def 6;

      then

       A16: [c11, ( id ( cod f))] in ( dom the Comp of C) by CAT_1:def 6;

      

       A17: c1 = (c1 (*) c2) by A16, A2, A13, CAT_6:def 2

      .= c2 by A16, A2, A12, CAT_6:def 2, CAT_6:def 4;

      thus ( cod g) = ( id ( cod f)) by A11, A17;

    end;

    theorem :: CAT_8:15

    

     Th15: ex f be morphism of ( OrdC 1) st f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f}

    proof

      consider C be strict preorder category such that

       A1: ( Ob C) = 1 and for o1,o2 be Object of C st o1 in o2 holds ( Hom (o1,o2)) = { [o1, o2]} and

       A2: ( RelOb C) = ( RelIncl 1) and

       A3: ( Mor C) = (1 \/ { [o1, o2] where o1,o2 be Element of 1 : o1 in o2 }) by CAT_7: 37;

      

       A4: C is 1 -ordered by A2, WELLORD1: 38, CAT_7:def 14;

      then

       A5: C ~= ( OrdC 1) by CAT_7: 38;

      consider F be Functor of C, ( OrdC 1), G be Functor of ( OrdC 1), C such that

       A6: F is covariant & G is covariant and

       A7: (G (*) F) = ( id C) & (F (*) G) = ( id ( OrdC 1)) by A4, CAT_7: 38, CAT_6:def 28;

      

       A8: 0 in ( Ob C) by A1, CARD_1: 49, TARSKI:def 1;

      then

      reconsider g = 0 as morphism of C;

      

       A9: C is non empty by A1;

      then

       A10: g is identity by A8, CAT_6: 22;

      set f = (F . g);

      take f;

      thus

       A11: f is identity by A6, A10, CAT_6:def 22, CAT_6:def 25;

      ( card ( Ob ( OrdC 1))) = ( card 1) by A1, A5, CAT_7: 14;

      then

      consider x be object such that

       A12: ( Ob ( OrdC 1)) = {x} by CARD_2: 42;

      f is Object of ( OrdC 1) by A11, CAT_6: 22;

      hence

       A13: ( Ob ( OrdC 1)) = {f} by A12, TARSKI:def 1;

      for x be object holds x in ( Mor ( OrdC 1)) iff x in {f}

      proof

        let x be object;

        hereby

          assume

           A14: x in ( Mor ( OrdC 1));

          then

           A15: x in the carrier of ( OrdC 1) by CAT_6:def 1;

          reconsider f1 = x as morphism of ( OrdC 1) by A14;

          per cases ;

            suppose f1 is identity;

            then f1 is Object of ( OrdC 1) by CAT_6: 22;

            hence x in {f} by A13;

          end;

            suppose

             A16: not f1 is identity;

            

             A17: (( id the carrier of ( OrdC 1)) . x) = x by A15, FUNCT_1: 18;

            

             A18: (F . (G . f1)) = ((F (*) G) . f1) by A6, CAT_6: 34

            .= (( id the carrier of ( OrdC 1)) . f1) by A7, STRUCT_0:def 4

            .= f1 by A17, CAT_6:def 21;

             not (G . f1) is identity by A18, A16, CAT_6:def 22, A6, CAT_6:def 25;

            then not (G . f1) in 1 by A1, A9, CAT_6: 22;

            then (G . f1) in { [o1, o2] where o1,o2 be Element of 1 : o1 in o2 } by A3, XBOOLE_0:def 3;

            then

            consider o1,o2 be Element of 1 such that

             A19: (G . f1) = [o1, o2] & o1 in o2;

            

             A20: o1 = 0 by CARD_1: 49, TARSKI:def 1;

            o2 = 0 by CARD_1: 49, TARSKI:def 1;

            hence x in {f} by A19, A20;

          end;

        end;

        assume x in {f};

        hence x in ( Mor ( OrdC 1)) by A13;

      end;

      hence ( Mor ( OrdC 1)) = {f} by TARSKI: 2;

    end;

    theorem :: CAT_8:16

    

     Th16: for C be non empty category, f1,f2 be morphism of C st ( MORPHISM f1) = ( MORPHISM f2) holds f1 = f2

    proof

      let C be non empty category;

      let f1,f2 be morphism of C;

      assume

       A1: ( MORPHISM f1) = ( MORPHISM f2);

      consider f be morphism of ( OrdC 2) such that

       A2: not f is identity & ( Ob ( OrdC 2)) = {( dom f), ( cod f)} & ( Mor ( OrdC 2)) = {( dom f), ( cod f), f} & (( dom f),( cod f),f) are_mutually_distinct by CAT_7: 39;

      

      thus f1 = (( MORPHISM f1) . f) by A2, CAT_7:def 16

      .= f2 by A1, A2, CAT_7:def 16;

    end;

    theorem :: CAT_8:17

    

     Th17: for C be non empty category, F1,F2 be covariant Functor of ( OrdC 2), C, f be morphism of ( OrdC 2) st f is non identity & (F1 . f) = (F2 . f) holds F1 = F2

    proof

      let C be non empty category;

      let F1,F2 be covariant Functor of ( OrdC 2), C;

      let f be morphism of ( OrdC 2);

      assume

       A1: f is non identity;

      assume

       A2: (F1 . f) = (F2 . f);

      

       A3: ( dom F1) = the carrier of ( OrdC 2) by FUNCT_2:def 1

      .= ( dom F2) by FUNCT_2:def 1;

      consider f1 be morphism of ( OrdC 2) such that

       A4: not f1 is identity & ( Ob ( OrdC 2)) = {( dom f1), ( cod f1)} & ( Mor ( OrdC 2)) = {( dom f1), ( cod f1), f1} & (( dom f1),( cod f1),f1) are_mutually_distinct by CAT_7: 39;

      

       A5: f = ( dom f1) or f = ( cod f1) or f = f1 by A4, ENUMSET1:def 1;

      for x be object st x in ( dom F1) holds (F1 . x) = (F2 . x)

      proof

        let x be object;

        assume x in ( dom F1);

        then x in the carrier of ( OrdC 2);

        then

         A6: x in {( dom f1), ( cod f1), f1} by A4, CAT_6:def 1;

        per cases by A6, ENUMSET1:def 1;

          suppose

           A7: x = ( dom f1);

          

          thus (F1 . x) = ( dom (F2 . f1)) by A2, A5, A1, CAT_6: 22, A7, CAT_6: 32

          .= (F2 . x) by A7, CAT_6: 32;

        end;

          suppose

           A8: x = ( cod f1);

          

          thus (F1 . x) = ( cod (F2 . f1)) by A2, A5, A1, CAT_6: 22, A8, CAT_6: 32

          .= (F2 . x) by A8, CAT_6: 32;

        end;

          suppose

           A9: x = f1;

          

          thus (F1 . x) = (F2 . f1) by A2, A5, A1, CAT_6: 22, A9, CAT_6:def 21

          .= (F2 . x) by A9, CAT_6:def 21;

        end;

      end;

      hence F1 = F2 by A3, FUNCT_1: 2;

    end;

    theorem :: CAT_8:18

    

     Th18: ex f1,f2 be morphism of ( OrdC 3) st not f1 is identity & not f2 is identity & ( cod f1) = ( dom f2) & ( Ob ( OrdC 3)) = {( dom f1), ( cod f1), ( cod f2)} & ( Mor ( OrdC 3)) = {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)} & (( dom f1),( cod f1),( cod f2),f1,f2,(f2 (*) f1)) are_mutually_distinct

    proof

      consider C be strict preorder category such that

       A1: ( Ob C) = 3 and

       A2: for o1,o2 be Object of C st o1 in o2 holds ( Hom (o1,o2)) = { [o1, o2]} and

       A3: ( RelOb C) = ( RelIncl 3) and

       A4: ( Mor C) = (3 \/ { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 }) by CAT_7: 37;

      

       A5: C is 3 -ordered by A3, WELLORD1: 38, CAT_7:def 14;

      consider F be Functor of C, ( OrdC 3), G be Functor of ( OrdC 3), C such that

       A6: F is covariant & G is covariant and

       A7: (G (*) F) = ( id C) & (F (*) G) = ( id ( OrdC 3)) by A5, CAT_7: 38, CAT_6:def 28;

      

       A8: 0 in 1 & 0 is Element of 3 & 1 is Element of 3 by CARD_1: 49, CARD_1: 51, TARSKI:def 1, ENUMSET1:def 1;

      then

       A9: [ 0 , 1] in { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 };

      then

       A10: [ 0 , 1] in ( Mor C) by A4, XBOOLE_0:def 3;

      reconsider g1 = [ 0 , 1] as morphism of C by A9, A4, XBOOLE_0:def 3;

      

       A11: C is non empty by A1;

      

       A12: not g1 is identity

      proof

        assume g1 is identity;

        then g1 is Object of C by A11, CAT_6: 22;

        hence contradiction by A1;

      end;

      set f1 = (F . g1);

      

       A13: 1 in 2 & 1 is Element of 3 & 2 is Element of 3 by CARD_1: 50, CARD_1: 51, TARSKI:def 2, ENUMSET1:def 1;

      then

       A14: [1, 2] in { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 };

      then

       A15: [1, 2] in ( Mor C) by A4, XBOOLE_0:def 3;

      reconsider g2 = [1, 2] as morphism of C by A14, A4, XBOOLE_0:def 3;

      

       A16: not g2 is identity

      proof

        assume g2 is identity;

        then g2 is Object of C by A11, CAT_6: 22;

        hence contradiction by A1;

      end;

      set f2 = (F . g2);

      

       A17: 0 in 2 & 0 is Element of 3 & 2 is Element of 3 by CARD_1: 50, CARD_1: 51, TARSKI:def 2, ENUMSET1:def 1;

      then

       A18: [ 0 , 2] in { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 };

      reconsider g3 = [ 0 , 2] as morphism of C by A18, A4, XBOOLE_0:def 3;

      set f3 = (F . g3);

      take f1, f2;

      thus

       A19: not f1 is identity

      proof

        assume

         A20: f1 is identity;

         [ 0 , 1] in the carrier of C by A10, CAT_6:def 1;

        then (( id the carrier of C) . [ 0 , 1]) = [ 0 , 1] by FUNCT_1: 18;

        then

         A21: (( id C) . [ 0 , 1]) = g1 by STRUCT_0:def 4;

        (G . (F . g1)) is identity by A20, CAT_6:def 22, A6, CAT_6:def 25;

        then ((G (*) F) . g1) is identity by A6, A11, CAT_6: 34;

        hence contradiction by A12, A7, A11, A21, CAT_6:def 21;

      end;

      thus

       A22: not f2 is identity

      proof

        assume

         A23: f2 is identity;

         [1, 2] in the carrier of C by A15, CAT_6:def 1;

        then (( id the carrier of C) . [1, 2]) = [1, 2] by FUNCT_1: 18;

        then

         A24: (( id C) . [1, 2]) = g2 by STRUCT_0:def 4;

        (G . (F . g2)) is identity by A23, CAT_6:def 22, A6, CAT_6:def 25;

        then ((G (*) F) . g2) is identity by A6, A11, CAT_6: 34;

        hence contradiction by A16, A7, A11, A24, CAT_6:def 21;

      end;

      reconsider o0 = 0 as Object of C by A1, CARD_1: 51, ENUMSET1:def 1;

      reconsider o1 = 1 as Object of C by A1, CARD_1: 51, ENUMSET1:def 1;

      reconsider o2 = 2 as Object of C by A1, CARD_1: 51, ENUMSET1:def 1;

      

       A25: C is non empty by A1;

      ( Hom (o0,o1)) = { [ 0 , 1]} by A8, A2;

      then

       A26: g1 in ( Hom (o0,o1)) by TARSKI:def 1;

      then

       A27: ( dom g1) = o0 & ( cod g1) = o1 by A25, CAT_7: 20;

      

       A28: (F . ( dom g1)) = (F . o0) & (F . ( cod g1)) = (F . o1) by A26, A25, CAT_7: 20;

      then

       A29: ( dom f1) = (F . o0) & ( cod f1) = (F . o1) by A6, A25, CAT_6: 32;

      ( Hom (o1,o2)) = { [1, 2]} by A13, A2;

      then g2 in ( Hom (o1,o2)) by TARSKI:def 1;

      then

       A30: ( dom g2) = o1 & ( cod g2) = o2 by A25, CAT_7: 20;

      then

       A31: ( dom f2) = (F . o1) & ( cod f2) = (F . o2) by A6, A25, CAT_6: 32;

      thus

       A32: ( cod f1) = ( dom f2) by A29, A30, A6, A25, CAT_6: 32;

      

       A33: g2 |> g1 by A11, A27, A30, CAT_7: 5;

      then ( dom (g2 (*) g1)) = ( dom g1) & ( cod (g2 (*) g1)) = ( cod g2) by CAT_7: 4;

      then

       A34: (g2 (*) g1) in ( Hom (o0,o2)) by A30, A27, A11, CAT_7: 20;

      

       A35: F is multiplicative by A6, CAT_6:def 25;

      

       A36: ( Hom (o0,o2)) = { [ 0 , 2]} by A17, A2;

      then

       A37: g3 = (g2 (*) g1) by A34, TARSKI:def 1;

      

       A38: f3 = (F . (g2 (*) g1)) by A36, A34, TARSKI:def 1

      .= (f2 (*) f1) by A35, A33, CAT_6:def 23;

      for x be object holds x in ( Ob ( OrdC 3)) iff x in {( dom f1), ( cod f1), ( cod f2)}

      proof

        let x be object;

        hereby

          assume

           A39: x in ( Ob ( OrdC 3));

          then

          reconsider o = x as Object of ( OrdC 3);

          x in ( Mor ( OrdC 3)) by A39;

          then

           A40: o in the carrier of ( OrdC 3) by CAT_6:def 1;

          reconsider f = o as morphism of ( OrdC 3) by A39;

          

           A41: G is identity-preserving by A6, CAT_6:def 25;

          

           A42: (F . (G . f)) = ((F (*) G) . f) by A6, CAT_6: 34

          .= (( id the carrier of ( OrdC 3)) . f) by A7, STRUCT_0:def 4

          .= (( id the carrier of ( OrdC 3)) . o) by CAT_6:def 21

          .= f by A40, FUNCT_1: 18;

          (G . f) is identity by A41, CAT_6: 22, CAT_6:def 22;

          then (G . f) in { f1 where f1 be morphism of C : f1 is identity & f1 in ( Mor C) } by A11;

          then (G . f) in { 0 , 1, 2} by A1, CARD_1: 51, CAT_6:def 17;

          then (G . f) = o0 or (G . f) = o1 or (G . f) = o2 by ENUMSET1:def 1;

          then f = (F . o0) or f = (F . o1) or f = (F . o2) by A42, A25, CAT_6:def 21;

          hence x in {( dom f1), ( cod f1), ( cod f2)} by A29, A31, ENUMSET1:def 1;

        end;

        assume x in {( dom f1), ( cod f1), ( cod f2)};

        then x = ( dom f1) or x = ( cod f1) or x = ( cod f2) by ENUMSET1:def 1;

        hence x in ( Ob ( OrdC 3));

      end;

      hence

       A43: ( Ob ( OrdC 3)) = {( dom f1), ( cod f1), ( cod f2)} by TARSKI: 2;

      for x be object holds x in ( Mor ( OrdC 3)) iff x in {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)}

      proof

        let x be object;

        hereby

          assume

           A44: x in ( Mor ( OrdC 3));

          then

           A45: x in the carrier of ( OrdC 3) by CAT_6:def 1;

          reconsider f = x as morphism of ( OrdC 3) by A44;

          per cases ;

            suppose f is identity;

            then f is Object of ( OrdC 3) by CAT_6: 22;

            then x = ( dom f1) or x = ( cod f1) or x = ( cod f2) by A43, ENUMSET1:def 1;

            hence x in {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)} by ENUMSET1:def 4;

          end;

            suppose

             A46: not f is identity;

            

             A47: (( id the carrier of ( OrdC 3)) . x) = x by A45, FUNCT_1: 18;

            

             A48: (F . (G . f)) = ((F (*) G) . f) by A6, CAT_6: 34

            .= (( id the carrier of ( OrdC 3)) . f) by A7, STRUCT_0:def 4

            .= f by A47, CAT_6:def 21;

             not (G . f) is identity by A48, A46, CAT_6:def 22, A6, CAT_6:def 25;

            then not (G . f) in 3 by A1, A11, CAT_6: 22;

            then (G . f) in { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 } by A4, XBOOLE_0:def 3;

            then

            consider o1,o2 be Element of 3 such that

             A49: (G . f) = [o1, o2] & o1 in o2;

            

             A50: o1 = 0 or o1 = 1 or o1 = 2 by CARD_1: 51, ENUMSET1:def 1;

            o2 = 0 or o2 = 1 or o2 = 2 by CARD_1: 51, ENUMSET1:def 1;

            hence x in {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)} by A48, A38, ENUMSET1:def 4, A49, A50, CARD_1: 49, CARD_1: 50, TARSKI:def 1, TARSKI:def 2;

          end;

        end;

        assume x in {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)};

        then

         A51: x in ( {( dom f1), ( cod f1), ( cod f2)} \/ {f1, f2, (f2 (*) f1)}) by ENUMSET1: 13;

        per cases by A51, A43, XBOOLE_0:def 3;

          suppose x in ( Ob ( OrdC 3));

          hence x in ( Mor ( OrdC 3));

        end;

          suppose x in {f1, f2, (f2 (*) f1)};

          then x = f1 or x = f2 or x = (f2 (*) f1) by ENUMSET1:def 1;

          hence x in ( Mor ( OrdC 3));

        end;

      end;

      hence ( Mor ( OrdC 3)) = {( dom f1), ( cod f1), ( cod f2), f1, f2, (f2 (*) f1)} by TARSKI: 2;

       0 in 2 by CARD_1: 50, TARSKI:def 2;

      then [ 0 , 2] in { [o1, o2] where o1,o2 be Element of 3 : o1 in o2 } by A8, A13;

      then

       A52: [ 0 , 2] in ( Mor C) by A4, XBOOLE_0:def 3;

      

       A53: f2 |> f1 by A33, A35, CAT_6:def 23;

      

       A54: (F . (g2 (*) g1)) = (f2 (*) f1) by A35, A33, CAT_6:def 23;

      

       A55: not (g2 (*) g1) is identity

      proof

        assume (g2 (*) g1) is identity;

        then (g2 (*) g1) is Object of C by A11, CAT_6: 22;

        hence contradiction by A1, A36, A34, TARSKI:def 1;

      end;

      

       A56: not (f2 (*) f1) is identity

      proof

        assume

         A57: (f2 (*) f1) is identity;

         [ 0 , 2] in the carrier of C by A52, CAT_6:def 1;

        then (( id the carrier of C) . [ 0 , 2]) = [ 0 , 2] by FUNCT_1: 18;

        then

         A58: (( id C) . [ 0 , 2]) = (g2 (*) g1) by A37, STRUCT_0:def 4;

        (G . (F . (g2 (*) g1))) is identity by A54, A57, CAT_6:def 22, A6, CAT_6:def 25;

        then ((G (*) F) . (g2 (*) g1)) is identity by A6, A11, CAT_6: 34;

        hence contradiction by A55, A37, A7, A11, A58, CAT_6:def 21;

      end;

      ( dom f1) in ( Ob ( OrdC 3));

      then

      reconsider o11 = ( dom f1) as morphism of ( OrdC 3);

      ( cod f1) in ( Ob ( OrdC 3));

      then

      reconsider o22 = ( cod f1) as morphism of ( OrdC 3);

      ( cod f2) in ( Ob ( OrdC 3));

      then

      reconsider o33 = ( cod f2) as morphism of ( OrdC 3);

      

       A59: o11 is identity & o22 is identity & o33 is identity by CAT_6: 22;

      

       A60: F is bijective by Th9, A6, A7, CAT_7:def 19;

      ( dom F) = the carrier of C by FUNCT_2:def 1;

      then

       A61: ( dom F) = ( Mor C) by CAT_6:def 1;

      

       A62: o0 in ( Ob C) & o1 in ( Ob C) & o2 in ( Ob C) by A1;

      

       A63: ( dom f1) <> ( cod f1) by A29, A60, A62, A61, FUNCT_1:def 4;

      

       A64: ( dom f1) <> ( cod f2) by A28, A31, A60, A62, A61, FUNCT_1:def 4, A6, A25, CAT_6: 32;

      

       A65: ( cod f1) <> ( cod f2) by A28, A31, A60, A62, A61, FUNCT_1:def 4, A6, A25, CAT_6: 32;

      

       A66: f1 <> (f2 (*) f1) by A65, A53, CAT_7: 4;

      f2 <> (f2 (*) f1) by A29, A60, A62, A61, FUNCT_1:def 4, A32, A53, CAT_7: 4;

      hence thesis by A19, A22, A63, A56, A59, A66, A64, A65, ZFMISC_1:def 8;

    end;

    definition

      let C be non empty category;

      let f1,f2 be morphism of C;

      :: CAT_8:def1

      func COMPOSITION (f1,f2) -> covariant Functor of ( OrdC 3), C means

      : Def1: for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (it . g1) = f1 & (it . g2) = f2;

      correctness

      proof

        consider h2,h1 be morphism of ( OrdC 3) such that

         A2: not h2 is identity & not h1 is identity & ( cod h2) = ( dom h1) and

         A3: ( Ob ( OrdC 3)) = {( dom h2), ( cod h2), ( cod h1)} and

         A4: ( Mor ( OrdC 3)) = {( dom h2), ( cod h2), ( cod h1), h2, h1, (h1 (*) h2)} and

         A5: (( dom h2),( cod h2),( cod h1),h2,h1,(h1 (*) h2)) are_mutually_distinct by Th18;

        

         A6: h1 |> h2 by A2, CAT_7: 5;

        

         A7: ex F be covariant Functor of ( OrdC 3), C st for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (F . g1) = f1 & (F . g2) = f2

        proof

          defpred P[ object, object] means ($1 = ( dom h2) implies $2 = ( dom f2)) & ($1 = ( cod h2) implies $2 = ( cod f2)) & ($1 = ( cod h1) implies $2 = ( cod f1)) & ($1 = h2 implies $2 = f2) & ($1 = h1 implies $2 = f1) & ($1 = (h1 (*) h2) implies $2 = (f1 (*) f2));

          

           A8: for x be object st x in the carrier of ( OrdC 3) holds ex y be object st y in the carrier of C & P[x, y]

          proof

            let x be object;

            assume x in the carrier of ( OrdC 3);

            then

             A9: x in {( dom h2), ( cod h2), ( cod h1), h2, h1, (h1 (*) h2)} by CAT_6:def 1, A4;

            per cases by A9, ENUMSET1:def 4;

              suppose

               A10: x = ( dom h2);

              reconsider y = ( dom f2) as object;

              take y;

              y in ( Ob C);

              then y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A10, A5, ZFMISC_1:def 8;

            end;

              suppose

               A11: x = ( cod h2);

              reconsider y = ( cod f2) as object;

              take y;

              y in ( Ob C);

              then y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A11, A5, ZFMISC_1:def 8;

            end;

              suppose

               A12: x = ( cod h1);

              reconsider y = ( cod f1) as object;

              take y;

              y in ( Ob C);

              then y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A12, A5, ZFMISC_1:def 8;

            end;

              suppose

               A13: x = h2;

              reconsider y = f2 as object;

              take y;

              y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A13, A5, ZFMISC_1:def 8;

            end;

              suppose

               A14: x = h1;

              reconsider y = f1 as object;

              take y;

              y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A14, A5, ZFMISC_1:def 8;

            end;

              suppose

               A15: x = (h1 (*) h2);

              reconsider y = (f1 (*) f2) as object;

              take y;

              y in ( Mor C);

              hence y in the carrier of C by CAT_6:def 1;

              thus P[x, y] by A15, A5, ZFMISC_1:def 8;

            end;

          end;

          consider F be Function of the carrier of ( OrdC 3), the carrier of C such that

           A16: for x be object st x in the carrier of ( OrdC 3) holds P[x, (F . x)] from FUNCT_2:sch 1( A8);

          reconsider F as Functor of ( OrdC 3), C;

          for g be morphism of ( OrdC 3) st g is identity holds (F . g) is identity

          proof

            let g be morphism of ( OrdC 3);

            assume

             A17: g is identity;

            reconsider x = g as object;

            

             A18: (F . x) = (F . g) by CAT_6:def 21;

            g in ( Mor ( OrdC 3));

            then x in the carrier of ( OrdC 3) by CAT_6:def 1;

            then

             A19: P[x, (F . x)] by A16;

            g is Object of ( OrdC 3) by A17, CAT_6: 22;

            hence (F . g) is identity by A19, A18, CAT_6: 22, A3, ENUMSET1:def 1;

          end;

          then

           A20: F is identity-preserving by CAT_6:def 22;

          

           A21: for g be morphism of ( OrdC 3) st g = h2 holds (F . g) = f2

          proof

            let g be morphism of ( OrdC 3);

            assume

             A22: g = h2;

            reconsider x = g as object;

            

             A23: (F . x) = (F . g) by CAT_6:def 21;

            g in ( Mor ( OrdC 3));

            then x in the carrier of ( OrdC 3) by CAT_6:def 1;

            hence thesis by A16, A22, A23;

          end;

          

           A24: for g be morphism of ( OrdC 3) st g = h1 holds (F . g) = f1

          proof

            let g be morphism of ( OrdC 3);

            assume

             A25: g = h1;

            reconsider x = g as object;

            

             A26: (F . x) = (F . g) by CAT_6:def 21;

            g in ( Mor ( OrdC 3));

            then x in the carrier of ( OrdC 3) by CAT_6:def 1;

            hence thesis by A16, A25, A26;

          end;

          for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 holds (F . g1) |> (F . g2) & (F . (g1 (*) g2)) = ((F . g1) (*) (F . g2))

          proof

            let g1,g2 be morphism of ( OrdC 3);

            assume

             A27: g1 |> g2;

            

             A28: for g be morphism of ( OrdC 3) st g = ( dom h2) holds (F . g) = ( dom f2)

            proof

              let g be morphism of ( OrdC 3);

              assume

               A29: g = ( dom h2);

              reconsider x = g as object;

              

               A30: (F . x) = (F . g) by CAT_6:def 21;

              g in ( Mor ( OrdC 3));

              then x in the carrier of ( OrdC 3) by CAT_6:def 1;

              hence thesis by A16, A29, A30;

            end;

            

             A31: for g be morphism of ( OrdC 3) st g = ( cod h2) holds (F . g) = ( cod f2)

            proof

              let g be morphism of ( OrdC 3);

              assume

               A32: g = ( cod h2);

              reconsider x = g as object;

              

               A33: (F . x) = (F . g) by CAT_6:def 21;

              g in ( Mor ( OrdC 3));

              then x in the carrier of ( OrdC 3) by CAT_6:def 1;

              hence thesis by A16, A32, A33;

            end;

            

             A34: for g be morphism of ( OrdC 3) st g = ( cod h1) holds (F . g) = ( cod f1)

            proof

              let g be morphism of ( OrdC 3);

              assume

               A35: g = ( cod h1);

              reconsider x = g as object;

              

               A36: (F . x) = (F . g) by CAT_6:def 21;

              g in ( Mor ( OrdC 3));

              then x in the carrier of ( OrdC 3) by CAT_6:def 1;

              hence thesis by A16, A35, A36;

            end;

            

             A37: for g be morphism of ( OrdC 3) st g = (h1 (*) h2) holds (F . g) = (f1 (*) f2)

            proof

              let g be morphism of ( OrdC 3);

              assume

               A38: g = (h1 (*) h2);

              reconsider x = g as object;

              

               A39: (F . x) = (F . g) by CAT_6:def 21;

              g in ( Mor ( OrdC 3));

              then x in the carrier of ( OrdC 3) by CAT_6:def 1;

              hence thesis by A16, A38, A39;

            end;

            per cases by A4, ENUMSET1:def 4;

              suppose

               A40: g1 = ( dom h2) & g2 = ( dom h2);

              then

               A41: (F . g1) = ( dom f2) & (F . g2) = ( dom f2) by A28;

              hence

               A42: (F . g1) |> (F . g2) by CAT_6: 23;

              

              thus (F . (g1 (*) g2)) = (F . g1) by A40, A27, CAT_6: 23

              .= ((F . g1) (*) (F . g2)) by A42, A41, CAT_6: 23;

            end;

              suppose

               A43: g1 = ( dom h2) & g2 = ( cod h2);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A43, A5, ZFMISC_1:def 8;

            end;

              suppose

               A44: g1 = ( dom h2) & g2 = ( cod h1);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A44, A5, ZFMISC_1:def 8;

            end;

              suppose

               A45: g1 = ( dom h2) & g2 = h2;

              then ( cod h2) = g1 by A27, CAT_6: 22, CAT_6: 27;

              hence thesis by A45, A5, ZFMISC_1:def 8;

            end;

              suppose

               A46: g1 = ( dom h2) & g2 = h1;

              then ( cod h1) = g1 by A27, CAT_6: 22, CAT_6: 27;

              hence thesis by A46, A5, ZFMISC_1:def 8;

            end;

              suppose

               A47: g1 = ( dom h2) & g2 = (h1 (*) h2);

              then ( cod (h1 (*) h2)) = g1 by A27, CAT_6: 22, CAT_6: 27;

              then ( cod h1) = g1 by A6, CAT_7: 4;

              hence thesis by A47, A5, ZFMISC_1:def 8;

            end;

              suppose

               A48: g1 = ( cod h2) & g2 = ( dom h2);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A48, A5, ZFMISC_1:def 8;

            end;

              suppose

               A49: g1 = ( cod h2) & g2 = ( cod h2);

              then

               A50: (F . g1) = ( cod f2) & (F . g2) = ( cod f2) by A31;

              hence

               A51: (F . g1) |> (F . g2) by CAT_6: 23;

              

              thus (F . (g1 (*) g2)) = (F . g1) by A49, A27, CAT_6: 23

              .= ((F . g1) (*) (F . g2)) by A51, A50, CAT_6: 23;

            end;

              suppose

               A52: g1 = ( cod h2) & g2 = ( cod h1);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A52, A5, ZFMISC_1:def 8;

            end;

              suppose

               A53: g1 = ( cod h2) & g2 = h2;

              then

               A54: (F . g1) = ( cod f2) & (F . g2) = f2 by A31, A21;

              hence (F . g1) |> (F . g2) by CAT_7: 9;

              

              thus (F . (g1 (*) g2)) = (F . g2) by A53, CAT_7: 9

              .= ((F . g1) (*) (F . g2)) by A54, CAT_7: 9;

            end;

              suppose

               A55: g1 = ( cod h2) & g2 = h1;

              then ( cod h1) = g1 by A27, CAT_6: 22, CAT_6: 27;

              hence thesis by A55, A5, ZFMISC_1:def 8;

            end;

              suppose

               A56: g1 = ( cod h2) & g2 = (h1 (*) h2);

              then ( cod (h1 (*) h2)) = g1 by A27, CAT_6: 22, CAT_6: 27;

              then ( cod h1) = g1 by A6, CAT_7: 4;

              hence thesis by A56, A5, ZFMISC_1:def 8;

            end;

              suppose

               A57: g1 = ( cod h1) & g2 = ( dom h2);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A57, A5, ZFMISC_1:def 8;

            end;

              suppose

               A58: g1 = ( cod h1) & g2 = ( cod h2);

              then g1 is identity & g2 is identity by CAT_6: 22;

              then g1 = g2 by A27, CAT_7: 7;

              hence thesis by A58, A5, ZFMISC_1:def 8;

            end;

              suppose

               A59: g1 = ( cod h1) & g2 = ( cod h1);

              then

               A60: (F . g1) = ( cod f1) & (F . g2) = ( cod f1) by A34;

              hence

               A61: (F . g1) |> (F . g2) by CAT_6: 23;

              

              thus (F . (g1 (*) g2)) = (F . g1) by A59, A27, CAT_6: 23

              .= ((F . g1) (*) (F . g2)) by A61, A60, CAT_6: 23;

            end;

              suppose

               A62: g1 = ( cod h1) & g2 = h2;

              then ( cod h2) = g1 by A27, CAT_6: 22, CAT_6: 27;

              hence thesis by A62, A5, ZFMISC_1:def 8;

            end;

              suppose

               A63: g1 = ( cod h1) & g2 = h1;

              then

               A64: (F . g1) = ( cod f1) & (F . g2) = f1 by A34, A24;

              hence (F . g1) |> (F . g2) by CAT_7: 9;

              

              thus (F . (g1 (*) g2)) = (F . g2) by A63, CAT_7: 9

              .= ((F . g1) (*) (F . g2)) by A64, CAT_7: 9;

            end;

              suppose

               A65: g1 = ( cod h1) & g2 = (h1 (*) h2);

              then

               A66: (F . g1) = ( cod f1) & (F . g2) = (f1 (*) f2) by A34, A37;

              then (F . g1) = ( cod (f1 (*) f2)) by A1, CAT_7: 4;

              hence (F . g1) |> (F . g2) by A66, CAT_7: 9;

              

               A67: ( cod (f1 (*) f2)) = ( cod f1) by A1, CAT_7: 4;

              ( cod (h1 (*) h2)) = ( cod h1) by A6, CAT_7: 4;

              

              hence (F . (g1 (*) g2)) = (F . g2) by A65, CAT_7: 9

              .= ((F . g1) (*) (F . g2)) by A66, CAT_7: 9, A67;

            end;

              suppose

               A68: g1 = h2 & g2 = ( dom h2);

              then

               A69: (F . g1) = f2 & (F . g2) = ( dom f2) by A28, A21;

              hence (F . g1) |> (F . g2) by CAT_7: 8;

              

              thus (F . (g1 (*) g2)) = (F . g1) by A68, CAT_7: 8

              .= ((F . g1) (*) (F . g2)) by A69, CAT_7: 8;

            end;

              suppose

               A70: g1 = h2 & g2 = ( cod h2);

              then ( dom g1) = g2 by A27, CAT_6: 22, CAT_6: 26;

              hence thesis by A70, A5, ZFMISC_1:def 8;

            end;

              suppose

               A71: g1 = h2 & g2 = ( cod h1);

              then ( dom g1) = g2 by A27, CAT_6: 22, CAT_6: 26;

              hence thesis by A71, A5, ZFMISC_1:def 8;

            end;

              suppose

               A72: g1 = h2 & g2 = h2;

              then ( dom g2) = ( cod g1) by A27, CAT_7: 5;

              hence thesis by A72, A5, ZFMISC_1:def 8;

            end;

              suppose

               A73: g1 = h2 & g2 = h1;

              ( dom g1) = ( cod g2) by A27, CAT_7: 5;

              hence thesis by A73, A5, ZFMISC_1:def 8;

            end;

              suppose

               A74: g1 = h2 & g2 = (h1 (*) h2);

              then ( dom g1) = ( cod (h1 (*) h2)) by A27, CAT_7: 5;

              then ( dom g1) = ( cod h1) by A6, CAT_7: 4;

              hence thesis by A74, A5, ZFMISC_1:def 8;

            end;

              suppose

               A75: g1 = h1 & g2 = ( dom h2);

              ( cod h2) = ( dom h2) by A75, A2, A27, CAT_6: 22, CAT_6: 26;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A76: g1 = h1 & g2 = ( cod h2);

              then

               A77: (F . g1) = f1 & (F . g2) = ( cod f2) by A31, A24;

              then (F . g2) is identity by CAT_6: 22;

              then

               A78: ( cod (F . g2)) = ( cod f2) by A77, CAT_7: 6;

              ( dom (F . g1)) = ( cod (F . g2)) by A78, A77, A1, CAT_7: 5;

              hence

               A79: (F . g1) |> (F . g2) by CAT_7: 5;

              

              thus (F . (g1 (*) g2)) = (F . g1) by A76, CAT_7: 8, A2

              .= ((F . g1) (*) (F . g2)) by A79, A77, CAT_6: 23;

            end;

              suppose

               A80: g1 = h1 & g2 = ( cod h1);

              ( cod h2) = ( cod h1) by A80, A2, A27, CAT_6: 22, CAT_6: 26;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A81: g1 = h1 & g2 = h2;

              then

               A82: (F . g1) = f1 & (F . g2) = f2 by A21, A24;

              hence (F . g1) |> (F . g2) by A1;

              thus (F . (g1 (*) g2)) = ((F . g1) (*) (F . g2)) by A37, A82, A81;

            end;

              suppose

               A83: g1 = h1 & g2 = h1;

              ( cod h2) = ( cod h1) by A83, A2, A27, CAT_7: 5;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A84: g1 = h1 & g2 = (h1 (*) h2);

              then ( dom g1) = ( cod (h1 (*) h2)) by A27, CAT_7: 5;

              then ( dom g1) = ( cod h1) by A6, CAT_7: 4;

              hence thesis by A84, A2, A5, ZFMISC_1:def 8;

            end;

              suppose

               A85: g1 = (h1 (*) h2) & g2 = ( dom h2);

              then

               A86: (F . g1) = (f1 (*) f2) & (F . g2) = ( dom f2) by A28, A37;

              

               A87: ( dom (f1 (*) f2)) = ( dom f2) by A1, CAT_7: 4;

              hence (F . g1) |> (F . g2) by A86, CAT_7: 8;

              ( dom (h1 (*) h2)) = ( dom h2) by A6, CAT_7: 4;

              then (g1 (*) g2) = (h1 (*) h2) by A85, CAT_7: 8;

              hence (F . (g1 (*) g2)) = ((F . g1) (*) (F . g2)) by A85, A87, A86, CAT_7: 8;

            end;

              suppose

               A88: g1 = (h1 (*) h2) & g2 = ( cod h2);

              ( dom g1) = ( cod h2) by A88, A27, CAT_6: 22, CAT_6: 26;

              then ( dom h2) = ( cod h2) by A6, A88, CAT_7: 4;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A89: g1 = (h1 (*) h2) & g2 = ( cod h1);

              ( dom g1) = ( cod h1) by A89, A27, CAT_6: 22, CAT_6: 26;

              then ( dom h2) = ( cod h1) by A6, A89, CAT_7: 4;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A90: g1 = (h1 (*) h2) & g2 = h2;

              ( dom g1) = ( cod h2) by A90, A27, CAT_7: 5;

              then ( dom h2) = ( cod h2) by A6, A90, CAT_7: 4;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A91: g1 = (h1 (*) h2) & g2 = h1;

              ( dom g1) = ( cod h1) by A91, A27, CAT_7: 5;

              then ( dom h2) = ( cod h1) by A6, A91, CAT_7: 4;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

              suppose

               A92: g1 = (h1 (*) h2) & g2 = (h1 (*) h2);

              ( dom g1) = ( cod g2) by A27, CAT_7: 5;

              then ( dom g1) = ( cod h1) by A6, A92, CAT_7: 4;

              then ( dom h2) = ( cod h1) by A6, A92, CAT_7: 4;

              hence thesis by A5, ZFMISC_1:def 8;

            end;

          end;

          then

          reconsider F as covariant Functor of ( OrdC 3), C by A20, CAT_6:def 23, CAT_6:def 25;

          take F;

          let g1,g2 be morphism of ( OrdC 3);

          assume

           A93: g1 |> g2;

          assume

           A94: not g1 is identity & not g2 is identity;

          

           A95: g1 = ( dom h2) or g1 = ( cod h2) or g1 = ( cod h1) or g1 = h2 or g1 = h1 or g1 = (h1 (*) h2) by A4, ENUMSET1:def 4;

          

           A96: g2 = ( dom h2) or g2 = ( cod h2) or g2 = ( cod h1) or g2 = h2 or g2 = h1 or g2 = (h1 (*) h2) by A4, ENUMSET1:def 4;

          

           A97: g1 = h1 & g2 = h2

          proof

            assume

             A98: g1 <> h1 or g2 <> h2;

            per cases by A98;

              suppose

               A99: g1 <> h1;

              per cases by A99, A95, A96, A94, CAT_6: 22;

                suppose

                 A100: g1 = h2 & g2 = h2;

                then ( dom g2) = ( cod g1) by A93, CAT_7: 5;

                hence thesis by A100, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A101: g1 = h2 & g2 = h1;

                ( dom g1) = ( cod g2) by A93, CAT_7: 5;

                hence thesis by A101, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A102: g1 = h2 & g2 = (h1 (*) h2);

                then ( dom g1) = ( cod (h1 (*) h2)) by A93, CAT_7: 5;

                then ( dom g1) = ( cod h1) by A6, CAT_7: 4;

                hence thesis by A102, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A103: g1 = (h1 (*) h2) & g2 = h2;

                ( dom g1) = ( cod h2) by A103, A93, CAT_7: 5;

                then ( dom h2) = ( cod h2) by A6, A103, CAT_7: 4;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

                suppose

                 A104: g1 = (h1 (*) h2) & g2 = h1;

                ( dom g1) = ( cod h1) by A104, A93, CAT_7: 5;

                then ( dom h2) = ( cod h1) by A6, A104, CAT_7: 4;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

                suppose

                 A105: g1 = (h1 (*) h2) & g2 = (h1 (*) h2);

                ( dom g1) = ( cod g2) by A93, CAT_7: 5;

                then ( dom g1) = ( cod h1) by A6, A105, CAT_7: 4;

                then ( dom h2) = ( cod h1) by A6, A105, CAT_7: 4;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

            end;

              suppose

               A106: g2 <> h2;

              per cases by A106, A95, A96, A94, CAT_6: 22;

                suppose

                 A107: g2 = h1 & g1 = h2;

                ( dom g1) = ( cod g2) by A93, CAT_7: 5;

                hence thesis by A107, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A108: g2 = h1 & g1 = h1;

                ( cod h2) = ( cod h1) by A108, A2, A93, CAT_7: 5;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

                suppose

                 A109: g2 = h1 & g1 = (h1 (*) h2);

                ( dom g1) = ( cod h1) by A109, A93, CAT_7: 5;

                then ( dom h2) = ( cod h1) by A6, A109, CAT_7: 4;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

                suppose

                 A110: g2 = (h1 (*) h2) & g1 = h2;

                then ( dom g1) = ( cod (h1 (*) h2)) by A93, CAT_7: 5;

                then ( dom g1) = ( cod h1) by A6, CAT_7: 4;

                hence thesis by A110, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A111: g2 = (h1 (*) h2) & g1 = h1;

                then ( dom g1) = ( cod (h1 (*) h2)) by A93, CAT_7: 5;

                then ( dom g1) = ( cod h1) by A6, CAT_7: 4;

                hence thesis by A111, A2, A5, ZFMISC_1:def 8;

              end;

                suppose

                 A112: g2 = (h1 (*) h2) & g1 = (h1 (*) h2);

                ( dom g1) = ( cod g2) by A93, CAT_7: 5;

                then ( dom g1) = ( cod h1) by A6, A112, CAT_7: 4;

                then ( dom h2) = ( cod h1) by A6, A112, CAT_7: 4;

                hence thesis by A5, ZFMISC_1:def 8;

              end;

            end;

          end;

          thus (F . g1) = f1 & (F . g2) = f2 by A21, A24, A97;

        end;

        

         A113: for F1,F2 be covariant Functor of ( OrdC 3), C st (for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (F1 . g1) = f1 & (F1 . g2) = f2) & for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (F2 . g1) = f1 & (F2 . g2) = f2 holds F1 = F2

        proof

          let F1,F2 be covariant Functor of ( OrdC 3), C;

          assume

           A114: for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (F1 . g1) = f1 & (F1 . g2) = f2;

          assume

           A115: for g1,g2 be morphism of ( OrdC 3) st g1 |> g2 & not g1 is identity & not g2 is identity holds (F2 . g1) = f1 & (F2 . g2) = f2;

          for x be object st x in the carrier of ( OrdC 3) holds (F1 . x) = (F2 . x)

          proof

            let x be object;

            assume x in the carrier of ( OrdC 3);

            then

             A116: x in {( dom h2), ( cod h2), ( cod h1), h2, h1, (h1 (*) h2)} by A4, CAT_6:def 1;

            

             A117: (F1 . h1) = f1 by A2, A6, A114

            .= (F2 . h1) by A2, A6, A115;

            

             A118: (F1 . h2) = f2 by A2, A6, A114

            .= (F2 . h2) by A2, A6, A115;

            

             A119: F1 is multiplicative & F2 is multiplicative by CAT_6:def 25;

            per cases by A116, ENUMSET1:def 4;

              suppose

               A120: x = ( dom h2);

              

              hence (F1 . x) = ( dom (F1 . h2)) by CAT_6: 32

              .= (F2 . x) by A120, A118, CAT_6: 32;

            end;

              suppose

               A121: x = ( cod h2);

              

              hence (F1 . x) = ( cod (F1 . h2)) by CAT_6: 32

              .= (F2 . x) by A121, A118, CAT_6: 32;

            end;

              suppose

               A122: x = ( cod h1);

              

              hence (F1 . x) = ( cod (F1 . h1)) by CAT_6: 32

              .= (F2 . x) by A122, A117, CAT_6: 32;

            end;

              suppose

               A123: x = h2;

              

              hence (F1 . x) = (F1 . h2) by CAT_6:def 21

              .= (F2 . x) by A123, A118, CAT_6:def 21;

            end;

              suppose

               A124: x = h1;

              

              hence (F1 . x) = (F1 . h1) by CAT_6:def 21

              .= (F2 . x) by A124, A117, CAT_6:def 21;

            end;

              suppose

               A125: x = (h1 (*) h2);

              

              hence (F1 . x) = (F1 . (h1 (*) h2)) by CAT_6:def 21

              .= ((F2 . h1) (*) (F2 . h2)) by A117, A118, A6, A119, CAT_6:def 23

              .= (F2 . (h1 (*) h2)) by A6, A119, CAT_6:def 23

              .= (F2 . x) by A125, CAT_6:def 21;

            end;

          end;

          hence F1 = F2 by FUNCT_2: 12;

        end;

        thus thesis by A7, A113;

      end;

    end

    begin

    definition

      let C be CategoryStr;

      let a be Object of C;

      :: CAT_8:def2

      attr a is terminal means for b be Object of C holds ( Hom (b,a)) <> {} & ex f be Morphism of b, a st for g be Morphism of b, a holds f = g;

    end

    theorem :: CAT_8:19

    for C be CategoryStr, b be Object of C holds b is terminal iff for a be Object of C holds ex f be Morphism of a, b st ( Hom (a,b)) = {f}

    proof

      let C be CategoryStr, b be Object of C;

      thus b is terminal implies for a be Object of C holds ex f be Morphism of a, b st ( Hom (a,b)) = {f}

      proof

        assume

         A1: b is terminal;

        let a be Object of C;

        consider f be Morphism of a, b such that

         A2: for g be Morphism of a, b holds f = g by A1;

        take f;

        thus thesis by A2, Th7, A1;

      end;

      assume

       A3: for a be Object of C holds ex f be Morphism of a, b st ( Hom (a,b)) = {f};

      let a be Object of C;

      consider f be Morphism of a, b such that

       A4: ( Hom (a,b)) = {f} by A3;

      thus ( Hom (a,b)) <> {} by A4;

      take f;

      thus thesis by A4, Th6;

    end;

    theorem :: CAT_8:20

    

     Th20: for C be with_identities non empty CategoryStr, a be Object of C holds a is terminal implies for h be Morphism of a, a holds ( id- a) = h

    proof

      let C be with_identities non empty CategoryStr, a be Object of C;

      assume a is terminal;

      then

      consider f be Morphism of a, a such that

       A1: for g be Morphism of a, a holds f = g;

      let h be Morphism of a, a;

      ( id- a) = f by A1;

      hence thesis by A1;

    end;

    theorem :: CAT_8:21

    for C be composable with_identities non empty CategoryStr, a,b be Object of C holds a is terminal & b is terminal implies (a,b) are_isomorphic

    proof

      let C be composable with_identities non empty CategoryStr, a,b be Object of C;

      assume that

       A1: a is terminal and

       A2: b is terminal;

      set g = the Morphism of b, a;

      set f = the Morphism of a, b;

      

       A3: ( Hom (a,b)) <> {} by A2;

      f is isomorphism

      proof

        

         A4: ( Hom (b,a)) <> {} by A1;

        (g * f) = ( id- a) & (f * g) = ( id- b) by A1, A2, Th20;

        hence thesis by A3, A4, CAT_7:def 9;

      end;

      hence thesis by CAT_7:def 10;

    end;

    theorem :: CAT_8:22

    for C be non empty category, a,b be Object of C holds b is terminal & (a,b) are_isomorphic implies a is terminal

    proof

      let C be non empty category, a,b be Object of C;

      assume

       A1: b is terminal;

      assume (a,b) are_isomorphic ;

      then

      consider f be Morphism of a, b such that

       A2: f is isomorphism by CAT_7:def 10;

      

       A3: ( Hom (b,a)) <> {} by A2, CAT_7:def 9;

      let c be Object of C;

      consider h be Morphism of c, b such that

       A4: for g be Morphism of c, b holds h = g by A1;

      ( Hom (c,b)) <> {} by A1;

      hence

       A5: ( Hom (c,a)) <> {} by A3, CAT_7: 22;

      consider f1 be Morphism of b, a such that

       A6: (f1 * f) = ( id- a) and (f * f1) = ( id- b) by A2, CAT_7:def 9;

      

       A7: ( Hom (a,b)) <> {} by A2, CAT_7:def 9;

      take (f1 * h);

      let h1 be Morphism of c, a;

      

      thus (f1 * h) = (f1 * (f * h1)) by A4

      .= ((f1 * f) * h1) by A3, A5, A7, CAT_7: 23

      .= h1 by A6, A5, CAT_7: 18;

    end;

    theorem :: CAT_8:23

    for C be composable with_identities CategoryStr, a,b be Object of C, f be Morphism of a, b holds ( Hom (a,b)) <> {} & a is terminal implies f is monomorphism

    proof

      let C be composable with_identities CategoryStr, a,b be Object of C, f be Morphism of a, b;

      assume that

       A1: ( Hom (a,b)) <> {} and

       A2: a is terminal;

      now

        let c be Object of C such that ( Hom (c,a)) <> {} ;

        let g,h be Morphism of c, a such that (f * g) = (f * h);

        consider f1 be Morphism of c, a such that

         A3: for g1 be Morphism of c, a holds f1 = g1 by A2;

        f1 = g by A3;

        hence g = h by A3;

      end;

      hence thesis by A1, CAT_7:def 5;

    end;

    definition

      let C be category;

      :: CAT_8:def3

      attr C is with_terminal_objects means ex a be Object of C st a is terminal;

    end

    theorem :: CAT_8:24

    

     Th24: ( OrdC 1) is with_terminal_objects

    proof

      consider f be morphism of ( OrdC 1) such that

       A1: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

      

       A2: for a,b be Object of ( OrdC 1), f1 be morphism of ( OrdC 1) holds f1 is Morphism of a, b

      proof

        let a,b be Object of ( OrdC 1);

        let f1 be morphism of ( OrdC 1);

        

         A3: ( dom f1) = f by A1, TARSKI:def 1

        .= a by A1, TARSKI:def 1;

        ( cod f1) = f by A1, TARSKI:def 1

        .= b by A1, TARSKI:def 1;

        then f1 in ( Hom (a,b)) by A3, CAT_7: 20;

        hence f1 is Morphism of a, b by CAT_7:def 3;

      end;

      reconsider a1 = f as Object of ( OrdC 1) by A1;

      take a1;

      let b1 be Object of ( OrdC 1);

      b1 = a1 by A1, TARSKI:def 1;

      hence ( Hom (b1,a1)) <> {} ;

      reconsider f1 = f as Morphism of b1, a1 by A2;

      take f1;

      let g be Morphism of b1, a1;

      thus f1 = g by A1, TARSKI:def 1;

    end;

    registration

      cluster with_terminal_objects for category;

      correctness by Th24;

    end

    definition

      let C be category;

      :: CAT_8:def4

      attr C is terminal means

      : Def4: for B be category holds ex F be Functor of B, C st F is covariant & for G be Functor of B, C st G is covariant holds F = G;

    end

    registration

      cluster ( OrdC 1) -> non empty terminal;

      correctness

      proof

        consider f be morphism of ( OrdC 1) such that

         A1: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

        

         A2: the carrier of ( OrdC 1) = {f} by A1, CAT_6:def 1;

        for C1 be category holds ex F be Functor of C1, ( OrdC 1) st F is covariant & for F1 be Functor of C1, ( OrdC 1) st F1 is covariant holds F = F1

        proof

          let C1 be category;

          per cases ;

            suppose C1 is empty;

            then

            reconsider C2 = C1 as empty category;

            set F2 = the covariant Functor of C2, ( OrdC 1);

            reconsider F = F2 as Functor of C1, ( OrdC 1);

            take F;

            thus thesis;

          end;

            suppose C1 is non empty;

            then

            reconsider C2 = C1 as non empty category;

            set F2 = the covariant Functor of C2, ( OrdC 1);

            reconsider F = F2 as Functor of C1, ( OrdC 1);

            take F;

            thus F is covariant;

            let F1 be Functor of C1, ( OrdC 1);

            assume F1 is covariant;

            for x1 be object st x1 in the carrier of C1 holds (F . x1) = (F1 . x1)

            proof

              let x1 be object;

              assume x1 in the carrier of C1;

              then

               A3: (F . x1) in {f} & (F1 . x1) in {f} by A2, FUNCT_2: 5;

              

              hence (F . x1) = f by TARSKI:def 1

              .= (F1 . x1) by A3, TARSKI:def 1;

            end;

            hence F = F1 by FUNCT_2: 12;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      cluster strict non empty terminal for category;

      correctness

      proof

        take ( OrdC 1);

        thus thesis;

      end;

      cluster strict non terminal for category;

      correctness

      proof

        set C = ( OrdC 0 );

        take C;

        ex C1 be category st for F be Functor of C1, C holds F is non covariant or ex F1 be Functor of C1, C st F1 is covariant & not F = F1

        proof

          take ( OrdC 1);

          ( Mor ( OrdC 0 )) = {} ;

          hence thesis by CAT_6: 31;

        end;

        hence thesis;

      end;

    end

    theorem :: CAT_8:25

    

     Th25: for C,D be terminal category holds C ~= D

    proof

      let C,D be terminal category;

      ex F be Functor of C, D, G be Functor of D, C st F is covariant & G is covariant & (G (*) F) = ( id C) & (F (*) G) = ( id D)

      proof

        consider F be Functor of C, D such that

         A1: F is covariant & for F1 be Functor of C, D st F1 is covariant holds F = F1 by Def4;

        consider G be Functor of D, C such that

         A2: G is covariant & for G1 be Functor of D, C st G1 is covariant holds G = G1 by Def4;

        take F, G;

        thus F is covariant & G is covariant by A1, A2;

        consider F1 be Functor of C, C such that

         A3: F1 is covariant & for F2 be Functor of C, C st F2 is covariant holds F1 = F2 by Def4;

        

        thus (G (*) F) = F1 by A1, A2, A3, CAT_6: 35

        .= ( id C) by A3;

        consider G1 be Functor of D, D such that

         A4: G1 is covariant & for G2 be Functor of D, D st G2 is covariant holds G1 = G2 by Def4;

        

        thus (F (*) G) = G1 by A1, A2, A4, CAT_6: 35

        .= ( id D) by A4;

      end;

      hence C ~= D by CAT_6:def 28;

    end;

    theorem :: CAT_8:26

    

     Th26: for C,D be category st C is terminal & C ~= D holds D is terminal

    proof

      let C,D be category;

      assume

       A1: C is terminal;

      assume C ~= D;

      then

      consider F be Functor of C, D, G be Functor of D, C such that

       A2: F is covariant & G is covariant & (G (*) F) = ( id C) & (F (*) G) = ( id D) by CAT_6:def 28;

      let B be category;

      consider F1 be Functor of B, C such that

       A3: F1 is covariant & for G be Functor of B, C st G is covariant holds F1 = G by A1;

      set F2 = (F (*) F1);

      take F2;

      for G1 be Functor of B, D st G1 is covariant holds F2 = G1

      proof

        let G1 be Functor of B, D;

        assume

         A4: G1 is covariant;

        

        hence F2 = (F (*) (G (*) G1)) by A3, A2, CAT_6: 35

        .= ((F (*) G) (*) G1) by A4, A2, CAT_7: 10

        .= G1 by A2, A4, CAT_7: 11;

      end;

      hence thesis by A2, A3, CAT_6: 35;

    end;

    

     Lm1: for C be category st C is terminal holds C is non empty trivial

    proof

      let C be category;

      assume

       A1: C is terminal;

      consider F be Functor of ( OrdC 1), C such that

       A2: F is covariant & F is bijective by A1, Th25, CAT_7: 12;

      

       A3: the carrier of C = ( rng F) by A2, FUNCT_2:def 3;

      

       A4: C is non empty by A2, CAT_6: 31;

      for y1,y2 be object st y1 in the carrier of C & y2 in the carrier of C holds y1 = y2

      proof

        let y1,y2 be object;

        assume

         A5: y1 in the carrier of C;

        assume

         A6: y2 in the carrier of C;

        consider f be morphism of ( OrdC 1) such that

         A7: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

        reconsider x = f as object;

        ( dom F) = the carrier of ( OrdC 1) by A4, FUNCT_2:def 1;

        then ( dom F) = {f} by A7, CAT_6:def 1;

        then

         A8: ( rng F) = {(F . x)} by FUNCT_1: 4;

        

        hence y1 = (F . x) by A5, A3, TARSKI:def 1

        .= y2 by A6, A8, A3, TARSKI:def 1;

      end;

      hence C is non empty trivial by A2, CAT_6: 31, ZFMISC_1:def 10;

    end;

    theorem :: CAT_8:27

    

     Th27: for C be category holds C is non empty trivial iff C ~= ( OrdC 1)

    proof

      let C be category;

      hereby

        assume

         A1: C is non empty trivial;

        consider f be morphism of ( OrdC 1) such that

         A2: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

        ex F be Functor of C, ( OrdC 1) st F is covariant & F is bijective

        proof

          set F = (the carrier of C --> f);

          the carrier of ( OrdC 1) = {f} by A2, CAT_6:def 1;

          then f in the carrier of ( OrdC 1) by TARSKI:def 1;

          then

          reconsider F as Functor of C, ( OrdC 1) by FUNCOP_1: 45;

          take F;

          for f1 be morphism of C st f1 is identity holds (F . f1) is identity

          proof

            let f1 be morphism of C;

            assume f1 is identity;

            reconsider x = f1 as object;

            ( Mor C) is non empty by A1;

            then f1 in ( Mor C);

            then

             A3: f1 in the carrier of C by CAT_6:def 1;

            (F . f1) = (F . x) by A1, CAT_6:def 21

            .= f by A3, FUNCOP_1: 7;

            hence (F . f1) is identity by A2;

          end;

          then

           A4: F is identity-preserving by CAT_6:def 22;

          for f1,f2 be morphism of C st f1 |> f2 holds (F . f1) |> (F . f2) & (F . (f1 (*) f2)) = ((F . f1) (*) (F . f2))

          proof

            let f1,f2 be morphism of C;

            assume f1 |> f2;

            reconsider x1 = f1, x2 = f2, x = (f1 (*) f2) as object;

            ( Mor C) is non empty by A1;

            then f1 in ( Mor C) & f2 in ( Mor C) & (f1 (*) f2) in ( Mor C);

            then

             A5: f1 in the carrier of C & f2 in the carrier of C & (f1 (*) f2) in the carrier of C by CAT_6:def 1;

            

             A6: (F . f1) = (F . x1) by A1, CAT_6:def 21

            .= f by A5, FUNCOP_1: 7;

            

             A7: (F . f2) = (F . x2) by A1, CAT_6:def 21

            .= f by A5, FUNCOP_1: 7;

            

             A8: (F . (f1 (*) f2)) = (F . x) by A1, CAT_6:def 21

            .= f by A5, FUNCOP_1: 7;

            thus (F . f1) |> (F . f2) by A2, A6, A7, CAT_6: 24;

            f |> f by A2, CAT_6: 24;

            hence (F . (f1 (*) f2)) = ((F . f1) (*) (F . f2)) by A2, A6, A7, A8, Th4;

          end;

          hence F is covariant by A4, CAT_6:def 25, CAT_6:def 23;

          for x1,x2 be object st x1 in ( dom F) & x2 in ( dom F) & (F . x1) = (F . x2) holds x1 = x2 by A1, ZFMISC_1:def 10;

          then

           A9: F is one-to-one by FUNCT_1:def 4;

          ( rng F) = {f} by A1, FUNCOP_1: 8

          .= the carrier of ( OrdC 1) by A2, CAT_6:def 1;

          then F is onto by FUNCT_2:def 3;

          hence F is bijective by A9;

        end;

        hence C ~= ( OrdC 1) by CAT_7: 12;

      end;

      assume C ~= ( OrdC 1);

      then C is terminal by Th26;

      hence C is non empty trivial by Lm1;

    end;

    theorem :: CAT_8:28

    

     Th28: for C,D be non empty category st C is trivial & D is trivial holds C ~= D

    proof

      let C,D be non empty category;

      assume C is trivial & D is trivial;

      then C ~= ( OrdC 1) & D ~= ( OrdC 1) by Th27;

      hence C ~= D by Th10;

    end;

    registration

      cluster non empty trivial -> terminal for category;

      correctness

      proof

        let C be category;

        assume C is non empty trivial;

        then C ~= ( OrdC 1) by Th27;

        hence thesis by Th26;

      end;

      cluster terminal -> non empty trivial for category;

      correctness by Lm1;

    end

    definition

      let C be category;

      :: CAT_8:def5

      func C ->OrdC1 -> covariant Functor of C, ( OrdC 1) means not contradiction;

      correctness

      proof

        thus ex F be covariant Functor of C, ( OrdC 1) st not contradiction;

        let F1,F2 be covariant Functor of C, ( OrdC 1);

        consider F be Functor of C, ( OrdC 1) such that

         A1: F is covariant & for F1 be Functor of C, ( OrdC 1) st F1 is covariant holds F = F1 by Def4;

        

        thus F1 = F by A1

        .= F2 by A1;

      end;

    end

    theorem :: CAT_8:29

    

     Th29: for C,C1,C2 be category, F1 be Functor of C, C1, F2 be Functor of C, C2 st F1 is covariant & F2 is covariant holds ((C1 ->OrdC1 ) (*) F1) = ((C2 ->OrdC1 ) (*) F2)

    proof

      let C,C1,C2 be category;

      let F1 be Functor of C, C1;

      let F2 be Functor of C, C2;

      assume

       A1: F1 is covariant & F2 is covariant;

      consider F be Functor of C, ( OrdC 1) such that

       A2: F is covariant & for F1 be Functor of C, ( OrdC 1) st F1 is covariant holds F = F1 by Def4;

      reconsider F11 = ((C1 ->OrdC1 ) (*) F1) as covariant Functor of C, ( OrdC 1) by A1, CAT_6: 35;

      reconsider F22 = ((C2 ->OrdC1 ) (*) F2) as covariant Functor of C, ( OrdC 1) by A1, CAT_6: 35;

      F11 = F & F22 = F by A2;

      hence thesis;

    end;

    begin

    definition

      let C be CategoryStr;

      let a be Object of C;

      :: CAT_8:def6

      attr a is initial means for b be Object of C holds ( Hom (a,b)) <> {} & ex f be Morphism of a, b st for g be Morphism of a, b holds f = g;

    end

    theorem :: CAT_8:30

    for C be CategoryStr, b be Object of C holds b is initial iff for a be Object of C holds ex f be Morphism of b, a st ( Hom (b,a)) = {f}

    proof

      let C be CategoryStr, b be Object of C;

      thus b is initial implies for a be Object of C holds ex f be Morphism of b, a st ( Hom (b,a)) = {f}

      proof

        assume

         A1: b is initial;

        let a be Object of C;

        consider f be Morphism of b, a such that

         A2: for g be Morphism of b, a holds f = g by A1;

        take f;

        thus thesis by A2, Th7, A1;

      end;

      assume

       A3: for a be Object of C holds ex f be Morphism of b, a st ( Hom (b,a)) = {f};

      let a be Object of C;

      consider f be Morphism of b, a such that

       A4: ( Hom (b,a)) = {f} by A3;

      thus ( Hom (b,a)) <> {} by A4;

      take f;

      thus thesis by A4, Th6;

    end;

    theorem :: CAT_8:31

    

     Th31: for C be with_identities non empty CategoryStr, a be Object of C holds a is initial implies for h be Morphism of a, a holds ( id- a) = h

    proof

      let C be with_identities non empty CategoryStr, a be Object of C;

      assume a is initial;

      then

      consider f be Morphism of a, a such that

       A1: for g be Morphism of a, a holds f = g;

      let h be Morphism of a, a;

      ( id- a) = f by A1;

      hence thesis by A1;

    end;

    theorem :: CAT_8:32

    for C be composable with_identities non empty CategoryStr, a,b be Object of C holds a is initial & b is initial implies (a,b) are_isomorphic

    proof

      let C be composable with_identities non empty CategoryStr, a,b be Object of C;

      assume that

       A1: a is initial and

       A2: b is initial;

      set g = the Morphism of b, a;

      set f = the Morphism of a, b;

      

       A3: ( Hom (b,a)) <> {} by A2;

      f is isomorphism

      proof

        

         A4: ( Hom (a,b)) <> {} by A1;

        (g * f) = ( id- a) & (f * g) = ( id- b) by A1, A2, Th31;

        hence thesis by A3, A4, CAT_7:def 9;

      end;

      hence thesis by CAT_7:def 10;

    end;

    theorem :: CAT_8:33

    for C be non empty category, a,b be Object of C holds b is initial & (b,a) are_isomorphic implies a is initial

    proof

      let C be non empty category, a,b be Object of C;

      assume

       A1: b is initial;

      assume (b,a) are_isomorphic ;

      then

      consider f be Morphism of b, a such that

       A2: f is isomorphism by CAT_7:def 10;

      

       A3: ( Hom (a,b)) <> {} by A2, CAT_7:def 9;

      let c be Object of C;

      consider h be Morphism of b, c such that

       A4: for g be Morphism of b, c holds h = g by A1;

      ( Hom (b,c)) <> {} by A1;

      hence

       A5: ( Hom (a,c)) <> {} by A3, CAT_7: 22;

      consider f1 be Morphism of a, b such that (f1 * f) = ( id- b) and

       A6: (f * f1) = ( id- a) by A2, CAT_7:def 9;

      

       A7: ( Hom (b,a)) <> {} by A2, CAT_7:def 9;

      take (h * f1);

      let h1 be Morphism of a, c;

      

      thus (h * f1) = ((h1 * f) * f1) by A4

      .= (h1 * (f * f1)) by A3, A5, A7, CAT_7: 23

      .= h1 by A6, A5, CAT_7: 18;

    end;

    theorem :: CAT_8:34

    for C be composable with_identities CategoryStr, a,b be Object of C, f be Morphism of a, b holds ( Hom (a,b)) <> {} & b is initial implies f is epimorphism

    proof

      let C be composable with_identities CategoryStr, a,b be Object of C, f be Morphism of a, b;

      assume that

       A1: ( Hom (a,b)) <> {} and

       A2: b is initial;

      now

        let c be Object of C such that ( Hom (b,c)) <> {} ;

        let g,h be Morphism of b, c such that (g * f) = (h * f);

        consider f1 be Morphism of b, c such that

         A3: for g1 be Morphism of b, c holds f1 = g1 by A2;

        f1 = g by A3;

        hence g = h by A3;

      end;

      hence thesis by A1, CAT_7:def 6;

    end;

    definition

      let C be category;

      :: CAT_8:def7

      attr C is with_initial_objects means ex a be Object of C st a is initial;

    end

    theorem :: CAT_8:35

    

     Th35: ( OrdC 1) is with_initial_objects

    proof

      consider f be morphism of ( OrdC 1) such that

       A1: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

      

       A2: for a,b be Object of ( OrdC 1), f1 be morphism of ( OrdC 1) holds f1 is Morphism of a, b

      proof

        let a,b be Object of ( OrdC 1);

        let f1 be morphism of ( OrdC 1);

        

         A3: ( dom f1) = f by A1, TARSKI:def 1

        .= a by A1, TARSKI:def 1;

        ( cod f1) = f by A1, TARSKI:def 1

        .= b by A1, TARSKI:def 1;

        then f1 in ( Hom (a,b)) by A3, CAT_7: 20;

        hence f1 is Morphism of a, b by CAT_7:def 3;

      end;

      reconsider a1 = f as Object of ( OrdC 1) by A1;

      take a1;

      let b1 be Object of ( OrdC 1);

      b1 = a1 by A1, TARSKI:def 1;

      hence ( Hom (a1,b1)) <> {} ;

      reconsider f1 = f as Morphism of a1, b1 by A2;

      take f1;

      let g be Morphism of a1, b1;

      thus f1 = g by A1, TARSKI:def 1;

    end;

    registration

      cluster with_initial_objects for category;

      correctness by Th35;

    end

    definition

      let C be category;

      :: CAT_8:def8

      attr C is initial means

      : Def8: for C1 be category holds ex F be Functor of C, C1 st F is covariant & for F1 be Functor of C, C1 st F1 is covariant holds F = F1;

    end

    registration

      cluster ( OrdC 0 ) -> empty initial;

      correctness

      proof

        ( Mor ( OrdC 0 )) = {} ;

        then

        reconsider C = ( OrdC 0 ) as strict empty category;

        for C1 be category holds ex F be Functor of C, C1 st F is covariant & for F1 be Functor of C, C1 st F1 is covariant holds F = F1

        proof

          let C1 be category;

          set F = the covariant Functor of C, C1;

          take F;

          thus F is covariant;

          let F1 be Functor of C, C1;

          assume F1 is covariant;

          thus F = F1;

        end;

        hence thesis;

      end;

    end

    registration

      cluster strict empty initial for category;

      correctness

      proof

        take ( OrdC 0 );

        thus thesis;

      end;

      cluster strict non initial for category;

      correctness

      proof

        set C = ( OrdC 1);

        take C;

        ex C1 be category st for F be Functor of C, C1 holds F is non covariant or ex F1 be Functor of C, C1 st F1 is covariant & not F = F1

        proof

          take ( OrdC 0 );

          thus thesis by CAT_6: 31;

        end;

        hence thesis;

      end;

    end

    theorem :: CAT_8:36

    for C,D be initial category holds C ~= D

    proof

      let C,D be initial category;

      ex F be Functor of C, D, G be Functor of D, C st F is covariant & G is covariant & (G (*) F) = ( id C) & (F (*) G) = ( id D)

      proof

        consider F be Functor of C, D such that

         A1: F is covariant & for F1 be Functor of C, D st F1 is covariant holds F = F1 by Def8;

        consider G be Functor of D, C such that

         A2: G is covariant & for G1 be Functor of D, C st G1 is covariant holds G = G1 by Def8;

        take F, G;

        thus F is covariant & G is covariant by A1, A2;

        consider F1 be Functor of C, C such that

         A3: F1 is covariant & for F2 be Functor of C, C st F2 is covariant holds F1 = F2 by Def8;

        

        thus (G (*) F) = F1 by A1, A2, A3, CAT_6: 35

        .= ( id C) by A3;

        consider G1 be Functor of D, D such that

         A4: G1 is covariant & for G2 be Functor of D, D st G2 is covariant holds G1 = G2 by Def8;

        

        thus (F (*) G) = G1 by A1, A2, A4, CAT_6: 35

        .= ( id D) by A4;

      end;

      hence C ~= D by CAT_6:def 28;

    end;

    theorem :: CAT_8:37

    for C,D be category st C is initial & C ~= D holds D is initial

    proof

      let C,D be category;

      assume

       A1: C is initial;

      assume C ~= D;

      then

      consider F be Functor of C, D, G be Functor of D, C such that

       A2: F is covariant & G is covariant & (G (*) F) = ( id C) & (F (*) G) = ( id D) by CAT_6:def 28;

      let B be category;

      consider F1 be Functor of C, B such that

       A3: F1 is covariant & for G be Functor of C, B st G is covariant holds F1 = G by A1;

      set F2 = (F1 (*) G);

      take F2;

      for G1 be Functor of D, B st G1 is covariant holds F2 = G1

      proof

        let G1 be Functor of D, B;

        assume

         A4: G1 is covariant;

        

        hence F2 = ((G1 (*) F) (*) G) by A3, A2, CAT_6: 35

        .= (G1 (*) (F (*) G)) by A4, A2, CAT_7: 10

        .= G1 by A2, A4, CAT_7: 11;

      end;

      hence thesis by A2, A3, CAT_6: 35;

    end;

    registration

      cluster empty -> initial for category;

      correctness

      proof

        let C be category;

        assume

         A1: C is empty;

        for C1 be category holds ex F be Functor of C, C1 st F is covariant & for F1 be Functor of C, C1 st F1 is covariant holds F = F1

        proof

          let C1 be category;

          set F = the Functor of C, C1;

          take F;

          thus F is covariant by A1;

          let F1 be Functor of C, C1;

          assume F1 is covariant;

          thus F = F1 by A1;

        end;

        hence thesis;

      end;

    end

    definition

      let C be category;

      :: CAT_8:def9

      func OrdC0-> C -> covariant Functor of ( OrdC 0 ), C means not contradiction;

      correctness ;

    end

    theorem :: CAT_8:38

    for C,C1,C2 be category, F1 be Functor of C1, C, F2 be Functor of C2, C st F1 is covariant & F2 is covariant holds (F1 (*) ( OrdC0-> C1)) = (F2 (*) ( OrdC0-> C2));

    begin

    definition

      let C be category;

      let a,b,c be Object of C;

      let p1 be Morphism of c, a;

      let p2 be Morphism of c, b;

      :: CAT_8:def10

      pred c,p1,p2 is_product_of a,b means

      : Def10: for c1 be Object of C, q1 be Morphism of c1, a, q2 be Morphism of c1, b st ( Hom (c1,a)) <> {} & ( Hom (c1,b)) <> {} holds ( Hom (c1,c)) <> {} & ex h be Morphism of c1, c st (p1 * h) = q1 & (p2 * h) = q2 & for h1 be Morphism of c1, c st (p1 * h1) = q1 & (p2 * h1) = q2 holds h = h1;

    end

    theorem :: CAT_8:39

    for C be non empty category, c1,c2,a,b be Object of C, p1 be Morphism of a, c1, p2 be Morphism of a, c2, q1 be Morphism of b, c1, q2 be Morphism of b, c2 st ( Hom (a,c1)) <> {} & ( Hom (a,c2)) <> {} & ( Hom (b,c1)) <> {} & ( Hom (b,c2)) <> {} & (a,p1,p2) is_product_of (c1,c2) & (b,q1,q2) is_product_of (c1,c2) holds (a,b) are_isomorphic

    proof

      let C be non empty category;

      let c1,c2,a,b be Object of C;

      let p1 be Morphism of a, c1;

      let p2 be Morphism of a, c2;

      let q1 be Morphism of b, c1;

      let q2 be Morphism of b, c2;

      assume

       A1: ( Hom (a,c1)) <> {} & ( Hom (a,c2)) <> {} & ( Hom (b,c1)) <> {} & ( Hom (b,c2)) <> {} ;

      assume

       A2: (a,p1,p2) is_product_of (c1,c2);

      assume

       A3: (b,q1,q2) is_product_of (c1,c2);

      ex ff be Morphism of a, b, gg be Morphism of b, a st ( Hom (a,b)) <> {} & ( Hom (b,a)) <> {} & (gg * ff) = ( id- a) & (ff * gg) = ( id- b)

      proof

        consider f be Morphism of a, b such that

         A4: (q1 * f) = p1 & (q2 * f) = p2 & for h1 be Morphism of a, b st (q1 * h1) = p1 & (q2 * h1) = p2 holds f = h1 by A1, A3, Def10;

        consider g be Morphism of b, a such that

         A5: (p1 * g) = q1 & (p2 * g) = q2 & for h1 be Morphism of b, a st (p1 * h1) = q1 & (p2 * h1) = q2 holds g = h1 by A1, A2, Def10;

        take f, g;

        thus

         A6: ( Hom (a,b)) <> {} by A1, A3, Def10;

        thus

         A7: ( Hom (b,a)) <> {} by A1, A2, Def10;

        set g11 = (q1 * f);

        set g12 = (q2 * f);

        consider h1 be Morphism of a, a such that

         A8: (p1 * h1) = g11 & (p2 * h1) = g12 & for h be Morphism of a, a st (p1 * h) = g11 & (p2 * h) = g12 holds h1 = h by A1, A2, Def10;

        

         A9: (p1 * (g * f)) = g11 by A1, A5, A7, A6, CAT_7: 23;

        

         A10: (p2 * (g * f)) = g12 by A1, A5, A7, A6, CAT_7: 23;

        

         A11: (p1 * ( id- a)) = g11 by A1, A4, CAT_7: 18;

        

         A12: (p2 * ( id- a)) = g12 by A1, A4, CAT_7: 18;

        

        thus (g * f) = h1 by A8, A9, A10

        .= ( id- a) by A8, A11, A12;

        set g21 = (p1 * g);

        set g22 = (p2 * g);

        consider h2 be Morphism of b, b such that

         A13: (q1 * h2) = g21 & (q2 * h2) = g22 & for h be Morphism of b, b st (q1 * h) = g21 & (q2 * h) = g22 holds h2 = h by A1, A3, Def10;

        

         A14: (q1 * (f * g)) = g21 by A1, A4, A7, A6, CAT_7: 23;

        

         A15: (q2 * (f * g)) = g22 by A1, A4, A7, A6, CAT_7: 23;

        

         A16: (q1 * ( id- b)) = g21 by A1, A5, CAT_7: 18;

        

         A17: (q2 * ( id- b)) = g22 by A1, A5, CAT_7: 18;

        

        thus (f * g) = h2 by A13, A14, A15

        .= ( id- b) by A13, A16, A17;

      end;

      hence (a,b) are_isomorphic by CAT_7:def 11;

    end;

    theorem :: CAT_8:40

    for C be category, c1,c2,d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 st ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2) holds (d,p2,p1) is_product_of (c2,c1)

    proof

      let C be category;

      let c1,c2,d be Object of C;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      assume

       A1: ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} ;

      assume

       A2: (d,p1,p2) is_product_of (c1,c2);

      for d1 be Object of C, g2 be Morphism of d1, c2, g1 be Morphism of d1, c1 st ( Hom (d1,c2)) <> {} & ( Hom (d1,c1)) <> {} holds ( Hom (d1,d)) <> {} & ex h be Morphism of d1, d st (p2 * h) = g2 & (p1 * h) = g1 & for h1 be Morphism of d1, d st (p2 * h1) = g2 & (p1 * h1) = g1 holds h = h1

      proof

        let d1 be Object of C;

        let g2 be Morphism of d1, c2;

        let g1 be Morphism of d1, c1;

        assume

         A3: ( Hom (d1,c2)) <> {} & ( Hom (d1,c1)) <> {} ;

        hence ( Hom (d1,d)) <> {} by A2, A1, Def10;

        consider h be Morphism of d1, d such that

         A4: (p1 * h) = g1 & (p2 * h) = g2 & for h1 be Morphism of d1, d st (p1 * h1) = g1 & (p2 * h1) = g2 holds h = h1 by A3, A2, A1, Def10;

        take h;

        thus thesis by A4;

      end;

      hence (d,p2,p1) is_product_of (c2,c1) by A1, Def10;

    end;

    definition

      let C be category;

      :: CAT_8:def11

      attr C is with_binary_products means

      : Def11: for a,b be Object of C holds ex d be Object of C, p1 be Morphism of d, a, p2 be Morphism of d, b st ( Hom (d,a)) <> {} & ( Hom (d,b)) <> {} & (d,p1,p2) is_product_of (a,b);

    end

    theorem :: CAT_8:41

    

     Th41: ( OrdC 1) is with_binary_products

    proof

      set C = ( OrdC 1);

      consider f be morphism of ( OrdC 1) such that

       A1: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

      

       A2: for o1,o2 be Object of C, f1 be morphism of C holds f1 is Morphism of o1, o2

      proof

        let o1,o2 be Object of C;

        let f1 be morphism of C;

        

         A3: ( dom f1) = f by A1, TARSKI:def 1

        .= o1 by A1, TARSKI:def 1;

        ( cod f1) = f by A1, TARSKI:def 1

        .= o2 by A1, TARSKI:def 1;

        then f1 in ( Hom (o1,o2)) by A3, CAT_7: 20;

        hence f1 is Morphism of o1, o2 by CAT_7:def 3;

      end;

      let a,b be Object of C;

      

       A4: a = f by A1, TARSKI:def 1

      .= b by A1, TARSKI:def 1;

      take a;

      reconsider p1 = f as Morphism of a, a by A2;

      reconsider p2 = f as Morphism of a, b by A2;

      take p1, p2;

      thus

       A5: ( Hom (a,a)) <> {} & ( Hom (a,b)) <> {} by A4;

      for c1 be Object of C, q1 be Morphism of c1, a, q2 be Morphism of c1, b st ( Hom (c1,a)) <> {} & ( Hom (c1,b)) <> {} holds ( Hom (c1,a)) <> {} & ex h be Morphism of c1, a st (p1 * h) = q1 & (p2 * h) = q2 & for h1 be Morphism of c1, a st (p1 * h1) = q1 & (p2 * h1) = q2 holds h = h1

      proof

        let c1 be Object of C;

        let q1 be Morphism of c1, a;

        let q2 be Morphism of c1, b;

        assume ( Hom (c1,a)) <> {} & ( Hom (c1,b)) <> {} ;

        c1 = f by A1, TARSKI:def 1

        .= a by A1, TARSKI:def 1;

        hence ( Hom (c1,a)) <> {} ;

        reconsider h = f as Morphism of c1, a by A2;

        take h;

        

        thus (p1 * h) = f by A1, TARSKI:def 1

        .= q1 by A1, TARSKI:def 1;

        

        thus (p2 * h) = f by A1, TARSKI:def 1

        .= q2 by A1, TARSKI:def 1;

        let h1 be Morphism of c1, a;

        assume (p1 * h1) = q1 & (p2 * h1) = q2;

        thus h = h1 by A1, TARSKI:def 1;

      end;

      hence (a,p1,p2) is_product_of (a,b) by A5, Def10;

    end;

    registration

      cluster with_binary_products non empty for category;

      correctness by Th41;

    end

    definition

      let C be with_binary_products category;

      let c1,c2 be Object of C;

      :: CAT_8:def12

      mode categorical_product of c1,c2 -> triple object means

      : Def12: ex d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 st it = [d, p1, p2] & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2);

      correctness

      proof

        consider d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 such that

         A1: ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2) by Def11;

        take [d, p1, p2];

        thus thesis by A1;

      end;

    end

    definition

      let C be with_binary_products category;

      let c1,c2 be Object of C;

      :: CAT_8:def13

      func c1 [x] c2 -> Object of C equals ( the categorical_product of c1, c2 `1_3 );

      correctness

      proof

        set T = the categorical_product of c1, c2;

        consider d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 such that

         A1: T = [d, p1, p2] & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2) by Def12;

        thus thesis by A1;

      end;

    end

    definition

      let C be with_binary_products category;

      let c1,c2 be Object of C;

      :: CAT_8:def14

      func pr1 (c1,c2) -> Morphism of (c1 [x] c2), c1 equals ( the categorical_product of c1, c2 `2_3 );

      correctness

      proof

        set T = the categorical_product of c1, c2;

        consider d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 such that

         A1: T = [d, p1, p2] & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2) by Def12;

        thus thesis by A1;

      end;

      :: CAT_8:def15

      func pr2 (c1,c2) -> Morphism of (c1 [x] c2), c2 equals ( the categorical_product of c1, c2 `3_3 );

      correctness

      proof

        set T = the categorical_product of c1, c2;

        consider d be Object of C, p1 be Morphism of d, c1, p2 be Morphism of d, c2 such that

         A2: T = [d, p1, p2] & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_product_of (c1,c2) by Def12;

        thus thesis by A2;

      end;

    end

    theorem :: CAT_8:42

    

     Th42: for C be with_binary_products category, a,b be Object of C holds ((a [x] b),( pr1 (a,b)),( pr2 (a,b))) is_product_of (a,b) & ( Hom ((a [x] b),a)) <> {} & ( Hom ((a [x] b),b)) <> {}

    proof

      let C be with_binary_products category;

      let a,b be Object of C;

      set T = the categorical_product of a, b;

      consider c be Object of C, p1 be Morphism of c, a, p2 be Morphism of c, b such that

       A1: T = [c, p1, p2] & ( Hom (c,a)) <> {} & ( Hom (c,b)) <> {} & (c,p1,p2) is_product_of (a,b) by Def12;

      thus thesis by A1;

    end;

    theorem :: CAT_8:43

    for C be with_binary_products category, a,b,c be Object of C st ( Hom (c,a)) <> {} & ( Hom (c,b)) <> {} holds ( Hom (c,(a [x] b))) <> {}

    proof

      let C be with_binary_products category;

      let a,b,c be Object of C;

      assume

       A1: ( Hom (c,a)) <> {} & ( Hom (c,b)) <> {} ;

      ((a [x] b),( pr1 (a,b)),( pr2 (a,b))) is_product_of (a,b) & ( Hom ((a [x] b),a)) <> {} & ( Hom ((a [x] b),b)) <> {} by Th42;

      hence ( Hom (c,(a [x] b))) <> {} by Def10, A1;

    end;

    theorem :: CAT_8:44

    

     Th44: for C be with_binary_products category, a,b,c,d be Object of C st ( Hom (a,b)) <> {} & ( Hom (c,d)) <> {} holds ( Hom ((a [x] c),(b [x] d))) <> {}

    proof

      let C be with_binary_products category;

      let a,b,c,d be Object of C;

      assume

       A1: ( Hom (a,b)) <> {} ;

      assume

       A2: ( Hom (c,d)) <> {} ;

      

       A3: ((a [x] c),( pr1 (a,c)),( pr2 (a,c))) is_product_of (a,c) & ( Hom ((a [x] c),a)) <> {} & ( Hom ((a [x] c),c)) <> {} by Th42;

      

       A4: ((b [x] d),( pr1 (b,d)),( pr2 (b,d))) is_product_of (b,d) & ( Hom ((b [x] d),b)) <> {} & ( Hom ((b [x] d),d)) <> {} by Th42;

      ( Hom ((a [x] c),b)) <> {} & ( Hom ((a [x] c),d)) <> {} by A3, A1, A2, CAT_7: 22;

      hence thesis by A4, Def10;

    end;

    definition

      let C be with_binary_products category;

      let a,b,c,d be Object of C;

      let f be Morphism of a, b;

      let g be Morphism of c, d;

      :: CAT_8:def16

      func f [x] g -> Morphism of (a [x] c), (b [x] d) means

      : Def16: (f * ( pr1 (a,c))) = (( pr1 (b,d)) * it ) & (g * ( pr2 (a,c))) = (( pr2 (b,d)) * it );

      correctness

      proof

        

         A3: ((a [x] c),( pr1 (a,c)),( pr2 (a,c))) is_product_of (a,c) & ( Hom ((a [x] c),a)) <> {} & ( Hom ((a [x] c),c)) <> {} by Th42;

        

         A4: ((b [x] d),( pr1 (b,d)),( pr2 (b,d))) is_product_of (b,d) & ( Hom ((b [x] d),b)) <> {} & ( Hom ((b [x] d),d)) <> {} by Th42;

        ( Hom ((a [x] c),b)) <> {} & ( Hom ((a [x] c),d)) <> {} by A3, A1, A2, CAT_7: 22;

        then

        consider h be Morphism of (a [x] c), (b [x] d) such that

         A5: (( pr1 (b,d)) * h) = (f * ( pr1 (a,c))) & (( pr2 (b,d)) * h) = (g * ( pr2 (a,c))) & for h1 be Morphism of (a [x] c), (b [x] d) st (( pr1 (b,d)) * h1) = (f * ( pr1 (a,c))) & (( pr2 (b,d)) * h1) = (g * ( pr2 (a,c))) holds h = h1 by A4, Def10;

        for h1,h2 be Morphism of (a [x] c), (b [x] d) st (f * ( pr1 (a,c))) = (( pr1 (b,d)) * h1) & (g * ( pr2 (a,c))) = (( pr2 (b,d)) * h1) & (f * ( pr1 (a,c))) = (( pr1 (b,d)) * h2) & (g * ( pr2 (a,c))) = (( pr2 (b,d)) * h2) holds h1 = h2

        proof

          let h1,h2 be Morphism of (a [x] c), (b [x] d);

          assume

           A6: (f * ( pr1 (a,c))) = (( pr1 (b,d)) * h1) & (g * ( pr2 (a,c))) = (( pr2 (b,d)) * h1);

          assume

           A7: (f * ( pr1 (a,c))) = (( pr1 (b,d)) * h2) & (g * ( pr2 (a,c))) = (( pr2 (b,d)) * h2);

          

          thus h1 = h by A6, A5

          .= h2 by A5, A7;

        end;

        hence thesis by A5;

      end;

    end

    definition

      let C1,C2,D be category;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      :: CAT_8:def17

      pred D,P1,P2 is_product_of C1,C2 means

      : Def17: for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant holds ex H be Functor of D1, D st H is covariant & (P1 (*) H) = G1 & (P2 (*) H) = G2 & for H1 be Functor of D1, D st H1 is covariant & (P1 (*) H1) = G1 & (P2 (*) H1) = G2 holds H = H1;

    end

    theorem :: CAT_8:45

    for C1,C2,A,B be category, P1 be Functor of A, C1, P2 be Functor of A, C2, Q1 be Functor of B, C1, Q2 be Functor of B, C2 st P1 is covariant & P2 is covariant & Q1 is covariant & Q2 is covariant & (A,P1,P2) is_product_of (C1,C2) & (B,Q1,Q2) is_product_of (C1,C2) holds A ~= B

    proof

      let C1,C2,A,B be category;

      let P1 be Functor of A, C1;

      let P2 be Functor of A, C2;

      let Q1 be Functor of B, C1;

      let Q2 be Functor of B, C2;

      assume

       A1: P1 is covariant & P2 is covariant & Q1 is covariant & Q2 is covariant;

      assume

       A2: (A,P1,P2) is_product_of (C1,C2);

      assume

       A3: (B,Q1,Q2) is_product_of (C1,C2);

      ex FF be Functor of A, B, GG be Functor of B, A st FF is covariant & GG is covariant & (GG (*) FF) = ( id A) & (FF (*) GG) = ( id B)

      proof

        consider FF be Functor of A, B such that

         A4: FF is covariant & (Q1 (*) FF) = P1 & (Q2 (*) FF) = P2 & for H1 be Functor of A, B st H1 is covariant & (Q1 (*) H1) = P1 & (Q2 (*) H1) = P2 holds FF = H1 by A1, A3, Def17;

        consider GG be Functor of B, A such that

         A5: GG is covariant & (P1 (*) GG) = Q1 & (P2 (*) GG) = Q2 & for H1 be Functor of B, A st H1 is covariant & (P1 (*) H1) = Q1 & (P2 (*) H1) = Q2 holds GG = H1 by A1, A2, Def17;

        take FF, GG;

        thus FF is covariant & GG is covariant by A4, A5;

        set G11 = (Q1 (*) FF);

        set G12 = (Q2 (*) FF);

        consider H1 be Functor of A, A such that

         A6: H1 is covariant & (P1 (*) H1) = G11 & (P2 (*) H1) = G12 & for H be Functor of A, A st H is covariant & (P1 (*) H) = G11 & (P2 (*) H) = G12 holds H1 = H by A1, A4, A2, Def17;

        

         A7: (P1 (*) (GG (*) FF)) = G11 by A1, A4, A5, CAT_7: 10;

        

         A8: (P2 (*) (GG (*) FF)) = G12 by A1, A4, A5, CAT_7: 10;

        

         A9: (P1 (*) ( id A)) = G11 by A1, A4, CAT_7: 11;

        

         A10: (P2 (*) ( id A)) = G12 by A1, A4, CAT_7: 11;

        

        thus (GG (*) FF) = H1 by A6, A7, A8, A4, A5, CAT_6: 35

        .= ( id A) by A6, A9, A10;

        set G21 = (P1 (*) GG);

        set G22 = (P2 (*) GG);

        consider H2 be Functor of B, B such that

         A11: H2 is covariant & (Q1 (*) H2) = G21 & (Q2 (*) H2) = G22 & for H be Functor of B, B st H is covariant & (Q1 (*) H) = G21 & (Q2 (*) H) = G22 holds H2 = H by A1, A5, A3, Def17;

        

         A12: (Q1 (*) (FF (*) GG)) = G21 by A1, A4, A5, CAT_7: 10;

        

         A13: (Q2 (*) (FF (*) GG)) = G22 by A1, A4, A5, CAT_7: 10;

        

         A14: (Q1 (*) ( id B)) = G21 by A1, A5, CAT_7: 11;

        

         A15: (Q2 (*) ( id B)) = G22 by A1, A5, CAT_7: 11;

        

        thus (FF (*) GG) = H2 by A11, A12, A13, A4, A5, CAT_6: 35

        .= ( id B) by A11, A14, A15;

      end;

      hence A ~= B by CAT_6:def 28;

    end;

    theorem :: CAT_8:46

    for C1,C2,D be category, P1 be Functor of D, C1, P2 be Functor of D, C2 st P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) holds (D,P2,P1) is_product_of (C2,C1)

    proof

      let C1,C2,D be category;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      assume

       A1: P1 is covariant & P2 is covariant;

      assume

       A2: (D,P1,P2) is_product_of (C1,C2);

      for D1 be category, G1 be Functor of D1, C2, G2 be Functor of D1, C1 st G1 is covariant & G2 is covariant holds ex H be Functor of D1, D st H is covariant & (P2 (*) H) = G1 & (P1 (*) H) = G2 & for H1 be Functor of D1, D st H1 is covariant & (P2 (*) H1) = G1 & (P1 (*) H1) = G2 holds H = H1

      proof

        let D1 be category;

        let G1 be Functor of D1, C2;

        let G2 be Functor of D1, C1;

        assume

         A3: G1 is covariant & G2 is covariant;

        consider H be Functor of D1, D such that

         A4: H is covariant & (P1 (*) H) = G2 & (P2 (*) H) = G1 & for H1 be Functor of D1, D st H1 is covariant & (P1 (*) H1) = G2 & (P2 (*) H1) = G1 holds H = H1 by A3, A2, A1, Def17;

        take H;

        thus H is covariant & (P2 (*) H) = G1 & (P1 (*) H) = G2 by A4;

        let H1 be Functor of D1, D;

        assume H1 is covariant & (P2 (*) H1) = G1 & (P1 (*) H1) = G2;

        hence H = H1 by A4;

      end;

      hence (D,P2,P1) is_product_of (C2,C1) by A1, Def17;

    end;

    notation

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      synonym F1 [|x|] F2 for [|F1,F2|];

    end

    theorem :: CAT_8:47

    

     Th47: for C1,C2 be category holds (((C1 ->OrdC1 ) [|x|] (C2 ->OrdC1 )),( pr1 ((C1 ->OrdC1 ),(C2 ->OrdC1 ))),( pr2 ((C1 ->OrdC1 ),(C2 ->OrdC1 )))) is_product_of (C1,C2)

    proof

      let C1,C2 be category;

      set F1 = (C1 ->OrdC1 );

      set F2 = (C2 ->OrdC1 );

      

       A1: ( pr1 (F1,F2)) is covariant by CAT_7: 52;

      

       A2: ( pr2 (F1,F2)) is covariant by CAT_7: 52;

      for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant holds ex H be Functor of D1, (F1 [|x|] F2) st H is covariant & (( pr1 (F1,F2)) (*) H) = G1 & (( pr2 (F1,F2)) (*) H) = G2 & for H1 be Functor of D1, (F1 [|x|] F2) st H1 is covariant & (( pr1 (F1,F2)) (*) H1) = G1 & (( pr2 (F1,F2)) (*) H1) = G2 holds H = H1

      proof

        let D1 be category;

        let G1 be Functor of D1, C1;

        let G2 be Functor of D1, C2;

        assume

         A3: G1 is covariant & G2 is covariant;

        

         A4: ((F1 [|x|] F2),( pr1 (F1,F2)),( pr2 (F1,F2))) is_pullback_of (F1,F2) by CAT_7: 52;

        (F1 (*) G1) = (F2 (*) G2) by A3, Th29;

        then

        consider H be Functor of D1, (F1 [|x|] F2) such that

         A5: H is covariant & (( pr1 (F1,F2)) (*) H) = G1 & (( pr2 (F1,F2)) (*) H) = G2 & for H1 be Functor of D1, (F1 [|x|] F2) st H1 is covariant & (( pr1 (F1,F2)) (*) H1) = G1 & (( pr2 (F1,F2)) (*) H1) = G2 holds H = H1 by A4, A3, A1, A2, CAT_7:def 20;

        take H;

        thus thesis by A5;

      end;

      hence thesis by A1, A2, Def17;

    end;

    definition

      let C1,C2 be category;

      :: CAT_8:def18

      mode categorical_product of C1,C2 -> triple object means

      : Def18: ex D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 st it = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2);

      correctness

      proof

        set D = ((C1 ->OrdC1 ) [|x|] (C2 ->OrdC1 ));

        reconsider P1 = ( pr1 ((C1 ->OrdC1 ),(C2 ->OrdC1 ))) as Functor of D, C1;

        reconsider P2 = ( pr2 ((C1 ->OrdC1 ),(C2 ->OrdC1 ))) as Functor of D, C2;

        take [D, P1, P2];

        P1 is covariant & P2 is covariant by CAT_7: 52;

        hence thesis by Th47;

      end;

    end

    definition

      let C1,C2 be category;

      :: CAT_8:def19

      func C1 [x] C2 -> strict category equals ( the categorical_product of C1, C2 `1_3 );

      correctness

      proof

        set T = the categorical_product of C1, C2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A1: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

        thus thesis by A1;

      end;

    end

    definition

      let C1,C2 be category;

      :: CAT_8:def20

      func pr1 (C1,C2) -> Functor of (C1 [x] C2), C1 equals ( the categorical_product of C1, C2 `2_3 );

      correctness

      proof

        set T = the categorical_product of C1, C2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A1: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

        thus thesis by A1;

      end;

      :: CAT_8:def21

      func pr2 (C1,C2) -> Functor of (C1 [x] C2), C2 equals ( the categorical_product of C1, C2 `3_3 );

      correctness

      proof

        set T = the categorical_product of C1, C2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A2: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

        thus thesis by A2;

      end;

    end

    theorem :: CAT_8:48

    

     Th48: for C1,C2 be category holds ((C1 [x] C2),( pr1 (C1,C2)),( pr2 (C1,C2))) is_product_of (C1,C2)

    proof

      let C1,C2 be category;

      set T = the categorical_product of C1, C2;

      consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

       A1: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

      thus thesis by A1;

    end;

    registration

      let C1,C2 be category;

      cluster ( pr1 (C1,C2)) -> covariant;

      correctness

      proof

        set T = the categorical_product of C1, C2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A1: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

        thus thesis by A1;

      end;

      cluster ( pr2 (C1,C2)) -> covariant;

      correctness

      proof

        set T = the categorical_product of C1, C2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A2: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_product_of (C1,C2) by Def18;

        thus thesis by A2;

      end;

    end

    theorem :: CAT_8:49

    

     Th49: for C1,C2 be category holds (C1 [x] C2) is non empty iff (C1 is non empty & C2 is non empty)

    proof

      let C1,C2 be category;

      hereby

        assume

         A1: (C1 [x] C2) is non empty;

        ( pr1 (C1,C2)) is covariant;

        hence C1 is non empty by A1, CAT_6: 31;

        ( pr2 (C1,C2)) is covariant;

        hence C2 is non empty by A1, CAT_6: 31;

      end;

      assume

       A2: C1 is non empty & C2 is non empty;

      reconsider C01 = C1 as non empty category by A2;

      reconsider C02 = C2 as non empty category by A2;

      set D = ( OrdC 1);

      set G01 = the covariant Functor of D, C01;

      set G02 = the covariant Functor of D, C02;

      reconsider G1 = G01 as Functor of D, C1;

      reconsider G2 = G02 as Functor of D, C2;

      ((C1 [x] C2),( pr1 (C1,C2)),( pr2 (C1,C2))) is_product_of (C1,C2) by Th48;

      then

      consider H be Functor of D, (C1 [x] C2) such that

       A3: H is covariant & (( pr1 (C1,C2)) (*) H) = G1 & (( pr2 (C1,C2)) (*) H) = G2 & (for H1 be Functor of D, (C1 [x] C2) st H1 is covariant & (( pr1 (C1,C2)) (*) H1) = G1 & (( pr2 (C1,C2)) (*) H1) = G2 holds H = H1) by Def17;

      thus (C1 [x] C2) is non empty by A3, CAT_6: 31;

    end;

    registration

      let C1 be empty category;

      let C2 be category;

      cluster (C1 [x] C2) -> empty;

      correctness by Th49;

    end

    registration

      let C1 be category;

      let C2 be empty category;

      cluster (C1 [x] C2) -> empty;

      correctness by Th49;

    end

    registration

      let C1 be non empty category;

      let C2 be non empty category;

      cluster (C1 [x] C2) -> non empty;

      correctness by Th49;

    end

    definition

      let C1,C2,D1,D2 be category;

      let F1 be Functor of C1, D1;

      let F2 be Functor of C2, D2;

      assume

       A1: F1 is covariant & F2 is covariant;

      :: CAT_8:def22

      func F1 [x] F2 -> Functor of (C1 [x] C2), (D1 [x] D2) means

      : Def22: it is covariant & (F1 (*) ( pr1 (C1,C2))) = (( pr1 (D1,D2)) (*) it ) & (F2 (*) ( pr2 (C1,C2))) = (( pr2 (D1,D2)) (*) it );

      correctness

      proof

        set G1 = (F1 (*) ( pr1 (C1,C2)));

        set G2 = (F2 (*) ( pr2 (C1,C2)));

        

         A2: ((D1 [x] D2),( pr1 (D1,D2)),( pr2 (D1,D2))) is_product_of (D1,D2) by Th48;

        G1 is covariant & G2 is covariant by A1, CAT_6: 35;

        then

        consider H2 be Functor of (C1 [x] C2), (D1 [x] D2) such that

         A3: H2 is covariant & (( pr1 (D1,D2)) (*) H2) = G1 & (( pr2 (D1,D2)) (*) H2) = G2 & (for H1 be Functor of (C1 [x] C2), (D1 [x] D2) st H1 is covariant & (( pr1 (D1,D2)) (*) H1) = G1 & (( pr2 (D1,D2)) (*) H1) = G2 holds H2 = H1) by A2, Def17;

        thus ex H be Functor of (C1 [x] C2), (D1 [x] D2) st H is covariant & (F1 (*) ( pr1 (C1,C2))) = (( pr1 (D1,D2)) (*) H) & (F2 (*) ( pr2 (C1,C2))) = (( pr2 (D1,D2)) (*) H) by A3;

        let H3,H4 be Functor of (C1 [x] C2), (D1 [x] D2);

        assume

         A4: H3 is covariant & (F1 (*) ( pr1 (C1,C2))) = (( pr1 (D1,D2)) (*) H3) & (F2 (*) ( pr2 (C1,C2))) = (( pr2 (D1,D2)) (*) H3);

        assume

         A5: H4 is covariant & (F1 (*) ( pr1 (C1,C2))) = (( pr1 (D1,D2)) (*) H4) & (F2 (*) ( pr2 (C1,C2))) = (( pr2 (D1,D2)) (*) H4);

        

        thus H3 = H2 by A4, A3

        .= H4 by A5, A3;

      end;

    end

    theorem :: CAT_8:50

    

     Th50: for A1,A2,B1,B2,C1,C2 be category, F1 be Functor of A1, B1, F2 be Functor of A2, B2, G1 be Functor of B1, C1, G2 be Functor of B2, C2 st F1 is covariant & G1 is covariant & F2 is covariant & G2 is covariant holds ((G1 [x] G2) (*) (F1 [x] F2)) = ((G1 (*) F1) [x] (G2 (*) F2))

    proof

      let A1,A2,B1,B2,C1,C2 be category;

      let F1 be Functor of A1, B1;

      let F2 be Functor of A2, B2;

      let G1 be Functor of B1, C1;

      let G2 be Functor of B2, C2;

      assume

       A1: F1 is covariant;

      assume

       A2: G1 is covariant;

      assume

       A3: F2 is covariant;

      assume

       A4: G2 is covariant;

      

       A5: (F1 [x] F2) is covariant by A1, A3, Def22;

      

       A6: (G1 [x] G2) is covariant by A2, A4, Def22;

      

       A7: (G1 (*) F1) is covariant by A1, A2, CAT_6: 35;

      

       A8: (G2 (*) F2) is covariant by A3, A4, CAT_6: 35;

      

       A9: ((G1 [x] G2) (*) (F1 [x] F2)) is covariant by A5, A6, CAT_6: 35;

      

       A10: ((G1 (*) F1) (*) ( pr1 (A1,A2))) = (G1 (*) (F1 (*) ( pr1 (A1,A2)))) by A1, A2, CAT_7: 10

      .= (G1 (*) (( pr1 (B1,B2)) (*) (F1 [x] F2))) by A1, A3, Def22

      .= ((G1 (*) ( pr1 (B1,B2))) (*) (F1 [x] F2)) by A5, A2, CAT_7: 10

      .= ((( pr1 (C1,C2)) (*) (G1 [x] G2)) (*) (F1 [x] F2)) by A2, A4, Def22

      .= (( pr1 (C1,C2)) (*) ((G1 [x] G2) (*) (F1 [x] F2))) by A5, A6, CAT_7: 10;

      ((G2 (*) F2) (*) ( pr2 (A1,A2))) = (G2 (*) (F2 (*) ( pr2 (A1,A2)))) by A3, A4, CAT_7: 10

      .= (G2 (*) (( pr2 (B1,B2)) (*) (F1 [x] F2))) by A1, A3, Def22

      .= ((G2 (*) ( pr2 (B1,B2))) (*) (F1 [x] F2)) by A5, A4, CAT_7: 10

      .= ((( pr2 (C1,C2)) (*) (G1 [x] G2)) (*) (F1 [x] F2)) by A2, A4, Def22

      .= (( pr2 (C1,C2)) (*) ((G1 [x] G2) (*) (F1 [x] F2))) by A5, A6, CAT_7: 10;

      hence thesis by A7, A10, A8, A9, Def22;

    end;

    theorem :: CAT_8:51

    

     Th51: for C1,C2 be category holds (( id C1) [x] ( id C2)) = ( id (C1 [x] C2))

    proof

      let C1,C2 be category;

      

       A1: (( id C1) (*) ( pr1 (C1,C2))) = ( pr1 (C1,C2)) by CAT_7: 11

      .= (( pr1 (C1,C2)) (*) ( id (C1 [x] C2))) by CAT_7: 11;

      (( id C2) (*) ( pr2 (C1,C2))) = ( pr2 (C1,C2)) by CAT_7: 11

      .= (( pr2 (C1,C2)) (*) ( id (C1 [x] C2))) by CAT_7: 11;

      hence (( id C1) [x] ( id C2)) = ( id (C1 [x] C2)) by A1, Def22;

    end;

    notation

      let x,y be object;

      synonym KuratowskiPair (x,y) for [x,y];

    end

    definition

      let C1,C2 be category;

      let f1 be morphism of C1;

      let f2 be morphism of C2;

      :: CAT_8:def23

      func [f1,f2] -> morphism of (C1 [x] C2) means

      : Def23: (( pr1 (C1,C2)) . it ) = f1 & (( pr2 (C1,C2)) . it ) = f2 if not C1 is empty & not C2 is empty

      otherwise it = the morphism of (C1 [x] C2);

      correctness

      proof

         not C1 is empty & not C2 is empty implies (ex f be morphism of (C1 [x] C2) st (( pr1 (C1,C2)) . f) = f1 & (( pr2 (C1,C2)) . f) = f2) & for f11,f22 be morphism of (C1 [x] C2) st (( pr1 (C1,C2)) . f11) = f1 & (( pr2 (C1,C2)) . f11) = f2 & (( pr1 (C1,C2)) . f22) = f1 & (( pr2 (C1,C2)) . f22) = f2 holds f11 = f22

        proof

          assume

           A1: C1 is non empty & C2 is non empty;

          reconsider D1 = C1, D2 = C2 as non empty category by A1;

          reconsider g1 = f1 as morphism of D1;

          reconsider g2 = f2 as morphism of D2;

          ((D1 [x] D2),( pr1 (D1,D2)),( pr2 (D1,D2))) is_product_of (D1,D2) by Th48;

          then

          consider H be Functor of ( OrdC 2), (D1 [x] D2) such that

           A2: H is covariant & (( pr1 (D1,D2)) (*) H) = ( MORPHISM g1) & (( pr2 (D1,D2)) (*) H) = ( MORPHISM g2) & for H1 be Functor of ( OrdC 2), (D1 [x] D2) st H1 is covariant & (( pr1 (D1,D2)) (*) H1) = ( MORPHISM g1) & (( pr2 (D1,D2)) (*) H1) = ( MORPHISM g2) holds H = H1 by Def17;

          consider g12 be morphism of ( OrdC 2) such that

           A3: not g12 is identity & ( Ob ( OrdC 2)) = {( dom g12), ( cod g12)} & ( Mor ( OrdC 2)) = {( dom g12), ( cod g12), g12} & (( dom g12),( cod g12),g12) are_mutually_distinct by CAT_7: 39;

          reconsider f = (H . g12) as morphism of (C1 [x] C2);

          thus ex f be morphism of (C1 [x] C2) st (( pr1 (C1,C2)) . f) = f1 & (( pr2 (C1,C2)) . f) = f2

          proof

            take f;

            

            thus (( pr1 (C1,C2)) . f) = ((( pr1 (D1,D2)) (*) H) . g12) by A2, CAT_6: 34

            .= f1 by A2, A3, CAT_7:def 16;

            

            thus (( pr2 (C1,C2)) . f) = ((( pr2 (D1,D2)) (*) H) . g12) by A2, CAT_6: 34

            .= f2 by A2, A3, CAT_7:def 16;

          end;

          let f11,f22 be morphism of (C1 [x] C2);

          reconsider g11 = f11 as morphism of (D1 [x] D2);

          reconsider g22 = f22 as morphism of (D1 [x] D2);

          assume

           A4: (( pr1 (C1,C2)) . f11) = f1 & (( pr2 (C1,C2)) . f11) = f2;

          assume

           A5: (( pr1 (C1,C2)) . f22) = f1 & (( pr2 (C1,C2)) . f22) = f2;

          set H1 = ( MORPHISM g11);

          set H2 = ( MORPHISM g22);

          

           A6: (( pr1 (D1,D2)) (*) H1) is covariant by CAT_6: 35;

          ((( pr1 (D1,D2)) (*) H1) . g12) = (( pr1 (D1,D2)) . (H1 . g12)) by CAT_6: 34

          .= (( pr1 (D1,D2)) . g11) by A3, CAT_7:def 16

          .= (( MORPHISM g1) . g12) by A4, A3, CAT_7:def 16;

          then

           A7: (( pr1 (D1,D2)) (*) H1) = ( MORPHISM g1) by A6, A3, Th17;

          

           A8: (( pr2 (D1,D2)) (*) H1) is covariant by CAT_6: 35;

          ((( pr2 (D1,D2)) (*) H1) . g12) = (( pr2 (D1,D2)) . (H1 . g12)) by CAT_6: 34

          .= (( pr2 (D1,D2)) . g11) by A3, CAT_7:def 16

          .= (( MORPHISM g2) . g12) by A4, A3, CAT_7:def 16;

          then (( pr2 (D1,D2)) (*) H1) = ( MORPHISM g2) by A8, A3, Th17;

          then

           A9: H1 = H by A7, A2;

          

           A10: (( pr1 (D1,D2)) (*) H2) is covariant by CAT_6: 35;

          ((( pr1 (D1,D2)) (*) H2) . g12) = (( pr1 (D1,D2)) . (H2 . g12)) by CAT_6: 34

          .= (( pr1 (D1,D2)) . g22) by A3, CAT_7:def 16

          .= (( MORPHISM g1) . g12) by A5, A3, CAT_7:def 16;

          then

           A11: (( pr1 (D1,D2)) (*) H2) = ( MORPHISM g1) by A10, A3, Th17;

          

           A12: (( pr2 (D1,D2)) (*) H2) is covariant by CAT_6: 35;

          ((( pr2 (D1,D2)) (*) H2) . g12) = (( pr2 (D1,D2)) . (H2 . g12)) by CAT_6: 34

          .= (( pr2 (D1,D2)) . g22) by A3, CAT_7:def 16

          .= (( MORPHISM g2) . g12) by A5, A3, CAT_7:def 16;

          then (( pr2 (D1,D2)) (*) H2) = ( MORPHISM g2) by A12, A3, Th17;

          hence thesis by A2, A11, A9, Th16;

        end;

        hence thesis;

      end;

    end

    theorem :: CAT_8:52

    

     Th52: for C1,C2 be category, f be morphism of (C1 [x] C2) holds ex f1 be morphism of C1, f2 be morphism of C2 st f = [f1, f2]

    proof

      let C1,C2 be category;

      let f be morphism of (C1 [x] C2);

      per cases ;

        suppose

         A1: C1 is non empty & C2 is non empty;

        take (( pr1 (C1,C2)) . f), (( pr2 (C1,C2)) . f);

        thus f = [(( pr1 (C1,C2)) . f), (( pr2 (C1,C2)) . f)] by A1, Def23;

      end;

        suppose

         A2: C1 is empty or C2 is empty;

        set f1 = the morphism of C1;

        set f2 = the morphism of C2;

        take f1, f2;

        f = {} by A2, SUBSET_1:def 1

        .= the morphism of (C1 [x] C2) by A2, SUBSET_1:def 1;

        hence thesis by A2, Def23;

      end;

    end;

    

     Lm2: for C1,C2 be non empty category, f1,g1 be morphism of C1, f2,g2 be morphism of C2 st f1 |> g1 & f2 |> g2 holds [f1, f2] |> [g1, g2]

    proof

      let C1,C2 be non empty category;

      let f1,g1 be morphism of C1;

      let f2,g2 be morphism of C2;

      assume

       A1: f1 |> g1;

      assume

       A2: f2 |> g2;

      set G1 = ( COMPOSITION (f1,g1));

      set G2 = ( COMPOSITION (f2,g2));

      ((C1 [x] C2),( pr1 (C1,C2)),( pr2 (C1,C2))) is_product_of (C1,C2) by Th48;

      then

      consider H be Functor of ( OrdC 3), (C1 [x] C2) such that

       A3: H is covariant & (( pr1 (C1,C2)) (*) H) = G1 & (( pr2 (C1,C2)) (*) H) = G2 and for H1 be Functor of ( OrdC 3), (C1 [x] C2) st H1 is covariant & (( pr1 (C1,C2)) (*) H1) = G1 & (( pr2 (C1,C2)) (*) H1) = G2 holds H = H1 by Def17;

      consider g3,f3 be morphism of ( OrdC 3) such that

       A4: not g3 is identity & not f3 is identity & ( cod g3) = ( dom f3) and ( Ob ( OrdC 3)) = {( dom g3), ( cod g3), ( cod f3)} and ( Mor ( OrdC 3)) = {( dom g3), ( cod g3), ( cod f3), g3, f3, (f3 (*) g3)} and (( dom g3),( cod g3),( cod f3),g3,f3,(f3 (*) g3)) are_mutually_distinct by Th18;

      

       A5: f3 |> g3 by A4, CAT_7: 5;

      

       A6: (( pr1 (C1,C2)) . (H . f3)) = (G1 . f3) by A3, CAT_6: 34

      .= f1 by A1, A5, A4, Def1;

      (( pr2 (C1,C2)) . (H . f3)) = (G2 . f3) by A3, CAT_6: 34

      .= f2 by A2, A5, A4, Def1;

      then

       A7: (H . f3) = [f1, f2] by A6, Def23;

      

       A8: (( pr1 (C1,C2)) . (H . g3)) = (G1 . g3) by A3, CAT_6: 34

      .= g1 by A1, A5, A4, Def1;

      (( pr2 (C1,C2)) . (H . g3)) = (G2 . g3) by A3, CAT_6: 34

      .= g2 by A2, A5, A4, Def1;

      then

       A9: (H . g3) = [g1, g2] by A8, Def23;

      H is multiplicative by A3, CAT_6:def 25;

      hence [f1, f2] |> [g1, g2] by A9, A7, A5, CAT_6:def 23;

    end;

    theorem :: CAT_8:53

    

     Th53: for C1,C2 be non empty category, f1,g1 be morphism of C1, f2,g2 be morphism of C2 st [f1, f2] = [g1, g2] holds f1 = g1 & f2 = g2

    proof

      let C1,C2 be non empty category;

      let f1,g1 be morphism of C1;

      let f2,g2 be morphism of C2;

      assume

       A1: [f1, f2] = [g1, g2];

      (( pr1 (C1,C2)) . [f1, f2]) = f1 & (( pr1 (C1,C2)) . [g1, g2]) = g1 by Def23;

      hence f1 = g1 by A1;

      (( pr2 (C1,C2)) . [f1, f2]) = f2 & (( pr2 (C1,C2)) . [g1, g2]) = g2 by Def23;

      hence f2 = g2 by A1;

    end;

    theorem :: CAT_8:54

    

     Th54: for C1,C2 be category, f1,g1 be morphism of C1, f2,g2 be morphism of C2 holds [f1, f2] |> [g1, g2] iff f1 |> g1 & f2 |> g2

    proof

      let C1,C2 be category;

      let f1,g1 be morphism of C1;

      let f2,g2 be morphism of C2;

      per cases ;

        suppose

         A1: C1 is non empty & C2 is non empty;

        hereby

          assume

           A2: [f1, f2] |> [g1, g2];

          

           A3: (( pr1 (C1,C2)) . [f1, f2]) = f1 & (( pr1 (C1,C2)) . [g1, g2]) = g1 by A1, Def23;

          ( pr1 (C1,C2)) is multiplicative by CAT_6:def 25;

          hence f1 |> g1 by A3, A2, CAT_6:def 23;

          

           A4: (( pr2 (C1,C2)) . [f1, f2]) = f2 & (( pr2 (C1,C2)) . [g1, g2]) = g2 by A1, Def23;

          ( pr2 (C1,C2)) is multiplicative by CAT_6:def 25;

          hence f2 |> g2 by A4, A2, CAT_6:def 23;

        end;

        assume f1 |> g1 & f2 |> g2;

        hence [f1, f2] |> [g1, g2] by A1, Lm2;

      end;

        suppose C1 is empty or C2 is empty;

        hence thesis by CAT_6: 1;

      end;

    end;

    theorem :: CAT_8:55

    

     Th55: for C1,C2 be category, f1,g1 be morphism of C1, f2,g2 be morphism of C2 st f1 |> g1 & f2 |> g2 holds ( [f1, f2] (*) [g1, g2]) = [(f1 (*) g1), (f2 (*) g2)]

    proof

      let C1,C2 be category;

      let f1,g1 be morphism of C1;

      let f2,g2 be morphism of C2;

      assume

       A1: f1 |> g1;

      then

       A2: C1 is non empty by CAT_6: 1;

      assume

       A3: f2 |> g2;

      then

       A4: C2 is non empty by CAT_6: 1;

      

       A5: [f1, f2] |> [g1, g2] by A1, A3, Th54;

      

       A6: (( pr1 (C1,C2)) . ( [f1, f2] (*) [g1, g2])) = ((( pr1 (C1,C2)) . [f1, f2]) (*) (( pr1 (C1,C2)) . [g1, g2])) by A5, Th13

      .= (f1 (*) (( pr1 (C1,C2)) . [g1, g2])) by A2, A4, Def23

      .= (f1 (*) g1) by A2, A4, Def23;

      (( pr2 (C1,C2)) . ( [f1, f2] (*) [g1, g2])) = ((( pr2 (C1,C2)) . [f1, f2]) (*) (( pr2 (C1,C2)) . [g1, g2])) by A5, Th13

      .= (f2 (*) (( pr2 (C1,C2)) . [g1, g2])) by A2, A4, Def23

      .= (f2 (*) g2) by A2, A4, Def23;

      hence ( [f1, f2] (*) [g1, g2]) = [(f1 (*) g1), (f2 (*) g2)] by A2, A4, A6, Def23;

    end;

    theorem :: CAT_8:56

    

     Th56: for C1,C2 be category, f1 be morphism of C1, f2 be morphism of C2, f be morphism of (C1 [x] C2) st f = [f1, f2] & C1 is non empty & C2 is non empty holds f is identity iff f1 is identity & f2 is identity

    proof

      let C1,C2 be category;

      let f1 be morphism of C1;

      let f2 be morphism of C2;

      let f be morphism of (C1 [x] C2);

      assume

       A1: f = [f1, f2];

      assume

       A2: C1 is non empty & C2 is non empty;

      hereby

        assume

         A3: f is identity;

        f1 = (( pr1 (C1,C2)) . f) & f2 = (( pr2 (C1,C2)) . f) by A2, A1, Def23;

        hence f1 is identity & f2 is identity by A3, CAT_6:def 22, CAT_6:def 25;

      end;

      assume

       A4: f1 is identity & f2 is identity;

      for g be morphism of (C1 [x] C2) st f |> g holds (f (*) g) = g

      proof

        let g be morphism of (C1 [x] C2);

        assume

         A5: f |> g;

        consider g1 be morphism of C1, g2 be morphism of C2 such that

         A6: g = [g1, g2] by Th52;

        

         A7: f1 |> g1 & f2 |> g2 by A6, A5, A1, Th54;

        

        hence (f (*) g) = [(f1 (*) g1), (f2 (*) g2)] by A6, A1, Th55

        .= [g1, (f2 (*) g2)] by A7, A4, Th4

        .= g by A6, A7, A4, Th4;

      end;

      then

       A8: f is left_identity by CAT_6:def 4;

      for g be morphism of (C1 [x] C2) st g |> f holds (g (*) f) = g

      proof

        let g be morphism of (C1 [x] C2);

        assume

         A9: g |> f;

        consider g1 be morphism of C1, g2 be morphism of C2 such that

         A10: g = [g1, g2] by Th52;

        

         A11: g1 |> f1 & g2 |> f2 by A10, A9, A1, Th54;

        

        hence (g (*) f) = [(g1 (*) f1), (g2 (*) f2)] by A10, A1, Th55

        .= [g1, (g2 (*) f2)] by A11, A4, Th4

        .= g by A10, A11, A4, Th4;

      end;

      hence f is identity by A8, CAT_6:def 5, CAT_6:def 14;

    end;

    theorem :: CAT_8:57

    

     Th57: for C1,C2 be non empty category, D1,D2 be category, F1 be Functor of C1, D1, F2 be Functor of C2, D2, c1 be morphism of C1, c2 be morphism of C2 st F1 is covariant & F2 is covariant holds ((F1 [x] F2) . [c1, c2]) = [(F1 . c1), (F2 . c2)]

    proof

      let C1,C2 be non empty category;

      let D1,D2 be category;

      let F1 be Functor of C1, D1;

      let F2 be Functor of C2, D2;

      let c1 be morphism of C1;

      let c2 be morphism of C2;

      assume

       A1: F1 is covariant & F2 is covariant;

      

       A2: not D1 is empty & not D2 is empty by A1, CAT_6: 31;

      

       A3: (F1 [x] F2) is covariant by A1, Def22;

      

       A4: (F1 . c1) = (F1 . (( pr1 (C1,C2)) . [c1, c2])) by Def23

      .= ((F1 (*) ( pr1 (C1,C2))) . [c1, c2]) by A1, CAT_6: 34

      .= ((( pr1 (D1,D2)) (*) (F1 [x] F2)) . [c1, c2]) by A1, Def22

      .= (( pr1 (D1,D2)) . ((F1 [x] F2) . [c1, c2])) by A3, CAT_6: 34;

      (F2 . c2) = (F2 . (( pr2 (C1,C2)) . [c1, c2])) by Def23

      .= ((F2 (*) ( pr2 (C1,C2))) . [c1, c2]) by A1, CAT_6: 34

      .= ((( pr2 (D1,D2)) (*) (F1 [x] F2)) . [c1, c2]) by A1, Def22

      .= (( pr2 (D1,D2)) . ((F1 [x] F2) . [c1, c2])) by A3, CAT_6: 34;

      hence ((F1 [x] F2) . [c1, c2]) = [(F1 . c1), (F2 . c2)] by A4, A2, Def23;

    end;

    begin

    definition

      let C1,C2 be category;

      let F1,F2 be Functor of C1, C2;

      let T be Functor of C1, C2;

      :: CAT_8:def24

      pred T is_natural_transformation_of F1,F2 means for f1,f2 be morphism of C1 st f1 |> f2 holds (T . f1) |> (F1 . f2) & (F2 . f1) |> (T . f2) & (T . (f1 (*) f2)) = ((T . f1) (*) (F1 . f2)) & (T . (f1 (*) f2)) = ((F2 . f1) (*) (T . f2));

    end

    theorem :: CAT_8:58

    

     Th58: for C1,C2 be category, F1,F2 be Functor of C1, C2, T be Functor of C1, C2 st F1 is covariant & F2 is covariant holds T is_natural_transformation_of (F1,F2) iff for f,f1,f2 be morphism of C1 st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (T . f1) |> (F1 . f) & (F2 . f) |> (T . f2) & (T . f) = ((T . f1) (*) (F1 . f)) & (T . f) = ((F2 . f) (*) (T . f2))

    proof

      let C1,C2 be category;

      let F1,F2 be Functor of C1, C2;

      let T be Functor of C1, C2;

      assume

       A1: F1 is covariant & F2 is covariant;

      hereby

        assume

         A2: T is_natural_transformation_of (F1,F2);

        let f,f1,f2 be morphism of C1;

        assume

         A3: f1 is identity & f2 is identity;

        assume

         A4: f1 |> f & f |> f2;

        hence (T . f1) |> (F1 . f) & (F2 . f) |> (T . f2) by A2;

        

        thus (T . f) = (T . (f1 (*) f)) by A3, A4, Th4

        .= ((T . f1) (*) (F1 . f)) by A4, A2;

        

        thus (T . f) = (T . (f (*) f2)) by A3, A4, Th4

        .= ((F2 . f) (*) (T . f2)) by A4, A2;

      end;

      assume

       A5: for f,f1,f2 be morphism of C1 st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (T . f1) |> (F1 . f) & (F2 . f) |> (T . f2) & (T . f) = ((T . f1) (*) (F1 . f)) & (T . f) = ((F2 . f) (*) (T . f2));

      for g1,g2 be morphism of C1 st g1 |> g2 holds (T . g1) |> (F1 . g2) & (F2 . g1) |> (T . g2) & (T . (g1 (*) g2)) = ((T . g1) (*) (F1 . g2)) & (T . (g1 (*) g2)) = ((F2 . g1) (*) (T . g2))

      proof

        let g1,g2 be morphism of C1;

        assume

         A6: g1 |> g2;

        then

         A7: C1 is non empty by CAT_6: 1;

        then

        consider f1,f2 be morphism of C1 such that

         A8: f1 is identity & f2 is identity and

         A9: f1 |> (g1 (*) g2) & (g1 (*) g2) |> f2 by Th5;

        consider g11 be morphism of C1 such that

         A10: ( dom g1) = g11 & g1 |> g11 & g11 is identity by A7, CAT_6:def 18;

        f1 |> g1 by A6, A9, Th3;

        then

         A11: (T . f1) |> (F1 . g1) & (T . g1) = ((T . f1) (*) (F1 . g1)) by A8, A10, A5;

        

         A12: (F1 . g1) |> (F1 . g2) by A1, A6, Th13;

        hence (T . g1) |> (F1 . g2) by A11, Th3;

        consider g22 be morphism of C1 such that

         A13: ( cod g2) = g22 & g22 |> g2 & g22 is identity by A7, CAT_6:def 19;

        g2 |> f2 by A6, A9, Th3;

        then

         A14: (F2 . g2) |> (T . f2) & (T . g2) = ((F2 . g2) (*) (T . f2)) by A13, A8, A5;

        

         A15: (F2 . g1) |> (F2 . g2) by A1, A6, Th13;

        hence (F2 . g1) |> (T . g2) by A14, Th3;

        

        thus (T . (g1 (*) g2)) = ((T . f1) (*) (F1 . (g1 (*) g2))) by A8, A9, A5

        .= ((T . f1) (*) ((F1 . g1) (*) (F1 . g2))) by A1, A6, Th13

        .= ((T . g1) (*) (F1 . g2)) by A11, A12, Th1;

        

        thus (T . (g1 (*) g2)) = ((F2 . (g1 (*) g2)) (*) (T . f2)) by A8, A9, A5

        .= (((F2 . g1) (*) (F2 . g2)) (*) (T . f2)) by A1, A6, Th13

        .= ((F2 . g1) (*) (T . g2)) by A14, A15, Th1;

      end;

      hence T is_natural_transformation_of (F1,F2);

    end;

    theorem :: CAT_8:59

    for C1,C2 be non empty category, F1,F2 be covariant Functor of C1, C2, T be Function of ( Ob C1), ( Mor C2) holds (ex T1 be Functor of C1, C2 st T = (T1 | ( Ob C1)) & T1 is_natural_transformation_of (F1,F2)) iff (for a be Object of C1 holds (T . a) in ( Hom ((F1 . a),(F2 . a)))) & (for a1,a2 be Object of C1, f be Morphism of a1, a2 st ( Hom (a1,a2)) <> {} holds ((T . a2) (*) (F1 . f)) = ((F2 . f) (*) (T . a1)))

    proof

      let C1,C2 be non empty category;

      let F1,F2 be covariant Functor of C1, C2;

      let T be Function of ( Ob C1), ( Mor C2);

      hereby

        given T1 be Functor of C1, C2 such that

         A1: T = (T1 | ( Ob C1)) and

         A2: T1 is_natural_transformation_of (F1,F2);

        thus for a be Object of C1 holds (T . a) in ( Hom ((F1 . a),(F2 . a)))

        proof

          let a be Object of C1;

          a in ( Ob C1);

          then a in { f where f be morphism of C1 : f is identity & f in ( Mor C1) } by CAT_6:def 17;

          then

          consider f be morphism of C1 such that

           A3: a = f & f is identity & f in ( Mor C1);

          f |> f by A3, CAT_6: 24;

          then

           A4: (T1 . f) |> (F1 . f) & (F2 . f) |> (T1 . f) & (T1 . f) = ((T1 . f) (*) (F1 . f)) & (T1 . f) = ((F2 . f) (*) (T1 . f)) by A2, Th58, A3;

          reconsider g = (T1 . f) as morphism of C2;

          F1 is identity-preserving & F2 is identity-preserving by CAT_6:def 25;

          then

           A5: ( dom (T1 . f)) = (F1 . f) & ( cod (T1 . f)) = (F2 . f) by A4, CAT_6: 26, CAT_6: 27, A3, CAT_6:def 22;

          

           A6: (T1 . f) = (T1 . a) by A3, CAT_6:def 21

          .= (T . a) by A1, FUNCT_1: 49;

          (F1 . f) = (F1 . a) & (F2 . f) = (F2 . a) by A3, CAT_6:def 21;

          hence (T . a) in ( Hom ((F1 . a),(F2 . a))) by A6, A5, CAT_7: 20;

        end;

        let a1,a2 be Object of C1;

        let f be Morphism of a1, a2;

        assume ( Hom (a1,a2)) <> {} ;

        then f in ( Hom (a1,a2)) by CAT_7:def 3;

        then f in { g where g be morphism of C1 : ex f1,f2 be morphism of C1 st a1 = f1 & a2 = f2 & g |> f1 & f2 |> g } by CAT_7:def 1;

        then

        consider g be morphism of C1 such that

         A7: f = g & ex f1,f2 be morphism of C1 st a1 = f1 & a2 = f2 & g |> f1 & f2 |> g;

        consider f1,f2 be morphism of C1 such that

         A8: a1 = f1 & a2 = f2 & g |> f1 & f2 |> g by A7;

        f1 is identity & f2 is identity by A8, CAT_6: 22;

        then

         A9: (T1 . f2) |> (F1 . f) & (F2 . f) |> (T1 . f1) & (T1 . f) = ((T1 . f2) (*) (F1 . f)) & (T1 . f) = ((F2 . f) (*) (T1 . f1)) by A2, Th58, A8, A7;

        

         A10: (T1 . f2) = (T1 . a2) by A8, CAT_6:def 21

        .= (T . a2) by A1, FUNCT_1: 49;

        (T1 . f1) = (T1 . a1) by A8, CAT_6:def 21

        .= (T . a1) by A1, FUNCT_1: 49;

        hence ((T . a2) (*) (F1 . f)) = ((F2 . f) (*) (T . a1)) by A9, A10;

      end;

      assume

       A11: for a be Object of C1 holds (T . a) in ( Hom ((F1 . a),(F2 . a)));

      assume

       A12: for a1,a2 be Object of C1, f be Morphism of a1, a2 st ( Hom (a1,a2)) <> {} holds ((T . a2) (*) (F1 . f)) = ((F2 . f) (*) (T . a1));

      defpred P[ object, object] means for f be morphism of C1 st $1 = f holds $2 = ((T . ( cod f)) (*) (F1 . f));

      

       A13: for x be object st x in the carrier of C1 holds ex y be object st y in the carrier of C2 & P[x, y]

      proof

        let x be object;

        assume x in the carrier of C1;

        then

        reconsider f = x as morphism of C1 by CAT_6:def 1;

        reconsider y = ((T . ( cod f)) (*) (F1 . f)) as object;

        take y;

        y in ( Mor C2);

        hence y in the carrier of C2 by CAT_6:def 1;

        thus P[x, y];

      end;

      consider T1 be Function of the carrier of C1, the carrier of C2 such that

       A14: for x be object st x in the carrier of C1 holds P[x, (T1 . x)] from FUNCT_2:sch 1( A13);

      reconsider T1 as Functor of C1, C2;

      take T1;

      

       A15: ( dom T1) = the carrier of C1 by FUNCT_2:def 1

      .= ( Mor C1) by CAT_6:def 1;

      

       A16: ( dom T) = ( Ob C1) by FUNCT_2:def 1

      .= ( dom (T1 | ( Ob C1))) by A15, RELAT_1: 62;

      for x be object st x in ( dom T) holds (T . x) = ((T1 | ( Ob C1)) . x)

      proof

        let x be object;

        assume

         A17: x in ( dom T);

        then

         A18: x in ( Ob C1);

        x in ( Mor C1) by A18;

        then

         A19: x in the carrier of C1 by CAT_6:def 1;

        reconsider f = x as morphism of C1 by A18;

        

         A20: F1 is identity-preserving by CAT_6:def 25;

        

         A21: f is identity by A17, CAT_6: 22;

        

         A22: (F1 . f) is identity by A17, CAT_6: 22, A20, CAT_6:def 22;

        (T . ( cod f)) in ( Hom ((F1 . ( cod f)),(F2 . ( cod f)))) by A11;

        then ( dom (T . ( cod f))) = (F1 . ( cod f)) by CAT_7: 20;

        then ( dom (T . ( cod f))) = ( cod (F1 . f)) by CAT_6: 32;

        then

         A23: (T . ( cod f)) |> (F1 . f) by CAT_7: 5;

        

         A24: ( cod f) = x by A21, CAT_7: 6;

        (T1 . x) = ((T . ( cod f)) (*) (F1 . f)) by A19, A14

        .= (T . x) by A24, A23, A22, Th4;

        hence (T . x) = ((T1 | ( Ob C1)) . x) by A17, FUNCT_1: 49;

      end;

      hence

       A25: T = (T1 | ( Ob C1)) by A16, FUNCT_1: 2;

      for f,f1,f2 be morphism of C1 st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (T1 . f1) |> (F1 . f) & (F2 . f) |> (T1 . f2) & (T1 . f) = ((T1 . f1) (*) (F1 . f)) & (T1 . f) = ((F2 . f) (*) (T1 . f2))

      proof

        let f,f1,f2 be morphism of C1;

        assume

         A26: f1 is identity & f2 is identity;

        assume

         A27: f1 |> f & f |> f2;

        reconsider o1 = f1 as Object of C1 by A26, CAT_6: 22;

        (T . o1) in ( Hom ((F1 . o1),(F2 . o1))) by A11;

        then ( dom (T . o1)) = (F1 . o1) by CAT_7: 20;

        then ( dom (T . o1)) = (F1 . ( cod f1)) by A26, CAT_7: 6;

        then ( dom (T . o1)) = ( cod (F1 . f1)) by CAT_6: 32;

        then

         A28: (T . o1) |> (F1 . f1) by CAT_7: 5;

        

         A29: (F1 . f1) |> (F1 . f) by A27, Th13;

        

         A30: (F1 . f1) is identity by A26, CAT_6:def 22, CAT_6:def 25;

        

         A31: (T . o1) = (T1 . o1) by A25, FUNCT_1: 49

        .= (T1 . f1) by CAT_6:def 21;

        hence (T1 . f1) |> (F1 . f) by A28, A29, A30, CAT_7: 3;

        reconsider o2 = f2 as Object of C1 by A26, CAT_6: 22;

        (T . o2) in ( Hom ((F1 . o2),(F2 . o2))) by A11;

        then ( cod (T . o2)) = (F2 . o2) by CAT_7: 20;

        then ( cod (T . o2)) = (F2 . ( dom f2)) by A26, CAT_7: 6;

        then ( cod (T . o2)) = ( dom (F2 . f2)) by CAT_6: 32;

        then

         A32: (F2 . f2) |> (T . o2) by CAT_7: 5;

        

         A33: (F2 . f) |> (F2 . f2) by A27, Th13;

        

         A34: (F2 . f2) is identity by A26, CAT_6:def 22, CAT_6:def 25;

        

         A35: (T . o2) = (T1 . o2) by A25, FUNCT_1: 49

        .= (T1 . f2) by CAT_6:def 21;

        hence (F2 . f) |> (T1 . f2) by A32, A33, A34, CAT_7: 3;

        reconsider x = f as object;

        f in ( Mor C1);

        then x in the carrier of C1 by CAT_6:def 1;

        

        then

         A36: (T1 . x) = ((T . ( cod f)) (*) (F1 . f)) by A14

        .= ((T1 . f1) (*) (F1 . f)) by A31, A26, A27, CAT_6:def 19;

        hence (T1 . f) = ((T1 . f1) (*) (F1 . f)) by CAT_6:def 21;

        ( dom f) = o2 & ( cod f) = o1 by A26, A27, CAT_6:def 18, CAT_6:def 19;

        then

         A37: f in ( Hom (o2,o1)) by CAT_7: 20;

        then

        reconsider g = f as Morphism of o2, o1 by CAT_7:def 3;

        ((T . o1) (*) (F1 . g)) = ((F2 . g) (*) (T . o2)) by A37, A12;

        hence (T1 . f) = ((F2 . f) (*) (T1 . f2)) by A36, A31, A35, CAT_6:def 21;

      end;

      hence T1 is_natural_transformation_of (F1,F2) by Th58;

    end;

    theorem :: CAT_8:60

    for C,D be Category, F1,F2 be Functor of C, D, G1,G2,T be Functor of ( alter C), ( alter D) st F1 = G1 & F2 = G2 & T is_natural_transformation_of (G1,G2) holds (( IdMap C) * T) is natural_transformation of F1, F2

    proof

      let C,D be Category;

      let F1,F2 be Functor of C, D;

      let G1,G2,T be Functor of ( alter C), ( alter D);

      assume

       A1: F1 = G1 & F2 = G2;

      assume

       A2: T is_natural_transformation_of (G1,G2);

      

       A3: ( alter C) = CategoryStr (# the carrier' of C, the Comp of C #) by CAT_6:def 34;

      

       A4: ( alter D) = CategoryStr (# the carrier' of D, the Comp of D #) by CAT_6:def 34;

      

       A5: for a be Object of C holds (T . ( id a)) in ( Hom ((F1 . a),(F2 . a)))

      proof

        let a be Object of C;

        reconsider f = ( id a) as morphism of ( alter C) by A3, CAT_6:def 1;

        

         A6: f is identity by CAT_6: 41;

        f |> f by CAT_6: 24, CAT_6: 41;

        then

         A7: (T . f) |> (G1 . f) & (G2 . f) |> (T . f) & (T . (f (*) f)) = ((T . f) (*) (G1 . f)) & (T . (f (*) f)) = ((G2 . f) (*) (T . f)) by A2;

        reconsider g = (T . f) as Morphism of D by A4, CAT_6:def 1;

        G1 is covariant & G2 is covariant by A1, CAT_6: 42;

        then G1 is identity-preserving & G2 is identity-preserving by CAT_6:def 25;

        then ( dom (T . f)) = (G1 . f) & ( cod (T . f)) = (G2 . f) by A7, CAT_6: 26, CAT_6: 27, A6, CAT_6:def 22;

        then ( dom (T . f)) = (F1 . f) & ( cod (T . f)) = (F2 . f) by A1, CAT_6:def 21;

        then (F1 . f) = ( id ( dom g)) & (F2 . f) = ( id ( cod g)) by Th14;

        then

         A8: ( dom g) = (F1 . a) & ( cod g) = (F2 . a) by CAT_1: 70;

        g in ( Hom (( dom g),( cod g))) by CAT_1: 1;

        hence (T . ( id a)) in ( Hom ((F1 . a),(F2 . a))) by A8, CAT_6:def 21;

      end;

      

       A9: for a be Object of C holds ( Hom ((F1 . a),(F2 . a))) <> {} by A5;

      then

       A10: F1 is_transformable_to F2 by NATTRA_1:def 2;

      reconsider T1 = T as Function of the carrier' of C, the carrier' of D by A3, A4;

      reconsider t1 = (( IdMap C) * T1) as Function of the carrier of C, the carrier' of D;

      

       A11: ex t be transformation of F1, F2 st t = (( IdMap C) * T1) & for a,b be Object of C st ( Hom (a,b)) <> {} holds (for f be Morphism of a, b holds ((t . b) * (F1 /. f)) = ((F2 /. f) * (t . a)))

      proof

        for a be Object of C holds (t1 . a) is Morphism of (F1 . a), (F2 . a)

        proof

          let a be Object of C;

          a in the carrier of C;

          then

           A12: a in ( dom ( IdMap C)) by FUNCT_2:def 1;

          (t1 . a) = (T1 . (( IdMap C) . a)) by A12, FUNCT_1: 13

          .= (T . ( id a)) by ISOCAT_1:def 12;

          then (t1 . a) in ( Hom ((F1 . a),(F2 . a))) by A5;

          hence (t1 . a) is Morphism of (F1 . a), (F2 . a) by CAT_1:def 5;

        end;

        then

        reconsider t = t1 as transformation of F1, F2 by A10, NATTRA_1:def 3;

        take t;

        thus t = (( IdMap C) * T1);

        let a,b be Object of C;

        assume

         A13: ( Hom (a,b)) <> {} ;

        let f be Morphism of a, b;

        a in the carrier of C;

        then

         A14: a in ( dom ( IdMap C)) by FUNCT_2:def 1;

        

         A15: (t . a) = (t1 . a) by A9, NATTRA_1:def 5, NATTRA_1:def 2

        .= (T1 . (( IdMap C) . a)) by A14, FUNCT_1: 13

        .= (T . ( id a)) by ISOCAT_1:def 12;

        b in the carrier of C;

        then

         A16: b in ( dom ( IdMap C)) by FUNCT_2:def 1;

        

         A17: (t . b) = (t1 . b) by A9, NATTRA_1:def 5, NATTRA_1:def 2

        .= (T1 . (( IdMap C) . b)) by A16, FUNCT_1: 13

        .= (T . ( id b)) by ISOCAT_1:def 12;

        reconsider g2 = ( id a) as morphism of ( alter C) by A3, CAT_6:def 1;

        reconsider g1 = ( id b) as morphism of ( alter C) by A3, CAT_6:def 1;

        reconsider g = f as morphism of ( alter C) by A3, CAT_6:def 1;

        

         A18: f in ( Hom (a,b)) by A13, CAT_1:def 5;

        ( cod f) = ( dom ( id b)) by A18, CAT_1: 1;

        then

         A19: ( KuratowskiPair (g1,g)) in ( dom the composition of ( alter C)) by A3, CAT_1:def 6;

        then

         A20: g1 |> g by CAT_6:def 2;

        ( dom f) = ( cod ( id a)) by A18, CAT_1: 1;

        then

         A21: ( KuratowskiPair (g,g2)) in ( dom the composition of ( alter C)) by A3, CAT_1:def 6;

        then

         A22: g |> g2 by CAT_6:def 2;

        

         A23: for g be morphism of ( alter C) st g1 |> g holds (g1 (*) g) = g

        proof

          let g be morphism of ( alter C);

          assume

           A24: g1 |> g;

          reconsider f = g as Morphism of C by A3, CAT_6:def 1;

          

           A25: [( id b), f] in ( dom the Comp of C) by A3, A24, CAT_6:def 2;

          then ( dom ( id b)) = ( cod f) by CAT_1: 15;

          then (( id b) (*) f) = f by CAT_1: 21;

          hence (g1 (*) g) = g by A25, CAT_6: 40;

        end;

        

         A26: for g be morphism of ( alter C) st g |> g2 holds (g (*) g2) = g

        proof

          let g be morphism of ( alter C);

          assume

           A27: g |> g2;

          reconsider f = g as Morphism of C by A3, CAT_6:def 1;

          

           A28: [f, ( id a)] in ( dom the Comp of C) by A3, A27, CAT_6:def 2;

          then ( cod ( id a)) = ( dom f) by CAT_1: 15;

          then (f (*) ( id a)) = f by CAT_1: 22;

          hence (g (*) g2) = g by A28, CAT_6: 40;

        end;

        

         A29: (T . g1) |> (G1 . g) & (G2 . g) |> (T . g2) & (T . (g1 (*) g)) = ((T . g1) (*) (G1 . g)) & (T . (g (*) g2)) = ((G2 . g) (*) (T . g2)) by A20, A22, A2;

        

         A30: (g1 (*) g) = g & (g (*) g2) = g by A19, A21, A23, A26, CAT_6:def 2;

        

         A31: ( Hom ((F1 . b),(F2 . b))) <> {} by A5;

        

         A32: ( Hom ((F1 . a),(F1 . b))) <> {} by A13, CAT_1: 82;

        

         A33: ( Hom ((F1 . a),(F2 . a))) <> {} by A5;

        

         A34: ( Hom ((F2 . a),(F2 . b))) <> {} by A13, CAT_1: 82;

        

         A35: (t . b) = (T . g1) by A17, CAT_6:def 21;

        

         A36: (F1 . f) = (G1 . g) by A1, CAT_6:def 21;

        

         A37: (t . a) = (T . g2) by A15, CAT_6:def 21;

        

         A38: (F2 . f) = (G2 . g) by A1, CAT_6:def 21;

        

         A39: [(t . b), (F1 . f)] in ( dom the Comp of D) by A35, A36, A4, A29, CAT_6:def 2;

        

         A40: [(F2 . f), (t . a)] in ( dom the Comp of D) by A37, A38, A4, A29, CAT_6:def 2;

        

        thus ((t . b) * (F1 /. f)) = ((t . b) (*) (F1 /. f)) by A31, A32, CAT_1:def 13

        .= ((t . b) (*) (F1 . f)) by A13, CAT_3:def 10

        .= (the Comp of D . ((t . b),(F1 . f))) by A39, CAT_1:def 1

        .= (the composition of ( alter D) . ((T . g1),(G1 . g))) by A36, A4, A17, CAT_6:def 21

        .= ((T . g1) (*) (G1 . g)) by A29, CAT_6:def 3

        .= (the composition of ( alter D) . ((G2 . g),(T . g2))) by A30, A29, CAT_6:def 3

        .= (the Comp of D . ((F2 . f),(t . a))) by A38, A4, A15, CAT_6:def 21

        .= ((F2 . f) (*) (t . a)) by A40, CAT_1:def 1

        .= ((F2 /. f) (*) (t . a)) by A13, CAT_3:def 10

        .= ((F2 /. f) * (t . a)) by A33, A34, CAT_1:def 13;

      end;

      then

       A41: F1 is_naturally_transformable_to F2 by A9, NATTRA_1:def 7, NATTRA_1:def 2;

      consider t be transformation of F1, F2 such that

       A42: t = (( IdMap C) * T1) & for a,b be Object of C st ( Hom (a,b)) <> {} holds (for f be Morphism of a, b holds ((t . b) * (F1 /. f)) = ((F2 /. f) * (t . a))) by A11;

      thus thesis by A41, A42, NATTRA_1:def 8;

    end;

    definition

      let C,D be category;

      let F1,F2 be Functor of C, D;

      :: CAT_8:def25

      pred F1 is_naturally_transformable_to F2 means ex T be Functor of C, D st T is_natural_transformation_of (F1,F2);

    end

    definition

      let C,D be category;

      let F1,F2 be Functor of C, D;

      assume

       A1: F1 is_naturally_transformable_to F2;

      :: CAT_8:def26

      mode natural_transformation of F1,F2 -> Functor of C, D means

      : Def26: it is_natural_transformation_of (F1,F2);

      correctness by A1;

    end

    theorem :: CAT_8:61

    

     Th61: for C,D be category, F be Functor of C, D st F is covariant holds F is_natural_transformation_of (F,F)

    proof

      let C,D be category;

      let F be Functor of C, D;

      assume

       A1: F is covariant;

      then

       A2: F is multiplicative by CAT_6:def 25;

      for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (F . f1) |> (F . f) & (F . f) |> (F . f2) & (F . f) = ((F . f1) (*) (F . f)) & (F . f) = ((F . f) (*) (F . f2))

      proof

        let f,f1,f2 be morphism of C;

        assume

         A3: f1 is identity;

        assume

         A4: f2 is identity;

        assume

         A5: f1 |> f;

        assume

         A6: f |> f2;

        thus (F . f1) |> (F . f) by A2, A5, CAT_6:def 23;

        thus (F . f) |> (F . f2) by A2, A6, CAT_6:def 23;

        

        thus (F . f) = (F . (f1 (*) f)) by A3, A5, CAT_6:def 4, CAT_6:def 14

        .= ((F . f1) (*) (F . f)) by A2, A5, CAT_6:def 23;

        

        thus (F . f) = (F . (f (*) f2)) by A4, A6, CAT_6:def 5, CAT_6:def 14

        .= ((F . f) (*) (F . f2)) by A2, A6, CAT_6:def 23;

      end;

      hence F is_natural_transformation_of (F,F) by A1, Th58;

    end;

    

     Lm3: for C,D be category, F,F1,F2 be Functor of C, D, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 st F1 is_naturally_transformable_to F & F is_naturally_transformable_to F2 & F is covariant & F1 is covariant & F2 is covariant holds ex T be natural_transformation of F1, F2 st T is_natural_transformation_of (F1,F2) & for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (T . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1))

    proof

      let C,D be category;

      let F,F1,F2 be Functor of C, D;

      let T1 be natural_transformation of F1, F;

      let T2 be natural_transformation of F, F2;

      assume

       A1: F1 is_naturally_transformable_to F & F is_naturally_transformable_to F2;

      assume

       A2: F is covariant & F1 is covariant & F2 is covariant;

      per cases ;

        suppose

         A3: C is empty;

        set T = the natural_transformation of F1, F2;

        take T;

        thus thesis by A3, CAT_6: 1;

      end;

        suppose

         A4: C is non empty;

        then

         A5: D is non empty by A2, CAT_6: 31;

        defpred P[ object, object] means ex f be morphism of C st $1 = f & (for f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds $2 = (((T2 . f2) (*) (F . f)) (*) (T1 . f1)));

        

         A6: T1 is_natural_transformation_of (F1,F) by A1, Def26;

        

         A7: T2 is_natural_transformation_of (F,F2) by A1, Def26;

        

         A8: for x be object st x in the carrier of C holds ex y be object st y in the carrier of D & P[x, y]

        proof

          let x be object;

          assume x in the carrier of C;

          then

          reconsider f = x as morphism of C by CAT_6:def 1;

          ( Ob C) is non empty by A4;

          then ( dom f) in ( Ob C) & ( cod f) in ( Ob C);

          then

          reconsider f1 = ( dom f), f2 = ( cod f) as morphism of C;

          reconsider y = (((T2 . f2) (*) (F . f)) (*) (T1 . f1)) as object;

          take y;

          ( Mor D) is non empty by A5;

          then y in ( Mor D);

          hence y in the carrier of D by CAT_6:def 1;

          thus P[x, y]

          proof

            take f;

            thus x = f;

            let f1,f2 be morphism of C;

            assume f1 is identity & f2 is identity & f |> f1 & f2 |> f;

            then f1 = ( dom f) & f2 = ( cod f) by CAT_6: 26, CAT_6: 27;

            hence y = (((T2 . f2) (*) (F . f)) (*) (T1 . f1));

          end;

        end;

        consider T be Function of the carrier of C, the carrier of D such that

         A9: for x be object st x in the carrier of C holds P[x, (T . x)] from FUNCT_2:sch 1( A8);

        reconsider T as Functor of C, D;

        

         A10: for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (T . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1))

        proof

          let f,f1,f2 be morphism of C;

          assume

           A11: f1 is identity & f2 is identity & f |> f1 & f2 |> f;

          ( Mor C) is non empty by A4;

          then f in ( Mor C);

          then

           A12: f in the carrier of C by CAT_6:def 1;

          reconsider x = f as object;

          consider ff be morphism of C such that

           A13: x = ff & (for f1,f2 be morphism of C st f1 is identity & f2 is identity & ff |> f1 & f2 |> ff holds (T . x) = (((T2 . f2) (*) (F . ff)) (*) (T1 . f1))) by A12, A9;

          (T . x) = (((T2 . f2) (*) (F . ff)) (*) (T1 . f1)) by A11, A13;

          hence (T . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1)) by A4, A13, CAT_6:def 21;

        end;

        

         A14: for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (T . f1) |> (F1 . f) & (F2 . f) |> (T . f2) & (T . f) = ((T . f1) (*) (F1 . f)) & (T . f) = ((F2 . f) (*) (T . f2))

        proof

          let f,f1,f2 be morphism of C;

          assume

           A15: f1 is identity & f2 is identity & f1 |> f & f |> f2;

          

           A16: (T1 . f1) |> (F1 . f) & (F . f) |> (T1 . f2) & (T1 . f) = ((T1 . f1) (*) (F1 . f)) & (T1 . f) = ((F . f) (*) (T1 . f2)) by A2, A15, A6, Th58;

          

           A17: (T2 . f1) |> (F . f) & (F2 . f) |> (T2 . f2) & (T2 . f) = ((T2 . f1) (*) (F . f)) & (T2 . f) = ((F2 . f) (*) (T2 . f2)) by A2, A15, A7, Th58;

          

           A18: f1 |> f1 by A4, A15, CAT_6: 24;

          then

           A19: (T2 . f1) |> (F . f1) by A7;

          (F . f1) |> (T1 . f1) by A18, A6;

          then ( dom (F . f1)) = ( cod (T1 . f1)) by A5, CAT_7: 5;

          then ( dom ((T2 . f1) (*) (F . f1))) = ( cod (T1 . f1)) by A19, CAT_7: 4;

          then

           A20: ((T2 . f1) (*) (F . f1)) |> (T1 . f1) by A5, CAT_7: 5;

          

           A21: f1 |> f1 by A4, A15, CAT_6: 24;

          then (T . f1) = (((T2 . f1) (*) (F . f1)) (*) (T1 . f1)) by A15, A10;

          then

           A22: ( dom (T . f1)) = ( dom (T1 . f1)) by A20, CAT_7: 4;

          ( dom (T1 . f1)) = ( cod (F1 . f)) by A16, A5, CAT_7: 5;

          hence (T . f1) |> (F1 . f) by A22, A5, CAT_7: 5;

          

           A23: f2 |> f2 by A4, A15, CAT_6: 24;

          then

           A24: (T2 . f2) |> (F . f2) & (F2 . f2) |> (T2 . f2) & (T2 . f2) = ((T2 . f2) (*) (F . f2)) & (T2 . f2) = ((F2 . f2) (*) (T2 . f2)) by A2, A7, A15, Th58;

          

           A25: (T1 . f2) |> (F1 . f2) & (F . f2) |> (T1 . f2) & (T1 . f2) = ((T1 . f2) (*) (F1 . f2)) & (T1 . f2) = ((F . f2) (*) (T1 . f2)) by A2, A23, A6, A15, Th58;

          

           A26: D is left_composable & D is right_composable by CAT_6:def 11;

          

           A27: (T2 . f2) |> ((F . f2) (*) (T1 . f2)) by A24, A25, A26, CAT_6:def 9;

          

           A28: f2 |> f2 by A4, A15, CAT_6: 24;

          then (T . f2) = (((T2 . f2) (*) (F . f2)) (*) (T1 . f2)) by A15, A10;

          then

           A29: ( cod (T . f2)) = ( cod (T2 . f2)) by A24, A25, A27, CAT_7: 4;

          (F2 . f) |> (T2 . f2) by A15, A7;

          then ( cod (T2 . f2)) = ( dom (F2 . f)) by A5, CAT_7: 5;

          hence (F2 . f) |> (T . f2) by A29, A5, CAT_7: 5;

          

           A30: F is identity-preserving & F is multiplicative by A2, CAT_6:def 25;

          

           A31: (F . f) = (F . (f (*) f2)) by A15, CAT_6:def 14, CAT_6:def 5

          .= ((F . f) (*) (F . f2)) by A30, A15, CAT_6:def 23;

          

           A32: (T2 . f1) |> (F . f1) by A18, A7;

          

           A33: (F . f1) |> (T1 . f1) by A18, A6;

          

           A34: (F . f1) |> (F . f) by A30, A15, CAT_6:def 23;

          

           A35: (F . f) |> (F . f2) by A30, A15, CAT_6:def 23;

          

           A36: (F2 . f) |> (T2 . f2) by A15, A7;

          

           A37: (T2 . f2) |> (F . f2) by A23, A7;

          

          thus (T . f) = (((T2 . f1) (*) ((F . f) (*) (F . f2))) (*) (T1 . f2)) by A10, A15, A31

          .= ((((T2 . f1) (*) (F . f1)) (*) (F . f)) (*) (T1 . f2)) by A2, A31, A15, A18, A7, Th58

          .= (((T2 . f1) (*) (F . f1)) (*) ((F . f) (*) (T1 . f2))) by A32, A34, A16, Th2

          .= ((((T2 . f1) (*) (F . f1)) (*) (T1 . f1)) (*) (F1 . f)) by A32, A33, A16, Th2

          .= ((T . f1) (*) (F1 . f)) by A21, A15, A10;

          

          thus (T . f) = (((T2 . f1) (*) ((F . f) (*) (F . f2))) (*) (T1 . f2)) by A10, A15, A31

          .= ((((F2 . f) (*) (T2 . f2)) (*) (F . f2)) (*) (T1 . f2)) by A17, A35, A25, Th2

          .= ((F2 . f) (*) (((T2 . f2) (*) (F . f2)) (*) (T1 . f2))) by A25, A36, A37, Th2

          .= ((F2 . f) (*) (T . f2)) by A28, A15, A10;

        end;

        then

         A38: T is_natural_transformation_of (F1,F2) by A2, Th58;

        then F1 is_naturally_transformable_to F2;

        then

        reconsider T as natural_transformation of F1, F2 by A38, Def26;

        take T;

        thus thesis by A2, A14, A10, Th58;

      end;

    end;

    definition

      let C,D be category;

      let F,F1,F2 be Functor of C, D;

      assume that

       A1: F1 is_naturally_transformable_to F & F is_naturally_transformable_to F2 and

       A2: F is covariant & F1 is covariant & F2 is covariant;

      let T1 be natural_transformation of F1, F;

      let T2 be natural_transformation of F, F2;

      :: CAT_8:def27

      func T2 `*` T1 -> natural_transformation of F1, F2 means

      : Def27: for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (it . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1));

      existence

      proof

        consider T be natural_transformation of F1, F2 such that

         A3: T is_natural_transformation_of (F1,F2) & for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (T . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1)) by A1, A2, Lm3;

        take T;

        thus thesis by A3;

      end;

      uniqueness

      proof

        let IT1,IT2 be natural_transformation of F1, F2;

        assume

         A4: for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (IT1 . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1));

        assume

         A5: for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (IT2 . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1));

        for x be object st x in the carrier of C holds (IT1 . x) = (IT2 . x)

        proof

          let x be object;

          assume

           A6: x in the carrier of C;

          reconsider f = x as morphism of C by A6, CAT_6:def 1;

          consider f2 be morphism of C such that

           A7: f2 |> f & f2 is left_identity by A6, CAT_6:def 6, CAT_6:def 12;

          consider f1 be morphism of C such that

           A8: f |> f1 & f1 is right_identity by A6, CAT_6:def 7, CAT_6:def 12;

          f1 is left_identity & f2 is right_identity by A7, A8, CAT_6: 9;

          then

           A9: f1 is identity & f2 is identity by A7, A8, CAT_6:def 14;

          

           A10: C is non empty by A6;

          

          hence (IT1 . x) = (IT1 . f) by CAT_6:def 21

          .= (((T2 . f2) (*) (F . f)) (*) (T1 . f1)) by A4, A7, A8, A9

          .= (IT2 . f) by A5, A7, A8, A9

          .= (IT2 . x) by A10, CAT_6:def 21;

        end;

        hence IT1 = IT2 by FUNCT_2: 12;

      end;

    end

    theorem :: CAT_8:62

    

     Th62: for C,D be category, F,F1,F2 be Functor of C, D st F1 is_naturally_transformable_to F & F is_naturally_transformable_to F2 & F is covariant & F1 is covariant & F2 is covariant holds F1 is_naturally_transformable_to F2

    proof

      let C,D be category;

      let F,F1,F2 be Functor of C, D;

      set T1 = the natural_transformation of F1, F;

      set T2 = the natural_transformation of F, F2;

      assume F1 is_naturally_transformable_to F & F is_naturally_transformable_to F2 & F is covariant & F1 is covariant & F2 is covariant;

      then ex T be natural_transformation of F1, F2 st T is_natural_transformation_of (F1,F2) & for f,f1,f2 be morphism of C st f1 is identity & f2 is identity & f |> f1 & f2 |> f holds (T . f) = (((T2 . f2) (*) (F . f)) (*) (T1 . f1)) by Lm3;

      hence F1 is_naturally_transformable_to F2;

    end;

    

     Lm4: for C1,C2 be category, X be set st C1 is non empty & C2 is empty & X = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } holds X = {} & { [ [x2, x1], x3] where x1,x2,x3 be Element of X : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } = {}

    proof

      let C1,C2 be category;

      let X be set;

      assume

       A1: C1 is non empty & C2 is empty;

      assume

       A2: X = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 };

      set Y = { [ [x2, x1], x3] where x1,x2,x3 be Element of X : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] };

      thus

       A3: X = {}

      proof

        assume X <> {} ;

        then

        consider x be object such that

         A4: x in X by XBOOLE_0:def 1;

        consider F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 such that

         A5: x = [ [F1, F2], T] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 by A4, A2;

        thus contradiction by A5, A1, CAT_6: 31;

      end;

      thus Y = {}

      proof

        assume Y <> {} ;

        then

        consider x be object such that

         A6: x in Y by XBOOLE_0:def 1;

        consider x1,x2,x3 be Element of X such that

         A7: x = [ [x2, x1], x3] & ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] by A6;

        thus contradiction by A7, A3;

      end;

    end;

    

     Lm5: for C1,C2 be category, X1,X2 be set st C1 is empty & X1 = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } & X2 = [ [ {} , {} ], {} ] holds X1 = {X2} & { [ [x2, x1], x3] where x1,x2,x3 be Element of X1 : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } = { [ [X2, X2], X2]}

    proof

      let C1,C2 be category;

      let X1,X2 be set;

      assume

       A1: C1 is empty;

      assume

       A2: X1 = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 };

      assume

       A3: X2 = [ [ {} , {} ], {} ];

      set Y = { [ [x2, x1], x3] where x1,x2,x3 be Element of X1 : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] };

      

       A4: for x be object holds x in X1 iff x = X2

      proof

        let x be object;

        hereby

          assume x in X1;

          then

          consider F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 such that

           A5: x = [ [F1, F2], T] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 by A2;

          F1 = {} & F2 = {} & T = {} by A1;

          hence x = X2 by A3, A5;

        end;

        assume

         A6: x = X2;

        reconsider CA = C1 as empty category by A1;

        set F = the covariant Functor of CA, C2;

        reconsider F as Functor of C1, C2;

        

         A7: F is_natural_transformation_of (F,F) by Th61;

        

         A8: F is_naturally_transformable_to F by Th61;

        then

        reconsider T = F as natural_transformation of F, F by A7, Def26;

         [ [F, F], T] in X1 by A8, A2;

        hence x in X1 by A3, A6;

      end;

      hence X1 = {X2} by TARSKI:def 1;

      for x be object holds x in Y iff x = [ [X2, X2], X2]

      proof

        let x be object;

        hereby

          assume x in Y;

          then

          consider x1,x2,x3 be Element of X1 such that

           A9: x = [ [x2, x1], x3] & ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)];

          consider F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 such that

           A10: x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] by A9;

          F1 = {} & F2 = {} & F3 = {} & T1 = {} & T2 = {} & (T2 `*` T1) = {} by A1;

          hence x = [ [X2, X2], X2] by A9, A3, A10;

        end;

        assume

         A11: x = [ [X2, X2], X2];

        reconsider CA = C1 as empty category by A1;

        set F = the covariant Functor of CA, C2;

        reconsider F as Functor of C1, C2;

        

         A12: F is_natural_transformation_of (F,F) by Th61;

        F is_naturally_transformable_to F by Th61;

        then

        reconsider T = F as natural_transformation of F, F by A12, Def26;

        reconsider F1 = F, F2 = F, F3 = F as Functor of C1, C2;

        reconsider T1 = T as natural_transformation of F1, F2;

        reconsider T2 = T as natural_transformation of F2, F3;

        

         A13: (T2 `*` T1) = {} ;

        reconsider x1 = [ [F1, F2], T1] as Element of X1 by A3, A4;

        reconsider x2 = [ [F2, F3], T2] as Element of X1 by A3, A4;

        reconsider x3 = [ [F1, F3], (T2 `*` T1)] as Element of X1 by A3, A13, A4;

        ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)];

        hence x in Y by A11, A13, A3;

      end;

      hence Y = { [ [X2, X2], X2]} by TARSKI:def 1;

    end;

    definition

      let C1,C2 be category;

      :: CAT_8:def28

      func Functors (C1,C2) -> strict category means

      : Def28: the carrier of it = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } & the composition of it = { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of it : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] };

      existence

      proof

        per cases ;

          suppose

           A1: C1 is non empty & C2 is empty;

          set car = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 };

          reconsider car as set;

          set comp = { [ [x2, x1], x3] where x1,x2,x3 be Element of car : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] };

          for x be object st x in comp holds x in [: [:car, car:], car:] by A1, Lm4;

          then

          reconsider comp as Relation of [:car, car:], car by TARSKI:def 3;

          reconsider comp as PartFunc of [:car, car:], car by A1, Lm4;

          reconsider C = CategoryStr (# car, comp #) as CategoryStr;

          C is empty by A1, Lm4;

          then

          reconsider C as strict category by CAT_6:def 11, CAT_6:def 12;

          take C;

          thus thesis;

        end;

          suppose

           A2: (C1 is non empty & C2 is non empty) or C1 is empty;

          set car = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 };

          car is non empty

          proof

            per cases by A2;

              suppose C1 is non empty & C2 is non empty;

              then

              reconsider CA = C1, CB = C2 as non empty category;

              set F = the covariant Functor of CA, CB;

              

               A3: F is_natural_transformation_of (F,F) by Th61;

              F is_naturally_transformable_to F by Th61;

              then

              reconsider T = F as natural_transformation of F, F by A3, Def26;

              F is_naturally_transformable_to F by Th61;

              then [ [F, F], T] in car;

              hence thesis;

            end;

              suppose C1 is empty;

              then

              reconsider CA = C1 as empty category;

              set F = the covariant Functor of CA, C2;

              F is_naturally_transformable_to F by Th61;

              then

              reconsider T = F as natural_transformation of F, F by Def26;

              F is_naturally_transformable_to F by Th61;

              then [ [F, F], T] in car;

              hence thesis;

            end;

          end;

          then

          reconsider car as non empty set;

          set comp = { [ [x2, x1], x3] where x1,x2,x3 be Element of car : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] };

          for x be object st x in comp holds x in [: [:car, car:], car:]

          proof

            let x be object;

            assume x in comp;

            then

            consider x1,x2,x3 be Element of car such that

             A4: x = [ [x2, x1], x3] & ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)];

             [x2, x1] in [:car, car:] by ZFMISC_1:def 2;

            hence thesis by A4, ZFMISC_1:def 2;

          end;

          then

          reconsider comp as Relation of [:car, car:], car by TARSKI:def 3;

          for x,y1,y2 be object st [x, y1] in comp & [x, y2] in comp holds y1 = y2

          proof

            let x,y1,y2 be object;

            assume [x, y1] in comp;

            then

            consider x11,x12,x13 be Element of car such that

             A5: [x, y1] = [ [x12, x11], x13] & ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x11 = [ [F1, F2], T1] & x12 = [ [F2, F3], T2] & x13 = [ [F1, F3], (T2 `*` T1)];

            assume [x, y2] in comp;

            then

            consider x21,x22,x23 be Element of car such that

             A6: [x, y2] = [ [x22, x21], x23] & ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x21 = [ [F1, F2], T1] & x22 = [ [F2, F3], T2] & x23 = [ [F1, F3], (T2 `*` T1)];

            

             A7: x = [x12, x11] & y1 = x13 by A5, XTUPLE_0: 1;

            

             A8: x = [x22, x21] & y2 = x23 by A6, XTUPLE_0: 1;

            

             A9: x11 = x21 & x12 = x22 by A7, A8, XTUPLE_0: 1;

            consider F11,F12,F13 be Functor of C1, C2, T11 be natural_transformation of F11, F12, T12 be natural_transformation of F12, F13 such that

             A10: x11 = [ [F11, F12], T11] & x12 = [ [F12, F13], T12] & x13 = [ [F11, F13], (T12 `*` T11)] by A5;

            consider F21,F22,F23 be Functor of C1, C2, T21 be natural_transformation of F21, F22, T22 be natural_transformation of F22, F23 such that

             A11: x21 = [ [F21, F22], T21] & x22 = [ [F22, F23], T22] & x23 = [ [F21, F23], (T22 `*` T21)] by A6;

            

             A12: [F11, F12] = [F21, F22] & T21 = T11 by A10, A11, A9, XTUPLE_0: 1;

            then

             A13: F11 = F21 & F12 = F22 by XTUPLE_0: 1;

            

             A14: [F12, F13] = [F22, F23] & T22 = T12 by A10, A11, A9, XTUPLE_0: 1;

            then F12 = F22 & F13 = F23 by XTUPLE_0: 1;

            hence thesis by A5, XTUPLE_0: 1, A6, A10, A11, A12, A13, A14;

          end;

          then

          reconsider comp as PartFunc of [:car, car:], car by FUNCT_1:def 1;

          reconsider C = CategoryStr (# car, comp #) as non empty CategoryStr;

          per cases by A2;

            suppose C1 is non empty & C2 is non empty;

            then

            reconsider CA = C1, CB = C2 as non empty category;

            

             A15: for g1,g2 be morphism of C st g1 |> g2 holds ex F1,F2,F3 be Functor of CA, CB, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st g1 = [ [F2, F3], T2] & g2 = [ [F1, F2], T1] & F1 is covariant & F2 is covariant & F3 is covariant & F1 is_naturally_transformable_to F2 & F2 is_naturally_transformable_to F3 & (g1 (*) g2) = [ [F1, F3], (T2 `*` T1)]

            proof

              let g1,g2 be morphism of C;

              assume

               A16: g1 |> g2;

              g1 in ( Mor C);

              then g1 in the carrier of C by CAT_6:def 1;

              then

              consider F11,F12 be Functor of CA, CB, T11 be natural_transformation of F11, F12 such that

               A17: g1 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F11 is_naturally_transformable_to F12;

              g2 in ( Mor C);

              then g2 in the carrier of C by CAT_6:def 1;

              then

              consider F21,F22 be Functor of CA, CB, T22 be natural_transformation of F21, F22 such that

               A18: g2 = [ [F21, F22], T22] & F21 is covariant & F22 is covariant & F21 is_naturally_transformable_to F22;

               [g1, g2] in ( dom the composition of C) by A16, CAT_6:def 2;

              then

              consider y be object such that

               A19: [ [g1, g2], y] in comp by XTUPLE_0:def 12;

              consider x1,x2,x3 be Element of car such that

               A20: [ [g1, g2], y] = [ [x2, x1], x3] & ex F1,F2,F3 be Functor of CA, CB, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] by A19;

              consider F1,F2,F3 be Functor of CA, CB, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 such that

               A21: x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] by A20;

              

               A22: [g1, g2] = [x2, x1] & y = x3 by A20, XTUPLE_0: 1;

              then

               A23: g1 = x2 & g2 = x1 by XTUPLE_0: 1;

              take F1, F2, F3, T1, T2;

              thus g1 = [ [F2, F3], T2] & g2 = [ [F1, F2], T1] by A21, A22, XTUPLE_0: 1;

              

               A24: [F11, F12] = [F2, F3] & [F21, F22] = [F1, F2] by A17, A18, A21, A23, XTUPLE_0: 1;

              then

               A25: F11 = F2 & F12 = F3 & F21 = F1 & F22 = F2 by XTUPLE_0: 1;

              thus F1 is covariant & F2 is covariant & F3 is covariant by A17, A18, A24, XTUPLE_0: 1;

              thus F1 is_naturally_transformable_to F2 by A18, A25;

              thus F2 is_naturally_transformable_to F3 by A17, A25;

              

              thus (g1 (*) g2) = (the composition of C . (g1,g2)) by A16, CAT_6:def 3

              .= (the composition of C . [g1, g2]) by BINOP_1:def 1

              .= y by A19, FUNCT_1: 1

              .= [ [F1, F3], (T2 `*` T1)] by A21, A20, XTUPLE_0: 1;

            end;

            

             A26: for g1,g2 be morphism of C st ex F1,F2,F3,F4 be Functor of CA, CB, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F3, F4 st g1 = [ [F1, F2], T1] & g2 = [ [F3, F4], T2] & F2 = F3 & F1 is covariant & F2 is covariant & F4 is covariant & F1 is_naturally_transformable_to F2 & F3 is_naturally_transformable_to F4 holds g2 |> g1

            proof

              let g1,g2 be morphism of C;

              given F1,F2,F3,F4 be Functor of CA, CB, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F3, F4 such that

               A27: g1 = [ [F1, F2], T1] & g2 = [ [F3, F4], T2] & F2 = F3 & F1 is covariant & F2 is covariant & F4 is covariant & F1 is_naturally_transformable_to F2 & F3 is_naturally_transformable_to F4;

              

               A28: g1 in car & g2 in car by A27;

              reconsider T2 as natural_transformation of F2, F4 by A27;

              set g3 = [ [F1, F4], (T2 `*` T1)];

              F1 is_naturally_transformable_to F4 by A27, Th62;

              then

               A29: g3 in car by A27;

               [ [g2, g1], g3] in comp by A27, A28, A29;

              then [g2, g1] in ( dom comp) by XTUPLE_0:def 12;

              hence g2 |> g1 by CAT_6:def 2;

            end;

            for g,g1,g2 be morphism of C st g1 |> g2 holds (g1 (*) g2) |> g iff g2 |> g

            proof

              let g,g1,g2 be morphism of C;

              assume g1 |> g2;

              then

              consider F11,F12,F13 be Functor of C1, C2, T11 be natural_transformation of F11, F12, T12 be natural_transformation of F12, F13 such that

               A30: g1 = [ [F12, F13], T12] & g2 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F13 is covariant & F11 is_naturally_transformable_to F12 & F12 is_naturally_transformable_to F13 & (g1 (*) g2) = [ [F11, F13], (T12 `*` T11)] by A15;

              hereby

                assume (g1 (*) g2) |> g;

                then

                consider F01,F02,F03 be Functor of C1, C2, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

                 A31: (g1 (*) g2) = [ [F02, F03], T02] & g = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & ((g1 (*) g2) (*) g) = [ [F01, F03], (T02 `*` T01)] by A15;

                 [F11, F13] = [F02, F03] & (T12 `*` T11) = T02 by A30, A31, XTUPLE_0: 1;

                then F11 = F02 & F13 = F03 by XTUPLE_0: 1;

                hence g2 |> g by A26, A30, A31;

              end;

              assume g2 |> g;

              then

              consider F01,F02,F03 be Functor of C1, C2, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

               A32: g2 = [ [F02, F03], T02] & g = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g2 (*) g) = [ [F01, F03], (T02 `*` T01)] by A15;

               [F11, F12] = [F02, F03] & T11 = T02 by A30, A32, XTUPLE_0: 1;

              then

               A33: F11 = F02 & F12 = F03 by XTUPLE_0: 1;

              F11 is_naturally_transformable_to F13 by A30, Th62;

              hence (g1 (*) g2) |> g by A26, A30, A32, A33;

            end;

            then

             A34: C is left_composable by CAT_6:def 8;

            

             A35: for g,g1,g2 be morphism of C st g1 |> g2 holds g |> (g1 (*) g2) iff g |> g1

            proof

              let g,g1,g2 be morphism of C;

              assume g1 |> g2;

              then

              consider F11,F12,F13 be Functor of C1, C2, T11 be natural_transformation of F11, F12, T12 be natural_transformation of F12, F13 such that

               A36: g1 = [ [F12, F13], T12] & g2 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F13 is covariant & F11 is_naturally_transformable_to F12 & F12 is_naturally_transformable_to F13 & (g1 (*) g2) = [ [F11, F13], (T12 `*` T11)] by A15;

              hereby

                assume g |> (g1 (*) g2);

                then

                consider F01,F02,F03 be Functor of C1, C2, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

                 A37: g = [ [F02, F03], T02] & (g1 (*) g2) = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g (*) (g1 (*) g2)) = [ [F01, F03], (T02 `*` T01)] by A15;

                 [F11, F13] = [F01, F02] & (T12 `*` T11) = T01 by A36, A37, XTUPLE_0: 1;

                then F11 = F01 & F13 = F02 by XTUPLE_0: 1;

                hence g |> g1 by A26, A36, A37;

              end;

              assume g |> g1;

              then

              consider F01,F02,F03 be Functor of C1, C2, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

               A38: g = [ [F02, F03], T02] & g1 = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g (*) g1) = [ [F01, F03], (T02 `*` T01)] by A15;

               [F12, F13] = [F01, F02] & T12 = T01 by A36, A38, XTUPLE_0: 1;

              then

               A39: F12 = F01 & F13 = F02 by XTUPLE_0: 1;

              F11 is_naturally_transformable_to F13 by A36, Th62;

              hence g |> (g1 (*) g2) by A26, A36, A38, A39;

            end;

            for g1 be morphism of C st g1 in the carrier of C holds ex g be morphism of C st g |> g1 & g is left_identity

            proof

              let g1 be morphism of C;

              assume g1 in the carrier of C;

              then

              consider F11,F12 be Functor of CA, CB, T11 be natural_transformation of F11, F12 such that

               A40: g1 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F11 is_naturally_transformable_to F12;

              

               A41: F12 is_natural_transformation_of (F12,F12) by A40, Th61;

              

               A42: F12 is_naturally_transformable_to F12 by A40, Th61;

              then

              reconsider T = F12 as natural_transformation of F12, F12 by A41, Def26;

              set g = [ [F12, F12], T];

              g in car by A40, A42;

              then

              reconsider g as morphism of C by CAT_6:def 1;

              take g;

              thus g |> g1 by A26, A40, A42;

              for g1 be morphism of C st g |> g1 holds (g (*) g1) = g1

              proof

                let g1 be morphism of C;

                assume g |> g1;

                then

                consider F01,F02,F03 be Functor of CA, CB, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

                 A43: g = [ [F02, F03], T02] & g1 = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g (*) g1) = [ [F01, F03], (T02 `*` T01)] by A15;

                

                 A44: [F02, F03] = [F12, F12] & T = T02 by A43, XTUPLE_0: 1;

                then

                 A45: F02 = F12 & F03 = F12 by XTUPLE_0: 1;

                for x be object st x in the carrier of CA holds ((T02 `*` T01) . x) = (T01 . x)

                proof

                  let x be object;

                  assume

                   A46: x in the carrier of CA;

                  reconsider f = x as morphism of CA by A46, CAT_6:def 1;

                  consider f1 be morphism of CA such that

                   A47: f1 |> f & f1 is left_identity by A46, CAT_6:def 6, CAT_6:def 12;

                  consider f2 be morphism of CA such that

                   A48: f |> f2 & f2 is right_identity by A46, CAT_6:def 7, CAT_6:def 12;

                  f2 is left_identity & f1 is right_identity by A47, A48, CAT_6: 9;

                  then

                   A49: f1 is identity & f2 is identity by A47, A48, CAT_6:def 14;

                  

                   A50: T01 is_natural_transformation_of (F01,F02) by A43, Def26;

                  T02 is_natural_transformation_of (F02,F03) by A43, Def26;

                  then

                   A51: (T02 . f1) |> (F02 . f) & (F03 . f) |> (T02 . f2) & (T02 . f) = ((T02 . f1) (*) (F02 . f)) & (T02 . f) = ((F03 . f) (*) (T02 . f2)) by A43, A47, A48, A49, Th58;

                  T02 is covariant by A43, A44, XTUPLE_0: 1;

                  then

                   A52: (T02 . f1) is identity by A49, CAT_6:def 22, CAT_6:def 25;

                  

                  thus ((T02 `*` T01) . x) = ((T02 `*` T01) . f) by CAT_6:def 21

                  .= (((T02 . f1) (*) (F02 . f)) (*) (T01 . f2)) by A47, A48, A49, A43, Def27

                  .= ((F02 . f) (*) (T01 . f2)) by A52, A51, CAT_6:def 4, CAT_6:def 14

                  .= (T01 . f) by A43, A50, A47, A48, A49, Th58

                  .= (T01 . x) by CAT_6:def 21;

                end;

                hence (g (*) g1) = g1 by A43, A45, FUNCT_2: 12;

              end;

              hence g is left_identity by CAT_6:def 4;

            end;

            then

             A53: C is with_left_identities by CAT_6:def 6;

            

             A54: for g1 be morphism of C st g1 in the carrier of C holds ex g be morphism of C st g1 |> g & g is right_identity

            proof

              let g1 be morphism of C;

              assume g1 in the carrier of C;

              then

              consider F11,F12 be Functor of CA, CB, T11 be natural_transformation of F11, F12 such that

               A55: g1 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F11 is_naturally_transformable_to F12;

              

               A56: F11 is_natural_transformation_of (F11,F11) by A55, Th61;

              

               A57: F11 is_naturally_transformable_to F11 by A55, Th61;

              then

              reconsider T = F11 as natural_transformation of F11, F11 by A56, Def26;

              set g = [ [F11, F11], T];

              g in car by A55, A57;

              then

              reconsider g as morphism of C by CAT_6:def 1;

              take g;

              thus g1 |> g by A26, A55, A57;

              for g1 be morphism of C st g1 |> g holds (g1 (*) g) = g1

              proof

                let g1 be morphism of C;

                assume g1 |> g;

                then

                consider F01,F02,F03 be Functor of CA, CB, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

                 A58: g1 = [ [F02, F03], T02] & g = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g1 (*) g) = [ [F01, F03], (T02 `*` T01)] by A15;

                

                 A59: [F01, F02] = [F11, F11] & T01 = T by A58, XTUPLE_0: 1;

                then

                 A60: F01 = F11 & F02 = F11 by XTUPLE_0: 1;

                for x be object st x in the carrier of CA holds ((T02 `*` T01) . x) = (T02 . x)

                proof

                  let x be object;

                  assume

                   A61: x in the carrier of CA;

                  reconsider f = x as morphism of CA by A61, CAT_6:def 1;

                  consider f1 be morphism of CA such that

                   A62: f1 |> f & f1 is left_identity by A61, CAT_6:def 6, CAT_6:def 12;

                  consider f2 be morphism of CA such that

                   A63: f |> f2 & f2 is right_identity by A61, CAT_6:def 7, CAT_6:def 12;

                  f2 is left_identity & f1 is right_identity by A62, A63, CAT_6: 9;

                  then

                   A64: f1 is identity & f2 is identity by A62, A63, CAT_6:def 14;

                  T01 is_natural_transformation_of (F01,F02) by A58, Def26;

                  then

                   A65: (T01 . f1) |> (F01 . f) & (F02 . f) |> (T01 . f2) & (T01 . f) = ((T01 . f1) (*) (F01 . f)) & (T01 . f) = ((F02 . f) (*) (T01 . f2)) by A58, A62, A63, A64, Th58;

                  T02 is_natural_transformation_of (F02,F03) by A58, Def26;

                  then

                   A66: (T02 . f1) |> (F02 . f) & (F03 . f) |> (T02 . f2) & (T02 . f) = ((T02 . f1) (*) (F02 . f)) & (T02 . f) = ((F03 . f) (*) (T02 . f2)) by A58, A62, A63, A64, Th58;

                  

                  thus ((T02 `*` T01) . x) = ((T02 `*` T01) . f) by CAT_6:def 21

                  .= (((T02 . f1) (*) (F02 . f)) (*) (T01 . f2)) by A62, A63, A64, A58, Def27

                  .= (T02 . f) by A59, A60, A66, A65, Th1

                  .= (T02 . x) by CAT_6:def 21;

                end;

                hence (g1 (*) g) = g1 by A58, A60, FUNCT_2: 12;

              end;

              hence g is right_identity by CAT_6:def 5;

            end;

            for g1,g2,g3 be morphism of C st g1 |> g2 & g2 |> g3 & (g1 (*) g2) |> g3 & g1 |> (g2 (*) g3) holds (g1 (*) (g2 (*) g3)) = ((g1 (*) g2) (*) g3)

            proof

              let g1,g2,g3 be morphism of C;

              assume g1 |> g2;

              then

              consider F01,F02,F03 be Functor of CA, CB, T01 be natural_transformation of F01, F02, T02 be natural_transformation of F02, F03 such that

               A67: g1 = [ [F02, F03], T02] & g2 = [ [F01, F02], T01] & F01 is covariant & F02 is covariant & F03 is covariant & F01 is_naturally_transformable_to F02 & F02 is_naturally_transformable_to F03 & (g1 (*) g2) = [ [F01, F03], (T02 `*` T01)] by A15;

              assume g2 |> g3;

              then

              consider F11,F12,F13 be Functor of CA, CB, T11 be natural_transformation of F11, F12, T12 be natural_transformation of F12, F13 such that

               A68: g2 = [ [F12, F13], T12] & g3 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F13 is covariant & F11 is_naturally_transformable_to F12 & F12 is_naturally_transformable_to F13 & (g2 (*) g3) = [ [F11, F13], (T12 `*` T11)] by A15;

              assume (g1 (*) g2) |> g3;

              then

              consider F21,F22,F23 be Functor of CA, CB, T21 be natural_transformation of F21, F22, T22 be natural_transformation of F22, F23 such that

               A69: (g1 (*) g2) = [ [F22, F23], T22] & g3 = [ [F21, F22], T21] & F21 is covariant & F22 is covariant & F23 is covariant & F21 is_naturally_transformable_to F22 & F22 is_naturally_transformable_to F23 & ((g1 (*) g2) (*) g3) = [ [F21, F23], (T22 `*` T21)] by A15;

              assume g1 |> (g2 (*) g3);

              then

              consider F31,F32,F33 be Functor of CA, CB, T31 be natural_transformation of F31, F32, T32 be natural_transformation of F32, F33 such that

               A70: g1 = [ [F32, F33], T32] & (g2 (*) g3) = [ [F31, F32], T31] & F31 is covariant & F32 is covariant & F33 is covariant & F31 is_naturally_transformable_to F32 & F32 is_naturally_transformable_to F33 & (g1 (*) (g2 (*) g3)) = [ [F31, F33], (T32 `*` T31)] by A15;

               [F02, F03] = [F32, F33] & T02 = T32 by A67, A70, XTUPLE_0: 1;

              then

               A71: F02 = F32 & F03 = F33 by XTUPLE_0: 1;

              

               A72: [F01, F02] = [F12, F13] & T01 = T12 by A67, A68, XTUPLE_0: 1;

              then

               A73: F01 = F12 & F02 = F13 by XTUPLE_0: 1;

              

               A74: [F01, F03] = [F22, F23] & (T02 `*` T01) = T22 by A67, A69, XTUPLE_0: 1;

              then

               A75: F01 = F22 & F03 = F23 by XTUPLE_0: 1;

               [F11, F12] = [F21, F22] & T11 = T21 by A68, A69, XTUPLE_0: 1;

              then

               A76: F11 = F21 & F12 = F22 by XTUPLE_0: 1;

               [F11, F13] = [F31, F32] & (T12 `*` T11) = T31 by A68, A70, XTUPLE_0: 1;

              then

               A77: F11 = F31 & F13 = F32 by XTUPLE_0: 1;

              for x be object st x in the carrier of CA holds ((T32 `*` T31) . x) = ((T22 `*` T21) . x)

              proof

                let x be object;

                assume

                 A78: x in the carrier of CA;

                reconsider f = x as morphism of CA by A78, CAT_6:def 1;

                consider f1 be morphism of CA such that

                 A79: f1 |> f & f1 is left_identity by A78, CAT_6:def 6, CAT_6:def 12;

                consider f2 be morphism of CA such that

                 A80: f |> f2 & f2 is right_identity by A78, CAT_6:def 7, CAT_6:def 12;

                

                 A81: f2 is left_identity & f1 is right_identity by A79, A80, CAT_6: 9;

                then

                 A82: f1 is identity & f2 is identity by A79, A80, CAT_6:def 14;

                

                 A83: f1 |> f1 & f2 |> f2 by A81, A79, A80, CAT_6:def 14, CAT_6: 24;

                

                 A84: (T31 . f2) = ((T12 `*` T11) . f2) by A68, A70, XTUPLE_0: 1

                .= (((T12 . f2) (*) (F12 . f2)) (*) (T11 . f2)) by A82, A83, A68, Def27;

                

                 A85: (T22 . f1) = ((T02 `*` T01) . f1) by A67, A69, XTUPLE_0: 1

                .= (((T02 . f1) (*) (F02 . f1)) (*) (T01 . f1)) by A82, A83, A67, Def27;

                

                 A86: T02 is_natural_transformation_of (F02,F03) by A67, Def26;

                

                 A87: T01 is_natural_transformation_of (F01,F02) by A67, Def26;

                then

                 A88: (T01 . f1) |> (F01 . f) & (F02 . f) |> (T01 . f2) & (T01 . f) = ((T01 . f1) (*) (F01 . f)) & (T01 . f) = ((F02 . f) (*) (T01 . f2)) by A79, A80, A82, A67, Th58;

                

                 A89: CB is left_composable & CB is right_composable by CAT_6:def 11;

                

                 A90: f1 |> f1 & f2 |> f2 by A81, CAT_6: 24, A79, A80, CAT_6:def 14;

                

                 A91: T12 is_natural_transformation_of (F12,F13) by A68, Def26;

                then

                 A92: (T12 . f2) |> (F12 . f2) by A90;

                

                 A93: T01 is_natural_transformation_of (F01,F02) by A67, Def26;

                then

                 A94: (F02 . f1) |> (T01 . f1) by A90;

                T11 is_natural_transformation_of (F11,F12) by A68, Def26;

                then

                 A95: (F12 . f2) |> (T11 . f2) by A90;

                T02 is_natural_transformation_of (F02,F03) by A67, Def26;

                then

                 A96: (T02 . f1) |> (F02 . f1) by A90;

                

                 A97: (F32 . f) |> (T12 . f2) by A87, A73, A77, A72, A80;

                

                 A98: (T02 . f1) |> (F32 . f) by A86, A73, A77, A79;

                

                 A99: (T01 . f1) |> (F22 . f) by A87, A75, A79;

                

                 A100: (F32 . f) |> ((T12 . f2) (*) (F12 . f2)) by A97, A91, A90, A82, A68, Th58;

                

                 A101: ((T02 . f1) (*) (F32 . f)) |> ((T12 . f2) (*) (F12 . f2)) by A89, A98, A100, CAT_6:def 8;

                

                 A102: ((T12 . f2) (*) (F12 . f2)) |> (T11 . f2) by A89, A92, A95, CAT_6:def 8;

                

                 A103: ((F32 . f) (*) ((T12 . f2) (*) (F12 . f2))) = ((F32 . f) (*) (T12 . f2)) by A91, A90, A82, A68, Th58

                .= ((F02 . f) (*) (T01 . f2)) by A72, A77, XTUPLE_0: 1

                .= ((T01 . f1) (*) (F22 . f)) by A88, A74, XTUPLE_0: 1

                .= (((F02 . f1) (*) (T01 . f1)) (*) (F22 . f)) by A67, A93, A90, A82, Th58;

                

                 A104: (((T02 . f1) (*) (F32 . f)) (*) ((T12 . f2) (*) (F12 . f2))) = ((T02 . f1) (*) (((F02 . f1) (*) (T01 . f1)) (*) (F22 . f))) by A103, A98, A100, Th1

                .= ((((T02 . f1) (*) (F02 . f1)) (*) (T01 . f1)) (*) (F22 . f)) by A96, A94, A99, Th2;

                

                thus ((T32 `*` T31) . x) = ((T32 `*` T31) . f) by CAT_6:def 21

                .= (((T32 . f1) (*) (F32 . f)) (*) (T31 . f2)) by A79, A80, A82, A70, Def27

                .= (((T02 . f1) (*) (F32 . f)) (*) (((T12 . f2) (*) (F12 . f2)) (*) (T11 . f2))) by A84, A67, A70, XTUPLE_0: 1

                .= ((((T02 . f1) (*) (F32 . f)) (*) ((T12 . f2) (*) (F12 . f2))) (*) (T11 . f2)) by A101, A102, Th1

                .= (((((T02 . f1) (*) (F02 . f1)) (*) (T01 . f1)) (*) (F22 . f)) (*) (T21 . f2)) by A104, A68, A69, XTUPLE_0: 1

                .= ((T22 `*` T21) . f) by A79, A80, A82, A69, A85, Def27

                .= ((T22 `*` T21) . x) by CAT_6:def 21;

              end;

              hence thesis by A69, A70, A71, A75, A76, A77, FUNCT_2: 12;

            end;

            then

            reconsider C as strict category by A54, A53, A35, A34, CAT_6:def 10, CAT_6:def 11, CAT_6:def 12, CAT_6:def 7, CAT_6:def 9;

            take C;

            thus thesis;

          end;

            suppose

             A105: C1 is empty;

            reconsider x = [ [ {} , {} ], {} ] as set by TARSKI: 1;

            car = {x} & { [ [x2, x1], x3] where x1,x2,x3 be Element of car : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } = { [ [x, x], x]} by A105, Lm5;

            then C is non empty category by Th8;

            hence thesis;

          end;

        end;

      end;

      uniqueness ;

    end

    registration

      let C1 be non empty category;

      let C2 be empty category;

      cluster ( Functors (C1,C2)) -> empty;

      correctness

      proof

        the carrier of ( Functors (C1,C2)) = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by Def28;

        hence thesis by Lm4;

      end;

    end

    registration

      let C1 be empty category;

      let C2 be category;

      cluster ( Functors (C1,C2)) -> non empty trivial;

      correctness

      proof

        reconsider X2 = [ [ {} , {} ], {} ] as set by TARSKI: 1;

        the carrier of ( Functors (C1,C2)) = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by Def28;

        then the carrier of ( Functors (C1,C2)) = {X2} & { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of ( Functors (C1,C2)) : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } = { [ [X2, X2], X2]} by Lm5;

        hence thesis;

      end;

    end

    registration

      let C1 be non empty category;

      let C2 be non empty category;

      cluster ( Functors (C1,C2)) -> non empty;

      correctness

      proof

        

         A1: the carrier of ( Functors (C1,C2)) = { [ [F1, F2], t] where F1,F2 be Functor of C1, C2, t be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by Def28;

        set F = the covariant Functor of C1, C2;

        

         A2: F is_natural_transformation_of (F,F) by Th61;

        F is_naturally_transformable_to F by Th61;

        then

        reconsider t = F as natural_transformation of F, F by A2, Def26;

        F is_naturally_transformable_to F by Th61;

        then [ [F, F], t] in the carrier of ( Functors (C1,C2)) by A1;

        hence thesis;

      end;

    end

    theorem :: CAT_8:63

    

     Th63: for C1,C2 be non empty category, f1,f2 be morphism of ( Functors (C1,C2)) holds f1 |> f2 iff ex F,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 st f1 = [ [F, F2], T2] & f2 = [ [F1, F], T1] & (f1 (*) f2) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1))

    proof

      let C1,C2 be non empty category;

      let f1,f2 be morphism of ( Functors (C1,C2));

      

       A1: the composition of ( Functors (C1,C2)) = { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of ( Functors (C1,C2)) : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } by Def28;

      thus f1 |> f2 implies ex F,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 st f1 = [ [F, F2], T2] & f2 = [ [F1, F], T1] & (f1 (*) f2) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1))

      proof

        assume

         A2: f1 |> f2;

        then

         A3: ( KuratowskiPair (f1,f2)) in ( dom the composition of ( Functors (C1,C2))) by CAT_6:def 2;

        (the composition of ( Functors (C1,C2)) . ( KuratowskiPair (f1,f2))) = (the composition of ( Functors (C1,C2)) . (f1,f2)) by BINOP_1:def 1

        .= (f1 (*) f2) by A2, CAT_6:def 3;

        then [( KuratowskiPair (f1,f2)), (f1 (*) f2)] in { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of ( Functors (C1,C2)) : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } by A1, A3, FUNCT_1: 1;

        then

        consider x1,x2,x3 be Element of the carrier of ( Functors (C1,C2)) such that

         A4: [( KuratowskiPair (f1,f2)), (f1 (*) f2)] = [ [x2, x1], x3] and

         A5: ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)];

        consider F1,F,F2 be Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 such that

         A6: x1 = [ [F1, F], T1] & x2 = [ [F, F2], T2] & x3 = [ [F1, F2], (T2 `*` T1)] by A5;

        

         A7: the carrier of ( Functors (C1,C2)) = { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by Def28;

        x1 in the carrier of ( Functors (C1,C2));

        then

        consider F11,F12 be Functor of C1, C2, T11 be natural_transformation of F11, F12 such that

         A8: x1 = [ [F11, F12], T11] & F11 is covariant & F12 is covariant & F11 is_naturally_transformable_to F12 by A7;

        x2 in the carrier of ( Functors (C1,C2));

        then

        consider F21,F22 be Functor of C1, C2, T21 be natural_transformation of F21, F22 such that

         A9: x2 = [ [F21, F22], T21] & F21 is covariant & F22 is covariant & F21 is_naturally_transformable_to F22 by A7;

        

         A10: [F11, F12] = [F1, F] & [F21, F22] = [F, F2] by A8, A9, A6, XTUPLE_0: 1;

        then

        reconsider F, F1, F2 as covariant Functor of C1, C2 by A8, A9, XTUPLE_0: 1;

        reconsider T1 as natural_transformation of F1, F;

        reconsider T2 as natural_transformation of F, F2;

        

         A11: ( KuratowskiPair (f1,f2)) = [x2, x1] & (f1 (*) f2) = x3 by A4, XTUPLE_0: 1;

        take F, F1, F2, T1, T2;

        thus f1 = [ [F, F2], T2] by A6, A11, XTUPLE_0: 1;

        thus f2 = [ [F1, F], T1] by A6, A11, XTUPLE_0: 1;

        thus (f1 (*) f2) = [ [F1, F2], (T2 `*` T1)] by A4, A6, XTUPLE_0: 1;

        let g1,g2 be morphism of C1;

        assume

         A12: g2 |> g1;

        consider g11,g12 be morphism of C1 such that

         A13: g11 is identity & g12 is identity & g11 |> g1 & g1 |> g12 by Th5;

        

         A14: F11 = F1 & F12 = F by A10, XTUPLE_0: 1;

        T1 is_natural_transformation_of (F1,F) by A14, A8, Def26;

        then

         A15: (T1 . g11) |> (F1 . g1) & (F . g1) |> (T1 . g12) & (T1 . g1) = ((T1 . g11) (*) (F1 . g1)) & (T1 . g1) = ((F . g1) (*) (T1 . g12)) by A13, Th58;

        consider g21,g22 be morphism of C1 such that

         A16: g21 is identity & g22 is identity & g21 |> g2 & g2 |> g22 by Th5;

        

         A17: F21 = F & F22 = F2 by A10, XTUPLE_0: 1;

        T2 is_natural_transformation_of (F,F2) by A17, A9, Def26;

        then

         A18: (T2 . g21) |> (F . g2) & (F2 . g2) |> (T2 . g22) & (T2 . g2) = ((T2 . g21) (*) (F . g2)) & (T2 . g2) = ((F2 . g2) (*) (T2 . g22)) by A16, Th58;

        ( dom (F . g2)) = ( cod (F . g1)) by CAT_7: 5, A12, Th13;

        then ( dom (T2 . g2)) = ( cod (F . g1)) by A18, CAT_7: 4;

        then ( dom (T2 . g2)) = ( cod (T1 . g1)) by A15, CAT_7: 4;

        hence (T2 . g2) |> (T1 . g1) by CAT_7: 5;

        ( dom (g2 (*) g1)) = ( dom g1) by A12, CAT_7: 4

        .= ( cod g12) by A13, CAT_7: 5;

        then

         A19: (g2 (*) g1) |> g12 by CAT_7: 5;

        ( dom g21) = ( cod g2) by A16, CAT_7: 5

        .= ( cod (g2 (*) g1)) by A12, CAT_7: 4;

        then

         A20: g21 |> (g2 (*) g1) by CAT_7: 5;

        

         A21: (F . (g2 (*) g1)) = ((F . g2) (*) (F . g1)) & (F . g2) |> (F . g1) by A12, Th13;

        

        thus ((T2 `*` T1) . (g2 (*) g1)) = (((T2 . g21) (*) (F . (g2 (*) g1))) (*) (T1 . g12)) by A13, A19, A20, A16, A14, A8, A17, A9, Def27

        .= ((((T2 . g21) (*) (F . g2)) (*) (F . g1)) (*) (T1 . g12)) by A18, A21, A15, Th2

        .= ((T2 . g2) (*) (T1 . g1)) by A18, A21, A15, Th2;

      end;

      assume

       A22: ex F,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 st f1 = [ [F, F2], T2] & f2 = [ [F1, F], T1] & (f1 (*) f2) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1));

      reconsider x1 = f2, x2 = f1, x3 = (f1 (*) f2) as Element of the carrier of ( Functors (C1,C2)) by CAT_6:def 1;

       [ [x2, x1], x3] in { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of ( Functors (C1,C2)) : ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)] } by A22;

      then ( KuratowskiPair (f1,f2)) in ( dom the composition of ( Functors (C1,C2))) by A1, XTUPLE_0:def 12;

      hence f1 |> f2 by CAT_6:def 2;

    end;

    theorem :: CAT_8:64

    

     Th64: for C1,C2 be non empty category, f be morphism of ( Functors (C1,C2)) holds f is identity iff ex F be covariant Functor of C1, C2 st f = [ [F, F], F]

    proof

      let C1,C2 be non empty category;

      set C = ( Functors (C1,C2));

      let f be morphism of C;

      thus f is identity implies ex F be covariant Functor of C1, C2 st f = [ [F, F], F]

      proof

        assume

         A1: f is identity;

        consider F,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 such that

         A2: f = [ [F, F2], T2] & f = [ [F1, F], T1] & (f (*) f) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1)) by A1, CAT_6: 24, Th63;

        

         A3: [F, F2] = [F1, F] & T1 = T2 by A2, XTUPLE_0: 1;

        then

         A4: F = F1 & F = F2 by XTUPLE_0: 1;

        set f1 = [ [F, F], F];

        

         A5: F is_natural_transformation_of (F,F) by Th61;

        

         A6: F is_naturally_transformable_to F by Th61;

        then F is natural_transformation of F, F by A5, Def26;

        then f1 in { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by A6;

        then f1 in the carrier of C by Def28;

        then

        reconsider f1 as morphism of C by CAT_6:def 1;

        reconsider x2 = f1 as Element of the carrier of C by CAT_6:def 1;

        reconsider x3 = f as Element of the carrier of C by CAT_6:def 1;

        reconsider x1 = f as Element of the carrier of C by CAT_6:def 1;

        ex F1,F2,F3 be Functor of C1, C2, T1 be natural_transformation of F1, F2, T2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], T1] & x2 = [ [F2, F3], T2] & x3 = [ [F1, F3], (T2 `*` T1)]

        proof

          set F1 = F, F2 = F, F3 = F;

          reconsider T1 as natural_transformation of F1, F2 by A3, XTUPLE_0: 1;

          reconsider T2 = F as natural_transformation of F2, F3 by A6, A5, Def26;

          take F1, F2, F3, T1, T2;

          thus x1 = [ [F1, F2], T1] by A2, A3, XTUPLE_0: 1;

          thus x2 = [ [F2, F3], T2];

          for x be object st x in the carrier of C1 holds (T1 . x) = ((T2 `*` T1) . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider f = x as morphism of C1 by CAT_6:def 1;

            consider f1,f2 be morphism of C1 such that

             A7: f1 is identity & f2 is identity & f1 |> f & f |> f2 by Th5;

            

             A8: T1 is_natural_transformation_of (F1,F2) by A6, Def26;

            

            thus (T1 . x) = (T1 . f) by CAT_6:def 21

            .= ((F . f) (*) (T1 . f2)) by A8, A7, Th58

            .= ((F . (f1 (*) f)) (*) (T1 . f2)) by A7, Th4

            .= (((F . f1) (*) (F . f)) (*) (T1 . f2)) by A7, Th13

            .= ((T2 `*` T1) . f) by A6, A7, Def27

            .= ((T2 `*` T1) . x) by CAT_6:def 21;

          end;

          hence x3 = [ [F1, F3], (T2 `*` T1)] by A2, A4, FUNCT_2: 12;

        end;

        then [( KuratowskiPair (f1,f)), f] in { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of C : ex F1,F2,F3 be Functor of C1, C2, t1 be natural_transformation of F1, F2, t2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], t1] & x2 = [ [F2, F3], t2] & x3 = [ [F1, F3], (t2 `*` t1)] };

        then

         A9: [( KuratowskiPair (f1,f)), f] in the composition of C by Def28;

        then

         A10: ( KuratowskiPair (f1,f)) in ( dom the composition of C) by XTUPLE_0:def 12;

        then

         A11: f1 |> f by CAT_6:def 2;

        

         A12: (f1 (*) f) = (the composition of C . (f1,f)) by A10, CAT_6:def 3, CAT_6:def 2

        .= (the composition of C . ( KuratowskiPair (f1,f))) by BINOP_1:def 1

        .= f by A9, A10, FUNCT_1:def 2;

        take F;

        thus thesis by A12, A11, A1, Th4;

      end;

      assume ex F be covariant Functor of C1, C2 st f = [ [F, F], F];

      then

      consider F be covariant Functor of C1, C2 such that

       A13: f = [ [F, F], F];

      

       A14: for f1 be morphism of C st f |> f1 holds (f (*) f1) = f1

      proof

        let f1 be morphism of C;

        assume f |> f1;

        then

        consider F3,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F3, T2 be natural_transformation of F3, F2 such that

         A15: f = [ [F3, F2], T2] & f1 = [ [F1, F3], T1] & (f (*) f1) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1)) by Th63;

        

         A16: [F, F] = [F3, F2] & F = T2 by A13, A15, XTUPLE_0: 1;

        then

         A17: F = F3 & F = F2 by XTUPLE_0: 1;

        for x be object st x in the carrier of C1 holds (T1 . x) = ((T2 `*` T1) . x)

        proof

          let x be object;

          assume x in the carrier of C1;

          then

          reconsider g = x as morphism of C1 by CAT_6:def 1;

          consider g1,g2 be morphism of C1 such that

           A18: g1 is identity & g2 is identity & g1 |> g & g |> g2 by Th5;

          

           A19: (F . g1) is identity by A18, CAT_6:def 22, CAT_6:def 25;

          

           A20: (T2 . g1) |> (T1 . g) by A15, A18;

          

          thus (T1 . x) = (T1 . g) by CAT_6:def 21

          .= ((T2 . g1) (*) (T1 . g)) by A16, A19, A20, Th4

          .= ((T2 `*` T1) . (g1 (*) g)) by A15, A18

          .= ((T2 `*` T1) . g) by A18, Th4

          .= ((T2 `*` T1) . x) by CAT_6:def 21;

        end;

        hence (f (*) f1) = f1 by A15, A17, FUNCT_2: 12;

      end;

      then f is left_identity by CAT_6:def 4;

      then f is right_identity by CAT_6: 9;

      hence thesis by A14, CAT_6:def 4, CAT_6:def 14;

    end;

    theorem :: CAT_8:65

    

     Th65: for C1,C2 be non empty category, f be morphism of ( Functors (C1,C2)) holds ex F1,F2 be covariant Functor of C1, C2, T be natural_transformation of F1, F2 st f = [ [F1, F2], T] & ( dom f) = [ [F1, F1], F1] & ( cod f) = [ [F2, F2], F2]

    proof

      let C1,C2 be non empty category;

      set C = ( Functors (C1,C2));

      let f be morphism of C;

      consider f1 be morphism of C such that

       A1: ( dom f) = f1 & f |> f1 & f1 is identity by CAT_6:def 18;

      consider f2 be morphism of C such that

       A2: ( cod f) = f2 & f2 |> f & f2 is identity by CAT_6:def 19;

      consider G1,G11,G12 be covariant Functor of C1, C2, T11 be natural_transformation of G11, G1, T12 be natural_transformation of G1, G12 such that

       A3: f = [ [G1, G12], T12] & f1 = [ [G11, G1], T11] & (f (*) f1) = [ [G11, G12], (T12 `*` T11)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T12 . g2) |> (T11 . g1) & ((T12 `*` T11) . (g2 (*) g1)) = ((T12 . g2) (*) (T11 . g1)) by A1, Th63;

      consider F1 be covariant Functor of C1, C2 such that

       A4: f1 = [ [F1, F1], F1] by A1, Th64;

       [G11, G1] = [F1, F1] by A3, A4, XTUPLE_0: 1;

      then

       A5: G1 = F1 by XTUPLE_0: 1;

      consider G2,G21,G22 be covariant Functor of C1, C2, T21 be natural_transformation of G21, G2, T22 be natural_transformation of G2, G22 such that

       A6: f2 = [ [G2, G22], T22] & f = [ [G21, G2], T21] & (f2 (*) f) = [ [G21, G22], (T22 `*` T21)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T22 . g2) |> (T21 . g1) & ((T22 `*` T21) . (g2 (*) g1)) = ((T22 . g2) (*) (T21 . g1)) by A2, Th63;

      consider F2 be covariant Functor of C1, C2 such that

       A7: f2 = [ [F2, F2], F2] by A2, Th64;

       [G2, G22] = [F2, F2] by A6, A7, XTUPLE_0: 1;

      then

       A8: G2 = F2 by XTUPLE_0: 1;

      

       A9: [G1, G12] = [G21, G2] by A3, A6, XTUPLE_0: 1;

      then

      reconsider T = T12 as natural_transformation of F1, F2 by A5, A8, XTUPLE_0: 1;

      take F1, F2, T;

      thus f = [ [F1, F2], T] by A3, A5, A9, A8, XTUPLE_0: 1;

      thus ( dom f) = [ [F1, F1], F1] by A1, A4;

      thus ( cod f) = [ [F2, F2], F2] by A2, A7;

    end;

    begin

    definition

      let C be with_binary_products non empty category;

      let a,b,c be Object of C;

      let e be Morphism of (c [x] a), b;

      :: CAT_8:def29

      pred c,e is_exponent_of a,b means

      : Def29: for d be Object of C, f be Morphism of (d [x] a), b st ( Hom ((d [x] a),b)) <> {} holds ( Hom (d,c)) <> {} & ex h be Morphism of d, c st f = (e * (h [x] ( id- a))) & for h1 be Morphism of d, c st f = (e * (h1 [x] ( id- a))) holds h = h1;

    end

    theorem :: CAT_8:66

    

     Th66: for C be with_binary_products category, a1,a2,b1,b2,c1,c2 be Object of C, f1 be Morphism of a1, b1, f2 be Morphism of a2, b2, g1 be Morphism of b1, c1, g2 be Morphism of b2, c2 st ( Hom (a1,b1)) <> {} & ( Hom (b1,c1)) <> {} & ( Hom (a2,b2)) <> {} & ( Hom (b2,c2)) <> {} holds ((g1 [x] g2) * (f1 [x] f2)) = ((g1 * f1) [x] (g2 * f2))

    proof

      let C be with_binary_products category;

      let a1,a2,b1,b2,c1,c2 be Object of C;

      let f1 be Morphism of a1, b1;

      let f2 be Morphism of a2, b2;

      let g1 be Morphism of b1, c1;

      let g2 be Morphism of b2, c2;

      assume

       A1: ( Hom (a1,b1)) <> {} ;

      assume

       A2: ( Hom (b1,c1)) <> {} ;

      assume

       A3: ( Hom (a2,b2)) <> {} ;

      assume

       A4: ( Hom (b2,c2)) <> {} ;

      

       A5: ( Hom (a1,c1)) <> {} by A1, A2, CAT_7: 22;

      

       A6: ( Hom ((a1 [x] a2),a1)) <> {} by Th42;

      

       A7: ( Hom ((b1 [x] b2),b1)) <> {} by Th42;

      

       A8: ( Hom ((c1 [x] c2),c1)) <> {} by Th42;

      

       A9: ( Hom ((a1 [x] a2),a2)) <> {} by Th42;

      

       A10: ( Hom ((b1 [x] b2),b2)) <> {} by Th42;

      

       A11: ( Hom ((c1 [x] c2),c2)) <> {} by Th42;

      

       A12: ( Hom ((a1 [x] a2),(b1 [x] b2))) <> {} by A1, A3, Th44;

      

       A13: ( Hom ((b1 [x] b2),(c1 [x] c2))) <> {} by A2, A4, Th44;

      

       A14: ( Hom (a2,c2)) <> {} by A3, A4, CAT_7: 22;

      

       A15: ((g1 * f1) * ( pr1 (a1,a2))) = (g1 * (f1 * ( pr1 (a1,a2)))) by A6, A1, A2, CAT_7: 23

      .= (g1 * (( pr1 (b1,b2)) * (f1 [x] f2))) by A1, A3, Def16

      .= ((g1 * ( pr1 (b1,b2))) * (f1 [x] f2)) by A7, A12, A2, CAT_7: 23

      .= ((( pr1 (c1,c2)) * (g1 [x] g2)) * (f1 [x] f2)) by A2, A4, Def16

      .= (( pr1 (c1,c2)) * ((g1 [x] g2) * (f1 [x] f2))) by A12, A13, A8, CAT_7: 23;

      ((g2 * f2) * ( pr2 (a1,a2))) = (g2 * (f2 * ( pr2 (a1,a2)))) by A9, A3, A4, CAT_7: 23

      .= (g2 * (( pr2 (b1,b2)) * (f1 [x] f2))) by A1, A3, Def16

      .= ((g2 * ( pr2 (b1,b2))) * (f1 [x] f2)) by A10, A12, A4, CAT_7: 23

      .= ((( pr2 (c1,c2)) * (g1 [x] g2)) * (f1 [x] f2)) by A2, A4, Def16

      .= (( pr2 (c1,c2)) * ((g1 [x] g2) * (f1 [x] f2))) by A12, A13, A11, CAT_7: 23;

      hence ((g1 [x] g2) * (f1 [x] f2)) = ((g1 * f1) [x] (g2 * f2)) by A15, A14, A5, Def16;

    end;

    theorem :: CAT_8:67

    

     Th67: for C be with_binary_products non empty category, a,b be Object of C holds (( id- a) [x] ( id- b)) = ( id- (a [x] b))

    proof

      let C be with_binary_products non empty category;

      let a,b be Object of C;

      

       A1: ( Hom ((a [x] b),a)) <> {} by Th42;

      

       A2: ( Hom (a,a)) <> {} & ( Hom (b,b)) <> {} ;

      

       A3: (( id- a) * ( pr1 (a,b))) = ( pr1 (a,b)) by A1, CAT_7: 18

      .= (( pr1 (a,b)) * ( id- (a [x] b))) by A1, CAT_7: 18;

      

       A4: ( Hom ((a [x] b),b)) <> {} by Th42;

      (( id- b) * ( pr2 (a,b))) = ( pr2 (a,b)) by A4, CAT_7: 18

      .= (( pr2 (a,b)) * ( id- (a [x] b))) by A4, CAT_7: 18;

      hence (( id- a) [x] ( id- b)) = ( id- (a [x] b)) by A2, A3, Def16;

    end;

    theorem :: CAT_8:68

    for C be with_binary_products non empty category, a,b,c1,c2 be Object of C, e1 be Morphism of (c1 [x] a), b, e2 be Morphism of (c2 [x] a), b st ( Hom ((c1 [x] a),b)) <> {} & ( Hom ((c2 [x] a),b)) <> {} & (c1,e1) is_exponent_of (a,b) & (c2,e2) is_exponent_of (a,b) holds (c1,c2) are_isomorphic

    proof

      let C be with_binary_products non empty category;

      let a,b,c1,c2 be Object of C;

      let e1 be Morphism of (c1 [x] a), b;

      let e2 be Morphism of (c2 [x] a), b;

      assume

       A1: ( Hom ((c1 [x] a),b)) <> {} ;

      assume

       A2: ( Hom ((c2 [x] a),b)) <> {} ;

      assume

       A3: (c1,e1) is_exponent_of (a,b);

      then

       A4: ( Hom (c2,c1)) <> {} & ex h be Morphism of c2, c1 st e2 = (e1 * (h [x] ( id- a))) & for h1 be Morphism of c2, c1 st e2 = (e1 * (h1 [x] ( id- a))) holds h = h1 by A2, A1, Def29;

      assume

       A5: (c2,e2) is_exponent_of (a,b);

      then

       A6: ( Hom (c1,c2)) <> {} & ex h be Morphism of c1, c2 st e1 = (e2 * (h [x] ( id- a))) & for h1 be Morphism of c1, c2 st e1 = (e2 * (h1 [x] ( id- a))) holds h = h1 by A1, A2, Def29;

      ex f be Morphism of c1, c2 st f is isomorphism

      proof

        consider f be Morphism of c1, c2 such that

         A7: e1 = (e2 * (f [x] ( id- a))) & for h1 be Morphism of c1, c2 st e1 = (e2 * (h1 [x] ( id- a))) holds f = h1 by A1, A2, A5, Def29;

        take f;

        ex g be Morphism of c2, c1 st (g * f) = ( id- c1) & (f * g) = ( id- c2)

        proof

          consider g be Morphism of c2, c1 such that

           A8: e2 = (e1 * (g [x] ( id- a))) & for h1 be Morphism of c2, c1 st e2 = (e1 * (h1 [x] ( id- a))) holds g = h1 by A2, A1, A3, Def29;

          take g;

          

           A9: ( Hom (a,a)) <> {} ;

          

           A10: ( Hom ((c1 [x] a),(c2 [x] a))) <> {} by A9, A6, Th44;

          

           A11: ( Hom ((c2 [x] a),(c1 [x] a))) <> {} by A9, A4, Th44;

          consider h2 be Morphism of c1, c1 such that e1 = (e1 * (h2 [x] ( id- a))) and

           A12: for h1 be Morphism of c1, c1 st e1 = (e1 * (h1 [x] ( id- a))) holds h2 = h1 by A3, A1, Def29;

          e1 = (e1 * ((g [x] ( id- a)) * (f [x] ( id- a)))) by A7, A8, A10, A11, A1, CAT_7: 23

          .= (e1 * ((g * f) [x] (( id- a) * ( id- a)))) by A4, A6, A9, Th66

          .= (e1 * ((g * f) [x] ( id- a))) by A9, CAT_7: 18;

          then

           A13: (g * f) = h2 by A12;

          e1 = (e1 * ( id- (c1 [x] a))) by A1, CAT_7: 18

          .= (e1 * (( id- c1) [x] ( id- a))) by Th67;

          hence (g * f) = ( id- c1) by A12, A13;

          consider h3 be Morphism of c2, c2 such that e2 = (e2 * (h3 [x] ( id- a))) and

           A14: for h1 be Morphism of c2, c2 st e2 = (e2 * (h1 [x] ( id- a))) holds h3 = h1 by A5, A2, Def29;

          e2 = (e2 * ((f [x] ( id- a)) * (g [x] ( id- a)))) by A7, A8, A10, A11, A2, CAT_7: 23

          .= (e2 * ((f * g) [x] (( id- a) * ( id- a)))) by A4, A6, A9, Th66

          .= (e2 * ((f * g) [x] ( id- a))) by A9, CAT_7: 18;

          then

           A15: (f * g) = h3 by A14;

          e2 = (e2 * ( id- (c2 [x] a))) by A2, CAT_7: 18

          .= (e2 * (( id- c2) [x] ( id- a))) by Th67;

          hence (f * g) = ( id- c2) by A14, A15;

        end;

        hence f is isomorphism by A4, A6, CAT_7:def 9;

      end;

      hence (c1,c2) are_isomorphic by CAT_7:def 10;

    end;

    definition

      let C be with_binary_products non empty category;

      :: CAT_8:def30

      attr C is with_exponential_objects means

      : Def30: for a,b be Object of C holds ex c be Object of C, e be Morphism of (c [x] a), b st ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b);

    end

    registration

      cluster ( OrdC 1) -> with_binary_products;

      correctness by Th41;

    end

    theorem :: CAT_8:69

    

     Th69: ( OrdC 1) is with_exponential_objects

    proof

      set C = ( OrdC 1);

      consider f be morphism of ( OrdC 1) such that

       A1: f is identity & ( Ob ( OrdC 1)) = {f} & ( Mor ( OrdC 1)) = {f} by Th15;

      

       A2: for o1,o2 be Object of C, f1 be morphism of C holds f1 is Morphism of o1, o2

      proof

        let o1,o2 be Object of C;

        let f1 be morphism of C;

        

         A3: ( dom f1) = f by A1, TARSKI:def 1

        .= o1 by A1, TARSKI:def 1;

        ( cod f1) = f by A1, TARSKI:def 1

        .= o2 by A1, TARSKI:def 1;

        then f1 in ( Hom (o1,o2)) by A3, CAT_7: 20;

        hence f1 is Morphism of o1, o2 by CAT_7:def 3;

      end;

      for a,b be Object of C holds ex c be Object of C, e be Morphism of (c [x] a), b st ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b)

      proof

        let a,b be Object of C;

        set c = a;

        take c;

        reconsider e = f as Morphism of (c [x] a), b by A2;

        take e;

        (c [x] a) = f by A1, TARSKI:def 1

        .= b by A1, TARSKI:def 1;

        hence

         A4: ( Hom ((c [x] a),b)) <> {} ;

        for d be Object of C, f1 be Morphism of (d [x] a), b st ( Hom ((d [x] a),b)) <> {} holds ( Hom (d,c)) <> {} & ex h be Morphism of d, c st f1 = (e * (h [x] ( id- a))) & for h1 be Morphism of d, c st f1 = (e * (h1 [x] ( id- a))) holds h = h1

        proof

          let d be Object of C;

          let f1 be Morphism of (d [x] a), b;

          assume ( Hom ((d [x] a),b)) <> {} ;

          reconsider h = f as Morphism of d, a by A2;

          d = f by A1, TARSKI:def 1

          .= a by A1, TARSKI:def 1;

          hence ( Hom (d,c)) <> {} ;

          take h;

          

          thus f1 = f by A1, TARSKI:def 1

          .= (e * (h [x] ( id- a))) by A1, TARSKI:def 1;

          let h1 be Morphism of d, c;

          assume f1 = (e * (h1 [x] ( id- a)));

          thus h = h1 by A1, TARSKI:def 1;

        end;

        hence (c,e) is_exponent_of (a,b) by A4, Def29;

      end;

      hence thesis;

    end;

    registration

      cluster with_exponential_objects for with_binary_products non empty category;

      correctness by Th69;

    end

    definition

      let C be with_exponential_objects with_binary_products non empty category;

      let a,b be Object of C;

      :: CAT_8:def31

      mode categorical_exponent of a,b -> pair object means

      : Def31: ex c be Object of C, e be Morphism of (c [x] a), b st it = [c, e] & ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b);

      correctness

      proof

        consider c be Object of C, e be Morphism of (c [x] a), b such that

         A1: ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b) by Def30;

        take [c, e];

        thus thesis by A1;

      end;

    end

    definition

      let C be with_exponential_objects with_binary_products non empty category;

      let a,b be Object of C;

      :: CAT_8:def32

      func b |^ a -> Object of C equals ( the categorical_exponent of a, b `1 );

      correctness

      proof

        set T = the categorical_exponent of a, b;

        consider c be Object of C, e be Morphism of (c [x] a), b such that

         A1: T = [c, e] & ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b) by Def31;

        thus thesis by A1;

      end;

    end

    definition

      let C be with_exponential_objects with_binary_products non empty category;

      let a,b be Object of C;

      :: CAT_8:def33

      func eval (a,b) -> Morphism of ((b |^ a) [x] a), b equals ( the categorical_exponent of a, b `2 );

      correctness

      proof

        set T = the categorical_exponent of a, b;

        consider c be Object of C, e be Morphism of (c [x] a), b such that

         A1: T = [c, e] & ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b) by Def31;

        thus thesis by A1;

      end;

    end

    theorem :: CAT_8:70

    

     Th70: for C be with_exponential_objects with_binary_products non empty category, a,b be Object of C holds ( Hom (((b |^ a) [x] a),b)) <> {} & ((b |^ a),( eval (a,b))) is_exponent_of (a,b)

    proof

      let C be with_exponential_objects with_binary_products non empty category;

      let a,b be Object of C;

      set T = the categorical_exponent of a, b;

      consider c be Object of C, e be Morphism of (c [x] a), b such that

       A1: T = [c, e] & ( Hom ((c [x] a),b)) <> {} & (c,e) is_exponent_of (a,b) by Def31;

      thus thesis by A1;

    end;

    theorem :: CAT_8:71

    for C be with_exponential_objects with_binary_products non empty category, a,b,c be Object of C st ( Hom ((c [x] a),b)) <> {} holds ex L be Function of ( Hom ((c [x] a),b)), ( Hom (c,(b |^ a))) st (for f be Morphism of (c [x] a), b, h be Morphism of c, (b |^ a) st h = (L . f) holds (( eval (a,b)) * (h [x] ( id- a))) = f) & L is bijective

    proof

      let C be with_exponential_objects with_binary_products non empty category;

      let a,b,c be Object of C;

      assume

       A1: ( Hom ((c [x] a),b)) <> {} ;

      

       A2: ( Hom (((b |^ a) [x] a),b)) <> {} & ((b |^ a),( eval (a,b))) is_exponent_of (a,b) by Th70;

      defpred P[ object, object] means for f be Morphism of (c [x] a), b st f = $1 holds ex h be Morphism of c, (b |^ a) st h = $2 & f = (( eval (a,b)) * (h [x] ( id- a))) & for h1 be Morphism of c, (b |^ a) st f = (( eval (a,b)) * (h1 [x] ( id- a))) holds h = h1;

      

       A4: for x be object st x in ( Hom ((c [x] a),b)) holds ex y be object st y in ( Hom (c,(b |^ a))) & P[x, y]

      proof

        let x be object;

        assume

         A5: x in ( Hom ((c [x] a),b));

        reconsider f = x as Morphism of (c [x] a), b by A5, CAT_7:def 3;

        consider y be Morphism of c, (b |^ a) such that

         A6: f = (( eval (a,b)) * (y [x] ( id- a))) & for h1 be Morphism of c, (b |^ a) st f = (( eval (a,b)) * (h1 [x] ( id- a))) holds y = h1 by A2, A1, Def29;

        take y;

        ( Hom (c,(b |^ a))) <> {} by A2, A1, Def29;

        hence y in ( Hom (c,(b |^ a))) by CAT_7:def 3;

        thus P[x, y] by A6;

      end;

      consider L be Function of ( Hom ((c [x] a),b)), ( Hom (c,(b |^ a))) such that

       A7: for x be object st x in ( Hom ((c [x] a),b)) holds P[x, (L . x)] from FUNCT_2:sch 1( A4);

      take L;

      

       A8: ex y be object st y in ( Hom (c,(b |^ a)))

      proof

        consider x be object such that

         A9: x in ( Hom ((c [x] a),b)) by A1, XBOOLE_0:def 1;

        consider y be object such that

         A10: y in ( Hom (c,(b |^ a))) & P[x, y] by A9, A4;

        take y;

        thus y in ( Hom (c,(b |^ a))) by A10;

      end;

      thus for f be Morphism of (c [x] a), b, h be Morphism of c, (b |^ a) st h = (L . f) holds (( eval (a,b)) * (h [x] ( id- a))) = f

      proof

        let f be Morphism of (c [x] a), b;

        f in ( Hom ((c [x] a),b)) by A1, CAT_7:def 3;

        then

        consider h0 be Morphism of c, (b |^ a) such that

         A11: h0 = (L . f) & f = (( eval (a,b)) * (h0 [x] ( id- a))) & for h1 be Morphism of c, (b |^ a) st f = (( eval (a,b)) * (h1 [x] ( id- a))) holds h0 = h1 by A7;

        let h be Morphism of c, (b |^ a);

        assume h = (L . f);

        hence (( eval (a,b)) * (h [x] ( id- a))) = f by A11;

      end;

      for x1,x2 be object st x1 in ( Hom ((c [x] a),b)) & x2 in ( Hom ((c [x] a),b)) & (L . x1) = (L . x2) holds x1 = x2

      proof

        let x1,x2 be object;

        assume

         A12: x1 in ( Hom ((c [x] a),b));

        then

        reconsider f1 = x1 as Morphism of (c [x] a), b by CAT_7:def 3;

        consider h1 be Morphism of c, (b |^ a) such that

         A13: h1 = (L . x1) & f1 = (( eval (a,b)) * (h1 [x] ( id- a))) & for h0 be Morphism of c, (b |^ a) st f1 = (( eval (a,b)) * (h0 [x] ( id- a))) holds h1 = h0 by A12, A7;

        assume

         A14: x2 in ( Hom ((c [x] a),b));

        then

        reconsider f2 = x2 as Morphism of (c [x] a), b by CAT_7:def 3;

        consider h2 be Morphism of c, (b |^ a) such that

         A15: h2 = (L . x2) & f2 = (( eval (a,b)) * (h2 [x] ( id- a))) & for h0 be Morphism of c, (b |^ a) st f2 = (( eval (a,b)) * (h0 [x] ( id- a))) holds h2 = h0 by A14, A7;

        assume (L . x1) = (L . x2);

        hence x1 = x2 by A13, A15;

      end;

      then

       A16: L is one-to-one by A8, FUNCT_2: 19;

      for y be object st y in ( Hom (c,(b |^ a))) holds y in ( rng L)

      proof

        let y be object;

        assume y in ( Hom (c,(b |^ a)));

        then

        reconsider h = y as Morphism of c, (b |^ a) by CAT_7:def 3;

        set f1 = (( eval (a,b)) * (h [x] ( id- a)));

        

         A17: f1 in ( Hom ((c [x] a),b)) by A1, CAT_7:def 3;

        then

        consider h1 be Morphism of c, (b |^ a) such that

         A18: h1 = (L . f1) & f1 = (( eval (a,b)) * (h1 [x] ( id- a))) & for h0 be Morphism of c, (b |^ a) st f1 = (( eval (a,b)) * (h0 [x] ( id- a))) holds h1 = h0 by A7;

        

         A19: y = (L . f1) by A18;

        f1 in ( dom L) by A8, A17, FUNCT_2:def 1;

        hence y in ( rng L) by A19, FUNCT_1: 3;

      end;

      then ( Hom (c,(b |^ a))) c= ( rng L) by TARSKI:def 3;

      then L is onto by FUNCT_2:def 3, XBOOLE_0:def 10;

      hence L is bijective by A16;

    end;

    definition

      let A,B,C be category;

      let E be Functor of (C [x] A), B;

      :: CAT_8:def34

      pred C,E is_exponent_of A,B means

      : Def34: for D be category, F be Functor of (D [x] A), B st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id A))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id A))) holds H = H1;

    end

    

     Lm6: for C,C1,C2 be non empty category st C = ( Functors (C1,C2)) holds ex E be Functor of (C [x] C1), C2 st E is covariant & for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1

    proof

      let C,C1,C2 be non empty category;

      assume

       A1: C = ( Functors (C1,C2));

      defpred R1[ object, object] means ex c be morphism of C, c1 be morphism of C1, d be morphism of (C [x] C1), c2 be morphism of C2, F12 be Functor of C1, C2 st d = [c, c1] & $1 = d & $2 = c2 & c2 = (F12 . c1) & F12 = (c `2 );

      

       A2: for x be object st x in the carrier of (C [x] C1) holds ex y be object st y in the carrier of C2 & R1[x, y]

      proof

        let x be object;

        assume x in the carrier of (C [x] C1);

        then

        reconsider d = x as morphism of (C [x] C1) by CAT_6:def 1;

        consider c be morphism of C, c1 be morphism of C1 such that

         A3: d = [c, c1] by Th52;

        

         A4: the carrier of ( Functors (C1,C2)) = { [ [F1, F2], t] where F1,F2 be Functor of C1, C2, t be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by Def28;

        c in ( Mor C);

        then c in { [ [F1, F2], t] where F1,F2 be Functor of C1, C2, t be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by A4, A1, CAT_6:def 1;

        then

        consider F1,F2 be Functor of C1, C2, t be natural_transformation of F1, F2 such that

         A5: c = [ [F1, F2], t] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2;

        reconsider F12 = t as Functor of C1, C2;

        set c2 = (F12 . c1);

        reconsider y = c2 as object;

        take y;

        c2 in ( Mor C2);

        hence y in the carrier of C2 by CAT_6:def 1;

        take c, c1, d, c2, F12;

        thus thesis by A5, A3;

      end;

      consider E be Function of the carrier of (C [x] C1), C2 such that

       A6: for x be object st x in the carrier of (C [x] C1) holds R1[x, (E . x)] from FUNCT_2:sch 1( A2);

      reconsider E as Functor of (C [x] C1), C2;

      take E;

      

       A7: for f be morphism of (C [x] C1) holds ex c be morphism of C, c1 be morphism of C1, c2 be morphism of C2, F12 be Functor of C1, C2 st f = [c, c1] & (E . f) = c2 & c2 = (F12 . c1) & F12 = (c `2 )

      proof

        let f be morphism of (C [x] C1);

        reconsider x = f as object;

        f in ( Mor (C [x] C1));

        then f in the carrier of (C [x] C1) by CAT_6:def 1;

        then

        consider c be morphism of C, c1 be morphism of C1, d be morphism of (C [x] C1), c2 be morphism of C2, F12 be Functor of C1, C2 such that

         A8: d = [c, c1] & x = d & (E . x) = c2 & c2 = (F12 . c1) & F12 = (c `2 ) by A6;

        take c, c1, c2, F12;

        thus thesis by A8, CAT_6:def 21;

      end;

      for f be morphism of (C [x] C1) st f is identity holds (E . f) is identity

      proof

        let f be morphism of (C [x] C1);

        assume

         A9: f is identity;

        consider c be morphism of C, c1 be morphism of C1, c2 be morphism of C2, F12 be Functor of C1, C2 such that

         A10: f = [c, c1] & (E . f) = c2 & c2 = (F12 . c1) & F12 = (c `2 ) by A7;

        

         A11: c is identity & c1 is identity by A9, A10, Th56;

        consider F be covariant Functor of C1, C2 such that

         A12: c = [ [F, F], F] by A1, A11, Th64;

        thus (E . f) is identity by A10, A11, A12, CAT_6:def 22, CAT_6:def 25;

      end;

      then

       A13: E is identity-preserving by CAT_6:def 22;

      for f1,f2 be morphism of (C [x] C1) st f1 |> f2 holds (E . f1) |> (E . f2) & (E . (f1 (*) f2)) = ((E . f1) (*) (E . f2))

      proof

        let f1,f2 be morphism of (C [x] C1);

        assume

         A14: f1 |> f2;

        consider c1 be morphism of C, c11 be morphism of C1, c12 be morphism of C2, F11 be Functor of C1, C2 such that

         A15: f1 = [c1, c11] & (E . f1) = c12 & c12 = (F11 . c11) & F11 = (c1 `2 ) by A7;

        consider c2 be morphism of C, c21 be morphism of C1, c22 be morphism of C2, F22 be Functor of C1, C2 such that

         A16: f2 = [c2, c21] & (E . f2) = c22 & c22 = (F22 . c21) & F22 = (c2 `2 ) by A7;

        

         A17: c1 |> c2 & c11 |> c21 by A14, A15, A16, Th54;

        then

        consider F,F1,F2 be covariant Functor of C1, C2, T1 be natural_transformation of F1, F, T2 be natural_transformation of F, F2 such that

         A18: c1 = [ [F, F2], T2] & c2 = [ [F1, F], T1] & (c1 (*) c2) = [ [F1, F2], (T2 `*` T1)] & for g1,g2 be morphism of C1 st g2 |> g1 holds (T2 . g2) |> (T1 . g1) & ((T2 `*` T1) . (g2 (*) g1)) = ((T2 . g2) (*) (T1 . g1)) by A1, Th63;

        thus (E . f1) |> (E . f2) by A15, A16, A17, A18;

        consider d be morphism of C, d1 be morphism of C1, d2 be morphism of C2, G12 be Functor of C1, C2 such that

         A19: (f1 (*) f2) = [d, d1] & (E . (f1 (*) f2)) = d2 & d2 = (G12 . d1) & G12 = (d `2 ) by A7;

        

         A20: [d, d1] = [(c1 (*) c2), (c11 (*) c21)] by A19, A15, A16, A17, Th55;

        

         A21: d = (( pr1 (C,C1)) . [d, d1]) by Def23

        .= (c1 (*) c2) by A20, Def23;

        

         A22: d1 = (( pr2 (C,C1)) . [d, d1]) by Def23

        .= (c11 (*) c21) by A20, Def23;

        thus (E . (f1 (*) f2)) = ((E . f1) (*) (E . f2)) by A15, A16, A18, A17, A21, A19, A22;

      end;

      hence

       A23: E is covariant by A13, CAT_6:def 25, CAT_6:def 23;

      let D be category;

      let F be Functor of (D [x] C1), C2;

      assume

       A24: F is covariant;

      per cases ;

        suppose D is empty;

        then

        reconsider D0 = D as empty category;

        set H = the covariant Functor of D0, C;

        reconsider H as Functor of D, C;

        take H;

        thus thesis;

      end;

        suppose

         A25: D is non empty;

        

         A26: for d be morphism of D holds ex F1 be Functor of C1, C2 st (for c1 be morphism of C1 holds (F1 . c1) = (F . [d, c1])) & (d is identity implies F1 is covariant)

        proof

          let d be morphism of D;

          defpred R2[ object, object] means ex c1 be morphism of C1 st $1 = c1 & $2 = (F . [d, c1]);

          

           A27: for x be object st x in the carrier of C1 holds ex y be object st y in the carrier of C2 & R2[x, y]

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            set y = (F . [d, c1]);

            take y;

            y in ( Mor C2);

            hence y in the carrier of C2 by CAT_6:def 1;

            thus R2[x, y];

          end;

          consider F1 be Function of the carrier of C1, C2 such that

           A28: for x be object st x in the carrier of C1 holds R2[x, (F1 . x)] from FUNCT_2:sch 1( A27);

          reconsider F1 as Functor of C1, C2;

          take F1;

          thus

           A29: for c1 be morphism of C1 holds (F1 . c1) = (F . [d, c1])

          proof

            let c1 be morphism of C1;

            c1 in ( Mor C1);

            then

             A30: c1 in the carrier of C1 by CAT_6:def 1;

            reconsider x = c1 as object;

            consider c2 be morphism of C1 such that

             A31: x = c2 & (F1 . x) = (F . [d, c2]) by A28, A30;

            thus (F1 . c1) = (F . [d, c1]) by A31, CAT_6:def 21;

          end;

          thus d is identity implies F1 is covariant

          proof

            assume

             A32: d is identity;

            for c1 be morphism of C1 st c1 is identity holds (F1 . c1) is identity

            proof

              let c1 be morphism of C1;

              assume c1 is identity;

              then

               A33: [d, c1] is identity by A25, A32, Th56;

              (F1 . c1) = (F . [d, c1]) by A29;

              hence (F1 . c1) is identity by A33, A24, CAT_6:def 25, CAT_6:def 22;

            end;

            then

             A34: F1 is identity-preserving by CAT_6:def 22;

            for c1,c2 be morphism of C1 st c1 |> c2 holds (F1 . c1) |> (F1 . c2) & (F1 . (c1 (*) c2)) = ((F1 . c1) (*) (F1 . c2))

            proof

              let c1,c2 be morphism of C1;

              assume

               A35: c1 |> c2;

              

               A36: d |> d by A25, A32, CAT_6: 24;

              

               A37: [d, c1] |> [d, c2] by A35, A36, Th54;

              

               A38: F is multiplicative by A24, CAT_6:def 25;

              

               A39: (F1 . c1) = (F . [d, c1]) & (F1 . c2) = (F . [d, c2]) by A29;

              hence (F1 . c1) |> (F1 . c2) by A38, A37, CAT_6:def 23;

              

              thus (F1 . (c1 (*) c2)) = (F . [d, (c1 (*) c2)]) by A29

              .= (F . [(d (*) d), (c1 (*) c2)]) by A36, A32, Th4

              .= (F . ( [d, c1] (*) [d, c2])) by A35, A36, Th55

              .= ((F1 . c1) (*) (F1 . c2)) by A38, A39, A37, CAT_6:def 23;

            end;

            hence thesis by A34, CAT_6:def 25, CAT_6:def 23;

          end;

        end;

        defpred R3[ object, object] means ex d,d1,d2 be morphism of D, F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 st $1 = d & d2 |> d & d |> d1 & d1 is identity & d2 is identity & $2 = [ [F1, F2], T] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 & (for c1 be morphism of C1 holds (F1 . c1) = (F . [d1, c1]) & (F2 . c1) = (F . [d2, c1]) & (T . c1) = (F . [d, c1]));

        

         A40: for x be object st x in the carrier of D holds ex y be object st y in the carrier of C & R3[x, y]

        proof

          let x be object;

          assume x in the carrier of D;

          then

          reconsider d = x as morphism of D by CAT_6:def 1;

          consider d2,d1 be morphism of D such that

           A41: d2 is identity & d1 is identity & d2 |> d & d |> d1 by A25, Th5;

          consider F1 be Functor of C1, C2 such that

           A42: (for c1 be morphism of C1 holds (F1 . c1) = (F . [d1, c1])) & (d1 is identity implies F1 is covariant) by A26;

          consider F2 be Functor of C1, C2 such that

           A43: (for c1 be morphism of C1 holds (F2 . c1) = (F . [d2, c1])) & (d2 is identity implies F2 is covariant) by A26;

          consider T be Functor of C1, C2 such that

           A44: (for c1 be morphism of C1 holds (T . c1) = (F . [d, c1])) & (d is identity implies T is covariant) by A26;

          for f,f1,f2 be morphism of C1 st f1 is identity & f2 is identity & f1 |> f & f |> f2 holds (T . f1) |> (F1 . f) & (F2 . f) |> (T . f2) & (T . f) = ((T . f1) (*) (F1 . f)) & (T . f) = ((F2 . f) (*) (T . f2))

          proof

            let f,f1,f2 be morphism of C1;

            assume

             A45: f1 is identity & f2 is identity;

            assume

             A46: f1 |> f & f |> f2;

            

             A47: (T . f1) = (F . [d, f1]) & (T . f2) = (F . [d, f2]) by A44;

            

             A48: (F1 . f) = (F . [d1, f]) by A42;

            

             A49: (F2 . f) = (F . [d2, f]) by A43;

            

             A50: F is multiplicative by A24, CAT_6:def 25;

            

             A51: [d, f1] |> [d1, f] by A46, A41, Th54;

            thus (T . f1) |> (F1 . f) by A47, A48, A51, A50, CAT_6:def 23;

            

             A52: [d2, f] |> [d, f2] by A46, A41, Th54;

            hence (F2 . f) |> (T . f2) by A49, A47, A50, CAT_6:def 23;

            

            thus (T . f) = (F . [d, f]) by A44

            .= (F . [d, (f1 (*) f)]) by A46, A45, Th4

            .= (F . [(d (*) d1), (f1 (*) f)]) by A41, Th4

            .= (F . ( [d, f1] (*) [d1, f])) by A46, A41, Th55

            .= ((F . [d, f1]) (*) (F . [d1, f])) by A51, A50, CAT_6:def 23

            .= ((T . f1) (*) (F1 . f)) by A48, A44;

            

            thus (T . f) = (F . [d, f]) by A44

            .= (F . [d, (f (*) f2)]) by A46, A45, Th4

            .= (F . [(d2 (*) d), (f (*) f2)]) by A41, Th4

            .= (F . ( [d2, f] (*) [d, f2])) by A46, A41, Th55

            .= ((F . [d2, f]) (*) (F . [d, f2])) by A52, A50, CAT_6:def 23

            .= ((F2 . f) (*) (T . f2)) by A49, A44;

          end;

          then

           A53: T is_natural_transformation_of (F1,F2) by Th58, A42, A43, A41;

          then

           A54: F1 is_naturally_transformable_to F2;

          then

          reconsider T as natural_transformation of F1, F2 by A53, Def26;

          set y = [ [F1, F2], T];

          take y;

          y in { [ [F1, F2], T] where F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by A54, A42, A43, A41;

          hence y in the carrier of C by A1, Def28;

          thus R3[x, y] by A41, A42, A43, A44, A54;

        end;

        consider H be Function of the carrier of D, C such that

         A55: for x be object st x in the carrier of D holds R3[x, (H . x)] from FUNCT_2:sch 1( A40);

        reconsider H as Functor of D, C;

        take H;

        

         A56: for f be morphism of D st f is identity holds (H . f) is identity

        proof

          let f be morphism of D;

          assume

           A57: f is identity;

          reconsider x = f as object;

          ( Mor D) is non empty by A25;

          then f in ( Mor D);

          then x in the carrier of D by CAT_6:def 1;

          then

          consider d,d1,d2 be morphism of D, F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 such that

           A58: x = d & d2 |> d & d |> d1 & d1 is identity & d2 is identity & (H . x) = [ [F1, F2], T] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 & (for c1 be morphism of C1 holds (F1 . c1) = (F . [d1, c1]) & (F2 . c1) = (F . [d2, c1]) & (T . c1) = (F . [d, c1])) by A55;

          

           A59: d2 = (d2 (*) d) by A58, A57, Th4

          .= d by A58, Th4;

          

           A60: d1 = (d (*) d1) by A58, A57, Th4

          .= d by A58, Th4;

          for x be object st x in the carrier of C1 holds (F1 . x) = (F2 . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            

            thus (F1 . x) = (F1 . c1) by CAT_6:def 21

            .= (F . [d1, c1]) by A58

            .= (F2 . c1) by A58, A59, A60

            .= (F2 . x) by CAT_6:def 21;

          end;

          then

           A61: F1 = F2 by FUNCT_2: 12;

          

           A62: for x be object st x in the carrier of C1 holds (F2 . x) = (T . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            

            thus (F2 . x) = (F2 . c1) by CAT_6:def 21

            .= (F . [d2, c1]) by A58

            .= (T . c1) by A58, A59

            .= (T . x) by CAT_6:def 21;

          end;

          (H . f) = (H . x) by A25, CAT_6:def 21

          .= [ [F1, F1], F1] by A58, A62, A61, FUNCT_2: 12;

          hence (H . f) is identity by A1, A58, Th64;

        end;

        then

         A63: H is identity-preserving by CAT_6:def 22;

        for f1,f2 be morphism of D st f1 |> f2 holds (H . f1) |> (H . f2) & (H . (f1 (*) f2)) = ((H . f1) (*) (H . f2))

        proof

          let f1,f2 be morphism of D;

          assume

           A64: f1 |> f2;

          reconsider x1 = f1, x2 = f2 as object;

          

           A65: ( Mor D) is non empty by A25;

          then f1 in ( Mor D) & f2 in ( Mor D);

          then

           A66: x1 in the carrier of D & x2 in the carrier of D by CAT_6:def 1;

          consider d1,d11,d12 be morphism of D, F11,F12 be Functor of C1, C2, T1 be natural_transformation of F11, F12 such that

           A67: x2 = d1 & d12 |> d1 & d1 |> d11 & d11 is identity & d12 is identity & (H . x2) = [ [F11, F12], T1] & F11 is covariant & F12 is covariant & F11 is_naturally_transformable_to F12 & (for c1 be morphism of C1 holds (F11 . c1) = (F . [d11, c1]) & (F12 . c1) = (F . [d12, c1]) & (T1 . c1) = (F . [d1, c1])) by A66, A55;

          consider d2,d21,d22 be morphism of D, F21,F22 be Functor of C1, C2, T2 be natural_transformation of F21, F22 such that

           A68: x1 = d2 & d22 |> d2 & d2 |> d21 & d21 is identity & d22 is identity & (H . x1) = [ [F21, F22], T2] & F21 is covariant & F22 is covariant & F21 is_naturally_transformable_to F22 & (for c1 be morphism of C1 holds (F21 . c1) = (F . [d21, c1]) & (F22 . c1) = (F . [d22, c1]) & (T2 . c1) = (F . [d2, c1])) by A66, A55;

          reconsider x12 = (f1 (*) f2) as object;

          (f1 (*) f2) in ( Mor D) by A65;

          then

           A69: x12 in the carrier of D by CAT_6:def 1;

          consider d3,d31,d32 be morphism of D, F31,F32 be Functor of C1, C2, T3 be natural_transformation of F31, F32 such that

           A70: x12 = d3 & d32 |> d3 & d3 |> d31 & d31 is identity & d32 is identity & (H . x12) = [ [F31, F32], T3] & F31 is covariant & F32 is covariant & F31 is_naturally_transformable_to F32 & (for c1 be morphism of C1 holds (F31 . c1) = (F . [d31, c1]) & (F32 . c1) = (F . [d32, c1]) & (T3 . c1) = (F . [d3, c1])) by A69, A55;

          

           A71: ( dom d2) = ( cod d1) by A25, CAT_7: 5, A64, A67, A68;

          

           A72: d12 = ( cod d1) by A67, CAT_6: 27

          .= d21 by A71, A68, CAT_6: 26;

          

           A73: for x be object st x in the carrier of C1 holds (F12 . x) = (F21 . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            

            thus (F12 . x) = (F12 . c1) by CAT_6:def 21

            .= (F . [d12, c1]) by A67

            .= (F21 . c1) by A72, A68

            .= (F21 . x) by CAT_6:def 21;

          end;

          then

           A74: F12 = F21 by FUNCT_2: 12;

          reconsider T2 as natural_transformation of F12, F22 by A73, FUNCT_2: 12;

          

           A75: d31 = ( dom (f1 (*) f2)) by A70, CAT_6: 26

          .= ( dom d1) by A67, A64, CAT_7: 4

          .= d11 by A67, CAT_6: 26;

          for x be object st x in the carrier of C1 holds (F31 . x) = (F11 . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            

            thus (F31 . x) = (F31 . c1) by CAT_6:def 21

            .= (F . [d31, c1]) by A70

            .= (F11 . c1) by A75, A67

            .= (F11 . x) by CAT_6:def 21;

          end;

          then

           A76: F31 = F11 by FUNCT_2: 12;

          

           A77: d32 = ( cod (f1 (*) f2)) by A70, CAT_6: 27

          .= ( cod d2) by A68, A64, CAT_7: 4

          .= d22 by A68, CAT_6: 27;

          for x be object st x in the carrier of C1 holds (F32 . x) = (F22 . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c1 = x as morphism of C1 by CAT_6:def 1;

            

            thus (F32 . x) = (F32 . c1) by CAT_6:def 21

            .= (F . [d32, c1]) by A70

            .= (F22 . c1) by A77, A68

            .= (F22 . x) by CAT_6:def 21;

          end;

          then

           A78: F32 = F22 by FUNCT_2: 12;

          

           A79: for x be object st x in the carrier of C1 holds (T3 . x) = ((T2 `*` T1) . x)

          proof

            let x be object;

            assume x in the carrier of C1;

            then

            reconsider c = x as morphism of C1 by CAT_6:def 1;

            consider c2,c1 be morphism of C1 such that

             A80: c2 is identity & c1 is identity & c2 |> c & c |> c1 by Th5;

            

             A81: F is multiplicative by A24, CAT_6:def 25;

            

             A82: [d2, c2] |> [d12, c] by A80, Th54, A68, A72;

            

             A83: ( [d2, c2] (*) [d12, c]) = [(d2 (*) d12), (c2 (*) c)] by A72, A68, A80, Th55

            .= [d2, (c2 (*) c)] by A72, A68, Th4

            .= [d2, c] by A80, Th4;

            

             A84: [d2, c] |> [d1, c1] by A80, A64, A67, A68, Th54;

            

             A85: ( [d2, c] (*) [d1, c1]) = [(d2 (*) d1), (c (*) c1)] by A64, A67, A68, A80, Th55

            .= [d3, c] by A70, A80, A67, A68, Th4;

            

            thus (T3 . x) = (T3 . c) by CAT_6:def 21

            .= (F . ( [d2, c] (*) [d1, c1])) by A85, A70

            .= ((F . ( [d2, c2] (*) [d12, c])) (*) (F . [d1, c1])) by A83, A81, A84, CAT_6:def 23

            .= (((F . [d2, c2]) (*) (F . [d12, c])) (*) (F . [d1, c1])) by A82, A81, CAT_6:def 23

            .= (((F . [d2, c2]) (*) (F . [d12, c])) (*) (T1 . c1)) by A67

            .= (((F . [d2, c2]) (*) (F12 . c)) (*) (T1 . c1)) by A67

            .= (((T2 . c2) (*) (F12 . c)) (*) (T1 . c1)) by A68

            .= ((T2 `*` T1) . c) by A74, A67, A68, A80, Def27

            .= ((T2 `*` T1) . x) by CAT_6:def 21;

          end;

          

           A86: (H . f1) = (H . x1) by A25, CAT_6:def 21

          .= [ [F12, F22], T2] by A73, A68, FUNCT_2: 12;

          

           A87: (H . f2) = [ [F11, F12], T1] by A67, A25, CAT_6:def 21;

          

           A88: (H . (f1 (*) f2)) = [ [F31, F32], T3] by A70, A25, CAT_6:def 21

          .= [ [F11, F22], (T2 `*` T1)] by A76, A78, A79, FUNCT_2: 12;

          

           A89: the carrier of C = { [ [F1, F2], t] where F1,F2 be Functor of C1, C2, t be natural_transformation of F1, F2 : F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 } by A1, Def28;

          (H . x1) in the carrier of C by A68, A89;

          then

           A90: (H . f1) is Element of the carrier of C by A25, CAT_6:def 21;

          (H . x2) in the carrier of C by A67, A89;

          then

           A91: (H . f2) is Element of the carrier of C by A25, CAT_6:def 21;

          (H . x12) in the carrier of C by A70, A89;

          then

           A92: (H . (f1 (*) f2)) is Element of the carrier of C by A25, CAT_6:def 21;

           [( KuratowskiPair ((H . f1),(H . f2))), (H . (f1 (*) f2))] in { [ [x2, x1], x3] where x1,x2,x3 be Element of the carrier of C : ex F1,F2,F3 be Functor of C1, C2, t1 be natural_transformation of F1, F2, t2 be natural_transformation of F2, F3 st x1 = [ [F1, F2], t1] & x2 = [ [F2, F3], t2] & x3 = [ [F1, F3], (t2 `*` t1)] } by A86, A87, A88, A90, A91, A92;

          then

           A93: [( KuratowskiPair ((H . f1),(H . f2))), (H . (f1 (*) f2))] in the composition of C by A1, Def28;

          then

           A94: ( KuratowskiPair ((H . f1),(H . f2))) in ( dom the composition of C) by XTUPLE_0:def 12;

          hence (H . f1) |> (H . f2) by CAT_6:def 2;

          

          thus (H . (f1 (*) f2)) = (the composition of C . ( KuratowskiPair ((H . f1),(H . f2)))) by A94, A93, FUNCT_1:def 2

          .= (the composition of C . ((H . f1),(H . f2))) by BINOP_1:def 1

          .= ((H . f1) (*) (H . f2)) by A94, CAT_6:def 3, CAT_6:def 2;

        end;

        hence

         A95: H is covariant by A63, CAT_6:def 25, CAT_6:def 23;

        

         A96: for d be morphism of D, c1 be morphism of C1 holds (F . [d, c1]) = (E . [(H . d), c1])

        proof

          let d be morphism of D;

          let c1 be morphism of C1;

          reconsider x = [(H . d), c1] as object;

           [(H . d), c1] in ( Mor (C [x] C1));

          then x in the carrier of (C [x] C1) by CAT_6:def 1;

          then

          consider c be morphism of C, c11 be morphism of C1, d1 be morphism of (C [x] C1), c22 be morphism of C2, F12 be Functor of C1, C2 such that

           A97: d1 = [c, c11] & x = d1 & (E . x) = c22 & c22 = (F12 . c11) & F12 = (c `2 ) by A6;

          

           A98: (H . d) = c & c1 = c11 by A97, Th53;

          reconsider x1 = d as object;

          ( Mor D) is non empty by A25;

          then d in ( Mor D);

          then x1 in the carrier of D by CAT_6:def 1;

          then

          consider d1,d11,d12 be morphism of D, F1,F2 be Functor of C1, C2, T be natural_transformation of F1, F2 such that

           A99: x1 = d1 & d12 |> d1 & d1 |> d11 & d11 is identity & d12 is identity & (H . x1) = [ [F1, F2], T] & F1 is covariant & F2 is covariant & F1 is_naturally_transformable_to F2 & (for c1 be morphism of C1 holds (F1 . c1) = (F . [d11, c1]) & (F2 . c1) = (F . [d12, c1]) & (T . c1) = (F . [d1, c1])) by A55;

          

           A100: (H . d) = [ [F1, F2], T] by A99, A25, CAT_6:def 21;

          

          thus (F . [d, c1]) = (E . x) by A97, A98, A100, A99

          .= (E . [(H . d), c1]) by CAT_6:def 21;

        end;

        

         A101: for c1 be morphism of C1 holds (( id C1) . c1) = c1

        proof

          let c1 be morphism of C1;

          reconsider x1 = c1 as object;

          x1 in ( Mor C1);

          then

           A102: x1 in the carrier of C1 by CAT_6:def 1;

          

          thus (( id C1) . c1) = (( id C1) . x1) by CAT_6:def 21

          .= (( id the carrier of C1) . x1) by STRUCT_0:def 4

          .= c1 by A102, FUNCT_1: 18;

        end;

        

         A103: for x be object st x in the carrier of (D [x] C1) holds (F . x) = ((E (*) (H [x] ( id C1))) . x)

        proof

          let x be object;

          assume x in the carrier of (D [x] C1);

          then

          reconsider f = x as morphism of (D [x] C1) by CAT_6:def 1;

          

           A104: (H [x] ( id C1)) is covariant by A95, Def22;

          consider d be morphism of D, c1 be morphism of C1 such that

           A105: f = [d, c1] by Th52;

          

          thus (F . x) = (F . [d, c1]) by A105, A25, CAT_6:def 21

          .= (E . [(H . d), c1]) by A96

          .= (E . [(H . d), (( id C1) . c1)]) by A101

          .= (E . ((H [x] ( id C1)) . f)) by A105, A25, A95, Th57

          .= ((E (*) (H [x] ( id C1))) . f) by A23, A104, A25, CAT_6: 34

          .= ((E (*) (H [x] ( id C1))) . x) by A25, CAT_6:def 21;

        end;

        hence F = (E (*) (H [x] ( id C1))) by FUNCT_2: 12;

        let H1 be Functor of D, C;

        assume

         A106: H1 is covariant;

        assume

         A107: F = (E (*) (H1 [x] ( id C1)));

        

         A108: for d be morphism of D st d is identity holds (H . d) = (H1 . d)

        proof

          let d be morphism of D;

          assume

           A109: d is identity;

          then

          consider F1 be covariant Functor of C1, C2 such that

           A110: (H . d) = [ [F1, F1], F1] by A1, Th64, A56;

          H1 is identity-preserving by A106, CAT_6:def 25;

          then

          consider F2 be covariant Functor of C1, C2 such that

           A111: (H1 . d) = [ [F2, F2], F2] by A1, Th64, A109, CAT_6:def 22;

          F1 = F2

          proof

            assume F1 <> F2;

            then

            consider x be object such that

             A112: x in the carrier of C1 & (F1 . x) <> (F2 . x) by FUNCT_2: 12;

            reconsider c1 = x as morphism of C1 by A112, CAT_6:def 1;

            

             A113: (H [x] ( id C1)) is covariant by A95, Def22;

            

             A114: ((E (*) (H [x] ( id C1))) . [d, c1]) = (E . ((H [x] ( id C1)) . [d, c1])) by A25, A23, A113, CAT_6: 34

            .= (E . [(H . d), (( id C1) . c1)]) by A25, A95, Th57

            .= (E . [(H . d), c1]) by A101;

            consider c01 be morphism of C, c11 be morphism of C1, c12 be morphism of C2, F12 be Functor of C1, C2 such that

             A115: [(H . d), c1] = [c01, c11] & (E . [(H . d), c1]) = c12 & c12 = (F12 . c11) & F12 = (c01 `2 ) by A7;

            

             A116: (H . d) = c01 & c1 = c11 by A115, Th53;

            

             A117: (H1 [x] ( id C1)) is covariant by A106, Def22;

            

             A118: ((E (*) (H1 [x] ( id C1))) . [d, c1]) = (E . ((H1 [x] ( id C1)) . [d, c1])) by A25, A23, A117, CAT_6: 34

            .= (E . [(H1 . d), (( id C1) . c1)]) by A106, A25, Th57

            .= (E . [(H1 . d), c1]) by A101;

            consider c02 be morphism of C, c21 be morphism of C1, c22 be morphism of C2, F22 be Functor of C1, C2 such that

             A119: [(H1 . d), c1] = [c02, c21] & (E . [(H1 . d), c1]) = c22 & c22 = (F22 . c21) & F22 = (c02 `2 ) by A7;

            

             A120: (H1 . d) = c02 & c1 = c21 by A119, Th53;

            (F1 . x) = (F1 . c1) by CAT_6:def 21

            .= (F2 . c1) by A110, A111, A120, A115, A116, A119, A114, A118, A103, A107, FUNCT_2: 12

            .= (F2 . x) by CAT_6:def 21;

            hence contradiction by A112;

          end;

          hence (H . d) = (H1 . d) by A110, A111;

        end;

        for x be object st x in the carrier of D holds (H . x) = (H1 . x)

        proof

          let x be object;

          assume x in the carrier of D;

          then

          reconsider d = x as morphism of D by CAT_6:def 1;

          consider d1,d2 be morphism of D such that

           A121: d1 is identity & d2 is identity & d1 |> d & d |> d2 by A25, Th5;

          

           A122: ( dom d) = d2 & ( cod d) = d1 by A121, CAT_6: 26, CAT_6: 27;

          

           A123: (H . d1) = (H1 . d1) & (H . d2) = (H1 . d2) by A121, A108;

          

           A124: ( dom (H . d)) = (H . ( dom d)) by A25, A95, CAT_6: 32

          .= (H1 . d2) by A25, A122, A123, CAT_6:def 21

          .= (H1 . ( dom d)) by A25, A122, CAT_6:def 21

          .= ( dom (H1 . d)) by A25, A106, CAT_6: 32;

          

           A125: ( cod (H . d)) = (H . ( cod d)) by A25, A95, CAT_6: 32

          .= (H1 . d1) by A25, A122, A123, CAT_6:def 21

          .= (H1 . ( cod d)) by A25, A122, CAT_6:def 21

          .= ( cod (H1 . d)) by A25, A106, CAT_6: 32;

          consider F1,F2 be covariant Functor of C1, C2, T be natural_transformation of F1, F2 such that

           A126: (H . d) = [ [F1, F2], T] & ( dom (H . d)) = [ [F1, F1], F1] & ( cod (H . d)) = [ [F2, F2], F2] by A1, Th65;

          consider F11,F12 be covariant Functor of C1, C2, T1 be natural_transformation of F11, F12 such that

           A127: (H1 . d) = [ [F11, F12], T1] & ( dom (H1 . d)) = [ [F11, F11], F11] & ( cod (H1 . d)) = [ [F12, F12], F12] by A1, Th65;

          

           A128: F1 = F11 by A126, A127, A124, XTUPLE_0: 1;

          

           A129: F2 = F12 by A126, A127, A125, XTUPLE_0: 1;

          

           A130: T = T1

          proof

            assume T <> T1;

            then

            consider x be object such that

             A131: x in the carrier of C1 & (T . x) <> (T1 . x) by FUNCT_2: 12;

            reconsider c1 = x as morphism of C1 by A131, CAT_6:def 1;

            

             A132: ((E (*) (H [x] ( id C1))) . [d, c1]) = ((E (*) (H1 [x] ( id C1))) . [d, c1]) by A103, FUNCT_2: 12, A107;

            

             A133: (H [x] ( id C1)) is covariant by A95, Def22;

            

             A134: ((E (*) (H [x] ( id C1))) . [d, c1]) = (E . ((H [x] ( id C1)) . [d, c1])) by A25, A23, A133, CAT_6: 34

            .= (E . [(H . d), (( id C1) . c1)]) by A25, A95, Th57

            .= (E . [(H . d), c1]) by A101;

            consider c01 be morphism of C, c11 be morphism of C1, c12 be morphism of C2, F12 be Functor of C1, C2 such that

             A135: [(H . d), c1] = [c01, c11] & (E . [(H . d), c1]) = c12 & c12 = (F12 . c11) & F12 = (c01 `2 ) by A7;

            

             A136: (H . d) = c01 & c1 = c11 by A135, Th53;

            

             A137: (H1 [x] ( id C1)) is covariant by A106, Def22;

            

             A138: ((E (*) (H1 [x] ( id C1))) . [d, c1]) = (E . ((H1 [x] ( id C1)) . [d, c1])) by A25, A23, A137, CAT_6: 34

            .= (E . [(H1 . d), (( id C1) . c1)]) by A106, A25, Th57

            .= (E . [(H1 . d), c1]) by A101;

            consider c02 be morphism of C, c21 be morphism of C1, c22 be morphism of C2, F22 be Functor of C1, C2 such that

             A139: [(H1 . d), c1] = [c02, c21] & (E . [(H1 . d), c1]) = c22 & c22 = (F22 . c21) & F22 = (c02 `2 ) by A7;

            

             A140: (H1 . d) = c02 & c1 = c21 by A139, Th53;

            (T . x) = (T . c1) by CAT_6:def 21;

            hence contradiction by A131, A136, A135, A126, A140, A139, A127, CAT_6:def 21, A132, A134, A138;

          end;

          

          thus (H . x) = (H1 . d) by A130, A25, A126, A127, A128, A129, CAT_6:def 21

          .= (H1 . x) by A25, CAT_6:def 21;

        end;

        hence H = H1 by FUNCT_2: 12;

      end;

    end;

    

     Lm7: for C1 be non empty category, C2 be empty category, E be Functor of (( OrdC 0 ) [x] C1), C2 st E = ( OrdC0-> C2) holds (( OrdC 0 ),E) is_exponent_of (C1,C2)

    proof

      let C1 be non empty category;

      let C2 be empty category;

      let E be Functor of (( OrdC 0 ) [x] C1), C2;

      assume E = ( OrdC0-> C2);

      set C = ( OrdC 0 );

      reconsider E as Functor of (C [x] C1), C2;

      for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1

      proof

        let D be category, F be Functor of (D [x] C1), C2;

        assume

         A1: F is covariant;

        set G1 = ( OrdC0-> C);

        

         A2: D is empty by A1, CAT_6: 31;

        then

        reconsider G1 as Functor of D, C;

        take G1;

        thus G1 is covariant by A2;

        thus F = (E (*) (G1 [x] ( id C1)));

        thus for G2 be Functor of D, C st G2 is covariant & F = (E (*) (G2 [x] ( id C1))) holds G1 = G2;

      end;

      hence thesis by Def34;

    end;

    

     Lm8: for C1 be empty category, C2 be category, E be Functor of (( OrdC 1) [x] C1), C2 st E = ( OrdC0-> C2) holds (( OrdC 1),E) is_exponent_of (C1,C2)

    proof

      let C1 be empty category;

      let C2 be category;

      let E be Functor of (( OrdC 1) [x] C1), C2;

      assume E = ( OrdC0-> C2);

      set C = ( OrdC 1);

      reconsider E as Functor of (C [x] C1), C2;

      for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1

      proof

        let D be category;

        let F be Functor of (D [x] C1), C2;

        assume F is covariant;

        set H = (D ->OrdC1 );

        reconsider H as Functor of D, C;

        take H;

        thus H is covariant;

        thus F = (E (*) (H [x] ( id C1)));

        let H1 be Functor of D, C;

        assume

         A1: H1 is covariant;

        consider H2 be Functor of D, C such that

         A2: H2 is covariant & for H3 be Functor of D, C st H3 is covariant holds H2 = H3 by Def4;

        assume F = (E (*) (H1 [x] ( id C1)));

        

        thus H = H2 by A2

        .= H1 by A2, A1;

      end;

      hence thesis by Def34;

    end;

    definition

      let C1,C2 be category;

      :: CAT_8:def35

      mode categorical_exponent of C1,C2 -> pair object means

      : Def35: ex C be category, E be Functor of (C [x] C1), C2 st it = [C, E] & E is covariant & (C,E) is_exponent_of (C1,C2);

      existence

      proof

        per cases ;

          suppose

           A1: C1 is empty;

          set C = ( OrdC 1);

          reconsider E = ( OrdC0-> C2) as Functor of (C [x] C1), C2 by A1;

          set IT = [C, E];

          take IT;

          take C, E;

          thus thesis by A1, Lm8;

        end;

          suppose

           A2: C2 is empty & C1 is non empty;

          set C = ( OrdC 0 );

          reconsider E = ( OrdC0-> C2) as Functor of (C [x] C1), C2;

          set IT = [C, E];

          take IT;

          take C, E;

          thus thesis by A2, Lm7;

        end;

          suppose

           A3: C1 is non empty & C2 is non empty;

          set C = ( Functors (C1,C2));

          consider E be Functor of (C [x] C1), C2 such that

           A4: E is covariant and

           A5: for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1 by A3, Lm6;

          set IT = [C, E];

          take IT;

          take C, E;

          thus thesis by A5, A4, Def34;

        end;

      end;

    end

    definition

      let C1,C2 be category;

      :: CAT_8:def36

      func C2 |^ C1 -> category equals ( the categorical_exponent of C1, C2 `1 );

      correctness

      proof

        set T = the categorical_exponent of C1, C2;

        consider C be category, E be Functor of (C [x] C1), C2 such that

         A1: T = [C, E] & E is covariant & (C,E) is_exponent_of (C1,C2) by Def35;

        thus thesis by A1;

      end;

    end

    definition

      let C1,C2 be category;

      :: CAT_8:def37

      func eval (C1,C2) -> Functor of ((C2 |^ C1) [x] C1), C2 equals ( the categorical_exponent of C1, C2 `2 );

      correctness

      proof

        set T = the categorical_exponent of C1, C2;

        consider C be category, E be Functor of (C [x] C1), C2 such that

         A1: T = [C, E] & E is covariant & (C,E) is_exponent_of (C1,C2) by Def35;

        thus thesis by A1;

      end;

    end

    theorem :: CAT_8:72

    

     Th72: for C1,C2 be category holds ((C2 |^ C1),( eval (C1,C2))) is_exponent_of (C1,C2)

    proof

      let C1,C2 be category;

      set T = the categorical_exponent of C1, C2;

      consider C be category, E be Functor of (C [x] C1), C2 such that

       A1: T = [C, E] & E is covariant & (C,E) is_exponent_of (C1,C2) by Def35;

      thus thesis by A1;

    end;

    theorem :: CAT_8:73

    

     Th73: for A,B,C1,C2 be category, E1 be Functor of (C1 [x] A), B, E2 be Functor of (C2 [x] A), B st E1 is covariant & E2 is covariant & (C1,E1) is_exponent_of (A,B) & (C2,E2) is_exponent_of (A,B) holds C1 ~= C2

    proof

      let A,B,C1,C2 be category;

      let E1 be Functor of (C1 [x] A), B;

      let E2 be Functor of (C2 [x] A), B;

      assume

       A1: E1 is covariant;

      assume

       A2: E2 is covariant;

      assume

       A3: (C1,E1) is_exponent_of (A,B);

      assume

       A4: (C2,E2) is_exponent_of (A,B);

      ex F be Functor of C1, C2, G be Functor of C2, C1 st F is covariant & G is covariant & (G (*) F) = ( id C1) & (F (*) G) = ( id C2)

      proof

        consider F be Functor of C1, C2 such that

         A5: F is covariant & E1 = (E2 (*) (F [x] ( id A))) & for H1 be Functor of C1, C2 st H1 is covariant & E1 = (E2 (*) (H1 [x] ( id A))) holds F = H1 by A1, A2, A4, Def34;

        consider G be Functor of C2, C1 such that

         A6: G is covariant & E2 = (E1 (*) (G [x] ( id A))) & for H1 be Functor of C2, C1 st H1 is covariant & E2 = (E1 (*) (H1 [x] ( id A))) holds G = H1 by A1, A2, A3, Def34;

        take F, G;

        thus F is covariant & G is covariant by A5, A6;

        consider H2 be Functor of C1, C1 such that

         A7: H2 is covariant & E1 = (E1 (*) (H2 [x] ( id A))) & for H1 be Functor of C1, C1 st H1 is covariant & E1 = (E1 (*) (H1 [x] ( id A))) holds H2 = H1 by A1, A3, Def34;

        

         A8: (G [x] ( id A)) is covariant by A6, Def22;

        

         A9: (F [x] ( id A)) is covariant by A5, Def22;

        E1 = (E1 (*) ((G [x] ( id A)) (*) (F [x] ( id A)))) by A5, A6, A8, A9, A1, CAT_7: 10

        .= (E1 (*) ((G (*) F) [x] (( id A) (*) ( id A)))) by A5, A6, Th50

        .= (E1 (*) ((G (*) F) [x] ( id A))) by CAT_7: 11;

        then

         A10: (G (*) F) = H2 by A7, A5, A6, CAT_6: 35;

        E1 = (E1 (*) ( id (C1 [x] A))) by A1, CAT_7: 11

        .= (E1 (*) (( id C1) [x] ( id A))) by Th51;

        hence (G (*) F) = ( id C1) by A7, A10;

        consider H3 be Functor of C2, C2 such that

         A11: H3 is covariant & E2 = (E2 (*) (H3 [x] ( id A))) & for H1 be Functor of C2, C2 st H1 is covariant & E2 = (E2 (*) (H1 [x] ( id A))) holds H3 = H1 by A2, A4, Def34;

        E2 = (E2 (*) ((F [x] ( id A)) (*) (G [x] ( id A)))) by A2, A5, A6, A8, A9, CAT_7: 10

        .= (E2 (*) ((F (*) G) [x] (( id A) (*) ( id A)))) by A5, A6, Th50

        .= (E2 (*) ((F (*) G) [x] ( id A))) by CAT_7: 11;

        then

         A12: (F (*) G) = H3 by A11, A5, A6, CAT_6: 35;

        E2 = (E2 (*) ( id (C2 [x] A))) by A2, CAT_7: 11

        .= (E2 (*) (( id C2) [x] ( id A))) by Th51;

        hence (F (*) G) = ( id C2) by A11, A12;

      end;

      hence (C1,C2) are_isomorphic by CAT_6:def 28;

    end;

    registration

      let C1,C2 be category;

      cluster ( eval (C1,C2)) -> covariant;

      correctness

      proof

        set T = the categorical_exponent of C1, C2;

        consider C be category, E be Functor of (C [x] C1), C2 such that

         A1: T = [C, E] & E is covariant & (C,E) is_exponent_of (C1,C2) by Def35;

        thus thesis by A1;

      end;

    end

    registration

      let C1 be non empty category;

      let C2 be empty category;

      cluster (C2 |^ C1) -> empty;

      correctness

      proof

        

         A1: ((C2 |^ C1),( eval (C1,C2))) is_exponent_of (C1,C2) by Th72;

        reconsider E = ( OrdC0-> C2) as Functor of (( OrdC 0 ) [x] C1), C2;

        (( OrdC 0 ),E) is_exponent_of (C1,C2) by Lm7;

        hence thesis by CAT_7: 15, A1, Th73;

      end;

    end

    registration

      let C1 be empty category;

      let C2 be category;

      cluster (C2 |^ C1) -> non empty trivial;

      correctness

      proof

        

         A1: ((C2 |^ C1),( eval (C1,C2))) is_exponent_of (C1,C2) by Th72;

        reconsider E = ( OrdC0-> C2) as Functor of (( OrdC 1) [x] C1), C2;

        (( OrdC 1),E) is_exponent_of (C1,C2) by Lm8;

        then (C2 |^ C1) ~= ( OrdC 1) by A1, Th73;

        hence thesis by Th27;

      end;

    end

    registration

      let C1 be non empty category;

      let C2 be non empty category;

      cluster (C2 |^ C1) -> non empty;

      correctness

      proof

        set C = ( Functors (C1,C2));

        consider E be Functor of (C [x] C1), C2 such that

         A1: E is covariant and

         A2: for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1 by Lm6;

        

         A3: (C,E) is_exponent_of (C1,C2) by A1, A2, Def34;

        ((C2 |^ C1),( eval (C1,C2))) is_exponent_of (C1,C2) by Th72;

        hence thesis by CAT_7: 15, A1, A3, Th73;

      end;

    end

    theorem :: CAT_8:74

    for C1,C2 be category holds ( Functors (C1,C2)) ~= (C2 |^ C1)

    proof

      let C1,C2 be category;

      per cases ;

        suppose C1 is empty;

        hence thesis by Th28;

      end;

        suppose C2 is empty & C1 is non empty;

        hence thesis by CAT_7: 13;

      end;

        suppose

         A1: C1 is non empty & C2 is non empty;

        set C = ( Functors (C1,C2));

        consider E be Functor of (C [x] C1), C2 such that

         A2: E is covariant and

         A3: for D be category, F be Functor of (D [x] C1), C2 st F is covariant holds ex H be Functor of D, C st H is covariant & F = (E (*) (H [x] ( id C1))) & for H1 be Functor of D, C st H1 is covariant & F = (E (*) (H1 [x] ( id C1))) holds H = H1 by A1, Lm6;

        

         A4: (C,E) is_exponent_of (C1,C2) by A2, A3, Def34;

        ((C2 |^ C1),( eval (C1,C2))) is_exponent_of (C1,C2) by Th72;

        hence thesis by A2, A4, Th73;

      end;

    end;