xtuple_0.miz



    begin

    reserve x,x1,x2,x3,x4,y,y1,y2,y3,y4,z,z1,z2,z2,z4 for object;

    definition

      let x be object;

      :: XTUPLE_0:def1

      attr x is pair means

      : Def1: ex x1, x2 st x = [x1, x2];

    end

    registration

      let x1,x2 be object;

      cluster [x1, x2] -> pair;

      coherence ;

    end

    

     Lm1: {x} = {y1, y2} implies x = y1

    proof

      assume {x} = {y1, y2};

      then y1 in {x} by TARSKI:def 2;

      hence thesis by TARSKI:def 1;

    end;

    

     Lm2: {x} = {y1, y2} implies y1 = y2

    proof

      assume

       A1: {x} = {y1, y2};

      then x = y1 by Lm1;

      hence thesis by A1, Lm1;

    end;

    

     Lm3: {x1, x2} = {y1, y2} implies x1 = y1 or x1 = y2

    proof

      x1 in {x1, x2} by TARSKI:def 2;

      hence thesis by TARSKI:def 2;

    end;

    theorem :: XTUPLE_0:1

    

     Th1: [x1, x2] = [y1, y2] implies x1 = y1 & x2 = y2

    proof

      assume

       A1: [x1, x2] = [y1, y2];

      per cases ;

        suppose

         A2: y1 <> y2;

        then

         A3: {x1} <> {y1, y2} by Lm2;

        then {x1} = {y1} by A1, Lm3;

        then x1 in {y1} by TARSKI:def 1;

        hence

         A4: x1 = y1 by TARSKI:def 1;

         {y1, y2} = {x1, x2} by A1, A3, Lm3;

        hence thesis by A2, A4, Lm3;

      end;

        suppose

         A5: y1 = y2;

        

        then { {x1, x2}, {x1}} = { {y1}, {y1}} by A1, ENUMSET1: 29

        .= { {y1}} by ENUMSET1: 29;

        then {y1} = {x1, x2} by Lm1;

        hence thesis by A5, Lm1;

      end;

    end;

    definition

      let x be object;

      assume x is pair;

      then

      consider x1, x2 such that

       A1: x = [x1, x2];

      :: XTUPLE_0:def2

      func x `1 -> object means

      : Def2: x = [y1, y2] implies it = y1;

      existence

      proof

        take x1;

        thus thesis by A1, Th1;

      end;

      uniqueness

      proof

        let z1,z2 be object;

        assume that

         A2: x = [y1, y2] implies z1 = y1 and

         A3: x = [y1, y2] implies z2 = y1;

        

        thus z1 = x1 by A1, A2

        .= z2 by A1, A3;

      end;

      :: XTUPLE_0:def3

      func x `2 -> object means

      : Def3: x = [y1, y2] implies it = y2;

      existence

      proof

        take x2;

        thus thesis by A1, Th1;

      end;

      uniqueness

      proof

        let z1,z2 be object;

        assume that

         A4: x = [y1, y2] implies z1 = y2 and

         A5: x = [y1, y2] implies z2 = y2;

        

        thus z1 = x2 by A1, A4

        .= z2 by A1, A5;

      end;

    end

    registration

      let x1, x2;

      reduce ( [x1, x2] `1 ) to x1;

      reducibility by Def2;

      reduce ( [x1, x2] `2 ) to x2;

      reducibility by Def3;

    end

    registration

      cluster pair for object;

      existence

      proof

        take [ the object, the object], the object, the object;

        thus thesis;

      end;

    end

    registration

      let x be pair object;

      reduce [(x `1 ), (x `2 )] to x;

      reducibility

      proof

        ex x1, x2 st x = [x1, x2] by Def1;

        hence [(x `1 ), (x `2 )] = x;

      end;

    end

    theorem :: XTUPLE_0:2

    for a,b be pair object st (a `1 ) = (b `1 ) & (a `2 ) = (b `2 ) holds a = b

    proof

      let a,b be pair object such that

       A1: (a `1 ) = (b `1 ) & (a `2 ) = (b `2 );

      a = [(a `1 ), (a `2 )] & b = [(b `1 ), (b `2 )];

      hence a = b by A1;

    end;

    begin

    definition

      let x1,x2,x3 be object;

      :: XTUPLE_0:def4

      func [x1,x2,x3] -> object equals [ [x1, x2], x3];

      coherence ;

    end

    definition

      let x;

      :: XTUPLE_0:def5

      attr x is triple means

      : Def5: ex x1, x2, x3 st x = [x1, x2, x3];

    end

    registration

      let x1, x2, x3;

      cluster [x1, x2, x3] -> triple;

      coherence ;

    end

    theorem :: XTUPLE_0:3

    

     Th3: [x1, x2, x3] = [y1, y2, y3] implies x1 = y1 & x2 = y2 & x3 = y3

    proof

      assume

       A1: [x1, x2, x3] = [y1, y2, y3];

      then [x1, x2] = [y1, y2] by Th1;

      hence thesis by A1, Th1;

    end;

    registration

      cluster triple for object;

      existence

      proof

        take [ the set, the set, the set], the set, the set, the set;

        thus thesis;

      end;

      cluster triple -> pair for object;

      coherence ;

    end

    definition

      let x be object;

      :: XTUPLE_0:def6

      func x `1_3 -> object equals ((x `1 ) `1 );

      coherence ;

      :: XTUPLE_0:def7

      func x `2_3 -> object equals ((x `1 ) `2 );

      coherence ;

    end

    notation

      let x be object;

      synonym x `3_3 for x `2 ;

    end

    registration

      let x1, x2, x3;

      reduce ( [x1, x2, x3] `1_3 ) to x1;

      reducibility ;

      reduce ( [x1, x2, x3] `2_3 ) to x2;

      reducibility ;

      reduce ( [x1, x2, x3] `3_3 ) to x3;

      reducibility ;

    end

    registration

      let x be triple object;

      reduce [(x `1_3 ), (x `2_3 ), (x `3_3 )] to x;

      reducibility

      proof

        consider x1, x2, x3 such that

         A1: x = [x1, x2, x3] by Def5;

        thus thesis by A1;

      end;

    end

    theorem :: XTUPLE_0:4

    for a,b be triple object st (a `1_3 ) = (b `1_3 ) & (a `2_3 ) = (b `2_3 ) & (a `3_3 ) = (b `3_3 ) holds a = b

    proof

      let a,b be triple object such that

       A1: (a `1_3 ) = (b `1_3 ) & (a `2_3 ) = (b `2_3 ) & (a `3_3 ) = (b `3_3 );

      a = [(a `1_3 ), (a `2_3 ), (a `3_3 )] & b = [(b `1_3 ), (b `2_3 ), (b `3_3 )];

      hence a = b by A1;

    end;

    begin

    definition

      let x1,x2,x3,x4 be object;

      :: XTUPLE_0:def8

      func [x1,x2,x3,x4] -> object equals [ [x1, x2, x3], x4];

      coherence ;

    end

    definition

      let x;

      :: XTUPLE_0:def9

      attr x is quadruple means

      : Def9: ex x1, x2, x3, x4 st x = [x1, x2, x3, x4];

    end

    registration

      let x1, x2, x3, x4;

      cluster [x1, x2, x3, x4] -> quadruple;

      coherence ;

    end

    theorem :: XTUPLE_0:5

     [x1, x2, x3, x4] = [y1, y2, y3, y4] implies x1 = y1 & x2 = y2 & x3 = y3 & x4 = y4

    proof

      assume

       A1: [x1, x2, x3, x4] = [y1, y2, y3, y4];

      then [x1, x2, x3] = [y1, y2, y3] by Th1;

      hence thesis by A1, Th3, Th1;

    end;

    registration

      cluster quadruple for object;

      existence

      proof

        take [ the object, the object, the object, the object], the object, the object, the object, the object;

        thus thesis;

      end;

      cluster quadruple -> triple for object;

      coherence

      proof

        let x be object;

        given x1, x2, x3, x4 such that

         A1: x = [x1, x2, x3, x4];

        x = [ [x1, x2], x3, x4] by A1;

        hence thesis;

      end;

    end

    definition

      let x be object;

      :: XTUPLE_0:def10

      func x `1_4 -> object equals (((x `1 ) `1 ) `1 );

      coherence ;

      :: XTUPLE_0:def11

      func x `2_4 -> object equals (((x `1 ) `1 ) `2 );

      coherence ;

    end

    notation

      let x be object;

      synonym x `3_4 for x `2_3 ;

      synonym x `4_4 for x `2 ;

    end

    registration

      let x1, x2, x3, x4;

      reduce ( [x1, x2, x3, x4] `1_4 ) to x1;

      reducibility ;

      reduce ( [x1, x2, x3, x4] `2_4 ) to x2;

      reducibility ;

      reduce ( [x1, x2, x3, x4] `3_4 ) to x3;

      reducibility ;

      reduce ( [x1, x2, x3, x4] `4_4 ) to x4;

      reducibility ;

    end

    registration

      let x be quadruple object;

      reduce [(x `1_4 ), (x `2_4 ), (x `3_4 ), (x `4_4 )] to x;

      reducibility

      proof

        consider x1, x2, x3, x4 such that

         A1: x = [x1, x2, x3, x4] by Def9;

        thus thesis by A1;

      end;

    end

    reserve X,X1,X2,X3,X4,Y for set;

    theorem :: XTUPLE_0:6

    

     Th6: [x, y] in X implies x in ( union ( union X))

    proof

      assume

       A1: [x, y] in X;

       {x} in { {x}, {x, y}} by TARSKI:def 2;

      then

       A2: {x} in ( union X) by A1, TARSKI:def 4;

      x in {x} by TARSKI:def 1;

      hence x in ( union ( union X)) by A2, TARSKI:def 4;

    end;

    theorem :: XTUPLE_0:7

    

     Th7: [x, y] in X implies y in ( union ( union X))

    proof

      assume

       A1: [x, y] in X;

       {x, y} in { {x}, {x, y}} by TARSKI:def 2;

      then

       A2: {x, y} in ( union X) by A1, TARSKI:def 4;

      y in {x, y} by TARSKI:def 2;

      hence y in ( union ( union X)) by A2, TARSKI:def 4;

    end;

    definition

      let X be set;

      :: XTUPLE_0:def12

      func proj1 X -> set means

      : Def12: x in it iff ex y st [x, y] in X;

      existence

      proof

        defpred Q[ object] means ex y st [$1, y] in X;

        consider Y such that

         A1: for x be object holds x in Y iff x in ( union ( union X)) & Q[x] from XBOOLE_0:sch 1;

        take Y;

        let x;

        thus x in Y implies ex y st [x, y] in X by A1;

        given y such that

         A2: [x, y] in X;

        x in ( union ( union X)) by A2, Th6;

        hence thesis by A2, A1;

      end;

      uniqueness

      proof

        let X1, X2;

        assume that

         A3: for x holds x in X1 iff ex y st [x, y] in X and

         A4: for x holds x in X2 iff ex y st [x, y] in X;

        now

          let x be object;

          x in X1 iff ex y st [x, y] in X by A3;

          hence x in X1 iff x in X2 by A4;

        end;

        hence thesis by TARSKI: 2;

      end;

      :: XTUPLE_0:def13

      func proj2 X -> set means

      : Def13: x in it iff ex y st [y, x] in X;

      existence

      proof

        defpred Q[ object] means ex y st [y, $1] in X;

        consider Y such that

         A5: for x be object holds x in Y iff x in ( union ( union X)) & Q[x] from XBOOLE_0:sch 1;

        take Y;

        let x;

        thus x in Y implies ex y st [y, x] in X by A5;

        given y such that

         A6: [y, x] in X;

        x in ( union ( union X)) by A6, Th7;

        hence thesis by A6, A5;

      end;

      uniqueness

      proof

        let X1, X2;

        assume that

         A7: for x holds x in X1 iff ex y st [y, x] in X and

         A8: for x holds x in X2 iff ex y st [y, x] in X;

        now

          let x be object;

          x in X1 iff ex y st [y, x] in X by A7;

          hence x in X1 iff x in X2 by A8;

        end;

        hence thesis by TARSKI: 2;

      end;

    end

    theorem :: XTUPLE_0:8

    

     Th8: X c= Y implies ( proj1 X) c= ( proj1 Y)

    proof

      assume

       A1: X c= Y;

      let x be object;

      assume x in ( proj1 X);

      then

      consider y such that

       A2: [x, y] in X by Def12;

       [x, y] in Y by A1, A2;

      hence thesis by Def12;

    end;

    theorem :: XTUPLE_0:9

    

     Th9: X c= Y implies ( proj2 X) c= ( proj2 Y)

    proof

      assume

       A1: X c= Y;

      let x be object;

      assume x in ( proj2 X);

      then

      consider y such that

       A2: [y, x] in X by Def13;

       [y, x] in Y by A1, A2;

      hence thesis by Def13;

    end;

    definition

      let X be set;

      :: XTUPLE_0:def14

      func proj1_3 X -> set equals ( proj1 ( proj1 X));

      coherence ;

      :: XTUPLE_0:def15

      func proj2_3 X -> set equals ( proj2 ( proj1 X));

      coherence ;

    end

    notation

      let X be set;

      synonym proj3_3 X for proj2 X;

    end

    theorem :: XTUPLE_0:10

    

     Th10: X c= Y implies ( proj1_3 X) c= ( proj1_3 Y)

    proof

      assume X c= Y;

      then ( proj1 X) c= ( proj1 Y) by Th8;

      hence thesis by Th8;

    end;

    theorem :: XTUPLE_0:11

    

     Th11: X c= Y implies ( proj2_3 X) c= ( proj2_3 Y)

    proof

      assume X c= Y;

      then ( proj1 X) c= ( proj1 Y) by Th8;

      hence thesis by Th9;

    end;

    theorem :: XTUPLE_0:12

    

     Th12: x in ( proj1_3 X) implies ex y, z st [x, y, z] in X

    proof

      assume x in ( proj1_3 X);

      then

      consider y such that

       A1: [x, y] in ( proj1 X) by Def12;

      consider z such that

       A2: [ [x, y], z] in X by A1, Def12;

      take y, z;

      thus thesis by A2;

    end;

    theorem :: XTUPLE_0:13

    

     Th13: [x, y, z] in X implies x in ( proj1_3 X)

    proof

      assume [x, y, z] in X;

      then [x, y] in ( proj1 X) by Def12;

      hence thesis by Def12;

    end;

    theorem :: XTUPLE_0:14

    

     Th14: x in ( proj2_3 X) implies ex y, z st [y, x, z] in X

    proof

      assume x in ( proj2_3 X);

      then

      consider y such that

       A1: [y, x] in ( proj1 X) by Def13;

      consider z such that

       A2: [ [y, x], z] in X by A1, Def12;

      take y, z;

      thus thesis by A2;

    end;

    theorem :: XTUPLE_0:15

    

     Th15: [x, y, z] in X implies y in ( proj2_3 X)

    proof

      assume [x, y, z] in X;

      then [x, y] in ( proj1 X) by Def12;

      hence thesis by Def13;

    end;

    definition

      let X be set;

      :: XTUPLE_0:def16

      func proj1_4 X -> set equals ( proj1 ( proj1_3 X));

      coherence ;

      :: XTUPLE_0:def17

      func proj2_4 X -> set equals ( proj2 ( proj1_3 X));

      coherence ;

    end

    notation

      let X be set;

      synonym proj3_4 X for proj2_3 X;

      synonym proj4_4 X for proj2 X;

    end

    theorem :: XTUPLE_0:16

    

     Th16: X c= Y implies ( proj1_4 X) c= ( proj1_4 Y)

    proof

      assume X c= Y;

      then ( proj1_3 X) c= ( proj1_3 Y) by Th10;

      hence thesis by Th8;

    end;

    theorem :: XTUPLE_0:17

    

     Th17: X c= Y implies ( proj2_4 X) c= ( proj2_4 Y)

    proof

      assume X c= Y;

      then ( proj1_3 X) c= ( proj1_3 Y) by Th10;

      hence thesis by Th9;

    end;

    theorem :: XTUPLE_0:18

    

     Th18: x in ( proj1_4 X) implies ex x1, x2, x3 st [x, x1, x2, x3] in X

    proof

      assume x in ( proj1_4 X);

      then

      consider x1 such that

       A1: [x, x1] in ( proj1_3 X) by Def12;

      consider x2 such that

       A2: [ [x, x1], x2] in ( proj1 X) by A1, Def12;

      consider x3 such that

       A3: [ [ [x, x1], x2], x3] in X by A2, Def12;

      take x1, x2, x3;

      thus thesis by A3;

    end;

    theorem :: XTUPLE_0:19

    

     Th19: [x, x1, x2, x3] in X implies x in ( proj1_4 X)

    proof

      assume [x, x1, x2, x3] in X;

      then [ [x, x1], x2, x3] in X;

      then [x, x1] in ( proj1_3 X) by Th13;

      hence thesis by Def12;

    end;

    theorem :: XTUPLE_0:20

    

     Th20: x in ( proj2_4 X) implies ex x1, x2, x3 st [x1, x, x2, x3] in X

    proof

      assume x in ( proj2_4 X);

      then

      consider x1 such that

       A1: [x1, x] in ( proj1_3 X) by Def13;

      consider x2 such that

       A2: [ [x1, x], x2] in ( proj1 X) by A1, Def12;

      consider x3 such that

       A3: [ [ [x1, x], x2], x3] in X by A2, Def12;

      take x1, x2, x3;

      thus thesis by A3;

    end;

    theorem :: XTUPLE_0:21

    

     Th21: [x1, x, x2, x3] in X implies x in ( proj2_4 X)

    proof

      assume [x1, x, x2, x3] in X;

      then [ [x1, x], x2, x3] in X;

      then [x1, x] in ( proj1_3 X) by Th13;

      hence thesis by Def13;

    end;

    theorem :: XTUPLE_0:22

    for a,b be quadruple object st (a `1_4 ) = (b `1_4 ) & (a `2_4 ) = (b `2_4 ) & (a `3_4 ) = (b `3_4 ) & (a `4_4 ) = (b `4_4 ) holds a = b

    proof

      let a,b be quadruple object such that

       A1: (a `1_4 ) = (b `1_4 ) & (a `2_4 ) = (b `2_4 ) & (a `3_4 ) = (b `3_4 ) & (a `4_4 ) = (b `4_4 );

      a = [(a `1_4 ), (a `2_4 ), (a `3_4 ), (a `4_4 )] & b = [(b `1_4 ), (b `2_4 ), (b `3_4 ), (b `4_4 )];

      hence a = b by A1;

    end;

    begin

    registration

      let X be empty set;

      cluster ( proj1 X) -> empty;

      coherence

      proof

        assume ( proj1 X) is non empty;

        then

        consider x be object such that

         A1: x in ( proj1 X);

        ex y st [x, y] in X by A1, Def12;

        hence contradiction;

      end;

    end

    registration

      let X be empty set;

      cluster ( proj2 X) -> empty;

      coherence

      proof

        assume ( proj2 X) is non empty;

        then

        consider x be object such that

         A1: x in ( proj2 X);

        ex y st [y, x] in X by A1, Def13;

        hence contradiction;

      end;

    end

    registration

      let X be empty set;

      cluster ( proj1_3 X) -> empty;

      coherence ;

    end

    registration

      let X be empty set;

      cluster ( proj2_3 X) -> empty;

      coherence ;

    end

    registration

      let X be empty set;

      cluster ( proj1_4 X) -> empty;

      coherence ;

    end

    registration

      let X be empty set;

      cluster ( proj2_4 X) -> empty;

      coherence ;

    end

    theorem :: XTUPLE_0:23

    

     Th23: ( proj1 (X \/ Y)) = (( proj1 X) \/ ( proj1 Y))

    proof

      thus ( proj1 (X \/ Y)) c= (( proj1 X) \/ ( proj1 Y))

      proof

        let x be object;

        assume x in ( proj1 (X \/ Y));

        then

        consider y such that

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

         [x, y] in X or [x, y] in Y by A1, XBOOLE_0:def 3;

        then x in ( proj1 X) or x in ( proj1 Y) by Def12;

        hence thesis by XBOOLE_0:def 3;

      end;

      

       A2: ( proj1 Y) c= ( proj1 (X \/ Y)) by Th8, XBOOLE_1: 7;

      ( proj1 X) c= ( proj1 (X \/ Y)) by Th8, XBOOLE_1: 7;

      hence (( proj1 X) \/ ( proj1 Y)) c= ( proj1 (X \/ Y)) by A2, XBOOLE_1: 8;

    end;

    theorem :: XTUPLE_0:24

    ( proj1 (X /\ Y)) c= (( proj1 X) /\ ( proj1 Y))

    proof

      ( proj1 (X /\ Y)) c= ( proj1 X) & ( proj1 (X /\ Y)) c= ( proj1 Y) by Th8, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: XTUPLE_0:25

    

     Th25: (( proj1 X) \ ( proj1 Y)) c= ( proj1 (X \ Y))

    proof

      let x be object;

      assume

       A1: x in (( proj1 X) \ ( proj1 Y));

      then x in ( proj1 X) by XBOOLE_0:def 5;

      then

      consider y such that

       A2: [x, y] in X by Def12;

       not x in ( proj1 Y) by A1, XBOOLE_0:def 5;

      then not [x, y] in Y by Def12;

      then [x, y] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Def12;

    end;

    theorem :: XTUPLE_0:26

    (( proj1 X) \+\ ( proj1 Y)) c= ( proj1 (X \+\ Y))

    proof

      (( proj1 X) \ ( proj1 Y)) c= ( proj1 (X \ Y)) & (( proj1 Y) \ ( proj1 X)) c= ( proj1 (Y \ X)) by Th25;

      then (( proj1 X) \+\ ( proj1 Y)) c= (( proj1 (X \ Y)) \/ ( proj1 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th23;

    end;

    theorem :: XTUPLE_0:27

    

     Th27: ( proj2 (X \/ Y)) = (( proj2 X) \/ ( proj2 Y))

    proof

      thus ( proj2 (X \/ Y)) c= (( proj2 X) \/ ( proj2 Y))

      proof

        let y be object;

        assume y in ( proj2 (X \/ Y));

        then

        consider x such that

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

         [x, y] in X or [x, y] in Y by A1, XBOOLE_0:def 3;

        then y in ( proj2 X) or y in ( proj2 Y) by Def13;

        hence thesis by XBOOLE_0:def 3;

      end;

      

       A2: ( proj2 Y) c= ( proj2 (X \/ Y)) by Th9, XBOOLE_1: 7;

      ( proj2 X) c= ( proj2 (X \/ Y)) by Th9, XBOOLE_1: 7;

      hence (( proj2 X) \/ ( proj2 Y)) c= ( proj2 (X \/ Y)) by A2, XBOOLE_1: 8;

    end;

    theorem :: XTUPLE_0:28

    ( proj2 (X /\ Y)) c= (( proj2 X) /\ ( proj2 Y))

    proof

      let y be object;

      assume y in ( proj2 (X /\ Y));

      then

      consider x such that

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

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

      then

       A2: y in ( proj2 Y) by Def13;

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

      then y in ( proj2 X) by Def13;

      hence thesis by A2, XBOOLE_0:def 4;

    end;

    theorem :: XTUPLE_0:29

    

     Th29: (( proj2 X) \ ( proj2 Y)) c= ( proj2 (X \ Y))

    proof

      let y be object;

      assume

       A1: y in (( proj2 X) \ ( proj2 Y));

      then y in ( proj2 X) by XBOOLE_0:def 5;

      then

      consider x such that

       A2: [x, y] in X by Def13;

       not y in ( proj2 Y) by A1, XBOOLE_0:def 5;

      then not [x, y] in Y by Def13;

      then [x, y] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Def13;

    end;

    theorem :: XTUPLE_0:30

    (( proj2 X) \+\ ( proj2 Y)) c= ( proj2 (X \+\ Y))

    proof

      (( proj2 X) \ ( proj2 Y)) c= ( proj2 (X \ Y)) & (( proj2 Y) \ ( proj2 X)) c= ( proj2 (Y \ X)) by Th29;

      then (( proj2 X) \+\ ( proj2 Y)) c= (( proj2 (X \ Y)) \/ ( proj2 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th27;

    end;

    theorem :: XTUPLE_0:31

    

     Th31: ( proj1_3 (X \/ Y)) = (( proj1_3 X) \/ ( proj1_3 Y))

    proof

      

      thus ( proj1_3 (X \/ Y)) = ( proj1 (( proj1 X) \/ ( proj1 Y))) by Th23

      .= (( proj1_3 X) \/ ( proj1_3 Y)) by Th23;

    end;

    theorem :: XTUPLE_0:32

    ( proj1_3 (X /\ Y)) c= (( proj1_3 X) /\ ( proj1_3 Y))

    proof

      ( proj1_3 (X /\ Y)) c= ( proj1_3 X) & ( proj1_3 (X /\ Y)) c= ( proj1_3 Y) by Th10, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: XTUPLE_0:33

    

     Th33: (( proj1_3 X) \ ( proj1_3 Y)) c= ( proj1_3 (X \ Y))

    proof

      let x be object;

      assume

       A1: x in (( proj1_3 X) \ ( proj1_3 Y));

      then x in ( proj1_3 X) by XBOOLE_0:def 5;

      then

      consider y, z such that

       A2: [x, y, z] in X by Th12;

       not x in ( proj1_3 Y) by A1, XBOOLE_0:def 5;

      then not [x, y, z] in Y by Th13;

      then [x, y, z] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Th13;

    end;

    theorem :: XTUPLE_0:34

    (( proj1_3 X) \+\ ( proj1_3 Y)) c= ( proj1_3 (X \+\ Y))

    proof

      (( proj1_3 X) \ ( proj1_3 Y)) c= ( proj1_3 (X \ Y)) & (( proj1_3 Y) \ ( proj1_3 X)) c= ( proj1_3 (Y \ X)) by Th33;

      then (( proj1_3 X) \+\ ( proj1_3 Y)) c= (( proj1_3 (X \ Y)) \/ ( proj1_3 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th31;

    end;

    theorem :: XTUPLE_0:35

    

     Th35: ( proj2_3 (X \/ Y)) = (( proj2_3 X) \/ ( proj2_3 Y))

    proof

      

      thus ( proj2_3 (X \/ Y)) = ( proj2 (( proj1 X) \/ ( proj1 Y))) by Th23

      .= (( proj2_3 X) \/ ( proj2_3 Y)) by Th27;

    end;

    theorem :: XTUPLE_0:36

    ( proj2_3 (X /\ Y)) c= (( proj2_3 X) /\ ( proj2_3 Y))

    proof

      ( proj2_3 (X /\ Y)) c= ( proj2_3 X) & ( proj2_3 (X /\ Y)) c= ( proj2_3 Y) by Th11, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: XTUPLE_0:37

    

     Th37: (( proj2_3 X) \ ( proj2_3 Y)) c= ( proj2_3 (X \ Y))

    proof

      let x be object;

      assume

       A1: x in (( proj2_3 X) \ ( proj2_3 Y));

      then x in ( proj2_3 X) by XBOOLE_0:def 5;

      then

      consider y, z such that

       A2: [y, x, z] in X by Th14;

       not x in ( proj2_3 Y) by A1, XBOOLE_0:def 5;

      then not [y, x, z] in Y by Th15;

      then [y, x, z] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Th15;

    end;

    theorem :: XTUPLE_0:38

    (( proj2_3 X) \+\ ( proj2_3 Y)) c= ( proj2_3 (X \+\ Y))

    proof

      (( proj2_3 X) \ ( proj2_3 Y)) c= ( proj2_3 (X \ Y)) & (( proj2_3 Y) \ ( proj2_3 X)) c= ( proj2_3 (Y \ X)) by Th37;

      then (( proj2_3 X) \+\ ( proj2_3 Y)) c= (( proj2_3 (X \ Y)) \/ ( proj2_3 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th35;

    end;

    theorem :: XTUPLE_0:39

    

     Th39: ( proj1_4 (X \/ Y)) = (( proj1_4 X) \/ ( proj1_4 Y))

    proof

      

      thus ( proj1_4 (X \/ Y)) = ( proj1 (( proj1_3 X) \/ ( proj1_3 Y))) by Th31

      .= (( proj1_4 X) \/ ( proj1_4 Y)) by Th23;

    end;

    theorem :: XTUPLE_0:40

    ( proj1_4 (X /\ Y)) c= (( proj1_4 X) /\ ( proj1_4 Y))

    proof

      ( proj1_4 (X /\ Y)) c= ( proj1_4 X) & ( proj1_4 (X /\ Y)) c= ( proj1_4 Y) by Th16, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: XTUPLE_0:41

    

     Th41: (( proj1_4 X) \ ( proj1_4 Y)) c= ( proj1_4 (X \ Y))

    proof

      let x be object;

      assume

       A1: x in (( proj1_4 X) \ ( proj1_4 Y));

      then x in ( proj1_4 X) by XBOOLE_0:def 5;

      then

      consider x1, x2, x3 such that

       A2: [x, x1, x2, x3] in X by Th18;

       not x in ( proj1_4 Y) by A1, XBOOLE_0:def 5;

      then not [x, x1, x2, x3] in Y by Th19;

      then [x, x1, x2, x3] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Th19;

    end;

    theorem :: XTUPLE_0:42

    (( proj1_4 X) \+\ ( proj1_4 Y)) c= ( proj1_4 (X \+\ Y))

    proof

      (( proj1_4 X) \ ( proj1_4 Y)) c= ( proj1_4 (X \ Y)) & (( proj1_4 Y) \ ( proj1_4 X)) c= ( proj1_4 (Y \ X)) by Th41;

      then (( proj1_4 X) \+\ ( proj1_4 Y)) c= (( proj1_4 (X \ Y)) \/ ( proj1_4 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th39;

    end;

    theorem :: XTUPLE_0:43

    

     Th43: ( proj2_4 (X \/ Y)) = (( proj2_4 X) \/ ( proj2_4 Y))

    proof

      

      thus ( proj2_4 (X \/ Y)) = ( proj2 (( proj1_3 X) \/ ( proj1_3 Y))) by Th31

      .= (( proj2_4 X) \/ ( proj2_4 Y)) by Th27;

    end;

    theorem :: XTUPLE_0:44

    ( proj2_4 (X /\ Y)) c= (( proj2_4 X) /\ ( proj2_4 Y))

    proof

      ( proj2_4 (X /\ Y)) c= ( proj2_4 X) & ( proj2_4 (X /\ Y)) c= ( proj2_4 Y) by Th17, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: XTUPLE_0:45

    

     Th45: (( proj2_4 X) \ ( proj2_4 Y)) c= ( proj2_4 (X \ Y))

    proof

      let x be object;

      assume

       A1: x in (( proj2_4 X) \ ( proj2_4 Y));

      then x in ( proj2_4 X) by XBOOLE_0:def 5;

      then

      consider x1, x2, x3 such that

       A2: [x1, x, x2, x3] in X by Th20;

       not x in ( proj2_4 Y) by A1, XBOOLE_0:def 5;

      then not [x1, x, x2, x3] in Y by Th21;

      then [x1, x, x2, x3] in (X \ Y) by A2, XBOOLE_0:def 5;

      hence thesis by Th21;

    end;

    theorem :: XTUPLE_0:46

    (( proj2_4 X) \+\ ( proj2_4 Y)) c= ( proj2_4 (X \+\ Y))

    proof

      (( proj2_4 X) \ ( proj2_4 Y)) c= ( proj2_4 (X \ Y)) & (( proj2_4 Y) \ ( proj2_4 X)) c= ( proj2_4 (Y \ X)) by Th45;

      then (( proj2_4 X) \+\ ( proj2_4 Y)) c= (( proj2_4 (X \ Y)) \/ ( proj2_4 (Y \ X))) by XBOOLE_1: 13;

      hence thesis by Th43;

    end;