sysrel.miz



    begin

    reserve x,y,z,t for object,

X,Y,Z,W for set;

    reserve R,S,T for Relation;

    

     Lm1: X <> {} & Y <> {} implies ( dom [:X, Y:]) = X & ( rng [:X, Y:]) = Y by RELAT_1: 160;

    theorem :: SYSREL:1

    

     Th1: ( dom (R /\ [:X, Y:])) c= X & ( rng (R /\ [:X, Y:])) c= Y

    proof

      per cases ;

        suppose X = {} or Y = {} ;

        

        then (R /\ [:X, Y:]) = (R /\ {} ) by ZFMISC_1: 90

        .= {} ;

        hence thesis;

      end;

        suppose

         A1: X <> {} & Y <> {} ;

        ( rng (R /\ [:X, Y:])) c= (( rng R) /\ ( rng [:X, Y:])) by RELAT_1: 13;

        then

         A2: ( rng (R /\ [:X, Y:])) c= (( rng R) /\ Y) by A1, Lm1;

        ( dom (R /\ [:X, Y:])) c= (( dom R) /\ ( dom [:X, Y:])) by XTUPLE_0: 24;

        then

         A3: ( dom (R /\ [:X, Y:])) c= (( dom R) /\ X) by A1, Lm1;

        (( dom R) /\ X) c= X by XBOOLE_1: 17;

        hence ( dom (R /\ [:X, Y:])) c= X by A3;

        (( rng R) /\ Y) c= Y by XBOOLE_1: 17;

        hence ( rng (R /\ [:X, Y:])) c= Y by A2;

      end;

    end;

    theorem :: SYSREL:2

    X misses Y implies ( dom (R /\ [:X, Y:])) misses ( rng (R /\ [:X, Y:]))

    proof

      assume

       A1: (X /\ Y) = {} ;

      ( dom (R /\ [:X, Y:])) c= X by Th1;

      then

       A2: (( dom (R /\ [:X, Y:])) /\ ( rng (R /\ [:X, Y:]))) c= (X /\ ( rng (R /\ [:X, Y:]))) by XBOOLE_1: 26;

      (X /\ ( rng (R /\ [:X, Y:]))) c= (X /\ Y) by Th1, XBOOLE_1: 26;

      hence (( dom (R /\ [:X, Y:])) /\ ( rng (R /\ [:X, Y:]))) = {} by A1, A2, XBOOLE_1: 1, XBOOLE_1: 3;

    end;

    theorem :: SYSREL:3

    

     Th3: R c= [:X, Y:] implies ( dom R) c= X & ( rng R) c= Y

    proof

      assume R c= [:X, Y:];

      then (R /\ [:X, Y:]) = R by XBOOLE_1: 28;

      hence thesis by Th1;

    end;

    theorem :: SYSREL:4

    R c= [:X, Y:] implies (R ~ ) c= [:Y, X:]

    proof

      assume

       A1: R c= [:X, Y:];

      let z,t be object;

      assume [z, t] in (R ~ );

      then [t, z] in R by RELAT_1:def 7;

      then t in X & z in Y by A1, ZFMISC_1: 87;

      hence thesis by ZFMISC_1: 87;

    end;

    theorem :: SYSREL:5

    ( [:X, Y:] ~ ) = [:Y, X:]

    proof

      let x,y be object;

      thus [x, y] in ( [:X, Y:] ~ ) implies [x, y] in [:Y, X:]

      proof

        assume [x, y] in ( [:X, Y:] ~ );

        then [y, x] in [:X, Y:] by RELAT_1:def 7;

        then y in X & x in Y by ZFMISC_1: 87;

        hence thesis by ZFMISC_1: 87;

      end;

      assume [x, y] in [:Y, X:];

      then y in X & x in Y by ZFMISC_1: 87;

      then [y, x] in [:X, Y:] by ZFMISC_1: 87;

      hence thesis by RELAT_1:def 7;

    end;

    theorem :: SYSREL:6

    

     Th6: ((R \/ S) * T) = ((R * T) \/ (S * T))

    proof

      thus ((R \/ S) * T) = ((R * T) \/ (S * T))

      proof

        let x,y be object;

        thus [x, y] in ((R \/ S) * T) implies [x, y] in ((R * T) \/ (S * T))

        proof

          assume [x, y] in ((R \/ S) * T);

          then

          consider z be object such that

           A1: [x, z] in (R \/ S) & [z, y] in T by RELAT_1:def 8;

           [x, z] in R & [z, y] in T or [x, z] in S & [z, y] in T by A1, XBOOLE_0:def 3;

          then [x, y] in (R * T) or [x, y] in (S * T) by RELAT_1:def 8;

          hence thesis by XBOOLE_0:def 3;

        end;

        assume

         A2: [x, y] in ((R * T) \/ (S * T));

        per cases by A2, XBOOLE_0:def 3;

          suppose [x, y] in (S * T);

          then

          consider z be object such that

           A3: [x, z] in S and

           A4: [z, y] in T by RELAT_1:def 8;

           [x, z] in (R \/ S) by A3, XBOOLE_0:def 3;

          hence thesis by A4, RELAT_1:def 8;

        end;

          suppose [x, y] in (R * T);

          then

          consider z be object such that

           A5: [x, z] in R and

           A6: [z, y] in T by RELAT_1:def 8;

           [x, z] in (R \/ S) by A5, XBOOLE_0:def 3;

          hence thesis by A6, RELAT_1:def 8;

        end;

      end;

    end;

    theorem :: SYSREL:7

    (X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & x in X implies not x in Y & not y in X & y in Y) & (X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & y in Y implies not y in X & not x in Y & x in X) & (X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & x in Y implies not x in X & not y in Y & y in X) & (X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & y in X implies not x in X & not y in Y & x in Y)

    proof

      thus X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & x in X implies not x in Y & not y in X & y in Y

      proof

        assume that

         A1: X misses Y and

         A2: R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R and

         A3: x in X;

        

         A4: not [x, y] in [:Y, X:]

        proof

          assume

           A5: [x, y] in [:Y, X:];

           not x in Y by A1, A3, XBOOLE_0: 3;

          hence thesis by A5, ZFMISC_1: 87;

        end;

        

         A6: [x, y] in [:X, Y:] implies thesis

        proof

          assume [x, y] in [:X, Y:];

          then x in X & y in Y by ZFMISC_1: 87;

          hence thesis by A1, XBOOLE_0: 3;

        end;

         [:X, Y:] misses [:Y, X:] by A1, ZFMISC_1: 104;

        hence thesis by A2, A6, A4, XBOOLE_0: 5;

      end;

      thus X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & y in Y implies not y in X & not x in Y & x in X

      proof

        assume that

         A7: X misses Y and

         A8: R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R and

         A9: y in Y;

        

         A10: not [x, y] in [:Y, X:]

        proof

          assume

           A11: [x, y] in [:Y, X:];

           not y in X by A7, A9, XBOOLE_0: 3;

          hence thesis by A11, ZFMISC_1: 87;

        end;

         [x, y] in [:X, Y:] implies thesis

        proof

          assume [x, y] in [:X, Y:];

          then x in X & y in Y by ZFMISC_1: 87;

          hence thesis by A7, XBOOLE_0: 3;

        end;

        hence thesis by A8, A10, XBOOLE_0:def 3;

      end;

      thus X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R & x in Y implies not x in X & not y in Y & y in X

      proof

        assume that

         A12: X misses Y and

         A13: R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R and

         A14: x in Y;

        

         A15: not [x, y] in [:X, Y:]

        proof

          assume

           A16: [x, y] in [:X, Y:];

           not x in X by A12, A14, XBOOLE_0: 3;

          hence thesis by A16, ZFMISC_1: 87;

        end;

         [x, y] in [:Y, X:] & not [x, y] in [:X, Y:] implies thesis

        proof

          assume [x, y] in [:Y, X:] & not [x, y] in [:X, Y:];

          then x in Y & y in X & not x in X or x in Y & y in X & not y in Y by ZFMISC_1: 87;

          hence thesis by A12, XBOOLE_0: 3;

        end;

        hence thesis by A13, A15, XBOOLE_0:def 3;

      end;

      assume that

       A17: X misses Y and

       A18: R c= ( [:X, Y:] \/ [:Y, X:]) & [x, y] in R and

       A19: y in X;

      

       A20: not [x, y] in [:X, Y:]

      proof

        assume

         A21: [x, y] in [:X, Y:];

         not y in Y by A17, A19, XBOOLE_0: 3;

        hence thesis by A21, ZFMISC_1: 87;

      end;

       [x, y] in [:Y, X:] implies thesis

      proof

        assume [x, y] in [:Y, X:];

        then x in Y & y in X by ZFMISC_1: 87;

        hence thesis by A17, XBOOLE_0: 3;

      end;

      hence thesis by A18, A20, XBOOLE_0:def 3;

    end;

    theorem :: SYSREL:8

    

     Th8: R c= [:X, Y:] implies (R | Z) = (R /\ [:Z, Y:]) & (Z |` R) = (R /\ [:X, Z:])

    proof

      assume

       A1: R c= [:X, Y:];

      thus (R | Z) = (R /\ [:Z, Y:])

      proof

        let x,y be object;

        thus [x, y] in (R | Z) implies [x, y] in (R /\ [:Z, Y:])

        proof

          assume

           A2: [x, y] in (R | Z);

          then

           A3: x in Z by RELAT_1:def 11;

          

           A4: [x, y] in R by A2, RELAT_1:def 11;

          then y in Y by A1, ZFMISC_1: 87;

          then [x, y] in [:Z, Y:] by A3, ZFMISC_1: 87;

          hence thesis by A4, XBOOLE_0:def 4;

        end;

        thus [x, y] in (R /\ [:Z, Y:]) implies [x, y] in (R | Z)

        proof

          assume

           A5: [x, y] in (R /\ [:Z, Y:]);

          then [x, y] in [:Z, Y:] by XBOOLE_0:def 4;

          then

           A6: x in Z by ZFMISC_1: 87;

           [x, y] in R by A5, XBOOLE_0:def 4;

          hence thesis by A6, RELAT_1:def 11;

        end;

      end;

      let x,y be object;

      thus [x, y] in (Z |` R) implies [x, y] in (R /\ [:X, Z:])

      proof

        assume

         A7: [x, y] in (Z |` R);

        then

         A8: y in Z by RELAT_1:def 12;

        

         A9: [x, y] in R by A7, RELAT_1:def 12;

        then x in X by A1, ZFMISC_1: 87;

        then [x, y] in [:X, Z:] by A8, ZFMISC_1: 87;

        hence thesis by A9, XBOOLE_0:def 4;

      end;

      assume

       A10: [x, y] in (R /\ [:X, Z:]);

      then [x, y] in [:X, Z:] by XBOOLE_0:def 4;

      then

       A11: y in Z by ZFMISC_1: 87;

       [x, y] in R by A10, XBOOLE_0:def 4;

      hence thesis by A11, RELAT_1:def 12;

    end;

    theorem :: SYSREL:9

    R c= [:X, Y:] & X = (Z \/ W) implies R = ((R | Z) \/ (R | W))

    proof

      assume that

       A1: R c= [:X, Y:] and

       A2: X = (Z \/ W);

      

      thus R = (R /\ [:X, Y:]) by A1, XBOOLE_1: 28

      .= (R /\ ( [:Z, Y:] \/ [:W, Y:])) by A2, ZFMISC_1: 97

      .= ((R /\ [:Z, Y:]) \/ (R /\ [:W, Y:])) by XBOOLE_1: 23

      .= ((R | Z) \/ (R /\ [:W, Y:])) by A1, Th8

      .= ((R | Z) \/ (R | W)) by A1, Th8;

    end;

    theorem :: SYSREL:10

    X misses Y & R c= ( [:X, Y:] \/ [:Y, X:]) implies (R | X) c= [:X, Y:]

    proof

      assume that

       A1: (X /\ Y) = {} and

       A2: R c= ( [:X, Y:] \/ [:Y, X:]);

      (R | X) = (R /\ [:X, ( rng R):]) by RELAT_1: 67;

      then (R | X) c= (( [:X, Y:] \/ [:Y, X:]) /\ [:X, ( rng R):]) by A2, XBOOLE_1: 26;

      then

       A3: (R | X) c= (( [:X, Y:] /\ [:X, ( rng R):]) \/ ( [:Y, X:] /\ [:X, ( rng R):])) by XBOOLE_1: 23;

      ( [:Y, X:] /\ [:X, ( rng R):]) = [:(X /\ Y), (X /\ ( rng R)):] by ZFMISC_1: 100

      .= {} by A1, ZFMISC_1: 90;

      hence thesis by A3, XBOOLE_1: 18;

    end;

    theorem :: SYSREL:11

    R c= S implies (R ~ ) c= (S ~ )

    proof

      assume R c= S;

      then (R \/ S) = S by XBOOLE_1: 12;

      then ((R ~ ) \/ (S ~ )) = (S ~ ) by RELAT_1: 23;

      hence thesis by XBOOLE_1: 7;

    end;

    

     Lm2: ( id X) c= [:X, X:]

    proof

      let x,y be object;

      assume [x, y] in ( id X);

      then x in X & x = y by RELAT_1:def 10;

      hence thesis by ZFMISC_1: 87;

    end;

    theorem :: SYSREL:12

    

     Th12: (( id X) * ( id X)) = ( id X)

    proof

      ( dom ( id X)) = X;

      hence thesis by RELAT_1: 51;

    end;

    theorem :: SYSREL:13

    for x be object holds ( id {x}) = { [x, x]}

    proof

      let x be object;

      x in {x} by TARSKI:def 1;

      then [x, x] in ( id {x}) by RELAT_1:def 10;

      then

       A1: { [x, x]} c= ( id {x}) by ZFMISC_1: 31;

       [: {x}, {x}:] = { [x, x]} by ZFMISC_1: 29;

      then ( id {x}) c= { [x, x]} by Lm2;

      hence thesis by A1;

    end;

    theorem :: SYSREL:14

    

     Th14: ( id (X \/ Y)) = (( id X) \/ ( id Y)) & ( id (X /\ Y)) = (( id X) /\ ( id Y)) & ( id (X \ Y)) = (( id X) \ ( id Y))

    proof

      thus ( id (X \/ Y)) = (( id X) \/ ( id Y))

      proof

        let x,y be object;

        thus [x, y] in ( id (X \/ Y)) implies [x, y] in (( id X) \/ ( id Y))

        proof

          assume

           A1: [x, y] in ( id (X \/ Y));

          then x in (X \/ Y) by RELAT_1:def 10;

          then

           A2: x in X or x in Y by XBOOLE_0:def 3;

          x = y by A1, RELAT_1:def 10;

          then [x, y] in ( id X) or [x, y] in ( id Y) by A2, RELAT_1:def 10;

          hence thesis by XBOOLE_0:def 3;

        end;

        assume [x, y] in (( id X) \/ ( id Y));

        then

         A3: [x, y] in ( id X) or [x, y] in ( id Y) by XBOOLE_0:def 3;

        then x in X or x in Y by RELAT_1:def 10;

        then

         A4: x in (X \/ Y) by XBOOLE_0:def 3;

        x = y by A3, RELAT_1:def 10;

        hence thesis by A4, RELAT_1:def 10;

      end;

      thus ( id (X /\ Y)) = (( id X) /\ ( id Y))

      proof

        let x,y be object;

        thus [x, y] in ( id (X /\ Y)) implies [x, y] in (( id X) /\ ( id Y))

        proof

          assume

           A5: [x, y] in ( id (X /\ Y));

          then

           A6: x in (X /\ Y) by RELAT_1:def 10;

          

           A7: x = y by A5, RELAT_1:def 10;

          x in Y by A6, XBOOLE_0:def 4;

          then

           A8: [x, y] in ( id Y) by A7, RELAT_1:def 10;

          x in X by A6, XBOOLE_0:def 4;

          then [x, y] in ( id X) by A7, RELAT_1:def 10;

          hence thesis by A8, XBOOLE_0:def 4;

        end;

        assume

         A9: [x, y] in (( id X) /\ ( id Y));

        then

         A10: [x, y] in ( id X) by XBOOLE_0:def 4;

        then

         A11: x = y by RELAT_1:def 10;

         [x, y] in ( id Y) by A9, XBOOLE_0:def 4;

        then

         A12: x in Y by RELAT_1:def 10;

        x in X by A10, RELAT_1:def 10;

        then x in (X /\ Y) by A12, XBOOLE_0:def 4;

        hence thesis by A11, RELAT_1:def 10;

      end;

      let x,y be object;

      thus [x, y] in ( id (X \ Y)) implies [x, y] in (( id X) \ ( id Y))

      proof

        assume

         A13: [x, y] in ( id (X \ Y));

        then

         A14: x in (X \ Y) by RELAT_1:def 10;

        then not x in Y by XBOOLE_0:def 5;

        then

         A15: not [x, y] in ( id Y) by RELAT_1:def 10;

        x = y by A13, RELAT_1:def 10;

        then [x, y] in ( id X) by A14, RELAT_1:def 10;

        hence thesis by A15, XBOOLE_0:def 5;

      end;

      assume

       A16: [x, y] in (( id X) \ ( id Y));

      then

       A17: x = y by RELAT_1:def 10;

       not [x, y] in ( id Y) by A16, XBOOLE_0:def 5;

      then

       A18: not (x in Y & x = y) by RELAT_1:def 10;

      x in X by A16, RELAT_1:def 10;

      then x in (X \ Y) by A16, A18, RELAT_1:def 10, XBOOLE_0:def 5;

      hence thesis by A17, RELAT_1:def 10;

    end;

    theorem :: SYSREL:15

    

     Th15: X c= Y implies ( id X) c= ( id Y)

    proof

      assume X c= Y;

      then (X \/ Y) = Y by XBOOLE_1: 12;

      then (( id X) \/ ( id Y)) = ( id Y) by Th14;

      hence thesis by XBOOLE_1: 7;

    end;

    theorem :: SYSREL:16

    (( id (X \ Y)) \ ( id X)) = {} by Th15, XBOOLE_1: 37;

    theorem :: SYSREL:17

    R c= ( id ( dom R)) implies R = ( id ( dom R))

    proof

      assume

       A1: R c= ( id ( dom R));

      let x,y be object;

      thus [x, y] in R implies [x, y] in ( id ( dom R)) by A1;

      assume

       A2: [x, y] in ( id ( dom R));

      then x in ( dom R) by RELAT_1:def 10;

      then

       A3: ex z be object st [x, z] in R by XTUPLE_0:def 12;

      x = y by A2, RELAT_1:def 10;

      hence thesis by A1, A3, RELAT_1:def 10;

    end;

    theorem :: SYSREL:18

    ( id X) c= (R \/ (R ~ )) implies ( id X) c= R & ( id X) c= (R ~ )

    proof

      assume

       A1: ( id X) c= (R \/ (R ~ ));

      for x be object holds x in X implies [x, x] in R & [x, x] in (R ~ )

      proof

        let x be object;

        assume x in X;

        then [x, x] in ( id X) by RELAT_1:def 10;

        then

         A2: [x, x] in R or [x, x] in (R ~ ) by A1, XBOOLE_0:def 3;

        hence [x, x] in R by RELAT_1:def 7;

        thus thesis by A2, RELAT_1:def 7;

      end;

      then (for x be object holds x in X implies [x, x] in R) & for x be object holds x in X implies [x, x] in (R ~ );

      hence thesis by RELAT_1: 47;

    end;

    theorem :: SYSREL:19

    ( id X) c= R implies ( id X) c= (R ~ )

    proof

      assume

       A1: ( id X) c= R;

      for x be object holds x in X implies [x, x] in (R ~ )

      proof

        let x be object;

        assume x in X;

        then [x, x] in ( id X) by RELAT_1:def 10;

        hence thesis by A1, RELAT_1:def 7;

      end;

      hence thesis by RELAT_1: 47;

    end;

    theorem :: SYSREL:20

    R c= [:X, X:] implies (R \ ( id ( dom R))) = (R \ ( id X)) & (R \ ( id ( rng R))) = (R \ ( id X))

    proof

      

       A1: (R \ ( id ( dom R))) c= (R \ ( id X))

      proof

        let x,y be object;

        assume

         A2: [x, y] in (R \ ( id ( dom R)));

        then

         A3: not [x, y] in ( id ( dom R)) by XBOOLE_0:def 5;

         not [x, y] in ( id X)

        proof

          assume [x, y] in ( id X);

          then

           A4: x = y by RELAT_1:def 10;

          x in ( dom R) by A2, XTUPLE_0:def 12;

          hence contradiction by A3, A4, RELAT_1:def 10;

        end;

        hence thesis by A2, XBOOLE_0:def 5;

      end;

      

       A5: (R \ ( id ( rng R))) c= (R \ ( id X))

      proof

        let x,y be object;

        assume

         A6: [x, y] in (R \ ( id ( rng R)));

        then

         A7: not [x, y] in ( id ( rng R)) by XBOOLE_0:def 5;

         not [x, y] in ( id X)

        proof

          assume [x, y] in ( id X);

          then

           A8: x = y by RELAT_1:def 10;

          y in ( rng R) by A6, XTUPLE_0:def 13;

          hence contradiction by A7, A8, RELAT_1:def 10;

        end;

        hence thesis by A6, XBOOLE_0:def 5;

      end;

      assume

       A9: R c= [:X, X:];

      then ( id ( dom R)) c= ( id X) by Th3, Th15;

      then (R \ ( id X)) c= (R \ ( id ( dom R))) by XBOOLE_1: 34;

      hence (R \ ( id ( dom R))) = (R \ ( id X)) by A1;

      ( id ( rng R)) c= ( id X) by A9, Th3, Th15;

      then (R \ ( id X)) c= (R \ ( id ( rng R))) by XBOOLE_1: 34;

      hence thesis by A5;

    end;

    theorem :: SYSREL:21

    ((( id X) * (R \ ( id X))) = {} implies ( dom (R \ ( id X))) = (( dom R) \ X)) & (((R \ ( id X)) * ( id X)) = {} implies ( rng (R \ ( id X))) = (( rng R) \ X))

    proof

      thus (( id X) * (R \ ( id X))) = {} implies ( dom (R \ ( id X))) = (( dom R) \ X)

      proof

        assume

         A1: (( id X) * (R \ ( id X))) = {} ;

        

         A2: ( dom (R \ ( id X))) c= (( dom R) \ X)

        proof

          let x be object;

          

           A3: x in ( dom R) & not x in X implies thesis by XBOOLE_0:def 5;

          assume x in ( dom (R \ ( id X)));

          then

           A4: ex y be object st [x, y] in (R \ ( id X)) by XTUPLE_0:def 12;

           not x in X

          proof

            assume x in X;

            then [x, x] in ( id X) by RELAT_1:def 10;

            hence thesis by A1, A4, RELAT_1:def 8;

          end;

          hence thesis by A4, A3, XTUPLE_0:def 12;

        end;

        (( dom R) \ ( dom ( id X))) c= ( dom (R \ ( id X))) by XTUPLE_0: 25;

        then (( dom R) \ X) c= ( dom (R \ ( id X)));

        hence thesis by A2;

      end;

      thus ((R \ ( id X)) * ( id X)) = {} implies ( rng (R \ ( id X))) = (( rng R) \ X)

      proof

        assume

         A5: ((R \ ( id X)) * ( id X)) = {} ;

        

         A6: ( rng (R \ ( id X))) c= (( rng R) \ X)

        proof

          let y be object;

          

           A7: y in ( rng R) & not y in X implies thesis by XBOOLE_0:def 5;

          assume y in ( rng (R \ ( id X)));

          then

           A8: ex x be object st [x, y] in (R \ ( id X)) by XTUPLE_0:def 13;

           not y in X

          proof

            assume y in X;

            then [y, y] in ( id X) by RELAT_1:def 10;

            hence thesis by A5, A8, RELAT_1:def 8;

          end;

          hence thesis by A8, A7, XTUPLE_0:def 13;

        end;

        (( rng R) \ ( rng ( id X))) c= ( rng (R \ ( id X))) by RELAT_1: 14;

        then (( rng R) \ X) c= ( rng (R \ ( id X)));

        hence thesis by A6;

      end;

    end;

    theorem :: SYSREL:22

    

     Th22: (R c= (R * R) & (R * (R \ ( id ( rng R)))) = {} implies ( id ( rng R)) c= R) & (R c= (R * R) & ((R \ ( id ( dom R))) * R) = {} implies ( id ( dom R)) c= R)

    proof

      thus R c= (R * R) & (R * (R \ ( id ( rng R)))) = {} implies ( id ( rng R)) c= R

      proof

        assume that

         A1: R c= (R * R) and

         A2: (R * (R \ ( id ( rng R)))) = {} ;

        for y be object holds y in ( rng R) implies [y, y] in R

        proof

          let y be object;

          assume y in ( rng R);

          then

          consider x be object such that

           A3: [x, y] in R by XTUPLE_0:def 13;

          consider z be object such that

           A4: [x, z] in R and

           A5: [z, y] in R by A1, A3, RELAT_1:def 8;

          z = y

          proof

            assume z <> y;

            then not [z, y] in ( id ( rng R)) by RELAT_1:def 10;

            then [z, y] in (R \ ( id ( rng R))) by A5, XBOOLE_0:def 5;

            hence contradiction by A2, A4, RELAT_1:def 8;

          end;

          hence thesis by A5;

        end;

        hence thesis by RELAT_1: 47;

      end;

      assume that

       A6: R c= (R * R) and

       A7: ((R \ ( id ( dom R))) * R) = {} ;

      for x be object holds x in ( dom R) implies [x, x] in R

      proof

        let x be object;

        assume x in ( dom R);

        then

        consider y be object such that

         A8: [x, y] in R by XTUPLE_0:def 12;

        consider z be object such that

         A9: [x, z] in R and

         A10: [z, y] in R by A6, A8, RELAT_1:def 8;

        z = x

        proof

          assume z <> x;

          then not [x, z] in ( id ( dom R)) by RELAT_1:def 10;

          then [x, z] in (R \ ( id ( dom R))) by A9, XBOOLE_0:def 5;

          hence contradiction by A7, A10, RELAT_1:def 8;

        end;

        hence thesis by A9;

      end;

      hence thesis by RELAT_1: 47;

    end;

    theorem :: SYSREL:23

    (R c= (R * R) & (R * (R \ ( id ( rng R)))) = {} implies (R /\ ( id ( rng R))) = ( id ( rng R))) & (R c= (R * R) & ((R \ ( id ( dom R))) * R) = {} implies (R /\ ( id ( dom R))) = ( id ( dom R))) by Th22, XBOOLE_1: 28;

    theorem :: SYSREL:24

    ((R * (R \ ( id X))) = {} implies (R * (R \ ( id ( rng R)))) = {} ) & (((R \ ( id X)) * R) = {} implies ((R \ ( id ( dom R))) * R) = {} )

    proof

      thus (R * (R \ ( id X))) = {} implies (R * (R \ ( id ( rng R)))) = {}

      proof

        assume that

         A1: (R * (R \ ( id X))) = {} and

         A2: (R * (R \ ( id ( rng R)))) <> {} ;

        consider x,y be object such that

         A3: [x, y] in (R * (R \ ( id ( rng R)))) by A2;

        consider z be object such that

         A4: [x, z] in R and

         A5: [z, y] in (R \ ( id ( rng R))) by A3, RELAT_1:def 8;

        z in ( rng R) & not [z, y] in ( id ( rng R)) by A4, A5, XBOOLE_0:def 5, XTUPLE_0:def 13;

        then z <> y by RELAT_1:def 10;

        then not [z, y] in ( id X) by RELAT_1:def 10;

        then [z, y] in (R \ ( id X)) by A5, XBOOLE_0:def 5;

        hence contradiction by A1, A4, RELAT_1:def 8;

      end;

      assume that

       A6: ((R \ ( id X)) * R) = {} and

       A7: ((R \ ( id ( dom R))) * R) <> {} ;

      consider x,y be object such that

       A8: [x, y] in ((R \ ( id ( dom R))) * R) by A7;

      consider z be object such that

       A9: [x, z] in (R \ ( id ( dom R))) and

       A10: [z, y] in R by A8, RELAT_1:def 8;

       not [x, z] in ( id ( dom R)) by A9, XBOOLE_0:def 5;

      then not z in ( dom R) or x <> z by RELAT_1:def 10;

      then not [x, z] in ( id X) by A10, RELAT_1:def 10, XTUPLE_0:def 12;

      then [x, z] in (R \ ( id X)) by A9, XBOOLE_0:def 5;

      hence contradiction by A6, A10, RELAT_1:def 8;

    end;

    definition

      let R;

      :: SYSREL:def1

      func CL R -> Relation equals (R /\ ( id ( dom R)));

      correctness ;

    end

    theorem :: SYSREL:25

    

     Th25: for x,y be object holds [x, y] in ( CL R) implies x in ( dom ( CL R)) & x = y

    proof

      let x,y be object;

      assume

       A1: [x, y] in ( CL R);

      then [x, y] in ( id ( dom R)) by XBOOLE_0:def 4;

      hence thesis by A1, RELAT_1:def 10, XTUPLE_0:def 12;

    end;

    theorem :: SYSREL:26

    

     Th26: ( dom ( CL R)) = ( rng ( CL R))

    proof

      thus ( dom ( CL R)) c= ( rng ( CL R))

      proof

        let x be object;

        assume x in ( dom ( CL R));

        then

        consider y be object such that

         A1: [x, y] in ( CL R) by XTUPLE_0:def 12;

         [x, y] in ( id ( dom R)) by A1, XBOOLE_0:def 4;

        then [x, x] in ( CL R) by A1, RELAT_1:def 10;

        hence thesis by XTUPLE_0:def 13;

      end;

      let x be object;

      assume x in ( rng ( CL R));

      then

      consider y be object such that

       A2: [y, x] in ( CL R) by XTUPLE_0:def 13;

       [y, x] in ( id ( dom R)) by A2, XBOOLE_0:def 4;

      then [x, x] in ( CL R) by A2, RELAT_1:def 10;

      hence thesis by XTUPLE_0:def 12;

    end;

    theorem :: SYSREL:27

    

     Th27: (x in ( dom ( CL R)) iff x in ( dom R) & [x, x] in R) & (x in ( rng ( CL R)) iff x in ( dom R) & [x, x] in R) & (x in ( rng ( CL R)) iff x in ( rng R) & [x, x] in R) & (x in ( dom ( CL R)) iff x in ( rng R) & [x, x] in R)

    proof

      

       A1: x in ( dom R) & [x, x] in R implies x in ( dom ( CL R))

      proof

        assume that

         A2: x in ( dom R) and

         A3: [x, x] in R;

         [x, x] in ( id ( dom R)) by A2, RELAT_1:def 10;

        then [x, x] in (R /\ ( id ( dom R))) by A3, XBOOLE_0:def 4;

        hence thesis by XTUPLE_0:def 12;

      end;

      

       A4: x in ( dom ( CL R)) implies x in ( dom R) & [x, x] in R

      proof

        assume x in ( dom ( CL R));

        then

        consider y be object such that

         A5: [x, y] in ( CL R) by XTUPLE_0:def 12;

         [x, y] in R & [x, y] in ( id ( dom R)) by A5, XBOOLE_0:def 4;

        hence thesis by RELAT_1:def 10;

      end;

      hence x in ( dom ( CL R)) iff x in ( dom R) & [x, x] in R by A1;

      thus x in ( rng ( CL R)) iff x in ( dom R) & [x, x] in R by A4, A1, Th26;

      thus x in ( rng ( CL R)) iff x in ( rng R) & [x, x] in R by A4, A1, Th26, XTUPLE_0:def 12, XTUPLE_0:def 13;

      thus thesis by A4, A1, XTUPLE_0:def 12, XTUPLE_0:def 13;

    end;

    theorem :: SYSREL:28

    

     Th28: ( CL R) = ( id ( dom ( CL R)))

    proof

      let x,y be object;

      thus [x, y] in ( CL R) implies [x, y] in ( id ( dom ( CL R)))

      proof

        assume

         A1: [x, y] in ( CL R);

        then [x, y] in ( id ( dom R)) by XBOOLE_0:def 4;

        then

         A2: x = y by RELAT_1:def 10;

        x in ( dom ( CL R)) by A1, XTUPLE_0:def 12;

        hence thesis by A2, RELAT_1:def 10;

      end;

      assume

       A3: [x, y] in ( id ( dom ( CL R)));

      then x in ( dom ( CL R)) by RELAT_1:def 10;

      then

       A4: ex z be object st [x, z] in ( CL R) by XTUPLE_0:def 12;

      x = y by A3, RELAT_1:def 10;

      hence thesis by A4, Th25;

    end;

    theorem :: SYSREL:29

    

     Th29: ((R * R) = R & (R * (R \ ( CL R))) = {} & [x, y] in R & x <> y implies x in (( dom R) \ ( dom ( CL R))) & y in ( dom ( CL R))) & ((R * R) = R & ((R \ ( CL R)) * R) = {} & [x, y] in R & x <> y implies y in (( rng R) \ ( dom ( CL R))) & x in ( dom ( CL R)))

    proof

      thus (R * R) = R & (R * (R \ ( CL R))) = {} & [x, y] in R & x <> y implies x in (( dom R) \ ( dom ( CL R))) & y in ( dom ( CL R))

      proof

        assume that

         A1: (R * R) = R and

         A2: (R * (R \ ( CL R))) = {} and

         A3: [x, y] in R and

         A4: x <> y;

        

         A5: y in ( rng R) by A3, XTUPLE_0:def 13;

        consider z be object such that

         A6: [x, z] in R and

         A7: [z, y] in R by A1, A3, RELAT_1:def 8;

        

         A8: z = y

        proof

          assume z <> y;

          then not [z, y] in ( id ( dom R)) by RELAT_1:def 10;

          then not [z, y] in (R /\ ( id ( dom R))) by XBOOLE_0:def 4;

          then [z, y] in (R \ ( CL R)) by A7, XBOOLE_0:def 5;

          hence thesis by A2, A6, RELAT_1:def 8;

        end;

         not [x, y] in ( id ( dom R)) by A4, RELAT_1:def 10;

        then not [x, y] in (R /\ ( id ( dom R))) by XBOOLE_0:def 4;

        then

         A9: [x, y] in (R \ ( CL R)) by A3, XBOOLE_0:def 5;

        

         A10: not x in ( dom ( CL R))

        proof

          assume x in ( dom ( CL R));

          then [x, x] in R by Th27;

          hence thesis by A2, A9, RELAT_1:def 8;

        end;

        x in ( dom R) by A6, XTUPLE_0:def 12;

        hence thesis by A7, A8, A5, A10, Th27, XBOOLE_0:def 5;

      end;

      thus (R * R) = R & ((R \ ( CL R)) * R) = {} & [x, y] in R & x <> y implies y in (( rng R) \ ( dom ( CL R))) & x in ( dom ( CL R))

      proof

        assume that

         A11: (R * R) = R and

         A12: ((R \ ( CL R)) * R) = {} and

         A13: [x, y] in R and

         A14: x <> y;

        

         A15: x in ( dom R) by A13, XTUPLE_0:def 12;

        consider z be object such that

         A16: [x, z] in R and

         A17: [z, y] in R by A11, A13, RELAT_1:def 8;

        

         A18: z = x

        proof

          assume z <> x;

          then not [x, z] in ( id ( dom R)) by RELAT_1:def 10;

          then not [x, z] in (R /\ ( id ( dom R))) by XBOOLE_0:def 4;

          then [x, z] in (R \ ( CL R)) by A16, XBOOLE_0:def 5;

          hence thesis by A12, A17, RELAT_1:def 8;

        end;

         not [x, y] in ( id ( dom R)) by A14, RELAT_1:def 10;

        then not [x, y] in (R /\ ( id ( dom R))) by XBOOLE_0:def 4;

        then

         A19: [x, y] in (R \ ( CL R)) by A13, XBOOLE_0:def 5;

        

         A20: not y in ( dom ( CL R))

        proof

          assume y in ( dom ( CL R));

          then [y, y] in R by Th27;

          hence thesis by A12, A19, RELAT_1:def 8;

        end;

        y in ( rng R) by A17, XTUPLE_0:def 13;

        hence thesis by A16, A18, A15, A20, Th27, XBOOLE_0:def 5;

      end;

    end;

    theorem :: SYSREL:30

    ((R * R) = R & (R * (R \ ( id ( dom R)))) = {} & [x, y] in R & x <> y implies x in (( dom R) \ ( dom ( CL R))) & y in ( dom ( CL R))) & ((R * R) = R & ((R \ ( id ( dom R))) * R) = {} & [x, y] in R & x <> y implies y in (( rng R) \ ( dom ( CL R))) & x in ( dom ( CL R)))

    proof

      (R \ ( CL R)) = (R \ ( id ( dom R))) by XBOOLE_1: 47;

      hence thesis by Th29;

    end;

    theorem :: SYSREL:31

    ((R * R) = R & (R * (R \ ( id ( dom R)))) = {} implies ( dom ( CL R)) = ( rng R) & ( rng ( CL R)) = ( rng R)) & ((R * R) = R & ((R \ ( id ( dom R))) * R) = {} implies ( dom ( CL R)) = ( dom R) & ( rng ( CL R)) = ( dom R))

    proof

      thus (R * R) = R & (R * (R \ ( id ( dom R)))) = {} implies ( dom ( CL R)) = ( rng R) & ( rng ( CL R)) = ( rng R)

      proof

        assume that

         A1: (R * R) = R and

         A2: (R * (R \ ( id ( dom R)))) = {} ;

        for y be object holds y in ( rng R) implies y in ( dom ( CL R))

        proof

          let y be object;

          assume y in ( rng R);

          then

          consider x be object such that

           A3: [x, y] in R by XTUPLE_0:def 13;

          consider z be object such that

           A4: [x, z] in R and

           A5: [z, y] in R by A1, A3, RELAT_1:def 8;

          

           A6: z = y

          proof

            assume z <> y;

            then not [z, y] in ( id ( dom R)) by RELAT_1:def 10;

            then [z, y] in (R \ ( id ( dom R))) by A5, XBOOLE_0:def 5;

            hence thesis by A2, A4, RELAT_1:def 8;

          end;

          z in ( dom R) by A5, XTUPLE_0:def 12;

          then [z, y] in ( id ( dom R)) by A6, RELAT_1:def 10;

          then [z, y] in (R /\ ( id ( dom R))) by A5, XBOOLE_0:def 4;

          hence thesis by A6, XTUPLE_0:def 12;

        end;

        then

         A7: ( rng R) c= ( dom ( CL R));

        ( CL R) c= R by XBOOLE_1: 17;

        then ( rng ( CL R)) c= ( rng R) by RELAT_1: 11;

        then ( dom ( CL R)) c= ( rng R) by Th26;

        then ( dom ( CL R)) = ( rng R) by A7;

        hence thesis by Th26;

      end;

      thus (R * R) = R & ((R \ ( id ( dom R))) * R) = {} implies ( dom ( CL R)) = ( dom R) & ( rng ( CL R)) = ( dom R)

      proof

        assume that

         A8: (R * R) = R and

         A9: ((R \ ( id ( dom R))) * R) = {} ;

        for x be object holds x in ( dom R) implies x in ( dom ( CL R))

        proof

          let x be object;

          assume

           A10: x in ( dom R);

          then

          consider y be object such that

           A11: [x, y] in R by XTUPLE_0:def 12;

          consider z be object such that

           A12: [x, z] in R and

           A13: [z, y] in R by A8, A11, RELAT_1:def 8;

          

           A14: z = x

          proof

            assume z <> x;

            then not [x, z] in ( id ( dom R)) by RELAT_1:def 10;

            then [x, z] in (R \ ( id ( dom R))) by A12, XBOOLE_0:def 5;

            hence thesis by A9, A13, RELAT_1:def 8;

          end;

          then [x, z] in ( id ( dom R)) by A10, RELAT_1:def 10;

          then [x, z] in (R /\ ( id ( dom R))) by A12, XBOOLE_0:def 4;

          then z in ( rng ( CL R)) by XTUPLE_0:def 13;

          hence thesis by A14, Th26;

        end;

        then

         A15: ( dom R) c= ( dom ( CL R));

        ( CL R) c= R by XBOOLE_1: 17;

        then ( dom ( CL R)) c= ( dom R) by RELAT_1: 11;

        then ( dom ( CL R)) = ( dom R) by A15;

        hence thesis by Th26;

      end;

    end;

    theorem :: SYSREL:32

    

     Th32: ( dom ( CL R)) c= ( dom R) & ( rng ( CL R)) c= ( rng R) & ( rng ( CL R)) c= ( dom R) & ( dom ( CL R)) c= ( rng R)

    proof

      ( CL R) c= R by XBOOLE_1: 17;

      hence ( dom ( CL R)) c= ( dom R) & ( rng ( CL R)) c= ( rng R) by RELAT_1: 11;

      hence thesis by Th26;

    end;

    theorem :: SYSREL:33

    ( id ( dom ( CL R))) c= ( id ( dom R)) & ( id ( rng ( CL R))) c= ( id ( dom R)) by Th15, Th32;

    theorem :: SYSREL:34

    

     Th34: ( id ( dom ( CL R))) c= R & ( id ( rng ( CL R))) c= R

    proof

      thus ( id ( dom ( CL R))) c= R

      proof

        let x,y be object;

        assume [x, y] in ( id ( dom ( CL R)));

        then x in ( dom ( CL R)) & x = y by RELAT_1:def 10;

        hence thesis by Th27;

      end;

      hence thesis by Th26;

    end;

    theorem :: SYSREL:35

    

     Th35: (( id X) c= R & (( id X) * (R \ ( id X))) = {} implies (R | X) = ( id X)) & (( id X) c= R & ((R \ ( id X)) * ( id X)) = {} implies (X |` R) = ( id X))

    proof

      thus ( id X) c= R & (( id X) * (R \ ( id X))) = {} implies (R | X) = ( id X)

      proof

        assume that

         A1: ( id X) c= R and

         A2: (( id X) * (R \ ( id X))) = {} ;

        (R | X) = (( id X) * R) by RELAT_1: 65

        .= (( id X) * (R \/ ( id X))) by A1, XBOOLE_1: 12

        .= (( id X) * ((R \ ( id X)) \/ ( id X))) by XBOOLE_1: 39

        .= ( {} \/ (( id X) * ( id X))) by A2, RELAT_1: 32

        .= ( id X) by Th12;

        hence thesis;

      end;

      assume that

       A3: ( id X) c= R and

       A4: ((R \ ( id X)) * ( id X)) = {} ;

      (X |` R) = (R * ( id X)) by RELAT_1: 92

      .= ((R \/ ( id X)) * ( id X)) by A3, XBOOLE_1: 12

      .= (((R \ ( id X)) \/ ( id X)) * ( id X)) by XBOOLE_1: 39

      .= ( {} \/ (( id X) * ( id X))) by A4, Th6

      .= ( id X) by Th12;

      hence thesis;

    end;

    theorem :: SYSREL:36

    ((( id ( dom ( CL R))) * (R \ ( id ( dom ( CL R))))) = {} implies (R | ( dom ( CL R))) = ( id ( dom ( CL R))) & (R | ( rng ( CL R))) = ( id ( dom ( CL R)))) & (((R \ ( id ( rng ( CL R)))) * ( id ( rng ( CL R)))) = {} implies (( dom ( CL R)) |` R) = ( id ( dom ( CL R))) & (( rng ( CL R)) |` R) = ( id ( rng ( CL R))))

    proof

      thus (( id ( dom ( CL R))) * (R \ ( id ( dom ( CL R))))) = {} implies (R | ( dom ( CL R))) = ( id ( dom ( CL R))) & (R | ( rng ( CL R))) = ( id ( dom ( CL R)))

      proof

        assume

         A1: (( id ( dom ( CL R))) * (R \ ( id ( dom ( CL R))))) = {} ;

        ( id ( dom ( CL R))) c= R by Th34;

        then (R | ( dom ( CL R))) = ( id ( dom ( CL R))) by A1, Th35;

        hence thesis by Th26;

      end;

      assume

       A2: ((R \ ( id ( rng ( CL R)))) * ( id ( rng ( CL R)))) = {} ;

      ( id ( rng ( CL R))) c= R by Th34;

      then (( rng ( CL R)) |` R) = ( id ( rng ( CL R))) by A2, Th35;

      then (( dom ( CL R)) |` R) = ( id ( rng ( CL R))) by Th26;

      hence thesis by Th26;

    end;

    theorem :: SYSREL:37

    ((R * (R \ ( id ( dom R)))) = {} implies (( id ( dom ( CL R))) * (R \ ( id ( dom ( CL R))))) = {} ) & (((R \ ( id ( dom R))) * R) = {} implies ((R \ ( id ( dom ( CL R)))) * ( id ( dom ( CL R)))) = {} )

    proof

      thus (R * (R \ ( id ( dom R)))) = {} implies (( id ( dom ( CL R))) * (R \ ( id ( dom ( CL R))))) = {}

      proof

        

         A1: ( id ( dom ( CL R))) c= R by Th34;

        assume

         A2: (R * (R \ ( id ( dom R)))) = {} ;

        (R \ ( id ( dom R))) = (R \ ( CL R)) by XBOOLE_1: 47

        .= (R \ ( id ( dom ( CL R)))) by Th28;

        hence thesis by A2, A1, RELAT_1: 30, XBOOLE_1: 3;

      end;

      

       A3: ( id ( dom ( CL R))) c= R by Th34;

      assume

       A4: ((R \ ( id ( dom R))) * R) = {} ;

      (R \ ( id ( dom R))) = (R \ ( CL R)) by XBOOLE_1: 47

      .= (R \ ( id ( dom ( CL R)))) by Th28;

      hence thesis by A4, A3, RELAT_1: 29, XBOOLE_1: 3;

    end;

    theorem :: SYSREL:38

    

     Th38: ((S * R) = S & (R * (R \ ( id ( dom R)))) = {} implies (S * (R \ ( id ( dom R)))) = {} ) & ((R * S) = S & ((R \ ( id ( dom R))) * R) = {} implies ((R \ ( id ( dom R))) * S) = {} )

    proof

      thus (S * R) = S & (R * (R \ ( id ( dom R)))) = {} implies (S * (R \ ( id ( dom R)))) = {}

      proof

        assume (S * R) = S & (R * (R \ ( id ( dom R)))) = {} ;

        

        then (S * (R \ ( id ( dom R)))) = (S * {} ) by RELAT_1: 36

        .= {} ;

        hence thesis;

      end;

      assume (R * S) = S & ((R \ ( id ( dom R))) * R) = {} ;

      

      then ((R \ ( id ( dom R))) * S) = ( {} * S) by RELAT_1: 36

      .= {} ;

      hence thesis;

    end;

    theorem :: SYSREL:39

    

     Th39: ((S * R) = S & (R * (R \ ( id ( dom R)))) = {} implies ( CL S) c= ( CL R)) & ((R * S) = S & ((R \ ( id ( dom R))) * R) = {} implies ( CL S) c= ( CL R))

    proof

      thus (S * R) = S & (R * (R \ ( id ( dom R)))) = {} implies ( CL S) c= ( CL R)

      proof

        assume that

         A1: (S * R) = S and

         A2: (R * (R \ ( id ( dom R)))) = {} ;

        

         A3: (S * (R \ ( id ( dom R)))) = {} by A1, A2, Th38;

        for x,y be object holds [x, y] in ( CL S) implies [x, y] in ( CL R)

        proof

          let x,y be object;

          assume

           A4: [x, y] in ( CL S);

          then

           A5: [x, y] in ( id ( dom S)) by XBOOLE_0:def 4;

           [x, y] in S by A4, XBOOLE_0:def 4;

          then

          consider z be object such that

           A6: [x, z] in S and

           A7: [z, y] in R by A1, RELAT_1:def 8;

          

           A8: z = y

          proof

            assume z <> y;

            then not [z, y] in ( id ( dom R)) by RELAT_1:def 10;

            then [z, y] in (R \ ( id ( dom R))) by A7, XBOOLE_0:def 5;

            hence contradiction by A3, A6, RELAT_1:def 8;

          end;

          

           A9: x = y by A5, RELAT_1:def 10;

          then x in ( dom R) by A7, A8, XTUPLE_0:def 12;

          then

           A10: [x, y] in ( id ( dom R)) by A9, RELAT_1:def 10;

           [x, y] in R by A5, A7, A8, RELAT_1:def 10;

          hence thesis by A10, XBOOLE_0:def 4;

        end;

        hence thesis;

      end;

      assume that

       A11: (R * S) = S and

       A12: ((R \ ( id ( dom R))) * R) = {} ;

      

       A13: ((R \ ( id ( dom R))) * S) = {} by A11, A12, Th38;

      for x,y be object holds [x, y] in ( CL S) implies [x, y] in ( CL R)

      proof

        let x,y be object;

        assume

         A14: [x, y] in ( CL S);

        then

         A15: [x, y] in ( id ( dom S)) by XBOOLE_0:def 4;

        then

         A16: x = y by RELAT_1:def 10;

         [x, y] in S by A14, XBOOLE_0:def 4;

        then

        consider z be object such that

         A17: [x, z] in R and

         A18: [z, y] in S by A11, RELAT_1:def 8;

        x in ( dom R) by A17, XTUPLE_0:def 12;

        then

         A19: [x, y] in ( id ( dom R)) by A16, RELAT_1:def 10;

        z = x

        proof

          assume z <> x;

          then not [x, z] in ( id ( dom R)) by RELAT_1:def 10;

          then [x, z] in (R \ ( id ( dom R))) by A17, XBOOLE_0:def 5;

          hence contradiction by A13, A18, RELAT_1:def 8;

        end;

        then [x, y] in R by A15, A17, RELAT_1:def 10;

        hence thesis by A19, XBOOLE_0:def 4;

      end;

      hence thesis;

    end;

    theorem :: SYSREL:40

    ((S * R) = S & (R * (R \ ( id ( dom R)))) = {} & (R * S) = R & (S * (S \ ( id ( dom S)))) = {} implies ( CL S) = ( CL R)) & ((R * S) = S & ((R \ ( id ( dom R))) * R) = {} & (S * R) = R & ((S \ ( id ( dom S))) * S) = {} implies ( CL S) = ( CL R)) by Th39;