cat_7.miz



    begin

    registration

      cluster ordinal -> non pair for set;

      correctness

      proof

        let X be set;

        assume

         A1: X is ordinal;

        assume X is pair;

        then

        consider x1,x2 be object such that

         A2: X = [x1, x2] by XTUPLE_0:def 1;

        X = { {x1, x2}, {x1}} by A2, TARSKI:def 5;

        hence contradiction by A2, A1;

      end;

    end

    registration

      let C be empty CategoryStr;

      cluster ( Mor C) -> empty;

      correctness

      proof

        the carrier of C = {} ;

        hence thesis by CAT_6:def 1;

      end;

    end

    registration

      let C be non empty CategoryStr;

      cluster ( Mor C) -> non empty;

      correctness

      proof

        the carrier of C <> {} ;

        hence thesis by CAT_6:def 1;

      end;

    end

    registration

      let C be empty with_identities CategoryStr;

      cluster ( Ob C) -> empty;

      correctness ;

    end

    registration

      let C be non empty with_identities CategoryStr;

      cluster ( Ob C) -> non empty;

      correctness ;

    end

    registration

      let C be with_identities CategoryStr;

      let a be Object of C;

      cluster ( id- a) -> identity;

      correctness

      proof

        per cases ;

          suppose C is empty;

          hence thesis by CAT_6: 10;

        end;

          suppose

           A1: C is non empty;

          ( id- a) = a by CAT_6:def 20;

          hence thesis by A1, CAT_6: 22;

        end;

      end;

    end

    theorem :: CAT_7:1

    

     Th1: for C be CategoryStr, f be morphism of C st C is non empty holds f in the carrier of C

    proof

      let C be CategoryStr;

      let f be morphism of C;

      assume C is non empty;

      then f in ( Mor C) by SUBSET_1:def 1;

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

    end;

    theorem :: CAT_7:2

    

     Th2: for C be with_identities CategoryStr, a be Object of C st C is non empty holds a in the carrier of C

    proof

      let C be with_identities CategoryStr;

      let a be Object of C;

      assume C is non empty;

      then a in ( Ob C) by SUBSET_1:def 1;

      then a in ( Mor C);

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

    end;

    theorem :: CAT_7:3

    

     Th3: for C be composable CategoryStr, f1,f2,f3 be morphism of C st f1 |> f2 & f2 |> f3 & f2 is identity holds f1 |> f3

    proof

      let C be composable CategoryStr;

      let f1,f2,f3 be morphism of C;

      

       A1: C is right_composable by CAT_6:def 11;

      assume

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

      assume f2 is identity;

      then (f2 (*) f3) = f3 by A2, CAT_6:def 14, CAT_6:def 4;

      hence f1 |> f3 by A2, A1, CAT_6:def 9;

    end;

    theorem :: CAT_7:4

    

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

    proof

      let C be with_identities composable CategoryStr;

      let f1,f2 be morphism of C;

      assume

       A1: f1 |> f2;

      per cases ;

        suppose

         A2: C is empty;

        

        thus ( dom (f1 (*) f2)) = the Object of C by A2, CAT_6:def 18

        .= ( dom f2) by A2, CAT_6:def 18;

        

        thus ( cod (f1 (*) f2)) = the Object of C by A2, CAT_6:def 19

        .= ( cod f1) by A2, CAT_6:def 19;

      end;

        suppose

         A3: C is non empty;

         [f1, f2] in ( dom the composition of C) by A1, CAT_6:def 2;

        then [f1, f2] in ( dom ( CompMap C)) by CAT_6:def 29;

        then

         A4: (( SourceMap C) . f1) = (( TargetMap C) . f2) by A3, CAT_6: 36;

        

         A5: (f1 (*) f2) = (the composition of C . (f1,f2)) by A1, CAT_6:def 3

        .= (( CompMap C) . (f1,f2)) by CAT_6:def 29;

        

        thus ( dom (f1 (*) f2)) = (( SourceMap C) . (f1 (*) f2)) by A3, CAT_6:def 30

        .= (( SourceMap C) . f2) by A4, A5, CAT_6: 37

        .= ( dom f2) by A3, CAT_6:def 30;

        

        thus ( cod (f1 (*) f2)) = (( TargetMap C) . (f1 (*) f2)) by A3, CAT_6:def 31

        .= (( TargetMap C) . f1) by A4, A5, CAT_6: 37

        .= ( cod f1) by A3, CAT_6:def 31;

      end;

    end;

    theorem :: CAT_7:5

    

     Th5: for C be non empty composable with_identities CategoryStr, f1,f2 be morphism of C holds f1 |> f2 iff ( dom f1) = ( cod f2)

    proof

      let C be non empty composable with_identities CategoryStr;

      let f1,f2 be morphism of C;

      

       A1: ( dom f1) = (( SourceMap C) . f1) by CAT_6:def 30;

      

       A2: ( cod f2) = (( TargetMap C) . f2) by CAT_6:def 31;

      hereby

        assume f1 |> f2;

        then [f1, f2] in ( dom the composition of C) by CAT_6:def 2;

        then [f1, f2] in ( dom ( CompMap C)) by CAT_6:def 29;

        hence ( dom f1) = ( cod f2) by A1, A2, CAT_6: 36;

      end;

      assume ( dom f1) = ( cod f2);

      then (( SourceMap C) . f1) = (( TargetMap C) . f2) by A1, CAT_6:def 31;

      then [f1, f2] in ( dom ( CompMap C)) by CAT_6: 36;

      then [f1, f2] in ( dom the composition of C) by CAT_6:def 29;

      hence f1 |> f2 by CAT_6:def 2;

    end;

    theorem :: CAT_7:6

    

     Th6: for C be with_identities composable CategoryStr, f be morphism of C st f is identity holds ( dom f) = f & ( cod f) = f

    proof

      let C be with_identities composable CategoryStr;

      let f be morphism of C;

      assume

       A1: f is identity;

      per cases ;

        suppose

         A2: C is empty;

        then

         A3: the Object of C = {} by SUBSET_1:def 1;

        ( dom f) = the Object of C & ( cod f) = the Object of C by A2, CAT_6:def 18, CAT_6:def 19;

        hence thesis by A3, A2, SUBSET_1:def 1;

      end;

        suppose C is non empty;

        hence thesis by A1, CAT_6: 24, CAT_6: 26, CAT_6: 27;

      end;

    end;

    theorem :: CAT_7:7

    

     Th7: for C be composable with_identities CategoryStr, f1,f2 be morphism of C st f1 |> f2 & f1 is identity & f2 is identity holds f1 = f2

    proof

      let C be composable with_identities CategoryStr;

      let f1,f2 be morphism of C;

      assume

       A1: f1 |> f2;

      assume

       A2: f1 is identity;

      assume f2 is identity;

      

      hence f1 = (f1 (*) f2) by A1, CAT_6:def 5, CAT_6:def 14

      .= f2 by A1, A2, CAT_6:def 4, CAT_6:def 14;

    end;

    theorem :: CAT_7:8

    

     Th8: for C be non empty composable with_identities CategoryStr, f1,f2 be morphism of C st ( dom f1) = f2 holds f1 |> f2 & (f1 (*) f2) = f1

    proof

      let C be non empty composable with_identities CategoryStr;

      let f1,f2 be morphism of C;

      assume ( dom f1) = f2;

      then

      consider f be morphism of C such that

       A1: f2 = f & f1 |> f & f is identity by CAT_6:def 18;

      thus f1 |> f2 by A1;

      thus (f1 (*) f2) = f1 by A1, CAT_6:def 5, CAT_6:def 14;

    end;

    theorem :: CAT_7:9

    

     Th9: for C be non empty composable with_identities CategoryStr, f1,f2 be morphism of C st f1 = ( cod f2) holds f1 |> f2 & (f1 (*) f2) = f2

    proof

      let C be non empty composable with_identities CategoryStr;

      let f1,f2 be morphism of C;

      assume f1 = ( cod f2);

      then

      consider f be morphism of C such that

       A1: f1 = f & f |> f2 & f is identity by CAT_6:def 19;

      thus f1 |> f2 by A1;

      thus (f1 (*) f2) = f2 by A1, CAT_6:def 4, CAT_6:def 14;

    end;

    theorem :: CAT_7:10

    

     Th10: for C1,C2,C3,C4 be category, F be Functor of C1, C2, G be Functor of C2, C3, H be Functor of C3, C4 st F is covariant & G is covariant & H is covariant holds (H (*) (G (*) F)) = ((H (*) G) (*) F)

    proof

      let C1,C2,C3,C4 be category;

      let F be Functor of C1, C2;

      let G be Functor of C2, C3;

      let H be Functor of C3, C4;

      assume

       A1: F is covariant;

      assume

       A2: G is covariant;

      assume

       A3: H is covariant;

      set GF = (G (*) F), HG = (H (*) G);

      

       A4: GF is covariant by A1, A2, CAT_6: 35;

      

       A5: HG is covariant by A2, A3, CAT_6: 35;

      

      thus (H (*) (G (*) F)) = (GF * H) by A4, A3, CAT_6:def 27

      .= ((F * G) * H) by A1, A2, CAT_6:def 27

      .= (F * (G * H)) by RELAT_1: 36

      .= (F * HG) by A2, A3, CAT_6:def 27

      .= ((H (*) G) (*) F) by A5, A1, CAT_6:def 27;

    end;

    theorem :: CAT_7:11

    

     Th11: for C,D be category, F be Functor of C, D st F is covariant holds (F (*) ( id C)) = F & (( id D) (*) F) = F

    proof

      let C,D be category;

      let F be Functor of C, D;

      assume

       A1: F is covariant;

      

      thus (F (*) ( id C)) = (( id C) * F) by A1, CAT_6:def 27

      .= (( id the carrier of C) * F) by STRUCT_0:def 4

      .= F by FUNCT_2: 17;

      

      thus (( id D) (*) F) = (F * ( id D)) by A1, CAT_6:def 27

      .= (F * ( id the carrier of D)) by STRUCT_0:def 4

      .= F by FUNCT_2: 17;

    end;

    theorem :: CAT_7:12

    

     Th12: for C,D be composable with_identities CategoryStr holds C ~= D iff ex F be Functor of C, D st F is covariant & F is bijective

    proof

      let C,D be composable with_identities CategoryStr;

      hereby

        assume C ~= D;

        then

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

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

        take F;

        thus F is covariant by A1;

        (F * G) = ( id C) by A1, CAT_6:def 27

        .= ( id the carrier of C) by STRUCT_0:def 4;

        then

         A2: F is one-to-one by FUNCT_2: 23;

        (G * F) = ( id D) by A1, CAT_6:def 27

        .= ( id the carrier of D) by STRUCT_0:def 4;

        then F is onto by FUNCT_2: 23;

        hence F is bijective by A2;

      end;

      given F be Functor of C, D such that

       A3: F is covariant & F is bijective;

      

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

      then

      reconsider G = (F " ) as Function of the carrier of D, the carrier of C by A3, FUNCT_2: 25;

      reconsider G as Functor of D, C;

      per cases ;

        suppose

         A5: the carrier of D <> {} ;

        then

         A6: (G * F) = ( id the carrier of D) & (F * G) = ( id the carrier of C) by A3, A4, FUNCT_2: 29;

        

         A7: D is non empty by A5;

        

         A8: C is non empty by A4, A5;

        

         A9: F is identity-preserving & F is multiplicative by A3, CAT_6:def 25;

        

         A10: for g be morphism of D holds (F . (G . g)) = g

        proof

          let g be morphism of D;

          reconsider x1 = (G . g), x2 = g as object;

          g in ( Mor D) by A7, SUBSET_1:def 1;

          then

           A11: g in the carrier of D by CAT_6:def 1;

          then

           A12: x2 in ( dom G) by A8, FUNCT_2:def 1;

          

          thus (F . (G . g)) = (F . x1) by A8, CAT_6:def 21

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

          .= (( id the carrier of D) . x2) by A6, A12, FUNCT_1: 13

          .= g by A11, FUNCT_1: 18;

        end;

        

         A13: for f1,f2 be morphism of C st (F . f1) = (F . f2) holds f1 = f2

        proof

          let f1,f2 be morphism of C;

          assume

           A14: (F . f1) = (F . f2);

          reconsider x1 = f1, x2 = f2 as object;

          f1 in ( Mor C) & f2 in ( Mor C) by A8, SUBSET_1:def 1;

          then f1 in the carrier of C & f2 in the carrier of C by CAT_6:def 1;

          then

           A15: x1 in ( dom F) & x2 in ( dom F) by A5, FUNCT_2:def 1;

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

          .= (F . x2) by A14, A8, CAT_6:def 21;

          hence f1 = f2 by A3, A15, FUNCT_1:def 4;

        end;

        for g be morphism of D st g is identity holds (G . g) is identity

        proof

          let g be morphism of D;

          assume g is identity;

          then

           A16: for g1 be morphism of D st g |> g1 holds (g (*) g1) = g1 by CAT_6:def 4, CAT_6:def 14;

          

           A17: for f1 be morphism of C st (G . g) |> f1 holds ((G . g) (*) f1) = f1

          proof

            let f1 be morphism of C;

            assume (G . g) |> f1;

            then (F . (G . g)) |> (F . f1) & (F . ((G . g) (*) f1)) = ((F . (G . g)) (*) (F . f1)) by A9, CAT_6:def 23;

            then g |> (F . f1) & (F . ((G . g) (*) f1)) = (g (*) (F . f1)) by A10;

            hence ((G . g) (*) f1) = f1 by A16, A13;

          end;

          then (G . g) is left_identity by CAT_6:def 4;

          then (G . g) is right_identity by CAT_6: 9;

          hence (G . g) is identity by A17, CAT_6:def 4, CAT_6:def 14;

        end;

        then

         A18: G is identity-preserving by CAT_6:def 22;

        

         A19: for f be morphism of C holds (G . (F . f)) = f

        proof

          let f be morphism of C;

          reconsider x1 = (F . f), x2 = f as object;

          f in ( Mor C) by A8, SUBSET_1:def 1;

          then

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

          then

           A21: x2 in ( dom F) by A5, FUNCT_2:def 1;

          

          thus (G . (F . f)) = (G . x1) by A7, CAT_6:def 21

          .= (G . (F . x2)) by A8, CAT_6:def 21

          .= (( id the carrier of C) . x2) by A6, A21, FUNCT_1: 13

          .= f by A20, FUNCT_1: 18;

        end;

        for g1,g2 be morphism of D st g1 |> g2 holds (G . g1) |> (G . g2) & (G . (g1 (*) g2)) = ((G . g1) (*) (G . g2))

        proof

          let g1,g2 be morphism of D;

          assume

           A22: g1 |> g2;

          reconsider f1 = (G . g1), f2 = (G . g2) as morphism of C;

          

           A23: g1 = (F . (G . g1)) & g2 = (F . (G . g2)) by A10;

          

           A24: ( dom (F . f1)) = ( cod (F . f2)) by A22, A23, A7, Th5;

          ( Ob C) is non empty by A8;

          then ( dom f1) in ( Ob C) & ( cod f2) in ( Ob C);

          then

          reconsider d1 = ( dom f1), c2 = ( cod f2) as morphism of C;

          (F . d1) = (F . ( dom f1)) by A8, CAT_6:def 21

          .= ( dom (F . f1)) by A7, A8, A3, CAT_6: 32

          .= (F . ( cod f2)) by A24, A7, A8, A3, CAT_6: 32

          .= (F . c2) by A8, CAT_6:def 21;

          hence

           A25: (G . g1) |> (G . g2) by A13, A8, Th5;

          

           A26: F is multiplicative by A3, CAT_6:def 25;

          (g1 (*) g2) = (F . ((G . g1) (*) (G . g2))) by A23, A26, A25, CAT_6:def 23;

          hence (G . (g1 (*) g2)) = ((G . g1) (*) (G . g2)) by A19;

        end;

        then

         A27: G is covariant by A18, CAT_6:def 23, CAT_6:def 25;

        then (G * F) = (F (*) G) & (F * G) = (G (*) F) by A3, CAT_6:def 27;

        then (G (*) F) = ( id C) & (F (*) G) = ( id D) by A6, STRUCT_0:def 4;

        hence C ~= D by A3, A27, CAT_6:def 28;

      end;

        suppose

         A28: the carrier of D = {} ;

        then

         A29: D is empty;

        then

         A30: C is empty by A3, CAT_6: 31;

        for g be morphism of D st g is identity holds (G . g) is identity by A30, CAT_6: 10;

        then

         A31: G is identity-preserving by CAT_6:def 22;

        for g1,g2 be morphism of D st g1 |> g2 holds (G . g1) |> (G . g2) & (G . (g1 (*) g2)) = ((G . g1) (*) (G . g2)) by A29, CAT_6: 1;

        then

         A32: G is covariant by A31, CAT_6:def 23, CAT_6:def 25;

        (G (*) F) = ( id C) & (F (*) G) = ( id D) by A30, A28;

        hence C ~= D by A3, A32, CAT_6:def 28;

      end;

    end;

    theorem :: CAT_7:13

    

     Th13: for C,D be empty with_identities CategoryStr holds C ~= D

    proof

      let C,D be empty with_identities CategoryStr;

      set F = the covariant Functor of C, D;

      set G = the covariant Functor of D, C;

      (G (*) F) = ( id C) & (F (*) G) = ( id D);

      hence C ~= D by CAT_6:def 28;

    end;

    theorem :: CAT_7:14

    

     Th14: for C,D be with_identities CategoryStr st C ~= D holds ( card ( Mor C)) = ( card ( Mor D)) & ( card ( Ob C)) = ( card ( Ob D))

    proof

      let C,D be with_identities CategoryStr;

      assume C ~= D;

      then

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

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

      (F * G) = ( id C) by A1, CAT_6:def 27

      .= ( id the carrier of C) by STRUCT_0:def 4;

      then

       A2: F is one-to-one by FUNCT_2: 23;

      

       A3: (G * F) = ( id D) by A1, CAT_6:def 27

      .= ( id the carrier of D) by STRUCT_0:def 4;

      per cases ;

        suppose

         A4: D is empty;

        C is empty by A4, A1, CAT_6: 31;

        hence thesis by A4;

      end;

        suppose

         A5: not D is empty;

        F is onto by A3, FUNCT_2: 23;

        then ( rng F) = the carrier of D by FUNCT_2:def 3;

        then

         A6: ( rng F) = ( Mor D) by CAT_6:def 1;

        

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

        then

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

        hence ( card ( Mor C)) = ( card ( Mor D)) by CARD_1: 5, A6, A2, WELLORD2:def 4;

        set F1 = (F | ( Ob C));

        

         A9: ( dom F1) = ( Ob C) by A8, RELAT_1: 62;

        for y be object holds y in ( rng F1) iff y in ( Ob D)

        proof

          let y be object;

          hereby

            assume y in ( rng F1);

            then

            consider x be object such that

             A10: x in ( dom F1) & y = (F1 . x) by FUNCT_1:def 3;

            

             A11: x in ( Ob C) by A10;

            

             A12: y = (F . x) by A10, FUNCT_1: 49;

            x in { f where f be morphism of C : f is identity & f in ( Mor C) } by A11, CAT_6:def 17;

            then

            consider f be morphism of C such that

             A13: x = f & f is identity & f in ( Mor C);

            C is non empty by A10;

            then

             A14: y = (F . f) by A12, A13, CAT_6:def 21;

            then

            reconsider g = y as morphism of D;

            ( Mor D) <> {} by A5;

            then g is identity & g in ( Mor D) by A14, A13, CAT_6:def 22, A1, CAT_6:def 25;

            then g in { f1 where f1 be morphism of D : f1 is identity & f1 in ( Mor D) };

            hence y in ( Ob D) by CAT_6:def 17;

          end;

          assume y in ( Ob D);

          then y in { g where g be morphism of D : g is identity & g in ( Mor D) } by CAT_6:def 17;

          then

          consider g be morphism of D such that

           A15: y = g & g is identity & g in ( Mor D);

          consider x be object such that

           A16: x in ( dom F) & g = (F . x) by A15, A6, FUNCT_1:def 3;

          reconsider f = x as morphism of C by A16, CAT_6:def 1;

          

           A17: C is non empty by A16;

          then g = (F . f) by A16, CAT_6:def 21;

          

          then (G . g) = ((G (*) F) . f) by A1, A17, CAT_6: 34

          .= (( id C) . x) by A1, A17, CAT_6:def 21

          .= (( id the carrier of C) . x) by STRUCT_0:def 4

          .= x by FUNCT_1: 18, A16;

          then f is identity & f in ( Mor C) by A16, A7, A15, CAT_6:def 22, A1, CAT_6:def 25, CAT_6:def 1;

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

          then

           A18: f in ( Ob C) by CAT_6:def 17;

          g = (F1 . f) by A18, A16, FUNCT_1: 49;

          hence y in ( rng F1) by A9, A18, A15, FUNCT_1:def 3;

        end;

        then

         A19: ( rng F1) = ( Ob D) by TARSKI: 2;

        F1 is one-to-one by A2, FUNCT_1: 52;

        hence ( card ( Ob C)) = ( card ( Ob D)) by CARD_1: 5, A9, A19, WELLORD2:def 4;

      end;

    end;

    theorem :: CAT_7:15

    

     Th15: for C,D be with_identities CategoryStr st C ~= D & C is empty holds D is empty

    proof

      let C,D be with_identities CategoryStr;

      assume C ~= D;

      then

       A1: ( card ( Mor C)) = ( card ( Mor D)) by Th14;

      assume C is empty;

      hence D is empty by A1;

    end;

    begin

    definition

      let C be CategoryStr;

      let a,b be Object of C;

      :: CAT_7:def1

      func Hom (a,b) -> Subset of ( Mor C) equals { f where f be morphism of C : ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f };

      correctness

      proof

        set IT = { f where f be morphism of C : ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f };

        now

          for x be object st x in IT holds x in ( Mor C)

          proof

            let x be object;

            assume x in IT;

            then

            consider f be morphism of C such that

             A1: x = f & ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f;

            consider f1,f2 be morphism of C such that

             A2: a = f1 & b = f2 & f |> f1 & f2 |> f by A1;

            C is non empty by A2, CAT_6: 1;

            then ( Mor C) is non empty;

            hence x in ( Mor C) by A1;

          end;

          hence IT is Subset of ( Mor C) by TARSKI:def 3;

        end;

        hence thesis;

      end;

    end

    definition

      let C be non empty composable with_identities CategoryStr;

      let a,b be Object of C;

      :: original: Hom

      redefine

      :: CAT_7:def2

      func Hom (a,b) -> Subset of ( Mor C) equals

      : Def2: { f where f be morphism of C : ( dom f) = a & ( cod f) = b };

      correctness

      proof

        for x be object holds x in ( Hom (a,b)) iff x in { f where f be morphism of C : ( dom f) = a & ( cod f) = b }

        proof

          let x be object;

          hereby

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

            then

            consider f be morphism of C such that

             A1: x = f & ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f;

            consider f1,f2 be morphism of C such that

             A2: a = f1 & b = f2 & f |> f1 & f2 |> f by A1;

            ( dom f) = a & ( cod f) = b by A2, CAT_6: 26, CAT_6: 27, CAT_6: 22;

            hence x in { f where f be morphism of C : ( dom f) = a & ( cod f) = b } by A1;

          end;

          assume x in { f where f be morphism of C : ( dom f) = a & ( cod f) = b };

          then

          consider f be morphism of C such that

           A3: x = f & ( dom f) = a & ( cod f) = b;

          consider f1 be morphism of C such that

           A4: ( dom f) = f1 & f |> f1 & f1 is identity by CAT_6:def 18;

          consider f2 be morphism of C such that

           A5: ( cod f) = f2 & f2 |> f & f2 is identity by CAT_6:def 19;

          thus x in ( Hom (a,b)) by A3, A4, A5;

        end;

        hence thesis by TARSKI: 2;

      end;

    end

    definition

      let C be CategoryStr;

      let a,b be Object of C;

      assume

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

      :: CAT_7:def3

      mode Morphism of a,b -> morphism of C means

      : Def3: it in ( Hom (a,b));

      correctness by A1, SUBSET_1: 4;

    end

    definition

      let C be non empty with_identities CategoryStr;

      let a be Object of C;

      :: original: id-

      redefine

      func id- a -> Morphism of a, a ;

      coherence

      proof

        

         A3: ( id- a) = a by CAT_6:def 20;

        then ( id- a) |> ( id- a) by CAT_6: 23;

        then ( id- a) in ( Hom (a,a)) by A3;

        hence thesis by Def3;

      end;

    end

    registration

      let C be non empty with_identities CategoryStr;

      let a be Object of C;

      cluster ( Hom (a,a)) -> non empty;

      correctness

      proof

        

         A1: ( id- a) = a by CAT_6:def 20;

        then ( id- a) |> ( id- a) by CAT_6: 23;

        then ( id- a) in ( Hom (a,a)) by A1;

        hence thesis;

      end;

    end

    definition

      let C be composable with_identities CategoryStr;

      let a,b,c be Object of C;

      let f be Morphism of a, b;

      let g be Morphism of b, c;

      assume

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

      :: CAT_7:def4

      func g * f -> Morphism of a, c equals

      : Def4: (g (*) f);

      correctness

      proof

        f in ( Hom (a,b)) by A1, Def3;

        then

        consider f3 be morphism of C such that

         A2: f = f3 & ex f1,f2 be morphism of C st a = f1 & b = f2 & f3 |> f1 & f2 |> f3;

        consider f1,f2 be morphism of C such that

         A3: a = f1 & b = f2 & f3 |> f1 & f2 |> f3 by A2;

        g in ( Hom (b,c)) by A1, Def3;

        then

        consider g3 be morphism of C such that

         A4: g = g3 & ex g1,g2 be morphism of C st b = g1 & c = g2 & g3 |> g1 & g2 |> g3;

        consider g1,g2 be morphism of C such that

         A5: b = g1 & c = g2 & g3 |> g1 & g2 |> g3 by A4;

        

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

        C is non empty by A2, CAT_6: 1;

        then

         A7: g |> f by A2, A4, Th3, CAT_6: 22;

        g2 |> (g (*) f) & (g (*) f) |> f1 by A2, A3, A4, A5, A7, A6, CAT_6:def 8, CAT_6:def 9;

        then (g (*) f) in ( Hom (a,c)) by A3, A5;

        hence thesis by Def3;

      end;

    end

    theorem :: CAT_7:16

    

     Th16: for C be CategoryStr, a,b be Object of C, f be Morphism of a, b st ( Hom (a,b)) <> {} holds ex f1,f2 be morphism of C st a = f1 & b = f2 & f |> f1 & f2 |> f

    proof

      let C be CategoryStr;

      let a,b be Object of C;

      let f be Morphism of a, b;

      assume ( Hom (a,b)) <> {} ;

      then f in ( Hom (a,b)) by Def3;

      then

      consider f11 be morphism of C such that

       A1: f11 = f & ex f1,f2 be morphism of C st a = f1 & b = f2 & f11 |> f1 & f2 |> f11;

      thus thesis by A1;

    end;

    theorem :: CAT_7:17

    

     Th17: for C be composable with_identities CategoryStr, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} holds f2 |> f1

    proof

      let C be composable with_identities CategoryStr;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume ( Hom (a,b)) <> {} ;

      then

      consider f11,f12 be morphism of C such that

       A1: a = f11 & b = f12 & f1 |> f11 & f12 |> f1 by Th16;

      assume ( Hom (b,c)) <> {} ;

      then

      consider f21,f22 be morphism of C such that

       A2: b = f21 & c = f22 & f2 |> f21 & f22 |> f2 by Th16;

      C is non empty by A1, CAT_6: 1;

      hence f2 |> f1 by A1, A2, Th3, CAT_6: 22;

    end;

    theorem :: CAT_7:18

    

     Th18: for C be composable non empty with_identities CategoryStr, a,b be Object of C, f be Morphism of a, b st ( Hom (a,b)) <> {} holds (f * ( id- a)) = f & (( id- b) * f) = f

    proof

      let C be composable non empty with_identities CategoryStr;

      let a,b be Object of C;

      let f be Morphism of a, b;

      assume

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

      

       A3: ( id- a) = a & ( id- b) = b by CAT_6:def 20;

      

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

      

       A5: f |> ( id- a) & ( id- b) |> f by A1, A4, Th17;

      

      thus (f * ( id- a)) = (f (*) ( id- a)) by A4, A1, Def4

      .= f by A3, A5, CAT_6: 23;

      

      thus (( id- b) * f) = (( id- b) (*) f) by A4, A1, Def4

      .= f by A3, A5, CAT_6: 23;

    end;

    theorem :: CAT_7:19

    

     Th19: for C be non empty with_identities composable CategoryStr, f be morphism of C holds f in ( Hom (( dom f),( cod f)));

    theorem :: CAT_7:20

    

     Th20: for C be non empty with_identities composable CategoryStr, a,b be Object of C, f be morphism of C holds f in ( Hom (a,b)) iff ( dom f) = a & ( cod f) = b

    proof

      let C be non empty with_identities composable CategoryStr;

      let a,b be Object of C;

      let f be morphism of C;

      hereby

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

        then

        consider f1 be morphism of C such that

         A1: f = f1 & a = ( dom f1) & b = ( cod f1);

        thus ( dom f) = a & ( cod f) = b by A1;

      end;

      assume ( dom f) = a & ( cod f) = b;

      hence f in ( Hom (a,b));

    end;

    theorem :: CAT_7:21

    

     Th21: for C be non empty with_identities composable CategoryStr, a be Object of C holds a in ( Hom (a,a))

    proof

      let C be non empty with_identities composable CategoryStr;

      let a be Object of C;

      a in ( Ob C);

      then

      reconsider f = a as morphism of C;

      f is identity by CAT_6: 22;

      then ( dom f) = f & ( cod f) = f by Th6;

      hence a in ( Hom (a,a));

    end;

    theorem :: CAT_7:22

    

     Th22: for C be composable with_identities CategoryStr, a,b,c be Object of C st ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} holds ( Hom (a,c)) <> {}

    proof

      let C be composable with_identities CategoryStr;

      let a,b,c be Object of C;

      assume

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

      set f1 = the Morphism of a, b;

      consider f11,f12 be morphism of C such that

       A2: a = f11 & b = f12 & f1 |> f11 & f12 |> f1 by A1, Th16;

      assume

       A3: ( Hom (b,c)) <> {} ;

      set f2 = the Morphism of b, c;

      consider f22,f23 be morphism of C such that

       A4: b = f22 & c = f23 & f2 |> f22 & f23 |> f2 by A3, Th16;

      

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

      C is non empty by A2, CAT_6: 1;

      then

       A6: f2 |> f1 by A2, A4, Th3, CAT_6: 22;

      f23 |> (f2 (*) f1) & (f2 (*) f1) |> f11 by A2, A4, A6, A5, CAT_6:def 8, CAT_6:def 9;

      then (f2 (*) f1) in ( Hom (a,c)) by A2, A4;

      hence ( Hom (a,c)) <> {} ;

    end;

    theorem :: CAT_7:23

    

     Th23: for C be category, a,b,c,d be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c, f3 be Morphism of c, d st ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} & ( Hom (c,d)) <> {} holds (f3 * (f2 * f1)) = ((f3 * f2) * f1)

    proof

      let C be category;

      let a,b,c,d be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      let f3 be Morphism of c, d;

      assume

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

      assume

       A2: ( Hom (b,c)) <> {} ;

      assume

       A3: ( Hom (c,d)) <> {} ;

      

       A4: ( Hom (a,c)) <> {} by A1, A2, Th22;

      

       A5: ( Hom (b,d)) <> {} by A2, A3, Th22;

      

       A6: f3 |> f2 & f2 |> f1 by A1, A2, A3, Th17;

      (f3 * f2) |> f1 by A5, A1, Th17;

      then

       A7: (f3 (*) f2) |> f1 by A2, A3, Def4;

      f3 |> (f2 * f1) by A4, A3, Th17;

      then

       A8: f3 |> (f2 (*) f1) by A1, A2, Def4;

      

      thus (f3 * (f2 * f1)) = (f3 (*) (f2 * f1)) by A3, A4, Def4

      .= (f3 (*) (f2 (*) f1)) by A1, A2, Def4

      .= ((f3 (*) f2) (*) f1) by A6, A7, A8, CAT_6:def 10

      .= ((f3 * f2) (*) f1) by A2, A3, Def4

      .= ((f3 * f2) * f1) by A1, A5, Def4;

    end;

    theorem :: CAT_7:24

    

     Th24: for C be composable with_identities CategoryStr, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} holds (f1 is identity implies (f2 * f1) = f2) & (f2 is identity implies (f2 * f1) = f1)

    proof

      let C be composable with_identities CategoryStr;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume

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

      then

       A2: C is non empty;

      

       A3: f2 |> f1 by A1, Th17;

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

      proof

        assume f1 is identity;

        then

         A4: f1 is Object of C by A2, CAT_6: 22;

        

        thus (f2 * f1) = (f2 (*) f1) by A1, Def4

        .= f2 by A2, A4, A3, CAT_6: 23;

      end;

      assume f2 is identity;

      then

       A5: f2 is Object of C by A2, CAT_6: 22;

      

      thus (f2 * f1) = (f2 (*) f1) by A1, Def4

      .= f1 by A2, A5, A3, CAT_6: 23;

    end;

    begin

    definition

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

      :: CAT_7:def5

      attr f is monomorphism means ( Hom (a,b)) <> {} & for c be Object of C st ( Hom (c,a)) <> {} holds for g1,g2 be Morphism of c, a st (f * g1) = (f * g2) holds g1 = g2;

      :: CAT_7:def6

      attr f is epimorphism means ( Hom (a,b)) <> {} & for c be Object of C st ( Hom (b,c)) <> {} holds for g1,g2 be Morphism of b, c st (g1 * f) = (g2 * f) holds g1 = g2;

    end

    theorem :: CAT_7:25

    for C be composable with_identities CategoryStr, a,b be Object of C, f1 be Morphism of a, b st ( Hom (a,b)) <> {} & f1 is identity holds f1 is monomorphism

    proof

      let C be composable with_identities CategoryStr;

      let a,b be Object of C;

      let f1 be Morphism of a, b;

      assume

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

      assume

       A2: f1 is identity;

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

      let c be Object of C;

      assume

       A3: ( Hom (c,a)) <> {} ;

      let g1,g2 be Morphism of c, a;

      assume

       A4: (f1 * g1) = (f1 * g2);

      

      thus g1 = (f1 * g1) by A3, A1, A2, Th24

      .= g2 by A3, A1, A4, A2, Th24;

    end;

    theorem :: CAT_7:26

    for C be category, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st f1 is monomorphism & f2 is monomorphism holds (f2 * f1) is monomorphism

    proof

      let C be category;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume

       A1: f1 is monomorphism;

      assume

       A2: f2 is monomorphism;

      hence ( Hom (a,c)) <> {} by A1, Th22;

      let d be Object of C;

      assume

       A3: ( Hom (d,a)) <> {} ;

      let g1,g2 be Morphism of d, a;

      assume

       A4: ((f2 * f1) * g1) = ((f2 * f1) * g2);

      

       A5: ( Hom (d,b)) <> {} by A3, A1, Th22;

      (f2 * (f1 * g1)) = ((f2 * f1) * g1) by A1, A2, A3, Th23

      .= (f2 * (f1 * g2)) by A4, A1, A2, A3, Th23;

      hence g1 = g2 by A1, A3, A2, A5;

    end;

    theorem :: CAT_7:27

    for C be category, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st (f2 * f1) is monomorphism & ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} holds f1 is monomorphism

    proof

      let C be category;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume

       A1: (f2 * f1) is monomorphism;

      assume

       A2: ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} ;

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

      let d be Object of C;

      assume

       A3: ( Hom (d,a)) <> {} ;

      let g1,g2 be Morphism of d, a;

      assume

       A4: (f1 * g1) = (f1 * g2);

      ((f2 * f1) * g1) = (f2 * (f1 * g1)) by A2, A3, Th23

      .= ((f2 * f1) * g2) by A2, A4, A3, Th23;

      hence g1 = g2 by A1, A3;

    end;

    definition

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

      :: CAT_7:def7

      attr f is section_ means ( Hom (a,b)) <> {} & ( Hom (b,a)) <> {} & ex g be Morphism of b, a st (g * f) = ( id- a);

      :: CAT_7:def8

      attr f is retraction means ( Hom (a,b)) <> {} & ( Hom (b,a)) <> {} & ex g be Morphism of b, a st (f * g) = ( id- b);

    end

    theorem :: CAT_7:28

    

     Th28: for C be non empty category, a,b be Object of C, f be Morphism of a, b st f is section_ holds f is monomorphism

    proof

      let C be non empty category;

      let a,b be Object of C;

      let f be Morphism of a, b;

      assume

       A1: f is section_;

      then

      consider g be Morphism of b, a such that

       A2: (g * f) = ( id- a);

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

      let c be Object of C;

      assume

       A3: ( Hom (c,a)) <> {} ;

      let g1,g2 be Morphism of c, a;

      assume

       A4: (f * g1) = (f * g2);

      

       A5: ((g * f) * g1) = (g * (f * g1)) by A1, A3, Th23

      .= ((g * f) * g2) by A1, A4, A3, Th23;

      

      thus g1 = ((g * f) * g1) by A3, A2, Th18

      .= g2 by A5, A3, A2, Th18;

    end;

    theorem :: CAT_7:29

    for C be composable with_identities CategoryStr, a,b be Object of C, f1 be Morphism of a, b st ( Hom (a,b)) <> {} & f1 is identity holds f1 is epimorphism

    proof

      let C be composable with_identities CategoryStr;

      let a,b be Object of C;

      let f1 be Morphism of a, b;

      assume

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

      assume

       A2: f1 is identity;

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

      let c be Object of C;

      assume

       A3: ( Hom (b,c)) <> {} ;

      let g1,g2 be Morphism of b, c;

      assume

       A4: (g1 * f1) = (g2 * f1);

      

      thus g1 = (g1 * f1) by A3, A1, A2, Th24

      .= g2 by A3, A1, A4, A2, Th24;

    end;

    theorem :: CAT_7:30

    for C be category, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st f1 is epimorphism & f2 is epimorphism holds (f2 * f1) is epimorphism

    proof

      let C be category;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume

       A1: f1 is epimorphism;

      assume

       A2: f2 is epimorphism;

      hence ( Hom (a,c)) <> {} by A1, Th22;

      let d be Object of C;

      assume

       A3: ( Hom (c,d)) <> {} ;

      let g1,g2 be Morphism of c, d;

      assume

       A4: (g1 * (f2 * f1)) = (g2 * (f2 * f1));

      

       A5: ( Hom (b,d)) <> {} by A3, A2, Th22;

      ((g1 * f2) * f1) = (g1 * (f2 * f1)) by A1, A2, A3, Th23

      .= ((g2 * f2) * f1) by A4, A1, A2, A3, Th23;

      hence g1 = g2 by A3, A2, A1, A5;

    end;

    theorem :: CAT_7:31

    for C be category, a,b,c be Object of C, f1 be Morphism of a, b, f2 be Morphism of b, c st (f2 * f1) is epimorphism & ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} holds f2 is epimorphism

    proof

      let C be category;

      let a,b,c be Object of C;

      let f1 be Morphism of a, b;

      let f2 be Morphism of b, c;

      assume

       A1: (f2 * f1) is epimorphism;

      assume

       A2: ( Hom (a,b)) <> {} & ( Hom (b,c)) <> {} ;

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

      let d be Object of C;

      assume

       A3: ( Hom (c,d)) <> {} ;

      let g1,g2 be Morphism of c, d;

      assume

       A4: (g1 * f2) = (g2 * f2);

      (g1 * (f2 * f1)) = ((g1 * f2) * f1) by A2, A3, Th23

      .= (g2 * (f2 * f1)) by A2, A4, A3, Th23;

      hence g1 = g2 by A1, A3;

    end;

    theorem :: CAT_7:32

    

     Th32: for C be non empty category, a,b be Object of C, f be Morphism of a, b st f is retraction holds f is epimorphism

    proof

      let C be non empty category;

      let a,b be Object of C;

      let f be Morphism of a, b;

      assume

       A1: f is retraction;

      then

      consider g be Morphism of b, a such that

       A2: (f * g) = ( id- b);

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

      let c be Object of C;

      assume

       A3: ( Hom (b,c)) <> {} ;

      let g1,g2 be Morphism of b, c;

      assume

       A4: (g1 * f) = (g2 * f);

      

       A5: (g1 * (f * g)) = ((g1 * f) * g) by A1, A3, Th23

      .= (g2 * (f * g)) by A1, A4, A3, Th23;

      

      thus g1 = (g1 * (f * g)) by A3, A2, Th18

      .= g2 by A5, A3, A2, Th18;

    end;

    definition

      let C be composable with_identities CategoryStr;

      let a,b be Object of C;

      let f be Morphism of a, b;

      :: CAT_7:def9

      attr f is isomorphism means ( Hom (a,b)) <> {} & ( Hom (b,a)) <> {} & ex g be Morphism of b, a st (g * f) = ( id- a) & (f * g) = ( id- b);

    end

    definition

      let C be composable with_identities CategoryStr;

      let a,b be Object of C;

      :: CAT_7:def10

      pred a,b are_isomorphic means ex f be Morphism of a, b st f is isomorphism;

    end

    definition

      let C be composable with_identities CategoryStr;

      let a,b be Object of C;

      :: original: are_isomorphic

      redefine

      :: CAT_7:def11

      pred a,b are_isomorphic means ( Hom (a,b)) <> {} & ( Hom (b,a)) <> {} & ex f be Morphism of a, b, g be Morphism of b, a st (g * f) = ( id- a) & (f * g) = ( id- b);

      correctness

      proof

        hereby

          assume (a,b) are_isomorphic ;

          then

          consider f be Morphism of a, b such that

           A1: f is isomorphism;

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

          consider g be Morphism of b, a such that

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

          take f, g;

          thus (g * f) = ( id- a) & (f * g) = ( id- b) by A2;

        end;

        assume

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

        given f be Morphism of a, b, g be Morphism of b, a such that

         A4: (g * f) = ( id- a) & (f * g) = ( id- b);

        f is isomorphism by A3, A4;

        hence (a,b) are_isomorphic ;

      end;

    end

    theorem :: CAT_7:33

    for C be non empty category, a,b be Object of C, f be Morphism of a, b st f is isomorphism holds f is monomorphism & f is epimorphism

    proof

      let C be non empty category;

      let a,b be Object of C;

      let f be Morphism of a, b;

      assume

       A1: f is isomorphism;

      f is section_ by A1;

      hence f is monomorphism by Th28;

      f is retraction by A1;

      hence f is epimorphism by Th32;

    end;

    begin

    definition

      let C be CategoryStr;

      :: CAT_7:def12

      attr C is preorder means

      : Def12: for a,b be Object of C, f1,f2 be morphism of C holds f1 in ( Hom (a,b)) & f2 in ( Hom (a,b)) implies f1 = f2;

    end

    registration

      cluster empty -> preorder for CategoryStr;

      correctness ;

    end

    registration

      cluster strict preorder for CategoryStr;

      correctness

      proof

        set C = the strict empty CategoryStr;

        take C;

        thus thesis;

      end;

    end

    registration

      cluster preorder -> associative for composable with_identities CategoryStr;

      correctness

      proof

        let C be composable with_identities CategoryStr;

        assume

         A1: C is preorder;

        per cases ;

          suppose C is empty;

          hence thesis;

        end;

          suppose

           A2: C is non empty;

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

          proof

            let f1,f2,f3 be morphism of C;

            assume

             A3: f1 |> f2 & f2 |> f3 & (f1 (*) f2) |> f3 & f1 |> (f2 (*) f3);

            set f11 = (f1 (*) (f2 (*) f3)), f22 = ((f1 (*) f2) (*) f3);

            

             A4: ( dom f11) = ( dom (f2 (*) f3)) by A3, Th4

            .= ( dom f3) by A3, Th4

            .= ( dom f22) by A3, Th4;

            ( cod f11) = ( cod f1) by A3, Th4

            .= ( cod (f1 (*) f2)) by A3, Th4

            .= ( cod f22) by A3, Th4;

            then f11 in ( Hom (( dom f11),( cod f11))) & f22 in ( Hom (( dom f11),( cod f11))) by A4, A2, Th19;

            hence (f1 (*) (f2 (*) f3)) = ((f1 (*) f2) (*) f3) by A1;

          end;

          hence thesis by CAT_6:def 10;

        end;

      end;

    end

    definition

      let C be with_identities CategoryStr;

      :: CAT_7:def13

      func RelOb (C) -> Relation of ( Ob C) equals { [a, b] where a,b be Object of C : ex f be morphism of C st f in ( Hom (a,b)) };

      coherence

      proof

        set IT = { [a, b] where a,b be Object of C : ex f be morphism of C st f in ( Hom (a,b)) };

        for x be object st x in IT holds x in [:( Ob C), ( Ob C):]

        proof

          let x be object;

          assume x in IT;

          then

          consider a,b be Object of C such that

           A1: x = [a, b] & ex f be morphism of C st f in ( Hom (a,b));

          C is non empty by A1;

          hence x in [:( Ob C), ( Ob C):] by A1, ZFMISC_1:def 2;

        end;

        hence thesis by TARSKI:def 3;

      end;

    end

    registration

      let C be empty with_identities CategoryStr;

      cluster ( RelOb C) -> empty;

      correctness ;

    end

    theorem :: CAT_7:34

    

     Th34: for C be composable with_identities CategoryStr holds ( dom ( RelOb C)) = ( Ob C) & ( rng ( RelOb C)) = ( Ob C)

    proof

      let C be composable with_identities CategoryStr;

      per cases ;

        suppose C is empty;

        then ( Ob C) = {} & ( RelOb C) = {} ;

        hence thesis;

      end;

        suppose

         A1: C is non empty;

        for x be object st x in ( Ob C) holds x in ( dom ( RelOb C))

        proof

          let x be object;

          assume

           A2: x in ( Ob C);

          then

          reconsider o = x as Object of C;

          reconsider f = o as morphism of C by A2;

          f is identity by A1, CAT_6: 22;

          then

           A3: ( dom f) = o & ( cod f) = o by Th6;

          f in ( Hom (( dom f),( cod f))) by A1, Th19;

          then [o, o] in ( RelOb C) by A3;

          hence x in ( dom ( RelOb C)) by XTUPLE_0:def 12;

        end;

        then ( Ob C) c= ( dom ( RelOb C)) by TARSKI:def 3;

        hence ( dom ( RelOb C)) = ( Ob C) by XBOOLE_0:def 10;

        for x be object st x in ( Ob C) holds x in ( rng ( RelOb C))

        proof

          let x be object;

          assume

           A4: x in ( Ob C);

          then

          reconsider o = x as Object of C;

          reconsider f = o as morphism of C by A4;

          f is identity by A1, CAT_6: 22;

          then

           A5: ( dom f) = o & ( cod f) = o by Th6;

          f in ( Hom (( dom f),( cod f))) by A1, Th19;

          then [o, o] in ( RelOb C) by A5;

          hence x in ( rng ( RelOb C)) by XTUPLE_0:def 13;

        end;

        then ( Ob C) c= ( rng ( RelOb C)) by TARSKI:def 3;

        hence ( rng ( RelOb C)) = ( Ob C) by XBOOLE_0:def 10;

      end;

    end;

    theorem :: CAT_7:35

    

     Th35: for C1,C2 be composable with_identities CategoryStr st C1 ~= C2 holds (( RelOb C1),( RelOb C2)) are_isomorphic

    proof

      let C1,C2 be composable with_identities CategoryStr;

      assume

       A1: C1 ~= C2;

      per cases ;

        suppose

         A2: C1 is empty;

        then

         A3: ( RelOb C1) is empty;

        C2 is empty by A2, A1, Th15;

        then ( RelOb C2) is empty;

        hence thesis by A3, WELLORD1: 38;

      end;

        suppose

         A4: C1 is non empty;

        then

         A5: C2 is non empty by A1, Th15;

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

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

        (F * G) = ( id C1) by A6, CAT_6:def 27

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

        then

         A7: F is one-to-one by FUNCT_2: 23;

        set F1 = (F | ( Ob C1));

        

         A8: ( dom F) = the carrier of C1 by A5, FUNCT_2:def 1

        .= ( Mor C1) by CAT_6:def 1;

        then

         A9: ( dom F1) = ( Ob C1) by RELAT_1: 62;

        

         A10: ( Ob C1) = (( Ob C1) \/ ( Ob C1))

        .= (( Ob C1) \/ ( rng ( RelOb C1))) by Th34

        .= (( dom ( RelOb C1)) \/ ( rng ( RelOb C1))) by Th34

        .= ( field ( RelOb C1)) by RELAT_1:def 6;

        then

         A11: ( dom F1) = ( field ( RelOb C1)) by A8, RELAT_1: 62;

        for y be object holds y in ( rng F1) implies y in ( Ob C2)

        proof

          let y be object;

          assume y in ( rng F1);

          then

          consider x be object such that

           A12: x in ( dom F1) & y = (F1 . x) by FUNCT_1:def 3;

          x in ( Ob C1) by A12;

          then x 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

           A13: x = f & f is identity & f in ( Mor C1);

          

           A14: y = (F . x) by A12, FUNCT_1: 49

          .= (F . f) by A13, A4, CAT_6:def 21;

          (F . f) is identity by A13, CAT_6:def 22, A6, CAT_6:def 25;

          then (F . f) in { g where g be morphism of C2 : g is identity & g in ( Mor C2) } by A5;

          hence y in ( Ob C2) by A14, CAT_6:def 17;

        end;

        then

         A15: ( rng F1) c= ( Ob C2) by TARSKI:def 3;

        for y be object holds y in ( Ob C2) implies y in ( rng F1)

        proof

          let y be object;

          assume

           A16: y in ( Ob C2);

          set x = (G . y);

          

           A17: (G * F) = ( id C2) by A6, CAT_6:def 27;

          

           A18: y in ( Mor C2) by A16;

          then

           A19: y in the carrier of C2 by CAT_6:def 1;

          y in ( dom ( id the carrier of C2)) by A18, CAT_6:def 1;

          then

           A20: y in ( dom (G * F)) by A17, STRUCT_0:def 4;

          then

           A21: x in ( dom F) by FUNCT_1: 11;

          

           A22: (F . x) = ((G * F) . y) by A20, FUNCT_1: 12

          .= (( id C2) . y) by A6, CAT_6:def 27

          .= (( id the carrier of C2) . y) by STRUCT_0:def 4

          .= y by A19, FUNCT_1: 18;

          y in { g where g be morphism of C2 : g is identity & g in ( Mor C2) } by A16, CAT_6:def 17;

          then

          consider g be morphism of C2 such that

           A23: y = g & g is identity & g in ( Mor C2);

          

           A24: x = (G . g) by A23, A4, A1, Th15, CAT_6:def 21;

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

          then (G . g) in { f where f be morphism of C1 : f is identity & f in ( Mor C1) } by A4;

          then x in ( Ob C1) by A24, CAT_6:def 17;

          hence y in ( rng F1) by A21, A22, FUNCT_1: 50;

        end;

        then

         A25: ( Ob C2) c= ( rng F1) by TARSKI:def 3;

        then

         A26: ( rng F1) = ( Ob C2) by A15, XBOOLE_0:def 10;

        

         A27: ( rng F1) = (( Ob C2) \/ ( Ob C2)) by A25, A15, XBOOLE_0:def 10

        .= (( Ob C2) \/ ( rng ( RelOb C2))) by Th34

        .= (( dom ( RelOb C2)) \/ ( rng ( RelOb C2))) by Th34

        .= ( field ( RelOb C2)) by RELAT_1:def 6;

        

         A28: F1 is one-to-one by A7, FUNCT_1: 52;

        for a,b be object holds [a, b] in ( RelOb C1) iff (a in ( field ( RelOb C1)) & b in ( field ( RelOb C1)) & [(F1 . a), (F1 . b)] in ( RelOb C2))

        proof

          let a,b be object;

          hereby

            assume [a, b] in ( RelOb C1);

            then

            consider a1,b1 be Object of C1 such that

             A29: [a, b] = [a1, b1] & ex f be morphism of C1 st f in ( Hom (a1,b1));

            consider f be morphism of C1 such that

             A30: f in ( Hom (a1,b1)) by A29;

            

             A31: a = a1 & b = b1 by A29, XTUPLE_0: 1;

            ( Ob C1) is non empty by A4;

            then

             A32: a1 in ( Ob C1) & b1 in ( Ob C1);

            hence a in ( field ( RelOb C1)) & b in ( field ( RelOb C1)) by A10, A29, XTUPLE_0: 1;

            

             A33: (F1 . a) = (F . a1) by A31, A4, FUNCT_1: 49;

            

             A34: (F1 . b) = (F . b1) by A31, A4, FUNCT_1: 49;

            a in ( dom F1) & b in ( dom F1) by A9, A29, XTUPLE_0: 1, A32;

            then

            reconsider a2 = (F1 . a), b2 = (F1 . b) as Object of C2 by A26, FUNCT_1: 3;

            ( dom f) = a1 & ( cod f) = b1 by A30, A4, Th20;

            then ( dom (F . f)) = (F . a1) & ( cod (F . f)) = (F . b1) by A4, A5, A6, CAT_6: 32;

            then (F . f) in ( Hom (a2,b2)) by A33, A34, A5, Th20;

            hence [(F1 . a), (F1 . b)] in ( RelOb C2);

          end;

          assume

           A35: a in ( field ( RelOb C1)) & b in ( field ( RelOb C1));

          assume [(F1 . a), (F1 . b)] in ( RelOb C2);

          then

          consider a2,b2 be Object of C2 such that

           A36: [(F1 . a), (F1 . b)] = [a2, b2] & ex g be morphism of C2 st g in ( Hom (a2,b2));

          consider g be morphism of C2 such that

           A37: g in ( Hom (a2,b2)) by A36;

          reconsider a1 = a, b1 = b as Object of C1 by A10, A35;

          

           A38: (F * G) = ( id C1) by A6, CAT_6:def 27;

          

           A39: a in ( Mor C1) by A10, A35;

          then

           A40: a in the carrier of C1 by CAT_6:def 1;

          a in ( dom ( id the carrier of C1)) by A39, CAT_6:def 1;

          then

           A41: a in ( dom (F * G)) by A38, STRUCT_0:def 4;

          

           A42: (G . a2) = (G . (F1 . a)) by A36, XTUPLE_0: 1

          .= (G . (F . a)) by A10, A35, FUNCT_1: 49

          .= ((F * G) . a) by A41, FUNCT_1: 12

          .= (( id C1) . a) by A6, CAT_6:def 27

          .= (( id the carrier of C1) . a) by STRUCT_0:def 4

          .= a1 by A40, FUNCT_1: 18;

          

           A43: b in ( Mor C1) by A10, A35;

          then

           A44: b in the carrier of C1 by CAT_6:def 1;

          b in ( dom ( id the carrier of C1)) by A43, CAT_6:def 1;

          then

           A45: b in ( dom (F * G)) by A38, STRUCT_0:def 4;

          

           A46: (G . b2) = (G . (F1 . b)) by A36, XTUPLE_0: 1

          .= (G . (F . b)) by A10, A35, FUNCT_1: 49

          .= ((F * G) . b) by A45, FUNCT_1: 12

          .= (( id C1) . b) by A6, CAT_6:def 27

          .= (( id the carrier of C1) . b) by STRUCT_0:def 4

          .= b1 by A44, FUNCT_1: 18;

          (G . ( dom g)) = (G . a2) & (G . ( cod g)) = (G . b2) by A37, A5, Th20;

          then ( dom (G . g)) = (G . a2) & ( cod (G . g)) = (G . b2) by A4, A5, A6, CAT_6: 32;

          then (G . g) in ( Hom (a1,b1)) by A42, A46, A4, Th20;

          hence [a, b] in ( RelOb C1);

        end;

        hence thesis by A11, A27, A28, WELLORD1:def 7, WELLORD1:def 8;

      end;

    end;

    registration

      let C be non empty composable with_identities CategoryStr;

      cluster ( RelOb C) -> non empty;

      correctness

      proof

        assume ( RelOb C) is empty;

        then ( dom ( RelOb C)) = {} ;

        hence contradiction by Th34;

      end;

    end

    theorem :: CAT_7:36

    

     Th36: for C be preorder composable with_identities CategoryStr st C is non empty holds ex F be Function of C, ( RelOb C) st F is bijective & (for f be morphism of C holds (F . f) = [( dom f), ( cod f)])

    proof

      let C be preorder composable with_identities CategoryStr;

      assume

       A1: C is non empty;

      then

      reconsider C1 = C as non empty composable with_identities CategoryStr;

      defpred P[ object, object] means for f be morphism of C1 st $1 = f holds $2 = [( dom f), ( cod f)];

      

       A2: for x be Element of the carrier of C1 holds ex y be Element of ( RelOb C1) st P[x, y]

      proof

        let x be Element of the carrier of C1;

        reconsider f = x as morphism of C1 by CAT_6:def 1;

        set y = [( dom f), ( cod f)];

        f in ( Hom (( dom f),( cod f)));

        then y in ( RelOb C1);

        then

        reconsider y as Element of ( RelOb C1);

        take y;

        thus P[x, y];

      end;

      consider F be Function of the carrier of C1, ( RelOb C1) such that

       A3: for x be Element of the carrier of C1 holds P[x, (F . x)] from FUNCT_2:sch 3( A2);

      reconsider F as Function of C, ( RelOb C);

      take F;

      for y be object st y in ( RelOb C) holds y in ( rng F)

      proof

        let y be object;

        assume y in ( RelOb C);

        then

        consider a,b be Object of C such that

         A4: y = [a, b] & ex f be morphism of C st f in ( Hom (a,b));

        consider f be morphism of C such that

         A5: f in ( Hom (a,b)) by A4;

        reconsider x = f as Element of C1 by CAT_6:def 1;

        x in the carrier of C1;

        then

         A6: x in ( dom F) by FUNCT_2:def 1;

        a = ( dom f) & b = ( cod f) by A1, A5, Th20;

        then (F . x) = [a, b] by A3;

        hence y in ( rng F) by A4, A6, FUNCT_1: 3;

      end;

      then ( RelOb C1) c= ( rng F) by TARSKI:def 3;

      then

       A7: F is onto by FUNCT_2:def 3, XBOOLE_0:def 10;

      for x1,x2 be object st x1 in ( dom F) & x2 in ( dom F) & (F . x1) = (F . x2) holds x1 = x2

      proof

        let x1,x2 be object;

        assume

         A8: x1 in ( dom F) & x2 in ( dom F);

        assume

         A9: (F . x1) = (F . x2);

        reconsider x11 = x1, x22 = x2 as Element of the carrier of C1 by A8;

        reconsider f1 = x11, f2 = x22 as morphism of C1 by CAT_6:def 1;

        

         A10: (F . f1) = [( dom f1), ( cod f1)] by A3;

        (F . f2) = [( dom f2), ( cod f2)] by A3;

        then ( dom f1) = ( dom f2) & ( cod f1) = ( cod f2) by A10, A9, XTUPLE_0: 1;

        then f1 in ( Hom (( dom f1),( cod f1))) & f2 in ( Hom (( dom f1),( cod f1)));

        hence x1 = x2 by Def12;

      end;

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

      hence F is bijective by A7;

      let f be morphism of C;

      reconsider x = f as Element of the carrier of C1 by CAT_6:def 1;

      

      thus (F . f) = (F . x)

      .= [( dom f), ( cod f)] by A3;

    end;

    theorem :: CAT_7:37

    

     Th37: for O be ordinal number holds ex C be strict preorder category st ( Ob C) = O & (for o1,o2 be Object of C st o1 in o2 holds ( Hom (o1,o2)) = { [o1, o2]}) & ( RelOb C) = ( RelIncl O) & ( Mor C) = (O \/ { [o1, o2] where o1,o2 be Element of O : o1 in o2 })

    proof

      let O be ordinal number;

      per cases ;

        suppose

         A1: O is empty;

        set C = the strict empty category;

        take C;

        thus ( Ob C) = O by A1;

        for x be object holds not x in { [o1, o2] where o1,o2 be Element of O : o1 in o2 }

        proof

          let x be object;

          assume x in { [o1, o2] where o1,o2 be Element of O : o1 in o2 };

          then

          consider o1,o2 be Element of O such that

           A2: x = [o1, o2] & o1 in o2;

          thus contradiction by A2, A1, SUBSET_1:def 1;

        end;

        hence thesis by A1, SUBSET_1:def 1, XBOOLE_0:def 1;

      end;

        suppose

         A3: O is non empty;

        set X1 = { [o1, o2] where o1,o2 be Element of O : o1 in o2 };

        set X = (O \/ X1);

        set F1 = { [ [o1, o1], o1] where o1 be Element of O : not contradiction };

        set F2 = { [ [o2, [o1, o2]], [o1, o2]] where o1,o2 be Element of O : o1 in o2 };

        set F3 = { [ [ [o1, o2], o1], [o1, o2]] where o1,o2 be Element of O : o1 in o2 };

        set F4 = { [ [ [o2, o3], [o1, o2]], [o1, o3]] where o1,o2,o3 be Element of O : o1 in o2 & o2 in o3 };

        set F = (((F1 \/ F2) \/ F3) \/ F4);

        

         A4: for x be object st x in F holds (ex o1 be Element of O st x = [ [o1, o1], o1]) or (ex o1,o2 be Element of O st o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]])) or (ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]])

        proof

          let x be object;

          assume

           A5: x in F;

          per cases by A5, XBOOLE_0:def 3;

            suppose

             A6: x in ((F1 \/ F2) \/ F3);

            per cases by A6, XBOOLE_0:def 3;

              suppose

               A7: x in (F1 \/ F2);

              per cases by A7, XBOOLE_0:def 3;

                suppose x in F1;

                then

                consider o1 be Element of O such that

                 A8: x = [ [o1, o1], o1];

                thus thesis by A8;

              end;

                suppose x in F2;

                then

                consider o1,o2 be Element of O such that

                 A9: x = [ [o2, [o1, o2]], [o1, o2]] & o1 in o2;

                thus thesis by A9;

              end;

            end;

              suppose x in F3;

              then

              consider o1,o2 be Element of O such that

               A10: x = [ [ [o1, o2], o1], [o1, o2]] & o1 in o2;

              thus thesis by A10;

            end;

          end;

            suppose x in F4;

            then

            consider o1,o2,o3 be Element of O such that

             A11: x = [ [ [o2, o3], [o1, o2]], [o1, o3]] & o1 in o2 & o2 in o3;

            thus thesis by A11;

          end;

        end;

        

         A12: for x,y1,y2 be object st [x, y1] in F & [x, y2] in F holds y1 = y2

        proof

          let x,y1,y2 be object;

          assume

           A13: [x, y1] in F;

          per cases by A4, A13;

            suppose ex o1 be Element of O st [x, y1] = [ [o1, o1], o1];

            then

            consider o1 be Element of O such that

             A14: [x, y1] = [ [o1, o1], o1];

            

             A15: x = [o1, o1] & y1 = o1 by A14, XTUPLE_0: 1;

            assume

             A16: [x, y2] in F;

            per cases by A4, A16;

              suppose ex o1 be Element of O st [x, y2] = [ [o1, o1], o1];

              then

              consider o11 be Element of O such that

               A17: [x, y2] = [ [o11, o11], o11];

              x = [o11, o11] & y2 = o11 by A17, XTUPLE_0: 1;

              hence thesis by A15, XTUPLE_0: 1;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ( [x, y2] = [ [o2, [o1, o2]], [o1, o2]] or [x, y2] = [ [ [o1, o2], o1], [o1, o2]]);

              then

              consider o11,o12 be Element of O such that

               A18: o11 in o12 & ( [x, y2] = [ [o12, [o11, o12]], [o11, o12]] or [x, y2] = [ [ [o11, o12], o11], [o11, o12]]);

              x = [o12, [o11, o12]] or x = [ [o11, o12], o11] by A18, XTUPLE_0: 1;

              hence thesis by A15, XTUPLE_0: 1;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [x, y2] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

              then

              consider o11,o12,o13 be Element of O such that

               A19: o11 in o12 & o12 in o13 & [x, y2] = [ [ [o12, o13], [o11, o12]], [o11, o13]];

              x = [ [o12, o13], [o11, o12]] by A19, XTUPLE_0: 1;

              hence thesis by A15, XTUPLE_0: 1;

            end;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ( [x, y1] = [ [o2, [o1, o2]], [o1, o2]] or [x, y1] = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o1,o2 be Element of O such that

             A20: o1 in o2 & ( [x, y1] = [ [o2, [o1, o2]], [o1, o2]] or [x, y1] = [ [ [o1, o2], o1], [o1, o2]]);

            per cases by A20;

              suppose [x, y1] = [ [o2, [o1, o2]], [o1, o2]];

              then

               A21: x = [o2, [o1, o2]] & y1 = [o1, o2] by XTUPLE_0: 1;

              assume

               A22: [x, y2] in F;

              per cases by A4, A22;

                suppose ex o1 be Element of O st [x, y2] = [ [o1, o1], o1];

                then

                consider o11 be Element of O such that

                 A23: [x, y2] = [ [o11, o11], o11];

                x = [o11, o11] by A23, XTUPLE_0: 1;

                hence thesis by A21, XTUPLE_0: 1;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & ( [x, y2] = [ [o2, [o1, o2]], [o1, o2]] or [x, y2] = [ [ [o1, o2], o1], [o1, o2]]);

                then

                consider o11,o12 be Element of O such that

                 A24: o11 in o12 & ( [x, y2] = [ [o12, [o11, o12]], [o11, o12]] or [x, y2] = [ [ [o11, o12], o11], [o11, o12]]);

                per cases by A24;

                  suppose [x, y2] = [ [o12, [o11, o12]], [o11, o12]];

                  then x = [o12, [o11, o12]] & y2 = [o11, o12] by XTUPLE_0: 1;

                  hence thesis by A21, XTUPLE_0: 1;

                end;

                  suppose [x, y2] = [ [ [o11, o12], o11], [o11, o12]];

                  then x = [ [o11, o12], o11] by XTUPLE_0: 1;

                  hence thesis by A21, XTUPLE_0: 1;

                end;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [x, y2] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

                then

                consider o11,o12,o13 be Element of O such that

                 A25: o11 in o12 & o12 in o13 & [x, y2] = [ [ [o12, o13], [o11, o12]], [o11, o13]];

                x = [ [o12, o13], [o11, o12]] by A25, XTUPLE_0: 1;

                hence thesis by A21, XTUPLE_0: 1;

              end;

            end;

              suppose [x, y1] = [ [ [o1, o2], o1], [o1, o2]];

              then

               A26: x = [ [o1, o2], o1] & y1 = [o1, o2] by XTUPLE_0: 1;

              assume

               A27: [x, y2] in F;

              per cases by A4, A27;

                suppose ex o1 be Element of O st [x, y2] = [ [o1, o1], o1];

                then

                consider o11 be Element of O such that

                 A28: [x, y2] = [ [o11, o11], o11];

                x = [o11, o11] by A28, XTUPLE_0: 1;

                hence thesis by A26, XTUPLE_0: 1;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & ( [x, y2] = [ [o2, [o1, o2]], [o1, o2]] or [x, y2] = [ [ [o1, o2], o1], [o1, o2]]);

                then

                consider o11,o12 be Element of O such that

                 A29: o11 in o12 & ( [x, y2] = [ [o12, [o11, o12]], [o11, o12]] or [x, y2] = [ [ [o11, o12], o11], [o11, o12]]);

                per cases by A29;

                  suppose [x, y2] = [ [o12, [o11, o12]], [o11, o12]];

                  then x = [o12, [o11, o12]] by XTUPLE_0: 1;

                  hence thesis by A26, XTUPLE_0: 1;

                end;

                  suppose [x, y2] = [ [ [o11, o12], o11], [o11, o12]];

                  then

                   A30: x = [ [o11, o12], o11] & y2 = [o11, o12] by XTUPLE_0: 1;

                  thus thesis by A26, A30, XTUPLE_0: 1;

                end;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [x, y2] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

                then

                consider o11,o12,o13 be Element of O such that

                 A31: o11 in o12 & o12 in o13 & [x, y2] = [ [ [o12, o13], [o11, o12]], [o11, o13]];

                x = [ [o12, o13], [o11, o12]] by A31, XTUPLE_0: 1;

                hence thesis by A26, XTUPLE_0: 1;

              end;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [x, y1] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A32: o1 in o2 & o2 in o3 & [x, y1] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            

             A33: x = [ [o2, o3], [o1, o2]] & y1 = [o1, o3] by A32, XTUPLE_0: 1;

            assume

             A34: [x, y2] in F;

            per cases by A4, A34;

              suppose ex o1 be Element of O st [x, y2] = [ [o1, o1], o1];

              then

              consider o11 be Element of O such that

               A35: [x, y2] = [ [o11, o11], o11];

              x = [o11, o11] by A35, XTUPLE_0: 1;

              hence thesis by A33, XTUPLE_0: 1;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ( [x, y2] = [ [o2, [o1, o2]], [o1, o2]] or [x, y2] = [ [ [o1, o2], o1], [o1, o2]]);

              then

              consider o11,o12 be Element of O such that

               A36: o11 in o12 & ( [x, y2] = [ [o12, [o11, o12]], [o11, o12]] or [x, y2] = [ [ [o11, o12], o11], [o11, o12]]);

              x = [o12, [o11, o12]] or x = [ [o11, o12], o11] by A36, XTUPLE_0: 1;

              hence thesis by A33, XTUPLE_0: 1;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [x, y2] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

              then

              consider o11,o12,o13 be Element of O such that

               A37: o11 in o12 & o12 in o13 & [x, y2] = [ [ [o12, o13], [o11, o12]], [o11, o13]];

              x = [ [o12, o13], [o11, o12]] & y2 = [o11, o13] by A37, XTUPLE_0: 1;

              then [o1, o2] = [o11, o12] & [o2, o3] = [o12, o13] by A33, XTUPLE_0: 1;

              then o1 = o11 & o2 = o12 & o3 = o13 by XTUPLE_0: 1;

              hence thesis by A32, XTUPLE_0: 1, A37;

            end;

          end;

        end;

        

         A38: for o1,o2 be Element of O st o1 in o2 holds [o1, o2] in X

        proof

          let o1,o2 be Element of O;

          assume o1 in o2;

          then [o1, o2] in X1;

          hence [o1, o2] in X by XBOOLE_0:def 3;

        end;

        for x be object st x in F holds x in [: [:X, X:], X:]

        proof

          let x be object;

          assume

           A39: x in F;

          per cases by A39, A4;

            suppose ex o1 be Element of O st x = [ [o1, o1], o1];

            then

            consider o1 be Element of O such that

             A40: x = [ [o1, o1], o1];

            

             A41: o1 in X by A3, XBOOLE_0:def 3;

            then [o1, o1] in [:X, X:] by ZFMISC_1:def 2;

            hence thesis by A40, A41, ZFMISC_1:def 2;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o1,o2 be Element of O such that

             A42: o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]]);

            per cases by A42;

              suppose

               A43: x = [ [o2, [o1, o2]], [o1, o2]];

              

               A44: o2 in X & [o1, o2] in X by A42, A38, A3, XBOOLE_0:def 3;

              then [o2, [o1, o2]] in [:X, X:] by ZFMISC_1:def 2;

              hence thesis by A43, A44, ZFMISC_1:def 2;

            end;

              suppose

               A45: x = [ [ [o1, o2], o1], [o1, o2]];

              

               A46: o1 in X & [o1, o2] in X by A42, A38, A3, XBOOLE_0:def 3;

              then [ [o1, o2], o1] in [:X, X:] by ZFMISC_1:def 2;

              hence thesis by A45, A46, ZFMISC_1:def 2;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A47: o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            

             A48: [o1, o2] in X & [o2, o3] in X & [o1, o3] in X by A47, A38, ORDINAL1: 10;

            then [ [o2, o3], [o1, o2]] in [:X, X:] by ZFMISC_1:def 2;

            hence thesis by A47, A48, ZFMISC_1:def 2;

          end;

        end;

        then

        reconsider F as PartFunc of [:X, X:], X by A12, TARSKI:def 3, FUNCT_1:def 1;

        set C = CategoryStr (# X, F #);

        reconsider C as strict non empty CategoryStr by A3;

        

         A49: for f be morphism of C holds (f is Element of O) or (ex o1,o2 be Element of O st f = [o1, o2] & o1 in o2)

        proof

          let f be morphism of C;

          f in ( Mor C);

          then

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

          per cases by A50, XBOOLE_0:def 3;

            suppose f in O;

            hence thesis;

          end;

            suppose f in X1;

            then

            consider o1,o2 be Element of O such that

             A51: f = [o1, o2] & o1 in o2;

            thus thesis by A51;

          end;

        end;

        

         A52: for o be Element of O holds o is morphism of C

        proof

          let o be Element of O;

          o in X by A3, XBOOLE_0:def 3;

          hence thesis by CAT_6:def 1;

        end;

        

         A53: for o1,o2 be Element of O st o1 in o2 holds ex f be morphism of C st f = [o1, o2]

        proof

          let o1,o2 be Element of O;

          assume o1 in o2;

          then [o1, o2] in X by A38;

          then

          reconsider f = [o1, o2] as morphism of C by CAT_6:def 1;

          take f;

          thus thesis;

        end;

        

         A54: for x be object st (ex o1 be Element of O st x = [ [o1, o1], o1]) or (ex o1,o2 be Element of O st o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]])) or (ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]]) holds x in F

        proof

          let x be object;

          assume

           A55: (ex o1 be Element of O st x = [ [o1, o1], o1]) or (ex o1,o2 be Element of O st o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]])) or (ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]]);

          per cases by A55;

            suppose ex o1 be Element of O st x = [ [o1, o1], o1];

            then x in F1;

            then x in (F1 \/ F2) by XBOOLE_0:def 3;

            then x in ((F1 \/ F2) \/ F3) by XBOOLE_0:def 3;

            hence thesis by XBOOLE_0:def 3;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & (x = [ [o2, [o1, o2]], [o1, o2]] or x = [ [ [o1, o2], o1], [o1, o2]]);

            then x in F2 or x in F3;

            then x in (F2 \/ F3) by XBOOLE_0:def 3;

            then x in (F1 \/ (F2 \/ F3)) by XBOOLE_0:def 3;

            then x in ((F1 \/ F2) \/ F3) by XBOOLE_1: 4;

            hence thesis by XBOOLE_0:def 3;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & x = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then x in F4;

            hence thesis by XBOOLE_0:def 3;

          end;

        end;

        

         A56: for o1 be Element of O, f1,f2 be morphism of C st f1 = o1 & f2 = o1 holds f1 |> f2 & (f1 (*) f2) = o1

        proof

          let o1 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A57: f1 = o1 & f2 = o1;

          

           A58: [ [f1, f2], f2] in F by A57, A54;

          then

           A59: [f1, f2] in ( dom the composition of C) by XTUPLE_0:def 12;

          hence f1 |> f2 by CAT_6:def 2;

          

          thus (f1 (*) f2) = (the composition of C . (f1,f2)) by A59, CAT_6:def 2, CAT_6:def 3

          .= (F . [f1, f2]) by BINOP_1:def 1

          .= o1 by A57, A58, FUNCT_1: 1;

        end;

        

         A60: for o1,o2 be Element of O, f1,f2 be morphism of C st f1 = o2 & f2 = [o1, o2] & o1 in o2 holds f1 |> f2 & (f1 (*) f2) = [o1, o2]

        proof

          let o1,o2 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A61: f1 = o2 & f2 = [o1, o2];

          assume

           A62: o1 in o2;

          

           A63: [ [f1, f2], f2] in F by A61, A62, A54;

          then

           A64: [f1, f2] in ( dom the composition of C) by XTUPLE_0:def 12;

          hence f1 |> f2 by CAT_6:def 2;

          

          thus (f1 (*) f2) = (the composition of C . (f1,f2)) by A64, CAT_6:def 2, CAT_6:def 3

          .= (F . [f1, f2]) by BINOP_1:def 1

          .= [o1, o2] by A61, A63, FUNCT_1: 1;

        end;

        

         A65: for o1,o2 be Element of O, f1,f2 be morphism of C st f1 = [o1, o2] & f2 = o1 & o1 in o2 holds f1 |> f2 & (f1 (*) f2) = [o1, o2]

        proof

          let o1,o2 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A66: f1 = [o1, o2] & f2 = o1;

          assume

           A67: o1 in o2;

          

           A68: [ [f1, f2], f1] in F by A66, A67, A54;

          then

           A69: [f1, f2] in ( dom the composition of C) by XTUPLE_0:def 12;

          hence f1 |> f2 by CAT_6:def 2;

          

          thus (f1 (*) f2) = (the composition of C . (f1,f2)) by A69, CAT_6:def 2, CAT_6:def 3

          .= (F . [f1, f2]) by BINOP_1:def 1

          .= [o1, o2] by A66, A68, FUNCT_1: 1;

        end;

        

         A70: for o1,o2,o3 be Element of O, f1,f2 be morphism of C st f1 = [o2, o3] & f2 = [o1, o2] & o1 in o2 & o2 in o3 holds f1 |> f2 & (f1 (*) f2) = [o1, o3]

        proof

          let o1,o2,o3 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A71: f1 = [o2, o3] & f2 = [o1, o2];

          assume

           A72: o1 in o2 & o2 in o3;

          then

          consider f3 be morphism of C such that

           A73: f3 = [o1, o3] by A53, ORDINAL1: 10;

          

           A74: [ [f1, f2], f3] in F by A71, A72, A73, A54;

          then

           A75: [f1, f2] in ( dom the composition of C) by XTUPLE_0:def 12;

          hence f1 |> f2 by CAT_6:def 2;

          

          thus (f1 (*) f2) = (the composition of C . (f1,f2)) by A75, CAT_6:def 2, CAT_6:def 3

          .= (F . [f1, f2]) by BINOP_1:def 1

          .= [o1, o3] by A73, A74, FUNCT_1: 1;

        end;

        

         A76: for o1,o2 be Element of O, f1,f2 be morphism of C st f1 = o1 & f2 = o2 & f1 |> f2 holds o1 = o2

        proof

          let o1,o2 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A77: f1 = o1 & f2 = o2;

          assume f1 |> f2;

          then [f1, f2] in ( dom the composition of C) by CAT_6:def 2;

          then

          consider y be object such that

           A78: [ [f1, f2], y] in F by XTUPLE_0:def 12;

          per cases by A78, A4;

            suppose ex o1 be Element of O st [ [f1, f2], y] = [ [o1, o1], o1];

            then

            consider o11 be Element of O such that

             A79: [ [f1, f2], y] = [ [o11, o11], o11];

             [f1, f2] = [o11, o11] by A79, XTUPLE_0: 1;

            then f1 = o11 & f2 = o11 by XTUPLE_0: 1;

            hence thesis by A77;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ( [ [f1, f2], y] = [ [o2, [o1, o2]], [o1, o2]] or [ [f1, f2], y] = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o11,o12 be Element of O such that

             A80: o11 in o12 & ( [ [f1, f2], y] = [ [o12, [o11, o12]], [o11, o12]] or [ [f1, f2], y] = [ [ [o11, o12], o11], [o11, o12]]);

             [f1, f2] = [o12, [o11, o12]] or [f1, f2] = [ [o11, o12], o11] by A80, XTUPLE_0: 1;

            hence thesis by A77, XTUPLE_0: 1;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A81: o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

             [f1, f2] = [ [o2, o3], [o1, o2]] by A81, XTUPLE_0: 1;

            hence thesis by A77, XTUPLE_0: 1;

          end;

        end;

        

         A82: for o1,o2,o3 be Element of O, f1,f2 be morphism of C st f1 = o1 & f2 = [o2, o3] & f1 |> f2 holds o1 = o3

        proof

          let o1,o2,o3 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A83: f1 = o1 & f2 = [o2, o3];

          assume f1 |> f2;

          then [f1, f2] in ( dom the composition of C) by CAT_6:def 2;

          then

          consider y be object such that

           A84: [ [f1, f2], y] in F by XTUPLE_0:def 12;

          per cases by A84, A4;

            suppose ex o1 be Element of O st [ [f1, f2], y] = [ [o1, o1], o1];

            then

            consider o11 be Element of O such that

             A85: [ [f1, f2], y] = [ [o11, o11], o11];

             [f1, f2] = [o11, o11] by A85, XTUPLE_0: 1;

            hence thesis by A83, XTUPLE_0: 1;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ( [ [f1, f2], y] = [ [o2, [o1, o2]], [o1, o2]] or [ [f1, f2], y] = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o11,o12 be Element of O such that

             A86: o11 in o12 & ( [ [f1, f2], y] = [ [o12, [o11, o12]], [o11, o12]] or [ [f1, f2], y] = [ [ [o11, o12], o11], [o11, o12]]);

            per cases by A86, XTUPLE_0: 1;

              suppose [f1, f2] = [o12, [o11, o12]];

              then f1 = o12 & f2 = [o11, o12] by XTUPLE_0: 1;

              hence thesis by A83, XTUPLE_0: 1;

            end;

              suppose [f1, f2] = [ [o11, o12], o11];

              hence thesis by A83, XTUPLE_0: 1;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A87: o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

             [f1, f2] = [ [o2, o3], [o1, o2]] by A87, XTUPLE_0: 1;

            hence thesis by A83, XTUPLE_0: 1;

          end;

        end;

        

         A88: for o1,o2,o3 be Element of O, f1,f2 be morphism of C st f1 = [o1, o2] & f2 = o3 & f1 |> f2 holds o1 = o3

        proof

          let o1,o2,o3 be Element of O;

          let f1,f2 be morphism of C;

          assume

           A89: f1 = [o1, o2] & f2 = o3;

          assume f1 |> f2;

          then [f1, f2] in ( dom the composition of C) by CAT_6:def 2;

          then

          consider y be object such that

           A90: [ [f1, f2], y] in F by XTUPLE_0:def 12;

          per cases by A90, A4;

            suppose ex o1 be Element of O st [ [f1, f2], y] = [ [o1, o1], o1];

            then

            consider o11 be Element of O such that

             A91: [ [f1, f2], y] = [ [o11, o11], o11];

             [f1, f2] = [o11, o11] by A91, XTUPLE_0: 1;

            hence thesis by A89, XTUPLE_0: 1;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ( [ [f1, f2], y] = [ [o2, [o1, o2]], [o1, o2]] or [ [f1, f2], y] = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o11,o12 be Element of O such that

             A92: o11 in o12 & ( [ [f1, f2], y] = [ [o12, [o11, o12]], [o11, o12]] or [ [f1, f2], y] = [ [ [o11, o12], o11], [o11, o12]]);

            per cases by A92, XTUPLE_0: 1;

              suppose [f1, f2] = [o12, [o11, o12]];

              hence thesis by A89, XTUPLE_0: 1;

            end;

              suppose [f1, f2] = [ [o11, o12], o11];

              then f1 = [o11, o12] & f2 = o11 by XTUPLE_0: 1;

              hence thesis by A89, XTUPLE_0: 1;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A93: o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

             [f1, f2] = [ [o2, o3], [o1, o2]] by A93, XTUPLE_0: 1;

            hence thesis by A89, XTUPLE_0: 1;

          end;

        end;

        

         A94: for o be Element of O, f be morphism of C st f = o holds f is identity

        proof

          let o be Element of O;

          let f be morphism of C;

          assume

           A95: f = o;

          for f1 be morphism of C st f |> f1 holds (f (*) f1) = f1

          proof

            let f1 be morphism of C;

            per cases by A49;

              suppose

               A96: f1 is Element of O;

              assume f |> f1;

              then f = f1 by A95, A96, A76;

              hence thesis by A96, A56;

            end;

              suppose ex o1,o2 be Element of O st f1 = [o1, o2] & o1 in o2;

              then

              consider o1,o2 be Element of O such that

               A97: f1 = [o1, o2] & o1 in o2;

              assume f |> f1;

              then o2 = o by A95, A97, A82;

              hence thesis by A95, A97, A60;

            end;

          end;

          then

           A98: f is left_identity by CAT_6:def 4;

          for f1 be morphism of C st f1 |> f holds (f1 (*) f) = f1

          proof

            let f1 be morphism of C;

            per cases by A49;

              suppose

               A99: f1 is Element of O;

              assume f1 |> f;

              then f = f1 by A95, A99, A76;

              hence thesis by A99, A56;

            end;

              suppose ex o1,o2 be Element of O st f1 = [o1, o2] & o1 in o2;

              then

              consider o1,o2 be Element of O such that

               A100: f1 = [o1, o2] & o1 in o2;

              assume f1 |> f;

              then o1 = o by A95, A100, A88;

              hence thesis by A95, A100, A65;

            end;

          end;

          hence f is identity by A98, CAT_6:def 5, CAT_6:def 14;

        end;

        for f1 be morphism of C st f1 in the carrier of C holds ex f be morphism of C st f |> f1 & f is left_identity

        proof

          let f1 be morphism of C;

          assume f1 in the carrier of C;

          per cases by A49;

            suppose

             A101: f1 is Element of O;

            take f1;

            thus f1 |> f1 by A56, A101;

            f1 is identity by A101, A94;

            hence f1 is left_identity by CAT_6:def 14;

            thus thesis;

          end;

            suppose ex o1,o2 be Element of O st f1 = [o1, o2] & o1 in o2;

            then

            consider o11,o12 be Element of O such that

             A102: f1 = [o11, o12] & o11 in o12;

            reconsider f = o12 as morphism of C by A52;

            take f;

            thus f |> f1 by A60, A102;

            f is identity by A94;

            hence f is left_identity by CAT_6:def 14;

          end;

        end;

        then

         A103: C is with_left_identities by CAT_6:def 6;

        

         A104: for f1 be morphism of C st f1 in the carrier of C holds ex f be morphism of C st f1 |> f & f is right_identity

        proof

          let f1 be morphism of C;

          assume f1 in the carrier of C;

          per cases by A49;

            suppose

             A105: f1 is Element of O;

            take f1;

            thus f1 |> f1 by A56, A105;

            f1 is identity by A105, A94;

            hence f1 is right_identity by CAT_6:def 14;

            thus thesis;

          end;

            suppose ex o1,o2 be Element of O st f1 = [o1, o2] & o1 in o2;

            then

            consider o11,o12 be Element of O such that

             A106: f1 = [o11, o12] & o11 in o12;

            reconsider f = o11 as morphism of C by A52;

            take f;

            thus f1 |> f by A65, A106;

            f is identity by A94;

            hence f is right_identity by CAT_6:def 14;

          end;

        end;

        

         A107: for f1,f2 be morphism of C st f1 |> f2 holds (ex o1 be Element of O st f1 = o1 & f2 = o1) or (ex o1,o2 be Element of O st o1 in o2 & ((f1 = [o1, o2] & f2 = o1) or (f1 = o2 & f2 = [o1, o2]))) or (ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f1 = [o2, o3] & f2 = [o1, o2])

        proof

          let f1,f2 be morphism of C;

          assume f1 |> f2;

          then [f1, f2] in ( dom the composition of C) by CAT_6:def 2;

          then

          consider y be object such that

           A108: [ [f1, f2], y] in F by XTUPLE_0:def 12;

          per cases by A108, A4;

            suppose ex o1 be Element of O st [ [f1, f2], y] = [ [o1, o1], o1];

            then

            consider o11 be Element of O such that

             A109: [ [f1, f2], y] = [ [o11, o11], o11];

             [f1, f2] = [o11, o11] by A109, XTUPLE_0: 1;

            then f1 = o11 & f2 = o11 by XTUPLE_0: 1;

            hence thesis;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ( [ [f1, f2], y] = [ [o2, [o1, o2]], [o1, o2]] or [ [f1, f2], y] = [ [ [o1, o2], o1], [o1, o2]]);

            then

            consider o11,o12 be Element of O such that

             A110: o11 in o12 & ( [ [f1, f2], y] = [ [o12, [o11, o12]], [o11, o12]] or [ [f1, f2], y] = [ [ [o11, o12], o11], [o11, o12]]);

            per cases by A110, XTUPLE_0: 1;

              suppose [f1, f2] = [o12, [o11, o12]];

              then f1 = o12 & f2 = [o11, o12] by XTUPLE_0: 1;

              hence thesis by A110;

            end;

              suppose [f1, f2] = [ [o11, o12], o11];

              then f1 = [o11, o12] & f2 = o11 by XTUPLE_0: 1;

              hence thesis by A110;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

            then

            consider o1,o2,o3 be Element of O such that

             A111: o1 in o2 & o2 in o3 & [ [f1, f2], y] = [ [ [o2, o3], [o1, o2]], [o1, o3]];

             [f1, f2] = [ [o2, o3], [o1, o2]] by A111, XTUPLE_0: 1;

            then f1 = [o2, o3] & f2 = [o1, o2] by XTUPLE_0: 1;

            hence thesis by A111;

          end;

        end;

        for f,f1,f2 be morphism of C st f1 |> f2 holds (f1 (*) f2) |> f iff f2 |> f

        proof

          let f,f1,f2 be morphism of C;

          assume

           A112: f1 |> f2;

          per cases by A112, A107;

            suppose ex o1 be Element of O st f1 = o1 & f2 = o1;

            then

            consider o1 be Element of O such that

             A113: f1 = o1 & f2 = o1;

            

             A114: (f1 (*) f2) = o1 by A113, A56;

            hereby

              assume

               A115: (f1 (*) f2) |> f;

              per cases by A115, A107;

                suppose ex o1 be Element of O st (f1 (*) f2) = o1 & f = o1;

                then

                consider o11 be Element of O such that

                 A116: (f1 (*) f2) = o11 & f = o11;

                thus f2 |> f by A113, A116, A114, A56;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & (((f1 (*) f2) = [o1, o2] & f = o1) or ((f1 (*) f2) = o2 & f = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A117: o11 in o12 & (((f1 (*) f2) = [o11, o12] & f = o11) or ((f1 (*) f2) = o12 & f = [o11, o12]));

                thus f2 |> f by A113, A114, A117, A60;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & (f1 (*) f2) = [o2, o3] & f = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A118: o11 in o12 & o12 in o13 & (f1 (*) f2) = [o12, o13] & f = [o11, o12];

                thus f2 |> f by A118, A113, A56;

              end;

            end;

            assume

             A119: f2 |> f;

            per cases by A119, A107;

              suppose ex o1 be Element of O st f2 = o1 & f = o1;

              then

              consider o11 be Element of O such that

               A120: f2 = o11 & f = o11;

              thus (f1 (*) f2) |> f by A113, A120, A114, A56;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f2 = [o1, o2] & f = o1) or (f2 = o2 & f = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A121: o11 in o12 & ((f2 = [o11, o12] & f = o11) or (f2 = o12 & f = [o11, o12]));

              (f1 (*) f2) = o12 by A113, A121, A56;

              hence (f1 (*) f2) |> f by A121, A113, A60;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f2 = [o2, o3] & f = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A122: o11 in o12 & o12 in o13 & f2 = [o12, o13] & f = [o11, o12];

              thus (f1 (*) f2) |> f by A113, A122;

            end;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ((f1 = [o1, o2] & f2 = o1) or (f1 = o2 & f2 = [o1, o2]));

            then

            consider o1,o2 be Element of O such that

             A123: o1 in o2 & ((f1 = [o1, o2] & f2 = o1) or (f1 = o2 & f2 = [o1, o2]));

            

             A124: (f1 (*) f2) = [o1, o2] by A123, A60, A65;

            hereby

              assume

               A125: (f1 (*) f2) |> f;

              per cases by A125, A107;

                suppose ex o1 be Element of O st (f1 (*) f2) = o1 & f = o1;

                then

                consider o11 be Element of O such that

                 A126: (f1 (*) f2) = o11 & f = o11;

                thus f2 |> f by A126, A123, A60, A65;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & (((f1 (*) f2) = [o1, o2] & f = o1) or ((f1 (*) f2) = o2 & f = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A127: o11 in o12 & (((f1 (*) f2) = [o11, o12] & f = o11) or ((f1 (*) f2) = o12 & f = [o11, o12]));

                o1 = o11 & o2 = o12 by A124, XTUPLE_0: 1, A127;

                hence f2 |> f by A127, A123, A60, A65, A56;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & (f1 (*) f2) = [o2, o3] & f = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A128: o11 in o12 & o12 in o13 & (f1 (*) f2) = [o12, o13] & f = [o11, o12];

                

                 A129: o1 = o12 & o2 = o13 by A124, A128, XTUPLE_0: 1;

                per cases by A123;

                  suppose f1 = [o1, o2] & f2 = o1;

                  hence f2 |> f by A129, A128, A60;

                end;

                  suppose f1 = o2 & f2 = [o1, o2];

                  hence f2 |> f by A128, A124, A70;

                end;

              end;

            end;

            assume

             A130: f2 |> f;

            per cases by A130, A107;

              suppose ex o1 be Element of O st f2 = o1 & f = o1;

              then

              consider o11 be Element of O such that

               A131: f2 = o11 & f = o11;

              thus (f1 (*) f2) |> f by A123, A131, A124, A65;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f2 = [o1, o2] & f = o1) or (f2 = o2 & f = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A132: o11 in o12 & ((f2 = [o11, o12] & f = o11) or (f2 = o12 & f = [o11, o12]));

              per cases by A132;

                suppose f2 = [o11, o12] & f = o11;

                hence (f1 (*) f2) |> f by A124, A132, A123, A65;

              end;

                suppose

                 A133: f2 = o12 & f = [o11, o12];

                thus (f1 (*) f2) |> f by A133, A124, A132, A123, A70;

              end;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f2 = [o2, o3] & f = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A134: o11 in o12 & o12 in o13 & f2 = [o12, o13] & f = [o11, o12];

              thus (f1 (*) f2) |> f by A123, A134, A124, A70;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f1 = [o2, o3] & f2 = [o1, o2];

            then

            consider o1,o2,o3 be Element of O such that

             A135: o1 in o2 & o2 in o3 & f1 = [o2, o3] & f2 = [o1, o2];

            

             A136: (f1 (*) f2) = [o1, o3] by A135, A70;

            hereby

              assume

               A137: (f1 (*) f2) |> f;

              per cases by A137, A107;

                suppose ex o1 be Element of O st (f1 (*) f2) = o1 & f = o1;

                then

                consider o11 be Element of O such that

                 A138: (f1 (*) f2) = o11 & f = o11;

                thus f2 |> f by A138, A136;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & (((f1 (*) f2) = [o1, o2] & f = o1) or ((f1 (*) f2) = o2 & f = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A139: o11 in o12 & (((f1 (*) f2) = [o11, o12] & f = o11) or ((f1 (*) f2) = o12 & f = [o11, o12]));

                o1 = o11 & o3 = o12 by A139, A136, XTUPLE_0: 1;

                hence f2 |> f by A139, A70, A135, A65;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & (f1 (*) f2) = [o2, o3] & f = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A140: o11 in o12 & o12 in o13 & (f1 (*) f2) = [o12, o13] & f = [o11, o12];

                o1 = o12 & o3 = o13 by A136, A140, XTUPLE_0: 1;

                hence f2 |> f by A140, A135, A70;

              end;

            end;

            assume

             A141: f2 |> f;

            per cases by A141, A107;

              suppose ex o1 be Element of O st f2 = o1 & f = o1;

              then

              consider o11 be Element of O such that

               A142: f2 = o11 & f = o11;

              thus (f1 (*) f2) |> f by A135, A142;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f2 = [o1, o2] & f = o1) or (f2 = o2 & f = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A143: o11 in o12 & ((f2 = [o11, o12] & f = o11) or (f2 = o12 & f = [o11, o12]));

              per cases by A143;

                suppose f2 = [o11, o12] & f = o11;

                then

                 A144: o1 = o11 & o12 = o2 by A135, XTUPLE_0: 1;

                o1 in o3 by A135, ORDINAL1: 10;

                hence (f1 (*) f2) |> f by A144, A136, A143, A135, A65;

              end;

                suppose

                 A145: f2 = o12 & f = [o11, o12];

                thus (f1 (*) f2) |> f by A145, A135;

              end;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f2 = [o2, o3] & f = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A146: o11 in o12 & o12 in o13 & f2 = [o12, o13] & f = [o11, o12];

              

               A147: o1 = o12 & o2 = o13 by A135, A146, XTUPLE_0: 1;

              o1 in o3 by A135, ORDINAL1: 10;

              hence (f1 (*) f2) |> f by A146, A147, A136, A70;

            end;

          end;

        end;

        then

         A148: C is left_composable by CAT_6:def 8;

        

         A149: for f,f1,f2 be morphism of C st f1 |> f2 holds f |> (f1 (*) f2) iff f |> f1

        proof

          let f,f1,f2 be morphism of C;

          assume

           A150: f1 |> f2;

          per cases by A150, A107;

            suppose ex o1 be Element of O st f1 = o1 & f2 = o1;

            then

            consider o1 be Element of O such that

             A151: f1 = o1 & f2 = o1;

            

             A152: (f1 (*) f2) = o1 by A151, A56;

            hereby

              assume

               A153: f |> (f1 (*) f2);

              per cases by A153, A107;

                suppose ex o1 be Element of O st f = o1 & (f1 (*) f2) = o1;

                then

                consider o11 be Element of O such that

                 A154: f = o11 & (f1 (*) f2) = o11;

                thus f |> f1 by A151, A154, A152, A56;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & (f1 (*) f2) = o1) or (f = o2 & (f1 (*) f2) = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A155: o11 in o12 & ((f = [o11, o12] & (f1 (*) f2) = o11) or (f = o12 & (f1 (*) f2) = [o11, o12]));

                thus f |> f1 by A152, A155, A151, A65;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & (f1 (*) f2) = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A156: o11 in o12 & o12 in o13 & f = [o12, o13] & (f1 (*) f2) = [o11, o12];

                thus f |> f1 by A156, A151, A56;

              end;

            end;

            assume

             A157: f |> f1;

            per cases by A157, A107;

              suppose ex o1 be Element of O st f = o1 & f1 = o1;

              then

              consider o11 be Element of O such that

               A158: f = o11 & f1 = o11;

              thus f |> (f1 (*) f2) by A151, A158, A152, A56;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & f1 = o1) or (f = o2 & f1 = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A159: o11 in o12 & ((f = [o11, o12] & f1 = o11) or (f = o12 & f1 = [o11, o12]));

              thus f |> (f1 (*) f2) by A159, A151, A152, A65;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & f1 = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A160: o11 in o12 & o12 in o13 & f = [o12, o13] & f1 = [o11, o12];

              thus f |> (f1 (*) f2) by A151, A160;

            end;

          end;

            suppose ex o1,o2 be Element of O st o1 in o2 & ((f1 = [o1, o2] & f2 = o1) or (f1 = o2 & f2 = [o1, o2]));

            then

            consider o1,o2 be Element of O such that

             A161: o1 in o2 & ((f1 = [o1, o2] & f2 = o1) or (f1 = o2 & f2 = [o1, o2]));

            

             A162: (f1 (*) f2) = [o1, o2] by A161, A60, A65;

            hereby

              assume

               A163: f |> (f1 (*) f2);

              per cases by A163, A107;

                suppose ex o1 be Element of O st f = o1 & (f1 (*) f2) = o1;

                then

                consider o11 be Element of O such that

                 A164: f = o11 & (f1 (*) f2) = o11;

                thus f |> f1 by A164, A161, A60, A65;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & (f1 (*) f2) = o1) or (f = o2 & (f1 (*) f2) = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A165: o11 in o12 & ((f = [o11, o12] & (f1 (*) f2) = o11) or (f = o12 & (f1 (*) f2) = [o11, o12]));

                o1 = o11 & o2 = o12 by A162, XTUPLE_0: 1, A165;

                hence f |> f1 by A165, A161, A60, A56, A65;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & (f1 (*) f2) = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A166: o11 in o12 & o12 in o13 & f = [o12, o13] & (f1 (*) f2) = [o11, o12];

                

                 A167: o1 = o11 & o2 = o12 by A162, A166, XTUPLE_0: 1;

                per cases by A161;

                  suppose f1 = [o1, o2] & f2 = o1;

                  hence f |> f1 by A166, A162, A70;

                end;

                  suppose f1 = o2 & f2 = [o1, o2];

                  hence f |> f1 by A167, A166, A65;

                end;

              end;

            end;

            assume

             A168: f |> f1;

            per cases by A168, A107;

              suppose ex o1 be Element of O st f = o1 & f1 = o1;

              then

              consider o11 be Element of O such that

               A169: f = o11 & f1 = o11;

              thus f |> (f1 (*) f2) by A161, A169, A162, A60;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & f1 = o1) or (f = o2 & f1 = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A170: o11 in o12 & ((f = [o11, o12] & f1 = o11) or (f = o12 & f1 = [o11, o12]));

              per cases by A170;

                suppose

                 A171: f = [o11, o12] & f1 = o11;

                thus f |> (f1 (*) f2) by A171, A162, A170, A161, A70;

              end;

                suppose

                 A172: f = o12 & f1 = [o11, o12];

                thus f |> (f1 (*) f2) by A162, A172, A170, A161, A60;

              end;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & f1 = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A173: o11 in o12 & o12 in o13 & f = [o12, o13] & f1 = [o11, o12];

              thus f |> (f1 (*) f2) by A161, A173, A162, A70;

            end;

          end;

            suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f1 = [o2, o3] & f2 = [o1, o2];

            then

            consider o1,o2,o3 be Element of O such that

             A174: o1 in o2 & o2 in o3 & f1 = [o2, o3] & f2 = [o1, o2];

            

             A175: (f1 (*) f2) = [o1, o3] by A174, A70;

            hereby

              assume

               A176: f |> (f1 (*) f2);

              per cases by A176, A107;

                suppose ex o1 be Element of O st f = o1 & (f1 (*) f2) = o1;

                then

                consider o11 be Element of O such that

                 A177: f = o11 & (f1 (*) f2) = o11;

                thus f |> f1 by A177, A175;

              end;

                suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & (f1 (*) f2) = o1) or (f = o2 & (f1 (*) f2) = [o1, o2]));

                then

                consider o11,o12 be Element of O such that

                 A178: o11 in o12 & ((f = [o11, o12] & (f1 (*) f2) = o11) or (f = o12 & (f1 (*) f2) = [o11, o12]));

                o1 = o11 & o3 = o12 by A178, A175, XTUPLE_0: 1;

                hence f |> f1 by A178, A174, A70, A60;

              end;

                suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & (f1 (*) f2) = [o1, o2];

                then

                consider o11,o12,o13 be Element of O such that

                 A179: o11 in o12 & o12 in o13 & f = [o12, o13] & (f1 (*) f2) = [o11, o12];

                o1 = o11 & o3 = o12 by A175, A179, XTUPLE_0: 1;

                hence f |> f1 by A179, A174, A70;

              end;

            end;

            assume

             A180: f |> f1;

            per cases by A180, A107;

              suppose ex o1 be Element of O st f = o1 & f1 = o1;

              then

              consider o11 be Element of O such that

               A181: f = o11 & f1 = o11;

              thus f |> (f1 (*) f2) by A174, A181;

            end;

              suppose ex o1,o2 be Element of O st o1 in o2 & ((f = [o1, o2] & f1 = o1) or (f = o2 & f1 = [o1, o2]));

              then

              consider o11,o12 be Element of O such that

               A182: o11 in o12 & ((f = [o11, o12] & f1 = o11) or (f = o12 & f1 = [o11, o12]));

              per cases by A182;

                suppose

                 A183: f = [o11, o12] & f1 = o11;

                thus f |> (f1 (*) f2) by A183, A174;

              end;

                suppose f = o12 & f1 = [o11, o12];

                then

                 A184: o2 = o11 & o12 = o3 by A174, XTUPLE_0: 1;

                o1 in o3 by A174, ORDINAL1: 10;

                hence f |> (f1 (*) f2) by A184, A175, A182, A174, A60;

              end;

            end;

              suppose ex o1,o2,o3 be Element of O st o1 in o2 & o2 in o3 & f = [o2, o3] & f1 = [o1, o2];

              then

              consider o11,o12,o13 be Element of O such that

               A185: o11 in o12 & o12 in o13 & f = [o12, o13] & f1 = [o11, o12];

              

               A186: o2 = o11 & o3 = o12 by A174, A185, XTUPLE_0: 1;

              o1 in o3 by A174, ORDINAL1: 10;

              hence f |> (f1 (*) f2) by A185, A186, A175, A70;

            end;

          end;

        end;

        reconsider C as strict non empty composable with_identities CategoryStr by A104, A103, CAT_6:def 7, CAT_6:def 12, A149, A148, CAT_6:def 9, CAT_6:def 11;

        

         A187: for x be object holds x in ( Ob C) iff x in O

        proof

          let x be object;

          hereby

            assume

             A188: x in ( Ob C);

            reconsider f = x as morphism of C by A188;

            x in ( Mor C) by A188;

            then

             A189: f in X by CAT_6:def 1;

            per cases by A189, XBOOLE_0:def 3;

              suppose f in O;

              hence x in O;

            end;

              suppose f in X1;

              then

              consider o1,o2 be Element of O such that

               A190: f = [o1, o2] & o1 in o2;

              reconsider f1 = o1, f2 = o2 as morphism of C by A52;

              

               A191: f2 is identity by A94;

              

               A192: ( cod f) = o2 by A190, A60, A191, CAT_6: 27;

              f is identity by A188, CAT_6: 22;

              hence x in O by A192, A190, Th6;

            end;

          end;

          assume

           A193: x in O;

          then

          reconsider o = x as Element of O;

          o in X by A193, XBOOLE_0:def 3;

          then

          reconsider f = o as morphism of C by CAT_6:def 1;

          f is Object of C by A94, CAT_6: 22;

          hence x in ( Ob C);

        end;

        then

         A194: ( Ob C) = O by TARSKI: 2;

        

         A195: for o1,o2 be Object of C, f be morphism of C st f in ( Hom (o1,o2)) holds (f = o1 & o1 = o2) or (f = [o1, o2] & o1 in o2)

        proof

          let o1,o2 be Object of C;

          let f be morphism of C;

          assume f in ( Hom (o1,o2));

          then

           A196: ( dom f) = o1 & ( cod f) = o2 by Th20;

          assume

           A197: not (f = o1 & o1 = o2);

          per cases by A49;

            suppose f is Element of O;

            then f is identity by A194, CAT_6: 22;

            then o1 = f & o2 = f by A196, Th6;

            hence thesis by A197;

          end;

            suppose ex o1,o2 be Element of O st f = [o1, o2] & o1 in o2;

            then

            consider o11,o22 be Element of O such that

             A198: f = [o11, o22] & o11 in o22;

            

             A199: o11 in ( Ob C) & o22 in ( Ob C) by A194;

            reconsider f1 = o11, f2 = o22 as morphism of C by A199;

            f1 is identity by A94;

            then

             A200: ( dom f) = o11 by A198, A65, CAT_6: 26;

            f2 is identity by A94;

            hence thesis by A198, A200, A196, A60, CAT_6: 27;

          end;

        end;

        

         A201: for o1,o2 be Object of C, f1,f2 be morphism of C st f1 in ( Hom (o1,o2)) & f2 in ( Hom (o1,o2)) holds f1 = f2

        proof

          let o1,o2 be Object of C;

          let f1,f2 be morphism of C;

          assume

           A202: f1 in ( Hom (o1,o2));

          assume

           A203: f2 in ( Hom (o1,o2));

          per cases by A202, A195;

            suppose

             A204: f1 = o1 & o1 = o2;

            per cases by A203, A195;

              suppose f2 = o1 & o1 = o2;

              hence thesis by A204;

            end;

              suppose f2 = [o1, o2] & o1 in o2;

              hence thesis by A204;

            end;

          end;

            suppose

             A205: f1 = [o1, o2] & o1 in o2;

            per cases by A203, A195;

              suppose f2 = o1 & o1 = o2;

              hence thesis by A205;

            end;

              suppose f2 = [o1, o2] & o1 in o2;

              hence thesis by A205;

            end;

          end;

        end;

        then C is preorder;

        then

        reconsider C as strict preorder category;

        take C;

        thus

         A206: ( Ob C) = O by A187, TARSKI: 2;

        thus

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

        proof

          let o1,o2 be Object of C;

          

           A208: o1 in ( Ob C) & o2 in ( Ob C) by SUBSET_1:def 1;

          assume

           A209: o1 in o2;

          reconsider o11 = o1, o22 = o2 as Element of O by A187;

          consider f be morphism of C such that

           A210: f = [o11, o22] by A209, A53;

          reconsider f1 = o1, f2 = o2 as morphism of C by A208;

          

           A211: f1 is identity by A94, A206;

          

           A212: ( dom f) = o1 by A210, A209, A65, A211, CAT_6: 26;

          

           A213: f2 is identity by A94, A206;

          ( cod f) = o2 by A210, A209, A60, A213, CAT_6: 27;

          then f in { ff where ff be morphism of C : ( dom ff) = o1 & ( cod ff) = o2 } by A212;

          then

           A214: f in ( Hom (o1,o2)) by Def2;

          for x be object holds x in ( Hom (o1,o2)) iff x = [o1, o2] by A210, A214, A201;

          hence ( Hom (o1,o2)) = { [o1, o2]} by TARSKI:def 1;

        end;

        for a,b be object holds [a, b] in ( RelOb C) iff [a, b] in ( RelIncl O)

        proof

          let a,b be object;

          hereby

            assume [a, b] in ( RelOb C);

            then

            consider o1,o2 be Object of C such that

             A215: [a, b] = [o1, o2] & ex f be morphism of C st f in ( Hom (o1,o2));

            consider f be morphism of C such that

             A216: f in ( Hom (o1,o2)) by A215;

            

             A217: ( dom f) = o1 & ( cod f) = o2 by A216, Th20;

            

             A218: o1 c= o2

            proof

              per cases by A49;

                suppose f is Element of O;

                then f is identity by A94;

                then ( dom f) = f & ( cod f) = f by Th6;

                hence thesis by A217;

              end;

                suppose ex o1,o2 be Element of O st f = [o1, o2] & o1 in o2;

                then

                consider o11,o22 be Element of O such that

                 A219: f = [o11, o22] & o11 in o22;

                o11 in O & o22 in O by A3;

                then

                reconsider f1 = o11, f2 = o22 as morphism of C by A206;

                

                 A220: f1 is identity by A94;

                

                 A221: f2 is identity by A94;

                o1 = o11 & o2 = o22 by A219, A65, A220, CAT_6: 26, A217, A60, A221, CAT_6: 27;

                hence thesis by A219, ORDINAL1:def 2;

              end;

            end;

            thus [a, b] in ( RelIncl O) by A206, A215, A218, WELLORD2:def 1;

          end;

          assume

           A222: [a, b] in ( RelIncl O);

          then

           A223: a in ( field ( RelIncl O)) & b in ( field ( RelIncl O)) by RELAT_1: 15;

          then

           A224: a in O & b in O by WELLORD2:def 1;

          reconsider o1 = a, o2 = b as Object of C by A223, A206, WELLORD2:def 1;

          

           A225: o1 c= o2 by A222, A224, WELLORD2:def 1;

          ex f be morphism of C st f in ( Hom (o1,o2))

          proof

            per cases by A224, ORDINAL1:def 3;

              suppose

               A226: o1 in o2;

              reconsider o11 = o1, o22 = o2 as Element of O by A223, WELLORD2:def 1;

              consider f be morphism of C such that

               A227: f = [o11, o22] by A226, A53;

              f in { [o1, o2]} by A227, TARSKI:def 1;

              then f in ( Hom (o1,o2)) by A226, A207;

              hence thesis;

            end;

              suppose o1 = o2 or o2 in o1;

              then o1 = o2 or o2 c= o1 by A224, ORDINAL1:def 2;

              then

               A228: o1 = o2 by A225, XBOOLE_0:def 10;

              o1 in ( Hom (o1,o1)) by Th21;

              hence thesis by A228;

            end;

          end;

          hence [a, b] in ( RelOb C);

        end;

        hence ( RelOb C) = ( RelIncl O) by RELAT_1:def 2;

        thus thesis by CAT_6:def 1;

      end;

    end;

    definition

      let O be ordinal number;

      let C be composable with_identities CategoryStr;

      :: CAT_7:def14

      attr C is O -ordered means

      : Def14: (( RelOb C),( RelIncl O)) are_isomorphic ;

    end

    registration

      let O be non empty ordinal number;

      cluster O -ordered -> non empty for composable with_identities CategoryStr;

      correctness

      proof

        let C be composable with_identities CategoryStr;

        assume

         A1: C is O -ordered;

        assume

         A2: C is empty;

        consider F be Function such that

         A3: F is_isomorphism_of (( RelOb C),( RelIncl O)) by A1, WELLORD1:def 8;

        ( dom F) = ( field ( RelOb C)) by A3, WELLORD1:def 7

        .= (( dom ( RelOb C)) \/ ( rng ( RelOb C))) by RELAT_1:def 6

        .= {} by A2;

        then

         A4: F = {} ;

        ( field ( RelIncl O)) = ( rng F) by A3, WELLORD1:def 7;

        then (( dom ( RelIncl O)) \/ ( rng ( RelIncl O))) = {} by A4, RELAT_1:def 6;

        hence contradiction;

      end;

    end

    registration

      let O be ordinal number;

      cluster strictO -ordered preorder for composable with_identities CategoryStr;

      correctness

      proof

        consider C be strict preorder category such that

         A1: ( Ob C) = O & (for o1,o2 be Object of C st o1 in o2 holds ( Hom (o1,o2)) = { [o1, o2]}) & ( RelOb C) = ( RelIncl O) & ( Mor C) = (O \/ { [o1, o2] where o1,o2 be Element of O : o1 in o2 }) by Th37;

        take C;

        thus thesis by A1, WELLORD1: 38;

      end;

    end

    registration

      let O be empty ordinal number;

      cluster O -ordered -> empty for composable with_identities CategoryStr;

      correctness

      proof

        let C be composable with_identities CategoryStr;

        assume C is O -ordered;

        then

        consider F be Function such that

         A1: F is_isomorphism_of (( RelOb C),( RelIncl O)) by WELLORD1:def 8;

        ( rng F) = ( field ( RelIncl O)) by A1, WELLORD1:def 7

        .= (( dom ( RelIncl O)) \/ ( rng ( RelIncl O))) by RELAT_1:def 6

        .= ( {} \/ ( rng ( RelIncl O)))

        .= {} ;

        then

         A2: F = {} ;

        ( field ( RelOb C)) = ( dom F) by A1, WELLORD1:def 7;

        then (( dom ( RelOb C)) \/ ( rng ( RelOb C))) = {} by A2, RELAT_1:def 6;

        hence thesis;

      end;

    end

    theorem :: CAT_7:38

    

     Th38: for O1,O2 be ordinal number, C1 be O1 -ordered preorder category, C2 be O2 -ordered preorder category holds O1 = O2 iff C1 ~= C2

    proof

      let O1,O2 be ordinal number;

      let C1 be O1 -ordered preorder category;

      let C2 be O2 -ordered preorder category;

      thus O1 = O2 implies C1 ~= C2

      proof

        assume

         A1: O1 = O2;

        per cases ;

          suppose O1 is empty;

          hence thesis by A1, Th13;

        end;

          suppose

           A2: O1 is non empty;

          then

          reconsider D1 = C1, D2 = C2 as non empty category by A1;

          consider F1 be Function such that

           A3: F1 is_isomorphism_of (( RelOb C1),( RelIncl O1)) by Def14, WELLORD1:def 8;

          consider F2 be Function such that

           A4: F2 is_isomorphism_of (( RelOb C2),( RelIncl O2)) by Def14, WELLORD1:def 8;

          

           A5: (F2 " ) is_isomorphism_of (( RelIncl O2),( RelOb C2)) by A4, WELLORD1: 39;

          set F3 = ((F2 " ) * F1);

          

           A6: F3 is_isomorphism_of (( RelOb C1),( RelOb C2)) by A1, A3, A5, WELLORD1: 41;

          consider F4 be Function of C1, ( RelOb C1) such that

           A7: F4 is bijective & for f be morphism of C1 holds (F4 . f) = [( dom f), ( cod f)] by A2, Th36;

          consider F5 be Function of C2, ( RelOb C2) such that

           A8: F5 is bijective & for f be morphism of C2 holds (F5 . f) = [( dom f), ( cod f)] by A1, A2, Th36;

          

           A9: ( dom F3) = ( field ( RelOb C1)) & ( rng F3) = ( field ( RelOb C2)) & F3 is one-to-one & for a,b be set holds [a, b] in ( RelOb C1) iff (a in ( field ( RelOb C1)) & b in ( field ( RelOb C1)) & [(F3 . a), (F3 . b)] in ( RelOb C2)) by A6, WELLORD1:def 7;

          

           A10: ( field ( RelOb C1)) = (( dom ( RelOb C1)) \/ ( rng ( RelOb C1))) by RELAT_1:def 6

          .= (( dom ( RelOb C1)) \/ ( Ob C1)) by Th34

          .= (( Ob C1) \/ ( Ob C1)) by Th34

          .= ( Ob C1);

          defpred P[ object, object] means for a,b be set st $1 = [a, b] holds $2 = [(F3 . a), (F3 . b)];

          

           A11: for x be Element of ( RelOb D1) holds ex y be Element of ( RelOb D2) st P[x, y]

          proof

            let x be Element of ( RelOb D1);

            x in ( RelOb D1);

            then

            consider o1,o2 be Object of D1 such that

             A12: x = [o1, o2] & ex f be morphism of D1 st f in ( Hom (o1,o2));

            reconsider y = [(F3 . o1), (F3 . o2)] as Element of ( RelOb D2) by A12, A6, WELLORD1:def 7;

            take y;

            for a,b be set st x = [a, b] holds y = [(F3 . a), (F3 . b)]

            proof

              let a,b be set;

              assume x = [a, b];

              then a = o1 & b = o2 by A12, XTUPLE_0: 1;

              hence y = [(F3 . a), (F3 . b)];

            end;

            hence P[x, y];

          end;

          consider F33 be Function of ( RelOb D1), ( RelOb D2) such that

           A13: for x be Element of ( RelOb D1) holds P[x, (F33 . x)] from FUNCT_2:sch 3( A11);

          

           A14: ( rng F5) = ( dom (F5 " )) & ( dom F5) = ( rng (F5 " )) by A8, FUNCT_1: 33;

          set F = (((F5 " ) * F33) * F4);

          ( rng F33) c= ( RelOb C2);

          then ( rng F33) c= ( rng F5) by A8, FUNCT_2:def 3;

          then

           A15: ( dom ((F5 " ) * F33)) = ( dom F33) by A14, RELAT_1: 27;

          ( RelOb C1) c= ( dom F33) by FUNCT_2:def 1;

          then ( rng F4) c= ( dom F33) by XBOOLE_1: 1;

          then

           A16: ( dom F) = ( dom F4) by A15, RELAT_1: 27;

          then

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

          for y be object st y in ( RelOb C2) holds y in ( rng F33)

          proof

            let y be object;

            assume y in ( RelOb C2);

            then

            consider o1,o2 be Object of C2 such that

             A18: y = [o1, o2] & ex g be morphism of C2 st g in ( Hom (o1,o2));

            

             A19: ( rng F3) = (( dom ( RelOb C2)) \/ ( rng ( RelOb C2))) by A9, RELAT_1:def 6

            .= (( dom ( RelOb C2)) \/ ( Ob C2)) by Th34

            .= (( Ob C2) \/ ( Ob C2)) by Th34

            .= ( Ob D2);

            consider x1 be object such that

             A20: x1 in ( dom F3) & o1 = (F3 . x1) by A19, FUNCT_1:def 3;

            consider x2 be object such that

             A21: x2 in ( dom F3) & o2 = (F3 . x2) by A19, FUNCT_1:def 3;

            reconsider x1, x2 as set by A20, A21;

            set x = [x1, x2];

            

             A22: x1 in ( field ( RelOb C1)) & x2 in ( field ( RelOb C1)) by A20, A21, A6, WELLORD1:def 7;

             [(F3 . x1), (F3 . x2)] in ( RelOb C2) by A18, A20, A21;

            then

            reconsider x as Element of ( RelOb D1) by A22, A6, WELLORD1:def 7;

            

             A23: ( dom F33) = ( RelOb D1) by FUNCT_2:def 1;

            (F33 . x) = [(F3 . x1), (F3 . x2)] by A13;

            hence y in ( rng F33) by A23, A18, A20, A21, FUNCT_1:def 3;

          end;

          then ( RelOb C2) c= ( rng F33) by TARSKI:def 3;

          then ( rng F5) c= ( rng F33) by A8, FUNCT_2:def 3;

          then ( rng ((F5 " ) * F33)) = ( rng (F5 " )) by A14, RELAT_1: 28;

          then

           A24: ( rng ((F5 " ) * F33)) = the carrier of C2 by A14, FUNCT_2:def 1;

          ( dom F33) c= ( RelOb C1);

          then ( dom F33) c= ( rng F4) by A7, FUNCT_2:def 3;

          then

           A25: ( rng F) = the carrier of C2 by A24, A15, RELAT_1: 28;

          then

          reconsider F as Functor of C1, C2 by A17, FUNCT_2: 1;

          for x1,x2 be object st x1 in ( dom F33) & x2 in ( dom F33) & (F33 . x1) = (F33 . x2) holds x1 = x2

          proof

            let x1,x2 be object;

            assume x1 in ( dom F33);

            then x1 in ( RelOb D1);

            then

            consider o11,o12 be Object of D1 such that

             A26: x1 = [o11, o12] & ex f1 be morphism of D1 st f1 in ( Hom (o11,o12));

            

             A27: [o11, o12] in ( RelOb C1) by A26;

            reconsider x11 = x1 as Element of ( RelOb D1) by A26, A27;

            assume x2 in ( dom F33);

            then x2 in ( RelOb D1);

            then

            consider o21,o22 be Object of D1 such that

             A28: x2 = [o21, o22] & ex f1 be morphism of D1 st f1 in ( Hom (o21,o22));

            

             A29: [o21, o22] in ( RelOb C1) by A28;

            reconsider x22 = x2 as Element of ( RelOb D1) by A28, A29;

            assume

             A30: (F33 . x1) = (F33 . x2);

            (F33 . x11) = [(F3 . o11), (F3 . o12)] & (F33 . x22) = [(F3 . o21), (F3 . o22)] by A13, A26, A28;

            then (F3 . o11) = (F3 . o21) & (F3 . o12) = (F3 . o22) by A30, XTUPLE_0: 1;

            then o11 = o21 & o12 = o22 by A10, A9, FUNCT_1:def 4;

            hence x1 = x2 by A26, A28;

          end;

          then

           A31: F33 is one-to-one by FUNCT_1:def 4;

          

           A32: F is onto by A25, FUNCT_2:def 3;

          

           A33: for f be morphism of C1 holds ( dom (F . f)) = (F3 . ( dom f)) & ( cod (F . f)) = (F3 . ( cod f))

          proof

            let f be morphism of C1;

            reconsider x = f as object;

            x in ( Mor C1) by A2, SUBSET_1:def 1;

            then

             A34: x in ( dom F4) by A17, A16, CAT_6:def 1;

            f in ( Hom (( dom f),( cod f))) by A2, Th20;

            then

             A35: [( dom f), ( cod f)] in ( RelOb D1);

            then

             A36: [( dom f), ( cod f)] in ( dom F33) by FUNCT_2:def 1;

            reconsider x1 = [( dom f), ( cod f)] as Element of ( RelOb D1) by A35;

            

             A37: for a,b be set st x1 = [a, b] holds (F33 . x1) = [(F3 . a), (F3 . b)] by A13;

             [(F3 . ( dom f)), (F3 . ( cod f))] in ( RelOb C2) by A35, A6, WELLORD1:def 7;

            then

             A38: [(F3 . ( dom f)), (F3 . ( cod f))] in ( rng F5) by A8, FUNCT_2:def 3;

            

             A39: (F . f) = ((((F5 " ) * F33) * F4) . x) by CAT_6:def 21

            .= (((F5 " ) * F33) . (F4 . x)) by A34, FUNCT_1: 13

            .= (((F5 " ) * F33) . [( dom f), ( cod f)]) by A7

            .= ((F5 " ) . (F33 . [( dom f), ( cod f)])) by A36, FUNCT_1: 13

            .= ((F5 " ) . [(F3 . ( dom f)), (F3 . ( cod f))]) by A37;

             [( dom (F . f)), ( cod (F . f))] = (F5 . ((F5 " ) . [(F3 . ( dom f)), (F3 . ( cod f))])) by A8, A39

            .= [(F3 . ( dom f)), (F3 . ( cod f))] by A8, A38, FUNCT_1: 35;

            hence thesis by XTUPLE_0: 1;

          end;

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

          proof

            let f1,f2 be morphism of C1;

            assume

             A40: f1 |> f2;

            ( dom (F . f1)) = (F3 . ( dom f1)) by A33

            .= (F3 . ( cod f2)) by A2, A40, Th5

            .= ( cod (F . f2)) by A33;

            hence

             A41: (F . f1) |> (F . f2) by Th5;

            set g1 = (F . (f1 (*) f2));

            set g2 = ((F . f1) (*) (F . f2));

            

             A42: ( dom g1) = (F3 . ( dom (f1 (*) f2))) by A33

            .= (F3 . ( dom f2)) by A40, Th4

            .= ( dom (F . f2)) by A33

            .= ( dom g2) by A41, Th4;

            

             A43: ( cod g1) = (F3 . ( cod (f1 (*) f2))) by A33

            .= (F3 . ( cod f1)) by A40, Th4

            .= ( cod (F . f1)) by A33

            .= ( cod g2) by A41, Th4;

            

             A44: g1 in ( Hom (( dom g1),( cod g1))) by Th20;

            g2 in ( Hom (( dom g1),( cod g1))) by A42, A43, Th20;

            hence (F . (f1 (*) f2)) = ((F . f1) (*) (F . f2)) by A44, Def12;

          end;

          then

           A45: F is multiplicative by CAT_6:def 23;

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

          proof

            let f be morphism of C1;

            assume

             A46: f is identity;

            

            then

             A47: ( dom f) = f by Th6

            .= ( cod f) by A46, Th6;

            

             A48: for g1 be morphism of C2 st (F . f) |> g1 holds ((F . f) (*) g1) = g1

            proof

              let g1 be morphism of C2;

              assume

               A49: (F . f) |> g1;

              set g2 = ((F . f) (*) g1);

              

               A50: ( dom g2) = ( dom g1) by A49, Th4;

              

               A51: ( cod g2) = ( cod (F . f)) by A49, Th4

              .= (F3 . ( dom f)) by A33, A47

              .= ( dom (F . f)) by A33

              .= ( cod g1) by A49, Th5;

              

               A52: g1 in ( Hom (( dom g1),( cod g1))) by A1, A2, Th20;

              g2 in ( Hom (( dom g1),( cod g1))) by A50, A51, Th20;

              hence ((F . f) (*) g1) = g1 by A52, Def12;

            end;

            then (F . f) is left_identity by CAT_6:def 4;

            then (F . f) is right_identity by CAT_6: 9;

            hence (F . f) is identity by A48, CAT_6:def 4, CAT_6:def 14;

          end;

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

          hence C1 ~= C2 by A32, Th12, A45, CAT_6:def 25, A8, A7, A31;

        end;

      end;

      thus C1 ~= C2 implies O1 = O2

      proof

        assume C1 ~= C2;

        then

         A53: (( RelOb C1),( RelOb C2)) are_isomorphic by Th35;

        

         A54: (( RelOb C1),( RelIncl O1)) are_isomorphic by Def14;

        (( RelOb C2),( RelIncl O2)) are_isomorphic by Def14;

        then (( RelOb C1),( RelIncl O2)) are_isomorphic by A53, WELLORD1: 42;

        then (( RelIncl O2),( RelOb C1)) are_isomorphic by WELLORD1: 40;

        hence O1 = O2 by A54, WELLORD1: 42, WELLORD2: 10;

      end;

    end;

    definition

      let O be ordinal number;

      :: CAT_7:def15

      func OrdC (O) -> strictO -ordered preorder category equals the strictO -ordered preorder category;

      correctness ;

    end

    theorem :: CAT_7:39

    

     Th39: ex f be morphism of ( OrdC 2) st 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

    proof

      consider C be strict preorder category such that

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

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

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

      

       A4: C is 2 -ordered by A2, WELLORD1: 38;

      then

       A5: C ~= ( OrdC 2) by Th38;

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

       A6: F is covariant & G is covariant and

       A7: (G (*) F) = ( id C) & (F (*) G) = ( id ( OrdC 2)) by A4, Th38, CAT_6:def 28;

       0 in 1 & 0 is Element of 2 & 1 is Element of 2 by CARD_1: 49, CARD_1: 50, TARSKI:def 1, TARSKI:def 2;

      then

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

      then

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

      reconsider g = [ 0 , 1] as morphism of C by A8, A3, XBOOLE_0:def 3;

      

       A10: C is non empty by A1;

      

       A11: not g is identity

      proof

        assume g is identity;

        then g is Object of C by A10, CAT_6: 22;

        hence contradiction by A1;

      end;

      set f = (F . g);

      take f;

      thus

       A12: not f is identity

      proof

        assume

         A13: f is identity;

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

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

        then

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

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

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

        hence contradiction by A11, A7, A10, A14, CAT_6:def 21;

      end;

      ( card ( Ob ( OrdC 2))) = ( card 2) by A1, A5, Th14;

      then

      consider x,y be object such that

       A15: x <> y & ( Ob ( OrdC 2)) = {x, y} by CARD_2: 60;

      

       A16: ( dom f) = x or ( dom f) = y by A15, TARSKI:def 2;

      

       A17: ( dom f) <> ( cod f)

      proof

        assume ( dom f) = ( cod f);

        then

         A18: f in ( Hom (( dom f),( dom f)));

        ( id- ( dom f)) in ( Hom (( dom f),( dom f))) by Def3;

        hence contradiction by A12, A18, Def12;

      end;

      hence

       A19: ( Ob ( OrdC 2)) = {( dom f), ( cod f)} by A15, A16, TARSKI:def 2;

      for x be object holds x in ( Mor ( OrdC 2)) iff x in {( dom f), ( cod f), f}

      proof

        let x be object;

        hereby

          assume

           A20: x in ( Mor ( OrdC 2));

          then

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

          reconsider f1 = x as morphism of ( OrdC 2) by A20;

          per cases ;

            suppose f1 is identity;

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

            then x = ( dom f) or x = ( cod f) by A19, TARSKI:def 2;

            hence x in {( dom f), ( cod f), f} by ENUMSET1:def 1;

          end;

            suppose

             A22: not f1 is identity;

            

             A23: (( id the carrier of ( OrdC 2)) . x) = x by A21, FUNCT_1: 18;

            

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

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

            .= f1 by A23, CAT_6:def 21;

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

            then not (G . f1) in 2 by A1, A10, CAT_6: 22;

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

            then

            consider o1,o2 be Element of 2 such that

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

            

             A26: o1 = 0 or o1 = 1 by CARD_1: 50, TARSKI:def 2;

            o2 = 0 or o2 = 1 by CARD_1: 50, TARSKI:def 2;

            hence x in {( dom f), ( cod f), f} by A25, A26, A24, ENUMSET1:def 1, CARD_1: 49, TARSKI:def 1;

          end;

        end;

        assume x in {( dom f), ( cod f), f};

        then

         A27: x in ( {( dom f), ( cod f)} \/ {f}) by ENUMSET1: 3;

        per cases by A27, A19, XBOOLE_0:def 3;

          suppose x in ( Ob ( OrdC 2));

          hence x in ( Mor ( OrdC 2));

        end;

          suppose x in {f};

          then x = f by TARSKI:def 1;

          hence x in ( Mor ( OrdC 2));

        end;

      end;

      hence ( Mor ( OrdC 2)) = {( dom f), ( cod f), f} by TARSKI: 2;

      ( dom f) <> ( cod f) & ( dom f) <> f & ( cod f) <> f by A12, A17, CAT_6: 22;

      hence (( dom f),( cod f),f) are_mutually_distinct by ZFMISC_1:def 5;

    end;

    definition

      let C be non empty category;

      let f be morphism of C;

      :: CAT_7:def16

      func MORPHISM (f) -> covariant Functor of ( OrdC 2), C means

      : Def16: for g be morphism of ( OrdC 2) st not g is identity holds (it . g) = f;

      existence

      proof

        consider f1 be morphism of ( OrdC 2) such that

         A1: not f1 is identity and ( Ob ( OrdC 2)) = {( dom f1), ( cod f1)} and

         A2: ( Mor ( OrdC 2)) = {( dom f1), ( cod f1), f1} and

         A3: (( dom f1),( cod f1),f1) are_mutually_distinct by Th39;

        defpred P[ object, object] means ($1 = ( dom f1) implies $2 = ( dom f)) & ($1 = ( cod f1) implies $2 = ( cod f)) & ($1 = f1 implies $2 = f);

        

         A4: for x be object st x in the carrier of ( OrdC 2) 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 2);

          then

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

          per cases by A5, ENUMSET1:def 1;

            suppose

             A6: x = ( dom f1);

            reconsider y = ( dom f) 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 A6, A3, ZFMISC_1:def 5;

          end;

            suppose

             A7: x = ( cod f1);

            reconsider y = ( cod f) 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 A7, A3, ZFMISC_1:def 5;

          end;

            suppose

             A8: x = f1;

            reconsider y = f 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 A8, A3, ZFMISC_1:def 5;

          end;

        end;

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

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

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

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

        proof

          let g be morphism of ( OrdC 2);

          assume

           A10: g is identity;

          reconsider x = g as object;

          

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

          g in ( Mor ( OrdC 2));

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

          then P[x, (F . x)] by A9;

          hence (F . g) is identity by A11, CAT_6: 22, A2, A1, A10, ENUMSET1:def 1;

        end;

        then

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

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

        proof

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

          assume

           A13: g1 |> g2;

          

           A14: for g be morphism of ( OrdC 2) st g = ( dom f1) holds (F . g) = ( dom f)

          proof

            let g be morphism of ( OrdC 2);

            assume

             A15: g = ( dom f1);

            reconsider x = g as object;

            

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

            g in ( Mor ( OrdC 2));

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

            hence thesis by A9, A15, A16;

          end;

          

           A17: for g be morphism of ( OrdC 2) st g = ( cod f1) holds (F . g) = ( cod f)

          proof

            let g be morphism of ( OrdC 2);

            assume

             A18: g = ( cod f1);

            reconsider x = g as object;

            

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

            g in ( Mor ( OrdC 2));

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

            hence thesis by A9, A18, A19;

          end;

          

           A20: for g be morphism of ( OrdC 2) st g = f1 holds (F . g) = f

          proof

            let g be morphism of ( OrdC 2);

            assume

             A21: g = f1;

            reconsider x = g as object;

            

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

            g in ( Mor ( OrdC 2));

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

            hence thesis by A9, A21, A22;

          end;

          per cases by A2, ENUMSET1:def 1;

            suppose

             A23: g1 = ( dom f1) & g2 = ( dom f1);

            then

             A24: (F . g1) = ( dom f) & (F . g2) = ( dom f) by A14;

            hence

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

            

            thus (F . (g1 (*) g2)) = (F . g1) by A23, A13, CAT_6: 23

            .= ((F . g1) (*) (F . g2)) by A25, A24, CAT_6: 23;

          end;

            suppose

             A26: g1 = ( dom f1) & g2 = ( cod f1);

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

            then g1 = g2 by A13, Th7;

            hence thesis by A26, A3, ZFMISC_1:def 5;

          end;

            suppose

             A27: g1 = ( dom f1) & g2 = f1;

            then ( cod f1) = g1 by A13, CAT_6: 22, CAT_6: 27;

            hence thesis by A27, A3, ZFMISC_1:def 5;

          end;

            suppose

             A28: g1 = ( cod f1) & g2 = ( dom f1);

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

            then g1 = g2 by A13, Th7;

            hence thesis by A28, A3, ZFMISC_1:def 5;

          end;

            suppose

             A29: g1 = ( cod f1) & g2 = ( cod f1);

            then

             A30: (F . g1) = ( cod f) & (F . g2) = ( cod f) by A17;

            hence

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

            

            thus (F . (g1 (*) g2)) = (F . g1) by A29, A13, CAT_6: 23

            .= ((F . g1) (*) (F . g2)) by A31, A30, CAT_6: 23;

          end;

            suppose

             A32: g1 = ( cod f1) & g2 = f1;

            then

             A33: (F . g1) = ( cod f) & (F . g2) = f by A17, A20;

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

            

            thus (F . (g1 (*) g2)) = (F . g2) by A32, Th9

            .= ((F . g1) (*) (F . g2)) by A33, Th9;

          end;

            suppose

             A34: g1 = f1 & g2 = ( dom f1);

            then

             A35: (F . g1) = f & (F . g2) = ( dom f) by A14, A20;

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

            

            thus (F . (g1 (*) g2)) = (F . g1) by A34, Th8

            .= ((F . g1) (*) (F . g2)) by A35, Th8;

          end;

            suppose

             A36: g1 = f1 & g2 = ( cod f1);

            then ( dom f1) = g2 by A13, CAT_6: 22, CAT_6: 26;

            hence thesis by A36, A3, ZFMISC_1:def 5;

          end;

            suppose g1 = f1 & g2 = f1;

            then ( dom f1) = ( cod f1) by A13, Th5;

            hence thesis by A3, ZFMISC_1:def 5;

          end;

        end;

        then

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

        take F;

        let g be morphism of ( OrdC 2);

        assume

         A37: not g is identity;

        

         A38: g = ( dom f1) or g = ( cod f1) or g = f1 by A2, ENUMSET1:def 1;

        reconsider x = g as object;

        

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

        g in ( Mor ( OrdC 2));

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

        hence (F . g) = f by A9, A38, A39, A37, CAT_6: 22;

      end;

      uniqueness

      proof

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

        assume

         A40: for g be morphism of ( OrdC 2) st not g is identity holds (F1 . g) = f;

        assume

         A41: for g be morphism of ( OrdC 2) st not g is identity holds (F2 . g) = f;

        consider f1 be morphism of ( OrdC 2) such that

         A42: not f1 is identity and ( Ob ( OrdC 2)) = {( dom f1), ( cod f1)} and

         A43: ( Mor ( OrdC 2)) = {( dom f1), ( cod f1), f1} by Th39;

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

        proof

          let x be object;

          assume x in the carrier of ( OrdC 2);

          then

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

          

           A45: (F1 . f1) = f by A40, A42

          .= (F2 . f1) by A41, A42;

          per cases by A44, ENUMSET1:def 1;

            suppose

             A46: x = ( dom f1);

            

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

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

          end;

            suppose

             A47: x = ( cod f1);

            

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

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

          end;

            suppose

             A48: x = f1;

            

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

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

          end;

        end;

        hence F1 = F2 by FUNCT_2: 12;

      end;

    end

    theorem :: CAT_7:40

    

     Th40: for C be non empty category, f be morphism of C st f is identity holds for g be morphism of ( OrdC 2) holds (( MORPHISM f) . g) = f

    proof

      let C be non empty category;

      let f be morphism of C;

      assume

       A1: f is identity;

      let g be morphism of ( OrdC 2);

      consider f1 be morphism of ( OrdC 2) such that

       A2: 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 Th39;

      per cases by A2, ENUMSET1:def 1;

        suppose g = ( dom f1);

        

        hence (( MORPHISM f) . g) = (( MORPHISM f) . ( dom f1)) by CAT_6:def 21

        .= ( dom (( MORPHISM f) . f1)) by CAT_6: 32

        .= ( dom f) by A2, Def16

        .= f by A1, Th6;

      end;

        suppose g = ( cod f1);

        

        hence (( MORPHISM f) . g) = (( MORPHISM f) . ( cod f1)) by CAT_6:def 21

        .= ( cod (( MORPHISM f) . f1)) by CAT_6: 32

        .= ( cod f) by A2, Def16

        .= f by A1, Th6;

      end;

        suppose g = f1;

        hence thesis by A2, Def16;

      end;

    end;

    begin

    definition

      let C be category;

      let c,c1,c2,d be Object of C;

      let f1 be Morphism of c1, c;

      let f2 be Morphism of c2, c;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      :: CAT_7:def17

      pred d,p1,p2 is_pullback_of f1,f2 means

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

    end

    theorem :: CAT_7:41

    for C be non empty category, c,c1,c2,d,e be Object of C, f1 be Morphism of c1, c, f2 be Morphism of c2, c, p1 be Morphism of d, c1, p2 be Morphism of d, c2, q1 be Morphism of e, c1, q2 be Morphism of e, c2 st ( Hom (c1,c)) <> {} & ( Hom (c2,c)) <> {} & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & ( Hom (e,c1)) <> {} & ( Hom (e,c2)) <> {} & (d,p1,p2) is_pullback_of (f1,f2) & (e,q1,q2) is_pullback_of (f1,f2) holds (d,e) are_isomorphic

    proof

      let C be non empty category;

      let c,c1,c2,d,e be Object of C;

      let f1 be Morphism of c1, c;

      let f2 be Morphism of c2, c;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      let q1 be Morphism of e, c1;

      let q2 be Morphism of e, c2;

      assume

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

      assume

       A2: (d,p1,p2) is_pullback_of (f1,f2);

      assume

       A3: (e,q1,q2) is_pullback_of (f1,f2);

      

       A4: (f1 * p1) = (f2 * p2) & for d1 be Object of C, g1 be Morphism of d1, c1, g2 be Morphism of d1, c2 st ( Hom (d1,c1)) <> {} & ( Hom (d1,c2)) <> {} & (f1 * g1) = (f2 * g2) holds ( Hom (d1,d)) <> {} & ex h be Morphism of d1, d st (p1 * h) = g1 & (p2 * h) = g2 & for h1 be Morphism of d1, d st (p1 * h1) = g1 & (p2 * h1) = g2 holds h = h1 by A1, A2, Def17;

      

       A5: (f1 * q1) = (f2 * q2) & for e1 be Object of C, g1 be Morphism of e1, c1, g2 be Morphism of e1, c2 st ( Hom (e1,c1)) <> {} & ( Hom (e1,c2)) <> {} & (f1 * g1) = (f2 * g2) holds ( Hom (e1,e)) <> {} & ex h be Morphism of e1, e st (q1 * h) = g1 & (q2 * h) = g2 & for h1 be Morphism of e1, e st (q1 * h1) = g1 & (q2 * h1) = g2 holds h = h1 by A1, A3, Def17;

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

      proof

        consider f be Morphism of d, e such that

         A6: (q1 * f) = p1 & (q2 * f) = p2 & for h1 be Morphism of d, e st (q1 * h1) = p1 & (q2 * h1) = p2 holds f = h1 by A4, A1, A3, Def17;

        consider g be Morphism of e, d such that

         A7: (p1 * g) = q1 & (p2 * g) = q2 & for h1 be Morphism of e, d st (p1 * h1) = q1 & (p2 * h1) = q2 holds g = h1 by A5, A1, A2, Def17;

        take f, g;

        thus

         A8: ( Hom (d,e)) <> {} by A4, A1, A3, Def17;

        thus

         A9: ( Hom (e,d)) <> {} by A5, A1, A2, Def17;

        set g11 = (q1 * f);

        set g12 = (q2 * f);

        consider h1 be Morphism of d, d such that

         A10: (p1 * h1) = g11 & (p2 * h1) = g12 & for h be Morphism of d, d st (p1 * h) = g11 & (p2 * h) = g12 holds h1 = h by A1, A4, A6;

        

         A11: (p1 * (g * f)) = g11 by A1, A7, A9, A8, Th23;

        

         A12: (p2 * (g * f)) = g12 by A1, A7, A9, A8, Th23;

        

         A13: (p1 * ( id- d)) = g11 by A1, A6, Th18;

        

         A14: (p2 * ( id- d)) = g12 by A1, A6, Th18;

        

        thus (g * f) = h1 by A10, A11, A12

        .= ( id- d) by A10, A13, A14;

        set g21 = (p1 * g);

        set g22 = (p2 * g);

        consider h2 be Morphism of e, e such that

         A15: (q1 * h2) = g21 & (q2 * h2) = g22 & for h be Morphism of e, e st (q1 * h) = g21 & (q2 * h) = g22 holds h2 = h by A1, A5, A7;

        

         A16: (q1 * (f * g)) = g21 by A1, A6, A9, A8, Th23;

        

         A17: (q2 * (f * g)) = g22 by A1, A6, A9, A8, Th23;

        

         A18: (q1 * ( id- e)) = g21 by A1, A7, Th18;

        

         A19: (q2 * ( id- e)) = g22 by A1, A7, Th18;

        

        thus (f * g) = h2 by A15, A16, A17

        .= ( id- e) by A15, A18, A19;

      end;

      hence (d,e) are_isomorphic ;

    end;

    theorem :: CAT_7:42

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

    proof

      let C be category;

      let c,c1,c2,d be Object of C;

      let f1 be Morphism of c1, c;

      let f2 be Morphism of c2, c;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      assume

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

      assume

       A2: (d,p1,p2) is_pullback_of (f1,f2);

      then

       A3: (f1 * p1) = (f2 * p2) & for d1 be Object of C, g1 be Morphism of d1, c1, g2 be Morphism of d1, c2 st ( Hom (d1,c1)) <> {} & ( Hom (d1,c2)) <> {} & (f1 * g1) = (f2 * g2) holds ( Hom (d1,d)) <> {} & ex h be Morphism of d1, d st (p1 * h) = g1 & (p2 * h) = g2 & for h1 be Morphism of d1, d st (p1 * h1) = g1 & (p2 * h1) = g2 holds h = h1 by A1, Def17;

      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)) <> {} & (f2 * g2) = (f1 * g1) 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

         A4: ( Hom (d1,c2)) <> {} & ( Hom (d1,c1)) <> {} & (f2 * g2) = (f1 * g1);

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

        consider h be Morphism of d1, d such that

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

        take h;

        thus thesis by A5;

      end;

      hence (d,p2,p1) is_pullback_of (f2,f1) by A3, A1, Def17;

    end;

    theorem :: CAT_7:43

    for C be category, c,c1,c2,d be Object of C, f1 be Morphism of c1, c, f2 be Morphism of c2, c, p1 be Morphism of d, c1, p2 be Morphism of d, c2 st ( Hom (c1,c)) <> {} & ( Hom (c2,c)) <> {} & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_pullback_of (f1,f2) & f1 is monomorphism holds p2 is monomorphism

    proof

      let C be category;

      let c,c1,c2,d be Object of C;

      let f1 be Morphism of c1, c;

      let f2 be Morphism of c2, c;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      assume

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

      assume

       A2: (d,p1,p2) is_pullback_of (f1,f2);

      then

       A3: (f1 * p1) = (f2 * p2) & for d1 be Object of C, g1 be Morphism of d1, c1, g2 be Morphism of d1, c2 st ( Hom (d1,c1)) <> {} & ( Hom (d1,c2)) <> {} & (f1 * g1) = (f2 * g2) holds ( Hom (d1,d)) <> {} & ex h be Morphism of d1, d st (p1 * h) = g1 & (p2 * h) = g2 & for h1 be Morphism of d1, d st (p1 * h1) = g1 & (p2 * h1) = g2 holds h = h1 by A1, Def17;

      assume

       A4: f1 is monomorphism;

      thus ( Hom (d,c2)) <> {} by A1;

      let d1 be Object of C;

      assume

       A5: ( Hom (d1,d)) <> {} ;

      let q1,q2 be Morphism of d1, d;

      assume

       A6: (p2 * q1) = (p2 * q2);

      set p11 = (p1 * q1);

      set p12 = (p2 * q1);

      

       A7: ( Hom (d1,c1)) <> {} & ( Hom (d1,c2)) <> {} by A1, A5, Th22;

      (f1 * p11) = ((f1 * p1) * q1) by A5, A1, Th23

      .= (f2 * p12) by A5, A3, A1, Th23;

      then

      consider h be Morphism of d1, d such that

       A8: (p1 * h) = p11 & (p2 * h) = p12 & for h1 be Morphism of d1, d st (p1 * h1) = p11 & (p2 * h1) = p12 holds h = h1 by A1, A2, Def17, A7;

      

       A9: q1 = h by A8;

      (f1 * (p1 * q2)) = ((f1 * p1) * q2) by A5, A1, Th23

      .= (f2 * (p2 * q2)) by A5, A3, A1, Th23

      .= ((f2 * p2) * q1) by A6, A5, A1, Th23

      .= (f1 * p11) by A5, A3, A1, Th23;

      hence q1 = q2 by A9, A8, A6, A7, A4;

    end;

    theorem :: CAT_7:44

    for C be non empty category, c,c1,c2,d be Object of C, f1 be Morphism of c1, c, f2 be Morphism of c2, c, p1 be Morphism of d, c1, p2 be Morphism of d, c2 st ( Hom (c1,c)) <> {} & ( Hom (c2,c)) <> {} & ( Hom (d,c1)) <> {} & ( Hom (d,c2)) <> {} & (d,p1,p2) is_pullback_of (f1,f2) & f1 is isomorphism holds p2 is isomorphism

    proof

      let C be non empty category;

      let c,c1,c2,d be Object of C;

      let f1 be Morphism of c1, c;

      let f2 be Morphism of c2, c;

      let p1 be Morphism of d, c1;

      let p2 be Morphism of d, c2;

      assume

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

      assume

       A2: (d,p1,p2) is_pullback_of (f1,f2);

      then

       A3: (f1 * p1) = (f2 * p2) & for d1 be Object of C, g1 be Morphism of d1, c1, g2 be Morphism of d1, c2 st ( Hom (d1,c1)) <> {} & ( Hom (d1,c2)) <> {} & (f1 * g1) = (f2 * g2) holds ( Hom (d1,d)) <> {} & ex h be Morphism of d1, d st (p1 * h) = g1 & (p2 * h) = g2 & for h1 be Morphism of d1, d st (p1 * h1) = g1 & (p2 * h1) = g2 holds h = h1 by A1, Def17;

      assume

       A4: f1 is isomorphism;

      consider g1 be Morphism of c, c1 such that

       A5: (g1 * f1) = ( id- c1) & (f1 * g1) = ( id- c) by A4;

      set g11 = (g1 * f2);

      set g22 = ( id- c2);

      

       A6: ( Hom (c2,c1)) <> {} & ( Hom (c2,c2)) <> {} & ( Hom (c1,c1)) <> {} by A1, A4, Th22;

      

       A7: (f1 * g11) = ((f1 * g1) * f2) by A4, A1, Th23

      .= f2 by A5, A1, Th18

      .= (f2 * g22) by A1, Th18;

      then

       A8: ( Hom (c2,d)) <> {} & ex h be Morphism of c2, d st (p1 * h) = g11 & (p2 * h) = g22 & for h1 be Morphism of c2, d st (p1 * h1) = g11 & (p2 * h1) = g22 holds h = h1 by A2, A1, Def17, A6;

      consider q2 be Morphism of c2, d such that

       A9: (p1 * q2) = g11 & (p2 * q2) = g22 & for h1 be Morphism of c2, d st (p1 * h1) = g11 & (p2 * h1) = g22 holds q2 = h1 by A6, A2, A1, Def17, A7;

      set g33 = ((p1 * q2) * p2);

      

       A10: ( Hom (d,c)) <> {} by A1, Th22;

      (f1 * g33) = (f1 * (g1 * (f2 * p2))) by A9, A4, A1, Th23

      .= ((f1 * g1) * (f2 * p2)) by A10, A4, Th23

      .= (f2 * p2) by A10, Th18, A5;

      then

      consider h be Morphism of d, d such that (p1 * h) = g33 & (p2 * h) = p2 and

       A11: for h1 be Morphism of d, d st (p1 * h1) = g33 & (p2 * h1) = p2 holds h = h1 by A1, A2, Def17;

      

       A12: (p1 * ( id- d)) = p1 by A1, Th18

      .= ((g1 * f1) * p1) by A1, A5, Th18

      .= (g1 * (f1 * p1)) by A1, A4, Th23

      .= g33 by A9, A3, A4, A1, Th23;

      

       A13: (p2 * ( id- d)) = p2 by A1, Th18;

      

       A14: (p1 * (q2 * p2)) = g33 by A1, A8, Th23;

      (p2 * (q2 * p2)) = ((p2 * q2) * p2) by A1, A8, Th23

      .= p2 by A1, A9, Th18;

      then h = (q2 * p2) by A11, A14;

      hence p2 is isomorphism by A7, A9, A13, A11, A12, A2, A1, Def17, A6;

    end;

    theorem :: CAT_7:45

    for C be category, c1,c2,c3,c4,c5,c6 be Object of C, f1 be Morphism of c1, c2, f2 be Morphism of c2, c3, f3 be Morphism of c1, c4, f4 be Morphism of c2, c5, f5 be Morphism of c3, c6, f6 be Morphism of c4, c5, f7 be Morphism of c5, c6 st ( Hom (c1,c2)) <> {} & ( Hom (c2,c3)) <> {} & ( Hom (c1,c4)) <> {} & ( Hom (c2,c5)) <> {} & ( Hom (c3,c6)) <> {} & ( Hom (c4,c5)) <> {} & ( Hom (c5,c6)) <> {} & (c2,f2,f4) is_pullback_of (f5,f7) holds (c1,f1,f3) is_pullback_of (f4,f6) iff (c1,(f2 * f1),f3) is_pullback_of (f5,(f7 * f6)) & (f4 * f1) = (f6 * f3)

    proof

      let C be category;

      let c1,c2,c3,c4,c5,c6 be Object of C;

      let f1 be Morphism of c1, c2;

      let f2 be Morphism of c2, c3;

      let f3 be Morphism of c1, c4;

      let f4 be Morphism of c2, c5;

      let f5 be Morphism of c3, c6;

      let f6 be Morphism of c4, c5;

      let f7 be Morphism of c5, c6;

      assume

       A1: ( Hom (c1,c2)) <> {} & ( Hom (c2,c3)) <> {} & ( Hom (c1,c4)) <> {} & ( Hom (c2,c5)) <> {} & ( Hom (c3,c6)) <> {} & ( Hom (c4,c5)) <> {} & ( Hom (c5,c6)) <> {} ;

      assume

       A2: (c2,f2,f4) is_pullback_of (f5,f7);

      then

       A3: (f5 * f2) = (f7 * f4) & for d1 be Object of C, g1 be Morphism of d1, c3, g2 be Morphism of d1, c5 st ( Hom (d1,c3)) <> {} & ( Hom (d1,c5)) <> {} & (f5 * g1) = (f7 * g2) holds ( Hom (d1,c2)) <> {} & ex h be Morphism of d1, c2 st (f2 * h) = g1 & (f4 * h) = g2 & for h1 be Morphism of d1, c2 st (f2 * h1) = g1 & (f4 * h1) = g2 holds h = h1 by A1, Def17;

      hereby

        assume

         A4: (c1,f1,f3) is_pullback_of (f4,f6);

        then

         A5: (f4 * f1) = (f6 * f3) & for d1 be Object of C, g1 be Morphism of d1, c2, g2 be Morphism of d1, c4 st ( Hom (d1,c2)) <> {} & ( Hom (d1,c4)) <> {} & (f4 * g1) = (f6 * g2) holds ( Hom (d1,c1)) <> {} & ex h be Morphism of d1, c1 st (f1 * h) = g1 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st (f1 * h1) = g1 & (f3 * h1) = g2 holds h = h1 by A1, Def17;

        

         A6: ( Hom (c4,c6)) <> {} & ( Hom (c1,c3)) <> {} & ( Hom (c1,c4)) <> {} by A1, Th22;

        

         A7: (f5 * (f2 * f1)) = ((f5 * f2) * f1) by A1, Th23

        .= (f7 * (f6 * f3)) by A3, A5, Th23, A1

        .= ((f7 * f6) * f3) by A1, Th23;

        for d1 be Object of C, g1 be Morphism of d1, c3, g2 be Morphism of d1, c4 st ( Hom (d1,c3)) <> {} & ( Hom (d1,c4)) <> {} & (f5 * g1) = ((f7 * f6) * g2) holds ( Hom (d1,c1)) <> {} & ex h be Morphism of d1, c1 st ((f2 * f1) * h) = g1 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st ((f2 * f1) * h1) = g1 & (f3 * h1) = g2 holds h = h1

        proof

          let d1 be Object of C;

          let g1 be Morphism of d1, c3;

          let g2 be Morphism of d1, c4;

          assume

           A8: ( Hom (d1,c3)) <> {} ;

          assume

           A9: ( Hom (d1,c4)) <> {} ;

          assume

           A10: (f5 * g1) = ((f7 * f6) * g2);

          

           A11: ( Hom (d1,c5)) <> {} by A9, A1, Th22;

          

           A12: (f5 * g1) = (f7 * (f6 * g2)) by A10, A9, A1, Th23;

          then

           A13: ( Hom (d1,c2)) <> {} & ex h be Morphism of d1, c2 st (f2 * h) = g1 & (f4 * h) = (f6 * g2) & for h1 be Morphism of d1, c2 st (f2 * h1) = g1 & (f4 * h1) = (f6 * g2) holds h = h1 by A1, A2, A11, A8, Def17;

          consider g3 be Morphism of d1, c2 such that

           A14: (f2 * g3) = g1 & (f4 * g3) = (f6 * g2) & for h1 be Morphism of d1, c2 st (f2 * h1) = g1 & (f4 * h1) = (f6 * g2) holds g3 = h1 by A1, A12, A2, A11, A8, Def17;

          thus

           A15: ( Hom (d1,c1)) <> {} by A1, A13, A9, A4, Def17;

          consider h be Morphism of d1, c1 such that

           A16: (f1 * h) = g3 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st (f1 * h1) = g3 & (f3 * h1) = g2 holds h = h1 by A1, A14, A13, A9, A4, Def17;

          take h;

          thus ((f2 * f1) * h) = g1 by A1, A14, A16, A15, Th23;

          thus (f3 * h) = g2 by A16;

          let h1 be Morphism of d1, c1;

          assume

           A17: ((f2 * f1) * h1) = g1;

          assume

           A18: (f3 * h1) = g2;

          

           A19: (f2 * (f1 * h1)) = g1 by A1, A17, A15, Th23;

          (f4 * (f1 * h1)) = ((f4 * f1) * h1) by A1, A15, Th23

          .= (f6 * g2) by A18, A5, A15, Th23, A1;

          then g3 = (f1 * h1) by A19, A14;

          hence h = h1 by A18, A16;

        end;

        hence (c1,(f2 * f1),f3) is_pullback_of (f5,(f7 * f6)) by A1, A6, A7, Def17;

        thus (f4 * f1) = (f6 * f3) by A1, A4, Def17;

      end;

      

       A20: ( Hom (c1,c3)) <> {} & ( Hom (c3,c6)) <> {} & ( Hom (c4,c6)) <> {} by A1, Th22;

      assume

       A21: (c1,(f2 * f1),f3) is_pullback_of (f5,(f7 * f6));

      assume

       A22: (f4 * f1) = (f6 * f3);

      for d1 be Object of C, g1 be Morphism of d1, c2, g2 be Morphism of d1, c4 st ( Hom (d1,c2)) <> {} & ( Hom (d1,c4)) <> {} & (f4 * g1) = (f6 * g2) holds ( Hom (d1,c1)) <> {} & ex h be Morphism of d1, c1 st (f1 * h) = g1 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st (f1 * h1) = g1 & (f3 * h1) = g2 holds h = h1

      proof

        let d1 be Object of C;

        let g1 be Morphism of d1, c2;

        let g2 be Morphism of d1, c4;

        assume

         A23: ( Hom (d1,c2)) <> {} ;

        assume

         A24: ( Hom (d1,c4)) <> {} ;

        assume

         A25: (f4 * g1) = (f6 * g2);

        set g11 = (f2 * g1);

        

         A26: ( Hom (d1,c3)) <> {} by A1, A23, Th22;

        

         A27: (f5 * g11) = ((f5 * f2) * g1) by A23, A1, Th23

        .= (f7 * (f6 * g2)) by A25, A23, A3, Th23, A1

        .= ((f7 * f6) * g2) by A24, A1, Th23;

        then

         A28: ( Hom (d1,c1)) <> {} & ex h be Morphism of d1, c1 st ((f2 * f1) * h) = g11 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st ((f2 * f1) * h1) = g11 & (f3 * h1) = g2 holds h = h1 by A1, A24, A26, A21, A20, Def17;

        thus

         A29: ( Hom (d1,c1)) <> {} by A1, A27, A24, A26, A21, A20, Def17;

        consider h be Morphism of d1, c1 such that

         A30: ((f2 * f1) * h) = g11 & (f3 * h) = g2 & for h1 be Morphism of d1, c1 st ((f2 * f1) * h1) = g11 & (f3 * h1) = g2 holds h = h1 by A1, A27, A24, A26, A21, A20, Def17;

        take h;

        set g22 = (f4 * g1);

        

         A31: ( Hom (d1,c3)) <> {} & ( Hom (d1,c5)) <> {} by A1, A23, Th22;

        

         A32: (f5 * g11) = ((f5 * f2) * g1) by A23, A1, Th23

        .= (f7 * g22) by A23, A3, Th23, A1;

        consider h2 be Morphism of d1, c2 such that

         A33: (f2 * h2) = g11 & (f4 * h2) = g22 & for h1 be Morphism of d1, c2 st (f2 * h1) = g11 & (f4 * h1) = g22 holds h2 = h1 by A1, A32, A31, A2, Def17;

        

         A34: h2 = g1 by A33;

        

         A35: (f2 * (f1 * h)) = (f2 * g1) by A1, A30, A28, Th23;

        (f4 * (f1 * h)) = ((f4 * f1) * h) by A1, A28, Th23

        .= (f4 * g1) by A30, A25, A22, A28, A1, Th23;

        hence (f1 * h) = g1 by A33, A35, A34;

        thus (f3 * h) = g2 by A30;

        let h1 be Morphism of d1, c1;

        assume

         A36: (f1 * h1) = g1;

        

         A37: ((f2 * f1) * h1) = g11 by A1, A36, A29, Th23;

        assume (f3 * h1) = g2;

        hence h = h1 by A30, A37;

      end;

      hence (c1,f1,f3) is_pullback_of (f4,f6) by A22, A1, Def17;

    end;

    begin

    definition

      let C,D be category;

      let F be Functor of C, D;

      :: CAT_7:def18

      attr F is monomorphism means F is covariant & for B be category, G1,G2 be Functor of B, C st G1 is covariant & G2 is covariant & (F (*) G1) = (F (*) G2) holds G1 = G2;

      :: CAT_7:def19

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

    end

    definition

      let C,C1,C2,D be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      :: CAT_7:def20

      pred D,P1,P2 is_pullback_of F1,F2 means

      : Def20: (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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_7:46

    

     Th46: for C,C1,C2,D,E be category, F1 be Functor of C1, C, F2 be Functor of C2, C, P1 be Functor of D, C1, P2 be Functor of D, C2, Q1 be Functor of E, C1, Q2 be Functor of E, C2 st F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant & Q1 is covariant & Q2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) & (E,Q1,Q2) is_pullback_of (F1,F2) holds D ~= E

    proof

      let C,C1,C2,D,E be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      let Q1 be Functor of E, C1;

      let Q2 be Functor of E, C2;

      assume

       A1: F1 is covariant & F2 is covariant;

      assume

       A2: P1 is covariant & P2 is covariant & Q1 is covariant & Q2 is covariant;

      assume

       A3: (D,P1,P2) is_pullback_of (F1,F2);

      assume

       A4: (E,Q1,Q2) is_pullback_of (F1,F2);

      ex FF be Functor of D, E, GG be Functor of E, D st FF is covariant & GG is covariant & (GG (*) FF) = ( id D) & (FF (*) GG) = ( id E)

      proof

        

         A5: (F1 (*) P1) = (F2 (*) P2) & for D0 be category, G1 be Functor of D0, C1, G2 be Functor of D0, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) holds ex H be Functor of D0, D st H is covariant & (P1 (*) H) = G1 & (P2 (*) H) = G2 & for H1 be Functor of D0, D st H1 is covariant & (P1 (*) H1) = G1 & (P2 (*) H1) = G2 holds H = H1 by A2, A1, A3, Def20;

        

         A6: (F1 (*) Q1) = (F2 (*) Q2) & for D0 be category, G1 be Functor of D0, C1, G2 be Functor of D0, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) holds ex H be Functor of D0, E st H is covariant & (Q1 (*) H) = G1 & (Q2 (*) H) = G2 & for H1 be Functor of D0, E st H1 is covariant & (Q1 (*) H1) = G1 & (Q2 (*) H1) = G2 holds H = H1 by A2, A1, A4, Def20;

        consider FF be Functor of D, E such that

         A7: FF is covariant & (Q1 (*) FF) = P1 & (Q2 (*) FF) = P2 & for H1 be Functor of D, E st H1 is covariant & (Q1 (*) H1) = P1 & (Q2 (*) H1) = P2 holds FF = H1 by A2, A5, A1, A4, Def20;

        consider GG be Functor of E, D such that

         A8: GG is covariant & (P1 (*) GG) = Q1 & (P2 (*) GG) = Q2 & for H1 be Functor of E, D st H1 is covariant & (P1 (*) H1) = Q1 & (P2 (*) H1) = Q2 holds GG = H1 by A2, A6, A1, A3, Def20;

        take FF, GG;

        thus FF is covariant & GG is covariant by A7, A8;

        set G11 = (Q1 (*) FF);

        set G12 = (Q2 (*) FF);

        consider H1 be Functor of D, D such that

         A9: H1 is covariant & (P1 (*) H1) = G11 & (P2 (*) H1) = G12 & for H be Functor of D, D st H is covariant & (P1 (*) H) = G11 & (P2 (*) H) = G12 holds H1 = H by A2, A5, A7;

        

         A10: (P1 (*) (GG (*) FF)) = G11 by A2, A7, A8, Th10;

        

         A11: (P2 (*) (GG (*) FF)) = G12 by A2, A7, A8, Th10;

        

         A12: (P1 (*) ( id D)) = G11 by A2, A7, Th11;

        

         A13: (P2 (*) ( id D)) = G12 by A2, A7, Th11;

        

        thus (GG (*) FF) = H1 by A9, A10, A11, A7, A8, CAT_6: 35

        .= ( id D) by A9, A12, A13;

        set G21 = (P1 (*) GG);

        set G22 = (P2 (*) GG);

        consider H2 be Functor of E, E such that

         A14: H2 is covariant & (Q1 (*) H2) = G21 & (Q2 (*) H2) = G22 & for H be Functor of E, E st H is covariant & (Q1 (*) H) = G21 & (Q2 (*) H) = G22 holds H2 = H by A2, A6, A8;

        

         A15: (Q1 (*) (FF (*) GG)) = G21 by A2, A7, A8, Th10;

        

         A16: (Q2 (*) (FF (*) GG)) = G22 by A2, A7, A8, Th10;

        

         A17: (Q1 (*) ( id E)) = G21 by A2, A8, Th11;

        

         A18: (Q2 (*) ( id E)) = G22 by A2, A8, Th11;

        

        thus (FF (*) GG) = H2 by A14, A15, A16, A7, A8, CAT_6: 35

        .= ( id E) by A14, A17, A18;

      end;

      hence D ~= E by CAT_6:def 28;

    end;

    theorem :: CAT_7:47

    

     Th47: for C,C1,C2,D be category, F1 be Functor of C1, C, F2 be Functor of C2, C, P1 be Functor of D, C1, P2 be Functor of D, C2 st F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) holds (D,P2,P1) is_pullback_of (F2,F1)

    proof

      let C,C1,C2,D be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      assume

       A1: F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant;

      assume

       A2: (D,P1,P2) is_pullback_of (F1,F2);

      then

       A3: (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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 by A1, Def20;

      for D1 be category, G1 be Functor of D1, C2, G2 be Functor of D1, C1 st G1 is covariant & G2 is covariant & (F2 (*) G1) = (F1 (*) G2) 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

         A4: G1 is covariant & G2 is covariant & (F2 (*) G1) = (F1 (*) G2);

        consider H be Functor of D1, D such that

         A5: 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 A4, A2, A1, Def20;

        take H;

        thus H is covariant & (P2 (*) H) = G1 & (P1 (*) H) = G2 by A5;

        let H1 be Functor of D1, D;

        assume H1 is covariant & (P2 (*) H1) = G1 & (P1 (*) H1) = G2;

        hence H = H1 by A5;

      end;

      hence (D,P2,P1) is_pullback_of (F2,F1) by A3, A1, Def20;

    end;

    theorem :: CAT_7:48

    for C,C1,C2,D be category, F1 be Functor of C1, C, F2 be Functor of C2, C, P1 be Functor of D, C1, P2 be Functor of D, C2 st F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) & F1 is monomorphism holds P2 is monomorphism

    proof

      let C,C1,C2,D be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      assume

       A1: F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant;

      assume

       A2: (D,P1,P2) is_pullback_of (F1,F2);

      then

       A3: (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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 by A1, Def20;

      assume

       A4: F1 is monomorphism;

      for D1 be category holds for Q1,Q2 be Functor of D1, D st Q1 is covariant & Q2 is covariant & (P2 (*) Q1) = (P2 (*) Q2) holds Q1 = Q2

      proof

        let D1 be category;

        let Q1,Q2 be Functor of D1, D;

        assume

         A5: Q1 is covariant & Q2 is covariant;

        assume

         A6: (P2 (*) Q1) = (P2 (*) Q2);

        set P11 = (P1 (*) Q1);

        set P12 = (P2 (*) Q1);

        

         A7: P11 is covariant & P12 is covariant by A1, A5, CAT_6: 35;

        (F1 (*) P11) = ((F1 (*) P1) (*) Q1) by A5, A1, Th10

        .= (F2 (*) P12) by A5, A3, A1, Th10;

        then

        consider H be Functor of D1, D such that

         A8: H is covariant & (P1 (*) H) = P11 & (P2 (*) H) = P12 & for H1 be Functor of D1, D st H1 is covariant & (P1 (*) H1) = P11 & (P2 (*) H1) = P12 holds H = H1 by A1, A2, Def20, A7;

        

         A9: Q1 = H by A5, A8;

        

         A10: (P1 (*) Q2) is covariant by A5, A1, CAT_6: 35;

        (F1 (*) (P1 (*) Q2)) = ((F1 (*) P1) (*) Q2) by A5, A1, Th10

        .= (F2 (*) (P2 (*) Q2)) by A5, A3, A1, Th10

        .= ((F2 (*) P2) (*) Q1) by A6, A5, A1, Th10

        .= (F1 (*) P11) by A5, A3, A1, Th10;

        hence Q1 = Q2 by A5, A9, A8, A6, A7, A10, A4;

      end;

      hence thesis by A1;

    end;

    theorem :: CAT_7:49

    for C,C1,C2,D be category, F1 be Functor of C1, C, F2 be Functor of C2, C, P1 be Functor of D, C1, P2 be Functor of D, C2 st F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) & F1 is isomorphism holds P2 is isomorphism

    proof

      let C,C1,C2,D be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      let P1 be Functor of D, C1;

      let P2 be Functor of D, C2;

      assume

       A1: F1 is covariant & F2 is covariant & P1 is covariant & P2 is covariant;

      assume

       A2: (D,P1,P2) is_pullback_of (F1,F2);

      then

       A3: (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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 by A1, Def20;

      assume

       A4: F1 is isomorphism;

      consider G1 be Functor of C, C1 such that

       A5: G1 is covariant & (G1 (*) F1) = ( id C1) & (F1 (*) G1) = ( id C) by A4;

      set G11 = (G1 (*) F2);

      set G22 = ( id C2);

      

       A6: G11 is covariant by A5, A1, CAT_6: 35;

      

       A7: (F1 (*) G11) = ((F1 (*) G1) (*) F2) by A5, A1, Th10

      .= F2 by A5, A1, Th11

      .= (F2 (*) G22) by A1, Th11;

      consider Q2 be Functor of C2, D such that

       A8: Q2 is covariant & (P1 (*) Q2) = G11 & (P2 (*) Q2) = G22 & for H1 be Functor of C2, D st H1 is covariant & (P1 (*) H1) = G11 & (P2 (*) H1) = G22 holds Q2 = H1 by A6, A2, A1, Def20, A7;

      set G33 = ((P1 (*) Q2) (*) P2);

      

       A9: (F2 (*) P2) is covariant by A1, CAT_6: 35;

      

       A10: G33 is covariant by A8, A6, A1, CAT_6: 35;

      (F1 (*) G33) = (F1 (*) (G1 (*) (F2 (*) P2))) by A5, A8, A1, Th10

      .= ((F1 (*) G1) (*) (F2 (*) P2)) by A9, A5, A4, Th10

      .= (F2 (*) P2) by A9, Th11, A5;

      then

      consider H be Functor of D, D such that H is covariant & (P1 (*) H) = G33 & (P2 (*) H) = P2 and

       A11: for H1 be Functor of D, D st H1 is covariant & (P1 (*) H1) = G33 & (P2 (*) H1) = P2 holds H = H1 by A1, A2, A10, Def20;

      

       A12: (P1 (*) ( id D)) = P1 by A1, Th11

      .= ((G1 (*) F1) (*) P1) by A1, A5, Th11

      .= (G1 (*) (F1 (*) P1)) by A1, A5, Th10

      .= G33 by A8, A3, A1, A5, Th10;

      

       A13: (P2 (*) ( id D)) = P2 by A1, Th11;

      

       A14: (P1 (*) (Q2 (*) P2)) = G33 by A1, A8, Th10;

      (P2 (*) (Q2 (*) P2)) = ((P2 (*) Q2) (*) P2) by A1, A8, Th10

      .= P2 by A1, A8, Th11;

      then H = (Q2 (*) P2) by A11, A14, A1, A8, CAT_6: 35;

      hence P2 is isomorphism by A8, A13, A11, A12, A1;

    end;

    theorem :: CAT_7:50

    for C1,C2,C3,C4,C5,C6 be category, F1 be Functor of C1, C2, F2 be Functor of C2, C3, F3 be Functor of C1, C4, F4 be Functor of C2, C5, F5 be Functor of C3, C6, F6 be Functor of C4, C5, F7 be Functor of C5, C6 st F1 is covariant & F2 is covariant & F3 is covariant & F4 is covariant & F5 is covariant & F6 is covariant & F7 is covariant & (C2,F2,F4) is_pullback_of (F5,F7) holds (C1,F1,F3) is_pullback_of (F4,F6) iff (C1,(F2 (*) F1),F3) is_pullback_of (F5,(F7 (*) F6)) & (F4 (*) F1) = (F6 (*) F3)

    proof

      let C1,C2,C3,C4,C5,C6 be category;

      let F1 be Functor of C1, C2;

      let F2 be Functor of C2, C3;

      let F3 be Functor of C1, C4;

      let F4 be Functor of C2, C5;

      let F5 be Functor of C3, C6;

      let F6 be Functor of C4, C5;

      let F7 be Functor of C5, C6;

      assume

       A1: F1 is covariant & F2 is covariant & F3 is covariant & F4 is covariant & F5 is covariant & F6 is covariant & F7 is covariant;

      assume

       A2: (C2,F2,F4) is_pullback_of (F5,F7);

      then

       A3: (F5 (*) F2) = (F7 (*) F4) & for D1 be category, G1 be Functor of D1, C3, G2 be Functor of D1, C5 st G1 is covariant & G2 is covariant & (F5 (*) G1) = (F7 (*) G2) holds ex H be Functor of D1, C2 st H is covariant & (F2 (*) H) = G1 & (F4 (*) H) = G2 & for H1 be Functor of D1, C2 st H1 is covariant & (F2 (*) H1) = G1 & (F4 (*) H1) = G2 holds H = H1 by A1, Def20;

      hereby

        assume

         A4: (C1,F1,F3) is_pullback_of (F4,F6);

        then

         A5: (F4 (*) F1) = (F6 (*) F3) & for D1 be category, G1 be Functor of D1, C2, G2 be Functor of D1, C4 st G1 is covariant & G2 is covariant & (F4 (*) G1) = (F6 (*) G2) holds ex H be Functor of D1, C1 st H is covariant & (F1 (*) H) = G1 & (F3 (*) H) = G2 & for H1 be Functor of D1, C1 st H1 is covariant & (F1 (*) H1) = G1 & (F3 (*) H1) = G2 holds H = H1 by A1, Def20;

        

         A6: (F7 (*) F6) is covariant & (F2 (*) F1) is covariant & F3 is covariant by A1, CAT_6: 35;

        

         A7: (F5 (*) (F2 (*) F1)) = ((F5 (*) F2) (*) F1) by A1, Th10

        .= (F7 (*) (F6 (*) F3)) by A3, A5, Th10, A1

        .= ((F7 (*) F6) (*) F3) by A1, Th10;

        for D1 be category, G1 be Functor of D1, C3, G2 be Functor of D1, C4 st G1 is covariant & G2 is covariant & (F5 (*) G1) = ((F7 (*) F6) (*) G2) holds ex H be Functor of D1, C1 st H is covariant & ((F2 (*) F1) (*) H) = G1 & (F3 (*) H) = G2 & for H1 be Functor of D1, C1 st H1 is covariant & ((F2 (*) F1) (*) H1) = G1 & (F3 (*) H1) = G2 holds H = H1

        proof

          let D1 be category;

          let G1 be Functor of D1, C3;

          let G2 be Functor of D1, C4;

          assume

           A8: G1 is covariant;

          assume

           A9: G2 is covariant;

          assume

           A10: (F5 (*) G1) = ((F7 (*) F6) (*) G2);

          

           A11: (F6 (*) G2) is covariant by A1, A9, CAT_6: 35;

          

           A12: (F5 (*) G1) = (F7 (*) (F6 (*) G2)) by A10, A9, A1, Th10;

          consider G3 be Functor of D1, C2 such that

           A13: G3 is covariant & (F2 (*) G3) = G1 & (F4 (*) G3) = (F6 (*) G2) & for H1 be Functor of D1, C2 st H1 is covariant & (F2 (*) H1) = G1 & (F4 (*) H1) = (F6 (*) G2) holds G3 = H1 by A11, A12, A2, A8, A1, Def20;

          consider H be Functor of D1, C1 such that

           A14: H is covariant & (F1 (*) H) = G3 & (F3 (*) H) = G2 & for H1 be Functor of D1, C1 st H1 is covariant & (F1 (*) H1) = G3 & (F3 (*) H1) = G2 holds H = H1 by A13, A9, A4, A1, Def20;

          take H;

          thus H is covariant by A14;

          thus ((F2 (*) F1) (*) H) = G1 by A1, A13, A14, Th10;

          thus (F3 (*) H) = G2 by A14;

          let H1 be Functor of D1, C1;

          assume

           A15: H1 is covariant;

          assume

           A16: ((F2 (*) F1) (*) H1) = G1;

          assume

           A17: (F3 (*) H1) = G2;

          

           A18: (F2 (*) (F1 (*) H1)) = G1 by A1, A15, A16, Th10;

          (F4 (*) (F1 (*) H1)) = ((F4 (*) F1) (*) H1) by A1, A15, Th10

          .= (F6 (*) G2) by A15, A17, A5, Th10, A1;

          then G3 = (F1 (*) H1) by A18, A13, A1, A15, CAT_6: 35;

          hence H = H1 by A15, A17, A14;

        end;

        hence (C1,(F2 (*) F1),F3) is_pullback_of (F5,(F7 (*) F6)) by A6, A1, A7, Def20;

        thus (F4 (*) F1) = (F6 (*) F3) by A4, A1, Def20;

      end;

      

       A19: (F7 (*) F6) is covariant & (F2 (*) F1) is covariant by A1, CAT_6: 35;

      assume

       A20: (C1,(F2 (*) F1),F3) is_pullback_of (F5,(F7 (*) F6));

      assume

       A21: (F4 (*) F1) = (F6 (*) F3);

      for D1 be category, G1 be Functor of D1, C2, G2 be Functor of D1, C4 st G1 is covariant & G2 is covariant & (F4 (*) G1) = (F6 (*) G2) holds ex H be Functor of D1, C1 st H is covariant & (F1 (*) H) = G1 & (F3 (*) H) = G2 & for H1 be Functor of D1, C1 st H1 is covariant & (F1 (*) H1) = G1 & (F3 (*) H1) = G2 holds H = H1

      proof

        let D1 be category;

        let G1 be Functor of D1, C2;

        let G2 be Functor of D1, C4;

        assume

         A22: G1 is covariant;

        assume

         A23: G2 is covariant;

        assume

         A24: (F4 (*) G1) = (F6 (*) G2);

        set G11 = (F2 (*) G1);

        

         A25: G11 is covariant by A1, A22, CAT_6: 35;

        

         A26: (F5 (*) G11) = ((F5 (*) F2) (*) G1) by A22, A1, Th10

        .= (F7 (*) (F6 (*) G2)) by A24, A22, A3, Th10, A1

        .= ((F7 (*) F6) (*) G2) by A23, A1, Th10;

        consider H be Functor of D1, C1 such that

         A27: H is covariant & ((F2 (*) F1) (*) H) = G11 & (F3 (*) H) = G2 & for H1 be Functor of D1, C1 st H1 is covariant & ((F2 (*) F1) (*) H1) = G11 & (F3 (*) H1) = G2 holds H = H1 by A1, A26, A23, A25, A20, A19, Def20;

        take H;

        thus H is covariant by A27;

        set G22 = (F4 (*) G1);

        

         A28: G11 is covariant & G22 is covariant by A1, A22, CAT_6: 35;

        

         A29: (F5 (*) G11) = ((F5 (*) F2) (*) G1) by A22, A1, Th10

        .= (F7 (*) G22) by A22, A3, Th10, A1;

        consider H2 be Functor of D1, C2 such that

         A30: H2 is covariant & (F2 (*) H2) = G11 & (F4 (*) H2) = G22 & for H1 be Functor of D1, C2 st H1 is covariant & (F2 (*) H1) = G11 & (F4 (*) H1) = G22 holds H2 = H1 by A29, A28, A2, A1, Def20;

        

         A31: H2 = G1 by A22, A30;

        

         A32: (F2 (*) (F1 (*) H)) = (F2 (*) G1) by A1, A27, Th10;

        (F4 (*) (F1 (*) H)) = ((F4 (*) F1) (*) H) by A1, A27, Th10

        .= (F4 (*) G1) by A27, A24, A21, A1, Th10;

        hence (F1 (*) H) = G1 by A30, A32, A31, A1, A27, CAT_6: 35;

        thus (F3 (*) H) = G2 by A27;

        let H1 be Functor of D1, C1;

        assume

         A33: H1 is covariant;

        assume

         A34: (F1 (*) H1) = G1;

        

         A35: ((F2 (*) F1) (*) H1) = G11 by A1, A33, A34, Th10;

        assume (F3 (*) H1) = G2;

        hence H = H1 by A33, A27, A35;

      end;

      hence (C1,F1,F3) is_pullback_of (F4,F6) by A21, A1, Def20;

    end;

    theorem :: CAT_7:51

    

     Th51: 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 ex D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 st the carrier of D = { [f1, f2] where f1 be morphism of C1, f2 be morphism of C2 : f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2) } & the composition of D = { [ [f1, f2], f3] where f1,f2,f3 be morphism of D : f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) } & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2)

    proof

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      assume

       A1: F1 is covariant & F2 is covariant;

      reconsider car = { [f1, f2] where f1 be morphism of C1, f2 be morphism of C2 : f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2) } as set;

      set comp = { [ [x1, x2], x3] where x1,x2,x3 be Element of car : x1 in car & x2 in car & x3 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x1 = [f11, f21] & x2 = [f12, f22] & x3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) };

      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

         A2: x = [ [x1, x2], x3] & x1 in car & x2 in car & x3 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x1 = [f11, f21] & x2 = [f12, f22] & x3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22);

         [x1, x2] in [:car, car:] by A2, ZFMISC_1:def 2;

        hence thesis by A2, 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

         A3: [x, y1] = [ [x11, x12], x13] & x11 in car & x12 in car & x13 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x11 = [f11, f21] & x12 = [f12, f22] & x13 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22);

        assume [x, y2] in comp;

        then

        consider x21,x22,x23 be Element of car such that

         A4: [x, y2] = [ [x21, x22], x23] & x21 in car & x22 in car & x23 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x21 = [f11, f21] & x22 = [f12, f22] & x23 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22);

        

         A5: x = [x11, x12] & y1 = x13 by A3, XTUPLE_0: 1;

        

         A6: x = [x21, x22] & y2 = x23 by A4, XTUPLE_0: 1;

        

         A7: x11 = x21 & x12 = x22 by A5, A6, XTUPLE_0: 1;

        consider f11 be morphism of C1, f21 be morphism of C2 such that

         A8: x11 = [f11, f21] & f11 in the carrier of C1 & f21 in the carrier of C2 & (F1 . f11) = (F2 . f21) by A3;

        consider f12 be morphism of C1, f22 be morphism of C2 such that

         A9: x12 = [f12, f22] & f12 in the carrier of C1 & f22 in the carrier of C2 & (F1 . f12) = (F2 . f22) by A3;

        consider f13 be morphism of C1, f23 be morphism of C2 such that

         A10: x13 = [f13, f23] & f13 in the carrier of C1 & f23 in the carrier of C2 & (F1 . f13) = (F2 . f23) by A3;

        consider f213 be morphism of C1, f223 be morphism of C2 such that

         A11: x23 = [f213, f223] & f213 in the carrier of C1 & f223 in the carrier of C2 & (F1 . f213) = (F2 . f223) by A4;

        

         A12: f13 = (f11 (*) f12) & f23 = (f21 (*) f22) by A3, A8, A9, A10;

        f213 = (f11 (*) f12) & f223 = (f21 (*) f22) by A8, A9, A11, A4, A7;

        hence thesis by A6, A12, A10, A11, A3, XTUPLE_0: 1;

      end;

      then

      reconsider comp as PartFunc of [:car, car:], car by FUNCT_1:def 1;

      set D = CategoryStr (# car, comp #);

      

       A13: for g1,g2 be morphism of D st g1 |> g2 holds ex f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g1 (*) g2) = [f13, f23]

      proof

        let g1,g2 be morphism of D;

        assume

         A14: g1 |> g2;

        g1 in the carrier of D by A14, Th1, CAT_6: 1;

        then

        consider f11 be morphism of C1, f21 be morphism of C2 such that

         A15: g1 = [f11, f21] & f11 in the carrier of C1 & f21 in the carrier of C2 & (F1 . f11) = (F2 . f21);

        g2 in the carrier of D by A14, Th1, CAT_6: 1;

        then

        consider f12 be morphism of C1, f22 be morphism of C2 such that

         A16: g2 = [f12, f22] & f12 in the carrier of C1 & f22 in the carrier of C2 & (F1 . f12) = (F2 . f22);

         [g1, g2] in ( dom the composition of D) by A14, CAT_6:def 2;

        then

        consider y be object such that

         A17: [ [g1, g2], y] in comp by XTUPLE_0:def 12;

        consider x1,x2,x3 be Element of car such that

         A18: [ [g1, g2], y] = [ [x1, x2], x3] & x1 in car & x2 in car & x3 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x1 = [f11, f21] & x2 = [f12, f22] & x3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) by A17;

        consider f13 be morphism of C1, f23 be morphism of C2 such that

         A19: x3 = [f13, f23] & f13 in the carrier of C1 & f23 in the carrier of C2 & (F1 . f13) = (F2 . f23) by A18;

         [x1, x2] = [g1, g2] & y = x3 by A18, XTUPLE_0: 1;

        then

         A20: x1 = g1 & x2 = g2 by XTUPLE_0: 1;

        take f11, f12, f13, f21, f22, f23;

        thus g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) by A15, A16;

        thus f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) by A20, A18, A19, A15, A16;

        

        thus (g1 (*) g2) = (the composition of D . (g1,g2)) by A14, CAT_6:def 3

        .= (the composition of D . [g1, g2]) by BINOP_1:def 1

        .= y by A17, FUNCT_1: 1

        .= [f13, f23] by A19, A18, XTUPLE_0: 1;

      end;

      

       A21: F1 is multiplicative & F2 is multiplicative by A1, CAT_6:def 25;

      

       A22: for g1,g2 be morphism of D st ex f11,f12 be morphism of C1, f21,f22 be morphism of C2 st g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 holds g1 |> g2

      proof

        let g1,g2 be morphism of D;

        given f11,f12 be morphism of C1, f21,f22 be morphism of C2 such that

         A23: g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22;

        set x3 = [(f11 (*) f12), (f21 (*) f22)];

        

         A24: f11 in the carrier of C1 & f12 in the carrier of C1 & f21 in the carrier of C2 & f22 in the carrier of C2 by A23, Th1, CAT_6: 1;

        

         A25: (f11 (*) f12) in the carrier of C1 & (f21 (*) f22) in the carrier of C2 by A23, Th1, CAT_6: 1;

        (F1 . (f11 (*) f12)) = ((F1 . f11) (*) (F1 . f12)) by A21, A23, CAT_6:def 23

        .= (F2 . (f21 (*) f22)) by A21, A23, CAT_6:def 23;

        then x3 in car by A25;

        then

        reconsider g3 = x3 as morphism of D by CAT_6:def 1;

        reconsider x1 = g1, x2 = g2, x3 = g3 as Element of car by CAT_6:def 1;

        

         A26: x1 in car & x2 in car by A23, A24;

        for f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 st x1 = [f011, f021] & x2 = [f012, f022] & x3 = [f013, f023] holds f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022)

        proof

          let f011,f012,f013 be morphism of C1;

          let f021,f022,f023 be morphism of C2;

          assume x1 = [f011, f021] & x2 = [f012, f022] & x3 = [f013, f023];

          then f11 = f011 & f21 = f021 & f12 = f012 & f22 = f022 & (f11 (*) f12) = f013 & (f21 (*) f22) = f023 by A23, XTUPLE_0: 1;

          hence thesis by A23;

        end;

        then [ [x1, x2], x3] in the composition of D by A26;

        then [g1, g2] in ( dom the composition of D) by XTUPLE_0:def 12;

        hence g1 |> g2 by CAT_6:def 2;

      end;

      for g,g1,g2 be morphism of D st g1 |> g2 holds (g1 (*) g2) |> g iff g2 |> g

      proof

        let g,g1,g2 be morphism of D;

        assume g1 |> g2;

        then

        consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

         A27: g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g1 (*) g2) = [f13, f23] by A13;

        hereby

          assume (g1 (*) g2) |> g;

          then

          consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

           A28: (g1 (*) g2) = [f011, f021] & g = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & ((g1 (*) g2) (*) g) = [f013, f023] by A13;

          

           A29: f13 = f011 & f23 = f021 by A27, A28, XTUPLE_0: 1;

          C1 is left_composable & C2 is left_composable by CAT_6:def 11;

          then f12 |> f012 & f22 |> f022 by A27, A28, A29, CAT_6:def 8;

          hence g2 |> g by A22, A27, A28;

        end;

        assume g2 |> g;

        then

        consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

         A30: g2 = [f011, f021] & g = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & (g2 (*) g) = [f013, f023] by A13;

        

         A31: f12 = f011 & f22 = f021 by A27, A30, XTUPLE_0: 1;

        C1 is left_composable & C2 is left_composable by CAT_6:def 11;

        then

         A32: f13 |> f012 & f23 |> f022 by A27, A30, A31, CAT_6:def 8;

        (F1 . f13) = ((F1 . f11) (*) (F1 . f12)) by A21, A27, CAT_6:def 23

        .= (F2 . f23) by A21, A27, CAT_6:def 23;

        hence (g1 (*) g2) |> g by A22, A27, A30, A32;

      end;

      then

       A33: D is left_composable by CAT_6:def 8;

      

       A34: for g,g1,g2 be morphism of D st g1 |> g2 holds g |> (g1 (*) g2) iff g |> g1

      proof

        let g,g1,g2 be morphism of D;

        assume g1 |> g2;

        then

        consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

         A35: g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g1 (*) g2) = [f13, f23] by A13;

        hereby

          assume g |> (g1 (*) g2);

          then

          consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

           A36: g = [f011, f021] & (g1 (*) g2) = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & (g (*) (g1 (*) g2)) = [f013, f023] by A13;

          

           A37: f13 = f012 & f23 = f022 by A35, A36, XTUPLE_0: 1;

          C1 is right_composable & C2 is right_composable by CAT_6:def 11;

          then f011 |> f11 & f021 |> f21 by A35, A36, A37, CAT_6:def 9;

          hence g |> g1 by A22, A35, A36;

        end;

        assume g |> g1;

        then

        consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

         A38: g = [f011, f021] & g1 = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & (g (*) g1) = [f013, f023] by A13;

        

         A39: f11 = f012 & f21 = f022 by A35, A38, XTUPLE_0: 1;

        C1 is right_composable & C2 is right_composable by CAT_6:def 11;

        then

         A40: f011 |> f13 & f021 |> f23 by A35, A38, A39, CAT_6:def 9;

        (F1 . f13) = ((F1 . f11) (*) (F1 . f12)) by A21, A35, CAT_6:def 23

        .= (F2 . f23) by A21, A35, CAT_6:def 23;

        hence g |> (g1 (*) g2) by A22, A35, A38, A40;

      end;

      for g1 be morphism of D st g1 in the carrier of D holds ex g be morphism of D st g |> g1 & g is left_identity

      proof

        let g1 be morphism of D;

        assume g1 in the carrier of D;

        then

        consider f1 be morphism of C1, f2 be morphism of C2 such that

         A41: g1 = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

        

         A42: C1 is non empty by A41;

        

         A43: ( cod f1) in the carrier of C1 by A42, Th2;

        then

        reconsider c1 = ( cod f1) as morphism of C1 by CAT_6:def 1;

        

         A44: C2 is non empty by A41;

        

         A45: ( cod f2) in the carrier of C2 by A44, Th2;

        then

        reconsider c2 = ( cod f2) as morphism of C2 by CAT_6:def 1;

        

         A46: C is non empty by A1, A42, CAT_6: 31;

        set g = [c1, c2];

        

         A47: (F1 . c1) = (F1 . ( cod f1)) by A42, CAT_6:def 21

        .= ( cod (F1 . f1)) by A42, A46, A1, CAT_6: 32

        .= (F2 . ( cod f2)) by A41, A44, A46, A1, CAT_6: 32

        .= (F2 . c2) by A44, CAT_6:def 21;

        then g in car by A43, A45;

        then

        reconsider g = [c1, c2] as morphism of D by CAT_6:def 1;

        take g;

        consider c11 be morphism of C1 such that

         A48: c1 = c11 & c11 |> f1 & c11 is identity by A42, CAT_6:def 19;

        consider c22 be morphism of C2 such that

         A49: c2 = c22 & c22 |> f2 & c22 is identity by A44, CAT_6:def 19;

        thus g |> g1 by A22, A47, A41, A48, A49;

        for g1 be morphism of D st g |> g1 holds (g (*) g1) = g1

        proof

          let g1 be morphism of D;

          assume g |> g1;

          then

          consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

           A50: g = [f11, f21] & g1 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g (*) g1) = [f13, f23] by A13;

          

           A51: c11 = f11 & c22 = f21 by A48, A49, A50, XTUPLE_0: 1;

          f13 = f12 & f23 = f22 by A51, A50, CAT_6:def 4, A48, A49, CAT_6:def 14;

          hence (g (*) g1) = g1 by A50;

        end;

        hence g is left_identity by CAT_6:def 4;

      end;

      then

       A52: D is with_left_identities by CAT_6:def 6;

      

       A53: for g1 be morphism of D st g1 in the carrier of D holds ex g be morphism of D st g1 |> g & g is right_identity

      proof

        let g1 be morphism of D;

        assume g1 in the carrier of D;

        then

        consider f1 be morphism of C1, f2 be morphism of C2 such that

         A54: g1 = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

        

         A55: C1 is non empty by A54;

        

         A56: ( dom f1) in the carrier of C1 by A55, Th2;

        then

        reconsider d1 = ( dom f1) as morphism of C1 by CAT_6:def 1;

        

         A57: C2 is non empty by A54;

        

         A58: ( dom f2) in the carrier of C2 by A57, Th2;

        then

        reconsider d2 = ( dom f2) as morphism of C2 by CAT_6:def 1;

        

         A59: C is non empty by A1, A55, CAT_6: 31;

        set g = [d1, d2];

        

         A60: (F1 . d1) = (F1 . ( dom f1)) by A55, CAT_6:def 21

        .= ( dom (F1 . f1)) by A55, A59, A1, CAT_6: 32

        .= (F2 . ( dom f2)) by A54, A57, A59, A1, CAT_6: 32

        .= (F2 . d2) by A57, CAT_6:def 21;

        then g in car by A56, A58;

        then

        reconsider g = [d1, d2] as morphism of D by CAT_6:def 1;

        take g;

        consider d11 be morphism of C1 such that

         A61: d1 = d11 & f1 |> d11 & d11 is identity by A55, CAT_6:def 18;

        consider d22 be morphism of C2 such that

         A62: d2 = d22 & f2 |> d22 & d22 is identity by A57, CAT_6:def 18;

        thus g1 |> g by A22, A60, A54, A61, A62;

        for g1 be morphism of D st g1 |> g holds (g1 (*) g) = g1

        proof

          let g1 be morphism of D;

          assume g1 |> g;

          then

          consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

           A63: g1 = [f11, f21] & g = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g1 (*) g) = [f13, f23] by A13;

          

           A64: d11 = f12 & d22 = f22 by A61, A62, A63, XTUPLE_0: 1;

          f13 = f11 & f23 = f21 by A64, A63, CAT_6:def 5, A61, A62, CAT_6:def 14;

          hence (g1 (*) g) = g1 by A63;

        end;

        hence g is right_identity by CAT_6:def 5;

      end;

      for g1,g2,g3 be morphism of D 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 D;

        assume g1 |> g2;

        then

        consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

         A65: g1 = [f011, f021] & g2 = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & (g1 (*) g2) = [f013, f023] by A13;

        assume g2 |> g3;

        then

        consider f111,f112,f113 be morphism of C1, f121,f122,f123 be morphism of C2 such that

         A66: g2 = [f111, f121] & g3 = [f112, f122] & (F1 . f111) = (F2 . f121) & (F1 . f112) = (F2 . f122) & f111 |> f112 & f121 |> f122 & f113 = (f111 (*) f112) & f123 = (f121 (*) f122) & (g2 (*) g3) = [f113, f123] by A13;

        assume (g1 (*) g2) |> g3;

        then

        consider f211,f212,f213 be morphism of C1, f221,f222,f223 be morphism of C2 such that

         A67: (g1 (*) g2) = [f211, f221] & g3 = [f212, f222] & (F1 . f211) = (F2 . f221) & (F1 . f212) = (F2 . f222) & f211 |> f212 & f221 |> f222 & f213 = (f211 (*) f212) & f223 = (f221 (*) f222) & ((g1 (*) g2) (*) g3) = [f213, f223] by A13;

        assume g1 |> (g2 (*) g3);

        then

        consider f311,f312,f313 be morphism of C1, f321,f322,f323 be morphism of C2 such that

         A68: g1 = [f311, f321] & (g2 (*) g3) = [f312, f322] & (F1 . f311) = (F2 . f321) & (F1 . f312) = (F2 . f322) & f311 |> f312 & f321 |> f322 & f313 = (f311 (*) f312) & f323 = (f321 (*) f322) & (g1 (*) (g2 (*) g3)) = [f313, f323] by A13;

        

         A69: f113 = f312 & f123 = f322 by A66, A68, XTUPLE_0: 1;

        

         A70: f013 = f211 & f023 = f221 by A65, A67, XTUPLE_0: 1;

        

         A71: f011 = f311 & f021 = f321 by A65, A68, XTUPLE_0: 1;

        

         A72: f012 = f111 & f022 = f121 by A65, A66, XTUPLE_0: 1;

        

         A73: f112 = f212 & f122 = f222 by A66, A67, XTUPLE_0: 1;

        

         A74: f313 = f213 by A67, A65, A66, A68, A69, A70, A71, A72, A73, CAT_6:def 10;

        thus (g1 (*) (g2 (*) g3)) = ((g1 (*) g2) (*) g3) by A68, A67, A74, A65, A66, A69, A70, A71, A72, A73, CAT_6:def 10;

      end;

      then

      reconsider D as strict category by A53, A52, A34, A33, CAT_6:def 10, CAT_6:def 11, CAT_6:def 12, CAT_6:def 7, CAT_6:def 9;

      

       A75: for x be object holds x in comp iff x in { [ [f1, f2], f3] where f1,f2,f3 be morphism of D : f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) }

      proof

        let x be object;

        hereby

          assume x in comp;

          then

          consider x1,x2,x3 be Element of car such that

           A76: x = [ [x1, x2], x3] & x1 in car & x2 in car & x3 in car & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st x1 = [f11, f21] & x2 = [f12, f22] & x3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22);

          reconsider f1 = x1, f2 = x2, f3 = x3 as morphism of D by CAT_6:def 1;

          f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) by A76;

          hence x in { [ [f1, f2], f3] where f1,f2,f3 be morphism of D : f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) } by A76;

        end;

        assume x in { [ [f1, f2], f3] where f1,f2,f3 be morphism of D : f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) };

        then

        consider f1,f2,f3 be morphism of D such that

         A77: x = [ [f1, f2], f3] & f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22);

        reconsider x1 = f1, x2 = f2, x3 = f3 as Element of car by A77;

        thus x in comp by A77;

      end;

      ex P1 be Functor of D, C1, P2 be Functor of D, C2 st P1 is covariant & P2 is covariant & (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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

      proof

        per cases ;

          suppose

           A78: D is empty;

          then

          reconsider D0 = D as empty category;

          reconsider P1 = the covariant Functor of D0, C1 as Functor of D, C1;

          reconsider P2 = the covariant Functor of D0, C2 as Functor of D, C2;

          take P1, P2;

          thus P1 is covariant & P2 is covariant & (F1 (*) P1) = (F2 (*) P2);

          let D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2;

          assume

           A79: G1 is covariant;

          assume

           A80: G2 is covariant;

          assume

           A81: (F1 (*) G1) = (F2 (*) G2);

          D1 is empty

          proof

            assume

             A82: D1 is non empty;

            then

            consider x be object such that

             A83: x in the carrier of D1 by XBOOLE_0:def 1;

            reconsider d = x as morphism of D1 by A83, CAT_6:def 1;

            set f1 = (G1 . d);

            set f2 = (G2 . d);

            

             A84: C1 is non empty & C2 is non empty by A82, A79, A80, CAT_6: 31;

            

             A85: x in ( dom G1) & x in ( dom G2) by A84, A83, FUNCT_2:def 1;

            

             A86: (G1 . d) = (G1 . x) by A82, CAT_6:def 21;

            

             A87: (G2 . d) = (G2 . x) by A82, CAT_6:def 21;

            

             A88: (F1 . f1) = (F1 . (G1 . x)) by A86, A84, CAT_6:def 21

            .= ((G1 * F1) . x) by A85, FUNCT_1: 13

            .= ((F2 (*) G2) . x) by A81, A1, A79, CAT_6:def 27

            .= ((G2 * F2) . x) by A1, A80, CAT_6:def 27

            .= (F2 . (G2 . x)) by A85, FUNCT_1: 13

            .= (F2 . f2) by A87, A84, CAT_6:def 21;

            f1 in the carrier of C1 & f2 in the carrier of C2 by A84, Th1;

            then [f1, f2] in the carrier of D by A88;

            hence contradiction by A78;

          end;

          then

          reconsider D01 = D1 as empty category;

          reconsider H = the covariant Functor of D01, D as Functor of D1, D;

          take H;

          thus H is covariant & (P1 (*) H) = G1 & (P2 (*) H) = G2;

          let H1 be Functor of D1, D;

          assume H1 is covariant & (P1 (*) H1) = G1 & (P2 (*) H1) = G2;

          thus H = H1;

        end;

          suppose

           A89: D is non empty;

          deffunc PF1( object) = ($1 `1 );

          

           A90: for x be object st x in the carrier of D holds PF1(x) in the carrier of C1

          proof

            let x be object;

            assume x in the carrier of D;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A91: x = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

            thus PF1(x) in the carrier of C1 by A91;

          end;

          consider P1 be Function of the carrier of D, the carrier of C1 such that

           A92: for x be object st x in the carrier of D holds (P1 . x) = PF1(x) from FUNCT_2:sch 2( A90);

          reconsider P1 as Functor of D, C1;

          deffunc PF2( object) = ($1 `2 );

          

           A93: for x be object st x in the carrier of D holds PF2(x) in the carrier of C2

          proof

            let x be object;

            assume x in the carrier of D;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A94: x = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

            thus PF2(x) in the carrier of C2 by A94;

          end;

          consider P2 be Function of the carrier of D, the carrier of C2 such that

           A95: for x be object st x in the carrier of D holds (P2 . x) = PF2(x) from FUNCT_2:sch 2( A93);

          reconsider P2 as Functor of D, C2;

          take P1, P2;

          

           A96: for g be morphism of D st g is identity holds ex f1 be morphism of C1, f2 be morphism of C2 st g = [f1, f2] & f1 is identity & f2 is identity

          proof

            let g be morphism of D;

            assume

             A97: g is identity;

            g in the carrier of D by A89, Th1;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A98: g = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

            take f1, f2;

            

             A99: C1 is non empty by A98;

            then

            consider d1 be morphism of C1 such that

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

            

             A101: C2 is non empty by A98;

            then

            consider d2 be morphism of C2 such that

             A102: ( dom f2) = d2 & f2 |> d2 & d2 is identity by CAT_6:def 18;

            set g1 = [d1, d2];

            

             A103: C is non empty by A1, A99, CAT_6: 31;

            

             A104: d1 in the carrier of C1 & d2 in the carrier of C2 by A99, A101, Th1;

            

             A105: (F1 . d1) = (F1 . ( dom f1)) by A99, A100, CAT_6:def 21

            .= ( dom (F2 . f2)) by A98, A1, A99, A103, CAT_6: 32

            .= (F2 . ( dom f2)) by A1, A101, A103, CAT_6: 32

            .= (F2 . d2) by A101, A102, CAT_6:def 21;

            then g1 in the carrier of D by A104;

            then

            reconsider g1 as morphism of D by CAT_6:def 1;

            

             A106: g |> g1 by A22, A98, A105, A100, A102;

            thus g = [f1, f2] by A98;

            consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

             A107: g = [f11, f21] & g1 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g (*) g1) = [f13, f23] by A13, A22, A98, A105, A100, A102;

            

             A108: f11 = f1 & f21 = f2 & f12 = d1 & f22 = d2 by A98, A107, XTUPLE_0: 1;

            f1 = (f1 (*) d1) & f2 = (f2 (*) d2) by A100, A102, CAT_6:def 5, CAT_6:def 14;

            then g = g1 by A106, A97, CAT_6:def 14, CAT_6:def 4, A108, A107;

            hence thesis by A100, A102, A98, XTUPLE_0: 1;

          end;

          for g be morphism of D st g is identity holds (P1 . g) is identity & (P2 . g) is identity

          proof

            let g be morphism of D;

            assume g is identity;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A109: g = [f1, f2] & f1 is identity & f2 is identity by A96;

            reconsider x = g as object;

            (P1 . g) = (P1 . x) by CAT_6:def 21, A89

            .= PF1(x) by A92, A89, Th1

            .= f1 by A109;

            hence (P1 . g) is identity by A109;

            (P2 . g) = (P2 . x) by CAT_6:def 21, A89

            .= PF2(x) by A95, A89, Th1

            .= f2 by A109;

            hence (P2 . g) is identity by A109;

          end;

          then (for g be morphism of D st g is identity holds (P1 . g) is identity) & (for g be morphism of D st g is identity holds (P2 . g) is identity);

          then

           A110: P1 is identity-preserving & P2 is identity-preserving by CAT_6:def 22;

          for g1,g2 be morphism of D st g1 |> g2 holds (P1 . g1) |> (P1 . g2) & (P1 . (g1 (*) g2)) = ((P1 . g1) (*) (P1 . g2)) & (P2 . g1) |> (P2 . g2) & (P2 . (g1 (*) g2)) = ((P2 . g1) (*) (P2 . g2))

          proof

            let g1,g2 be morphism of D;

            assume g1 |> g2;

            then

            consider f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 such that

             A111: g1 = [f11, f21] & g2 = [f12, f22] & (F1 . f11) = (F2 . f21) & (F1 . f12) = (F2 . f22) & f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) & (g1 (*) g2) = [f13, f23] by A13;

            reconsider x1 = g1, x2 = g2, x12 = (g1 (*) g2) as object;

            

             A112: (P1 . g1) = (P1 . x1) by CAT_6:def 21, A89

            .= PF1(x1) by A92, A89, Th1

            .= f11 by A111;

            

             A113: (P1 . g2) = (P1 . x2) by CAT_6:def 21, A89

            .= PF1(x2) by A92, A89, Th1

            .= f12 by A111;

            

             A114: (P1 . (g1 (*) g2)) = (P1 . x12) by CAT_6:def 21, A89

            .= PF1(x12) by A92, A89, Th1

            .= f13 by A111;

            thus (P1 . g1) |> (P1 . g2) by A112, A113, A111;

            thus (P1 . (g1 (*) g2)) = ((P1 . g1) (*) (P1 . g2)) by A112, A113, A114, A111;

            

             A115: (P2 . g1) = (P2 . x1) by CAT_6:def 21, A89

            .= PF2(x1) by A95, A89, Th1

            .= f21 by A111;

            

             A116: (P2 . g2) = (P2 . x2) by CAT_6:def 21, A89

            .= PF2(x2) by A95, A89, Th1

            .= f22 by A111;

            

             A117: (P2 . (g1 (*) g2)) = (P2 . x12) by CAT_6:def 21, A89

            .= PF2(x12) by A95, A89, Th1

            .= f23 by A111;

            thus (P2 . g1) |> (P2 . g2) by A115, A116, A111;

            thus (P2 . (g1 (*) g2)) = ((P2 . g1) (*) (P2 . g2)) by A115, A116, A117, A111;

          end;

          then (for g1,g2 be morphism of D st g1 |> g2 holds (P1 . g1) |> (P1 . g2) & (P1 . (g1 (*) g2)) = ((P1 . g1) (*) (P1 . g2))) & (for g1,g2 be morphism of D st g1 |> g2 holds (P2 . g1) |> (P2 . g2) & (P2 . (g1 (*) g2)) = ((P2 . g1) (*) (P2 . g2)));

          hence

           A118: P1 is covariant & P2 is covariant by A110, CAT_6:def 23, CAT_6:def 25;

          for x be object st x in the carrier of D holds ((F1 (*) P1) . x) = ((F2 (*) P2) . x)

          proof

            let x be object;

            assume

             A119: x in the carrier of D;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A120: x = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

            reconsider g = x as morphism of D by A119, CAT_6:def 1;

            

             A121: (P1 . g) = (P1 . x) by CAT_6:def 21, A89

            .= PF1(x) by A92, A119

            .= f1 by A120;

            

             A122: (P2 . g) = (P2 . x) by CAT_6:def 21, A89

            .= PF2(x) by A95, A119

            .= f2 by A120;

            

            thus ((F1 (*) P1) . x) = ((F1 (*) P1) . g) by A89, CAT_6:def 21

            .= (F1 . f1) by A121, A89, A1, A118, CAT_6: 34

            .= ((F2 (*) P2) . g) by A89, A1, A118, CAT_6: 34, A122, A120

            .= ((F2 (*) P2) . x) by A89, CAT_6:def 21;

          end;

          hence (F1 (*) P1) = (F2 (*) P2) by FUNCT_2: 12;

          let D1 be category;

          let G1 be Functor of D1, C1;

          let G2 be Functor of D1, C2;

          assume

           A123: G1 is covariant;

          assume

           A124: G2 is covariant;

          assume

           A125: (F1 (*) G1) = (F2 (*) G2);

          deffunc H2( object) = [(G1 . $1), (G2 . $1)];

          

           A126: for x be object st x in the carrier of D1 holds H2(x) in the carrier of D

          proof

            let x be object;

            assume

             A127: x in the carrier of D1;

            then

             A128: D1 is non empty;

            reconsider d = x as morphism of D1 by A127, CAT_6:def 1;

            

             A129: C1 is non empty & C2 is non empty by A89, A118, CAT_6: 31;

            

             A130: (G1 . d) in the carrier of C1 & (G2 . d) in the carrier of C2 by A129, Th1;

            

             A131: (G1 . d) = (G1 . x) & (G2 . d) = (G2 . x) by A128, CAT_6:def 21;

            (F1 . (G1 . d)) = ((F1 (*) G1) . d) by A123, A128, A1, CAT_6: 34

            .= (F2 . (G2 . d)) by A124, A125, A128, A1, CAT_6: 34;

            hence H2(x) in the carrier of D by A130, A131;

          end;

          consider H be Function of the carrier of D1, the carrier of D such that

           A132: for x be object st x in the carrier of D1 holds (H . x) = H2(x) from FUNCT_2:sch 2( A126);

          reconsider H as Functor of D1, D;

          take H;

          for d be morphism of D1 st d is identity holds (H . d) is identity

          proof

            let d be morphism of D1;

            assume

             A133: d is identity;

            per cases ;

              suppose D1 is empty;

              then (H . d) = the Object of D by CAT_6:def 21;

              hence thesis by A89, CAT_6: 22;

            end;

              suppose

               A134: D1 is non empty;

              for g1 be morphism of D st (H . d) |> g1 holds ((H . d) (*) g1) = g1

              proof

                let g1 be morphism of D;

                assume (H . d) |> g1;

                then

                consider d1,f1,f13 be morphism of C1, d2,f2,f23 be morphism of C2 such that

                 A135: (H . d) = [d1, d2] & g1 = [f1, f2] & (F1 . d1) = (F2 . d2) & (F1 . f1) = (F2 . f2) & d1 |> f1 & d2 |> f2 & f13 = (d1 (*) f1) & f23 = (d2 (*) f2) & ((H . d) (*) g1) = [f13, f23] by A13;

                reconsider x = d as object;

                

                 A136: (G1 . x) = (G1 . d) & (G2 . x) = (G2 . d) by A134, CAT_6:def 21;

                (H . d) = (H . x) by A134, CAT_6:def 21

                .= [(G1 . d), (G2 . d)] by A136, A134, Th1, A132;

                then d1 = (G1 . d) & d2 = (G2 . d) by A135, XTUPLE_0: 1;

                then d1 is identity & d2 is identity by A133, CAT_6:def 22, A123, A124, CAT_6:def 25;

                then (d1 (*) f1) = f1 & (d2 (*) f2) = f2 by A135, CAT_6:def 14, CAT_6:def 4;

                hence ((H . d) (*) g1) = g1 by A135;

              end;

              then

               A137: (H . d) is left_identity by CAT_6:def 4;

              for g1 be morphism of D st g1 |> (H . d) holds (g1 (*) (H . d)) = g1

              proof

                let g1 be morphism of D;

                assume g1 |> (H . d);

                then

                consider f1,d1,f13 be morphism of C1, f2,d2,f23 be morphism of C2 such that

                 A138: g1 = [f1, f2] & (H . d) = [d1, d2] & (F1 . f1) = (F2 . f2) & (F1 . d1) = (F2 . d2) & f1 |> d1 & f2 |> d2 & f13 = (f1 (*) d1) & f23 = (f2 (*) d2) & (g1 (*) (H . d)) = [f13, f23] by A13;

                reconsider x = d as object;

                

                 A139: (G1 . x) = (G1 . d) & (G2 . x) = (G2 . d) by A134, CAT_6:def 21;

                (H . d) = (H . x) by A134, CAT_6:def 21

                .= [(G1 . d), (G2 . d)] by A139, A134, Th1, A132;

                then d1 = (G1 . d) & d2 = (G2 . d) by A138, XTUPLE_0: 1;

                then d1 is identity & d2 is identity by A133, CAT_6:def 22, A123, A124, CAT_6:def 25;

                then (f1 (*) d1) = f1 & (f2 (*) d2) = f2 by A138, CAT_6:def 14, CAT_6:def 5;

                hence (g1 (*) (H . d)) = g1 by A138;

              end;

              hence (H . d) is identity by A137, CAT_6:def 5, CAT_6:def 14;

            end;

          end;

          then

           A140: H is identity-preserving by CAT_6:def 22;

          for d1,d2 be morphism of D1 st d1 |> d2 holds (H . d1) |> (H . d2) & (H . (d1 (*) d2)) = ((H . d1) (*) (H . d2))

          proof

            let d1,d2 be morphism of D1;

            assume

             A141: d1 |> d2;

            then

             A142: D1 is non empty by CAT_6: 1;

            reconsider x1 = d1, x2 = d2 as object;

            

             A143: (G1 . x1) = (G1 . d1) & (G2 . x1) = (G2 . d1) by A142, CAT_6:def 21;

            

             A144: (G1 . x2) = (G1 . d2) & (G2 . x2) = (G2 . d2) by A142, CAT_6:def 21;

            

             A145: G1 is multiplicative & G2 is multiplicative by A123, A124, CAT_6:def 25;

            

             A146: d1 in the carrier of D1 by A141, Th1, CAT_6: 1;

            

             A147: (H . d1) = (H . x1) by A142, CAT_6:def 21

            .= [(G1 . d1), (G2 . d1)] by A143, A146, A132;

            (H . d1) in the carrier of D by A89, Th1;

            then

            consider f11 be morphism of C1, f21 be morphism of C2 such that

             A148: (H . d1) = [f11, f21] & f11 in the carrier of C1 & f21 in the carrier of C2 & (F1 . f11) = (F2 . f21);

            

             A149: d2 in the carrier of D1 by A141, Th1, CAT_6: 1;

            

             A150: (H . d2) = (H . x2) by A142, CAT_6:def 21

            .= [(G1 . d2), (G2 . d2)] by A144, A149, A132;

            (H . d2) in the carrier of D by A89, Th1;

            then

            consider f12 be morphism of C1, f22 be morphism of C2 such that

             A151: (H . d2) = [f12, f22] & f12 in the carrier of C1 & f22 in the carrier of C2 & (F1 . f12) = (F2 . f22);

            

             A152: f11 = (G1 . d1) & f21 = (G2 . d1) by A148, A147, XTUPLE_0: 1;

            

             A153: f12 = (G1 . d2) & f22 = (G2 . d2) by A151, A150, XTUPLE_0: 1;

            

             A154: (G1 . d1) |> (G1 . d2) & (G1 . (d1 (*) d2)) = ((G1 . d1) (*) (G1 . d2)) by A141, A145, CAT_6:def 23;

            

             A155: (G2 . d1) |> (G2 . d2) & (G2 . (d1 (*) d2)) = ((G2 . d1) (*) (G2 . d2)) by A141, A145, CAT_6:def 23;

            thus (H . d1) |> (H . d2) by A22, A152, A153, A154, A155, A148, A151;

            consider f011,f012,f013 be morphism of C1, f021,f022,f023 be morphism of C2 such that

             A156: (H . d1) = [f011, f021] & (H . d2) = [f012, f022] & (F1 . f011) = (F2 . f021) & (F1 . f012) = (F2 . f022) & f011 |> f012 & f021 |> f022 & f013 = (f011 (*) f012) & f023 = (f021 (*) f022) & ((H . d1) (*) (H . d2)) = [f013, f023] by A13, A22, A152, A153, A154, A155, A148, A151;

            

             A157: f011 = (G1 . d1) & f021 = (G2 . d1) & f012 = (G1 . d2) & f022 = (G2 . d2) by A156, A150, A147, XTUPLE_0: 1;

            reconsider x12 = (d1 (*) d2) as object;

            

             A158: (G1 . x12) = (G1 . (d1 (*) d2)) & (G2 . x12) = (G2 . (d1 (*) d2)) by A142, CAT_6:def 21;

            

            thus (H . (d1 (*) d2)) = (H . x12) by A142, CAT_6:def 21

            .= ((H . d1) (*) (H . d2)) by A154, A155, A156, A157, A158, A142, Th1, A132;

          end;

          hence

           A159: H is covariant by A140, CAT_6:def 23, CAT_6:def 25;

          for x be object st x in the carrier of D1 holds ((P1 (*) H) . x) = (G1 . x)

          proof

            let x be object;

            assume

             A160: x in the carrier of D1;

            then

             A161: D1 is non empty;

            reconsider d = x as morphism of D1 by A160, CAT_6:def 1;

            

             A162: (H . d) = (H . x) by A161, CAT_6:def 21

            .= [(G1 . x), (G2 . x)] by A160, A132;

            reconsider x1 = (H . d) as object;

            

            thus ((P1 (*) H) . x) = ((P1 (*) H) . d) by A161, CAT_6:def 21

            .= (P1 . (H . d)) by A161, A118, A159, CAT_6: 34

            .= (P1 . x1) by A89, CAT_6:def 21

            .= PF1([) by A92, A89, Th1, A162

            .= (G1 . x);

          end;

          hence (P1 (*) H) = G1 by FUNCT_2: 12;

          for x be object st x in the carrier of D1 holds ((P2 (*) H) . x) = (G2 . x)

          proof

            let x be object;

            assume

             A163: x in the carrier of D1;

            then

             A164: D1 is non empty;

            reconsider d = x as morphism of D1 by A163, CAT_6:def 1;

            

             A165: (H . d) = (H . x) by A164, CAT_6:def 21

            .= [(G1 . x), (G2 . x)] by A163, A132;

            reconsider x2 = (H . d) as object;

            

            thus ((P2 (*) H) . x) = ((P2 (*) H) . d) by A164, CAT_6:def 21

            .= (P2 . (H . d)) by A164, A118, A159, CAT_6: 34

            .= (P2 . x2) by A89, CAT_6:def 21

            .= PF2([) by A165, A95, A89, Th1

            .= (G2 . x);

          end;

          hence (P2 (*) H) = G2 by FUNCT_2: 12;

          let H1 be Functor of D1, D;

          assume

           A166: H1 is covariant;

          assume

           A167: (P1 (*) H1) = G1;

          assume

           A168: (P2 (*) H1) = G2;

          for x be object st x in the carrier of D1 holds (H . x) = (H1 . x)

          proof

            let x be object;

            assume

             A169: x in the carrier of D1;

            then

             A170: D1 is non empty;

            reconsider d = x as morphism of D1 by A169, CAT_6:def 1;

            

             A171: (G1 . x) = (G1 . d) & (G2 . x) = (G2 . d) by A170, CAT_6:def 21;

            (H1 . d) in the carrier of D by A89, Th1;

            then

            consider f1 be morphism of C1, f2 be morphism of C2 such that

             A172: (H1 . d) = [f1, f2] & f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2);

            reconsider x1 = (H1 . d) as object;

            

             A173: (G1 . d) = (P1 . (H1 . d)) by A167, A170, A166, A118, CAT_6: 34

            .= (P1 . x1) by A89, CAT_6:def 21

            .= PF1([) by A172, A92, A89, Th1

            .= f1;

            

             A174: (G2 . d) = (P2 . (H1 . d)) by A168, A170, A166, A118, CAT_6: 34

            .= (P2 . x1) by A89, CAT_6:def 21

            .= PF2([) by A172, A95, A89, Th1

            .= f2;

            

            thus (H . x) = (H1 . d) by A173, A174, A172, A171, A169, A132

            .= (H1 . x) by A170, CAT_6:def 21;

          end;

          hence H = H1 by FUNCT_2: 12;

        end;

      end;

      then

      consider P1 be Functor of D, C1, P2 be Functor of D, C2 such that

       A175: P1 is covariant & P2 is covariant & (F1 (*) P1) = (F2 (*) P2) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) 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;

      take D, P1, P2;

      thus thesis by A75, A175, A1, Def20, TARSKI: 2;

    end;

    definition

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      :: CAT_7:def21

      mode pullback of F1,F2 -> triple object means

      : Def21: 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_pullback_of (F1,F2);

      correctness

      proof

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A3: the carrier of D = { [f1, f2] where f1 be morphism of C1, f2 be morphism of C2 : f1 in the carrier of C1 & f2 in the carrier of C2 & (F1 . f1) = (F2 . f2) } & the composition of D = { [ [f1, f2], f3] where f1,f2,f3 be morphism of D : f1 in the carrier of D & f2 in the carrier of D & f3 in the carrier of D & for f11,f12,f13 be morphism of C1, f21,f22,f23 be morphism of C2 st f1 = [f11, f21] & f2 = [f12, f22] & f3 = [f13, f23] holds f11 |> f12 & f21 |> f22 & f13 = (f11 (*) f12) & f23 = (f21 (*) f22) } & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) by A1, A2, Th51;

        take [D, P1, P2];

        thus thesis by A3;

      end;

    end

    definition

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      :: CAT_7:def22

      func [|F1,F2|] -> strict category equals

      : Def22: ( the pullback of F1, F2 `1_3 );

      correctness

      proof

        set T = the pullback of F1, F2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A3: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) by A1, A2, Def21;

        thus thesis by A3;

      end;

    end

    definition

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      :: CAT_7:def23

      func pr1 (F1,F2) -> Functor of [|F1, F2|], C1 equals

      : Def23: ( the pullback of F1, F2 `2_3 );

      correctness

      proof

        set T = the pullback of F1, F2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A3: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) by A1, A2, Def21;

        ( [D, P1, P2] `1_3 ) = D & ( [D, P1, P2] `2_3 ) = P1;

        then D = [|F1, F2|] by A1, A2, A3, Def22;

        then

        reconsider P1 as Functor of [|F1, F2|], C1;

        P1 = ( the pullback of F1, F2 `2_3 ) by A3;

        hence thesis;

      end;

      :: CAT_7:def24

      func pr2 (F1,F2) -> Functor of [|F1, F2|], C2 equals

      : Def24: ( the pullback of F1, F2 `3_3 );

      correctness

      proof

        set T = the pullback of F1, F2;

        consider D be strict category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

         A4: T = [D, P1, P2] & P1 is covariant & P2 is covariant & (D,P1,P2) is_pullback_of (F1,F2) by A1, A2, Def21;

        ( [D, P1, P2] `1_3 ) = D & ( [D, P1, P2] `3_3 ) = P2;

        then D = [|F1, F2|] by A1, A2, A4, Def22;

        then

        reconsider P2 as Functor of [|F1, F2|], C2;

        P2 = ( the pullback of F1, F2 `3_3 ) by A4;

        hence thesis;

      end;

    end

    theorem :: CAT_7:52

    

     Th52: 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 ( pr1 (F1,F2)) is covariant & ( pr2 (F1,F2)) is covariant & ( [|F1, F2|],( pr1 (F1,F2)),( pr2 (F1,F2))) is_pullback_of (F1,F2)

    proof

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      assume

       A1: F1 is covariant & F2 is covariant;

      set T = the pullback of F1, F2;

      consider D0 be strict category, P01 be Functor of D0, C1, P02 be Functor of D0, C2 such that

       A2: T = [D0, P01, P02] & P01 is covariant & P02 is covariant & (D0,P01,P02) is_pullback_of (F1,F2) by A1, Def21;

      

       A3: (F1 (*) P01) = (F2 (*) P02) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) holds ex H be Functor of D1, D0 st H is covariant & (P01 (*) H) = G1 & (P02 (*) H) = G2 & for H1 be Functor of D1, D0 st H1 is covariant & (P01 (*) H1) = G1 & (P02 (*) H1) = G2 holds H = H1 by A1, A2, Def20;

      

       A4: ( [D0, P01, P02] `1_3 ) = D0 & ( [D0, P01, P02] `2_3 ) = P01 & ( [D0, P01, P02] `3_3 ) = P02;

      then

       A5: D0 = [|F1, F2|] by A1, A2, Def22;

      reconsider P1 = P01 as Functor of [|F1, F2|], C1 by A5;

      reconsider P2 = P02 as Functor of [|F1, F2|], C2 by A5;

      ( pr1 (F1,F2)) is covariant & ( pr2 (F1,F2)) is covariant & (F1 (*) ( pr1 (F1,F2))) = (F2 (*) ( pr2 (F1,F2))) & for D1 be category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2) holds ex H be Functor of D1, [|F1, F2|] st H is covariant & (( pr1 (F1,F2)) (*) H) = G1 & (( pr2 (F1,F2)) (*) H) = G2 & (for H1 be Functor of D1, [|F1, F2|] st H1 is covariant & (( pr1 (F1,F2)) (*) H1) = G1 & (( pr2 (F1,F2)) (*) H1) = G2 holds H = H1)

      proof

        thus

         A6: ( pr1 (F1,F2)) is covariant by A2, A5, A4, A1, Def23;

        thus

         A7: ( pr2 (F1,F2)) is covariant by A2, A5, A4, A1, Def24;

        

        thus (F1 (*) ( pr1 (F1,F2))) = (( pr1 (F1,F2)) * F1) by A6, A1, CAT_6:def 27

        .= (P01 * F1) by A4, A2, A1, Def23

        .= (F1 (*) P01) by A2, A1, CAT_6:def 27

        .= (P02 * F2) by A2, A1, A3, CAT_6:def 27

        .= (( pr2 (F1,F2)) * F2) by A4, A2, A1, Def24

        .= (F2 (*) ( pr2 (F1,F2))) by A7, A1, CAT_6:def 27;

        let D1 be category;

        let G1 be Functor of D1, C1;

        let G2 be Functor of D1, C2;

        assume G1 is covariant & G2 is covariant & (F1 (*) G1) = (F2 (*) G2);

        then

        consider H0 be Functor of D1, D0 such that

         A8: H0 is covariant & (P01 (*) H0) = G1 & (P02 (*) H0) = G2 & (for H1 be Functor of D1, D0 st H1 is covariant & (P01 (*) H1) = G1 & (P02 (*) H1) = G2 holds H0 = H1) by A1, A2, Def20;

        reconsider H = H0 as Functor of D1, [|F1, F2|] by A5;

        take H;

        thus H is covariant by A5, A8;

        

        thus (( pr1 (F1,F2)) (*) H) = (H * ( pr1 (F1,F2))) by A5, A8, A6, CAT_6:def 27

        .= (H0 * P01) by A4, A2, A1, Def23

        .= G1 by A2, A8, CAT_6:def 27;

        

        thus (( pr2 (F1,F2)) (*) H) = (H * ( pr2 (F1,F2))) by A5, A8, A7, CAT_6:def 27

        .= (H0 * P02) by A4, A2, A1, Def24

        .= G2 by A2, A8, CAT_6:def 27;

        let H1 be Functor of D1, [|F1, F2|];

        assume

         A9: H1 is covariant & (( pr1 (F1,F2)) (*) H1) = G1 & (( pr2 (F1,F2)) (*) H1) = G2;

        reconsider H01 = H1 as Functor of D1, D0 by A5;

        

         A10: (P01 (*) H01) = (H01 * P01) by A2, A9, A5, CAT_6:def 27

        .= (H1 * ( pr1 (F1,F2))) by A4, A2, A1, Def23

        .= G1 by A9, A6, CAT_6:def 27;

        (P02 (*) H01) = (H01 * P02) by A2, A9, A5, CAT_6:def 27

        .= (H1 * ( pr2 (F1,F2))) by A4, A2, A1, Def24

        .= G2 by A9, A7, CAT_6:def 27;

        hence H = H1 by A8, A9, A5, A10;

      end;

      hence thesis by A1, Def20;

    end;

    theorem :: CAT_7:53

    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, F2|] ~= [|F2, F1|]

    proof

      let C,C1,C2 be category;

      let F1 be Functor of C1, C;

      let F2 be Functor of C2, C;

      assume

       A1: F1 is covariant & F2 is covariant;

      

       A2: ( pr1 (F1,F2)) is covariant & ( pr2 (F1,F2)) is covariant & ( [|F1, F2|],( pr1 (F1,F2)),( pr2 (F1,F2))) is_pullback_of (F1,F2) by A1, Th52;

      

       A3: ( pr1 (F2,F1)) is covariant & ( pr2 (F2,F1)) is covariant & ( [|F2, F1|],( pr1 (F2,F1)),( pr2 (F2,F1))) is_pullback_of (F2,F1) by A1, Th52;

      then ( [|F2, F1|],( pr2 (F2,F1)),( pr1 (F2,F1))) is_pullback_of (F1,F2) by A1, Th47;

      hence [|F1, F2|] ~= [|F2, F1|] by A1, A2, A3, Th46;

    end;

    theorem :: CAT_7:54

    ex C,C1,C2 be Category, F1 be Functor of C1, C, F2 be Functor of C2, C st not ex D be Category, P1 be Functor of D, C1, P2 be Functor of D, C2 st (F1 * P1) = (F2 * P2) & for D1 be Category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st (F1 * G1) = (F2 * G2) holds ex H be Functor of D1, D st (P1 * H) = G1 & (P2 * H) = G2 & for H1 be Functor of D1, D st (P1 * H1) = G1 & (P2 * H1) = G2 holds H = H1

    proof

      set C = ( Alter ( OrdC 2));

      set C1 = ( Alter ( OrdC 2));

      set C2 = ( Alter ( OrdC 2));

      consider f be morphism of ( OrdC 2) such that not f is identity and ( Ob ( OrdC 2)) = {( dom f), ( cod f)} and

       A1: ( Mor ( OrdC 2)) = {( dom f), ( cod f), f} and

       A2: (( dom f),( cod f),f) are_mutually_distinct by Th39;

      reconsider g1 = ( dom f), g2 = ( cod f) as morphism of ( OrdC 2) by A1, ENUMSET1:def 1;

      reconsider F1 = ( MORPHISM g1) as Functor of C1, C by CAT_6: 47;

      reconsider F2 = ( MORPHISM g2) as Functor of C2, C by CAT_6: 47;

      take C, C1, C2, F1, F2;

      assume ex D be Category, P1 be Functor of D, C1, P2 be Functor of D, C2 st (F1 * P1) = (F2 * P2) & for D1 be Category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st (F1 * G1) = (F2 * G2) holds ex H be Functor of D1, D st (P1 * H) = G1 & (P2 * H) = G2 & for H1 be Functor of D1, D st (P1 * H1) = G1 & (P2 * H1) = G2 holds H = H1;

      then

      consider D be Category, P1 be Functor of D, C1, P2 be Functor of D, C2 such that

       A3: (F1 * P1) = (F2 * P2) & for D1 be Category, G1 be Functor of D1, C1, G2 be Functor of D1, C2 st (F1 * G1) = (F2 * G2) holds ex H be Functor of D1, D st (P1 * H) = G1 & (P2 * H) = G2 & for H1 be Functor of D1, D st (P1 * H1) = G1 & (P2 * H1) = G2 holds H = H1;

      set g = the Morphism of D;

      

       A4: g in the carrier' of D;

      then

       A5: g in ( dom P1) by FUNCT_2:def 1;

      

       A6: g in ( dom P2) by A4, FUNCT_2:def 1;

      

       A7: ( Alter ( OrdC 2)) = CatStr (# ( Ob ( OrdC 2)), ( Mor ( OrdC 2)), ( SourceMap ( OrdC 2)), ( TargetMap ( OrdC 2)), ( CompMap ( OrdC 2)) #) by CAT_6:def 33;

      reconsider f1 = (P1 . g) as morphism of ( OrdC 2) by A7;

      reconsider f2 = (P2 . g) as morphism of ( OrdC 2) by A7;

      

       A8: ((F1 * P1) . g) = (F1 . (P1 . g)) by A5, FUNCT_1: 13

      .= (( MORPHISM g1) . f1) by CAT_6:def 21

      .= g1 by Th40, CAT_6: 22;

      ((F2 * P2) . g) = (F2 . (P2 . g)) by A6, FUNCT_1: 13

      .= (( MORPHISM g2) . f2) by CAT_6:def 21

      .= g2 by Th40, CAT_6: 22;

      hence contradiction by A8, A3, A2, ZFMISC_1:def 5;

    end;