multop_1.miz



    begin

    definition

      let f be Function;

      let a,b,c be object;

      :: MULTOP_1:def1

      func f . (a,b,c) -> set equals (f . [a, b, c]);

      correctness ;

    end

    reserve A,B,C,D,E for non empty set,

a for Element of A,

b for Element of B,

c for Element of C,

d for Element of D,

X,Y,Z,S for set,

x,y,z,s,t for object;

    definition

      let A, B, C, D;

      let f be Function of [:A, B, C:], D;

      let a, b, c;

      :: original: .

      redefine

      func f . (a,b,c) -> Element of D ;

      coherence

      proof

        (f . [a, b, c]) is Element of D;

        hence thesis;

      end;

    end

    theorem :: MULTOP_1:1

    

     Th1: for f1,f2 be Function of [:X, Y, Z:], D st for x, y, z st x in X & y in Y & z in Z holds (f1 . [x, y, z]) = (f2 . [x, y, z]) holds f1 = f2

    proof

      let f1,f2 be Function of [:X, Y, Z:], D such that

       A1: for x, y, z st x in X & y in Y & z in Z holds (f1 . [x, y, z]) = (f2 . [x, y, z]);

      for t be object st t in [:X, Y, Z:] holds (f1 . t) = (f2 . t)

      proof

        let t be object;

        assume t in [:X, Y, Z:];

        then ex x, y, z st x in X & y in Y & z in Z & t = [x, y, z] by MCART_1: 68;

        hence thesis by A1;

      end;

      hence thesis by FUNCT_2: 12;

    end;

    theorem :: MULTOP_1:2

    

     Th2: for f1,f2 be Function of [:A, B, C:], D st for a, b, c holds (f1 . [a, b, c]) = (f2 . [a, b, c]) holds f1 = f2

    proof

      let f1,f2 be Function of [:A, B, C:], D;

      assume for a, b, c holds (f1 . [a, b, c]) = (f2 . [a, b, c]);

      then for x, y, z st x in A & y in B & z in C holds (f1 . [x, y, z]) = (f2 . [x, y, z]);

      hence thesis by Th1;

    end;

    theorem :: MULTOP_1:3

    for f1,f2 be Function of [:A, B, C:], D st for a be Element of A holds for b be Element of B holds for c be Element of C holds (f1 . (a,b,c)) = (f2 . (a,b,c)) holds f1 = f2

    proof

      let f1,f2 be Function of [:A, B, C:], D such that

       A1: for a be Element of A holds for b be Element of B holds for c be Element of C holds (f1 . (a,b,c)) = (f2 . (a,b,c));

      for a be Element of A holds for b be Element of B holds for c be Element of C holds (f1 . [a, b, c]) = (f2 . [a, b, c])

      proof

        let a be Element of A;

        let b be Element of B;

        let c be Element of C;

        (f1 . (a,b,c)) = (f1 . [a, b, c]) & (f2 . (a,b,c)) = (f2 . [a, b, c]);

        hence thesis by A1;

      end;

      hence thesis by Th2;

    end;

    definition

      let A be set;

      mode TriOp of A is Function of [:A, A, A:], A;

    end

    scheme :: MULTOP_1:sch1

    FuncEx3D { X,Y,Z,T() -> non empty set , P[ object, object, object, object] } :

ex f be Function of [:X(), Y(), Z():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds P[x, y, z, (f . [x, y, z])]

      provided

       A1: for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds ex t be Element of T() st P[x, y, z, t];

      defpred Q[ set, set] means (for x be Element of X(), y be Element of Y(), z be Element of Z() st $1 = [x, y, z] holds P[x, y, z, $2]);

      

       A2: for p be Element of [:X(), Y(), Z():] holds ex t be Element of T() st Q[p, t]

      proof

        let p be Element of [:X(), Y(), Z():];

        consider x1,y1,z1 be object such that

         A3: x1 in X() and

         A4: y1 in Y() and

         A5: z1 in Z() and

         A6: p = [x1, y1, z1] by MCART_1: 68;

        reconsider z1 as Element of Z() by A5;

        reconsider y1 as Element of Y() by A4;

        reconsider x1 as Element of X() by A3;

        consider t be Element of T() such that

         A7: P[x1, y1, z1, t] by A1;

        take t;

        let x be Element of X(), y be Element of Y(), z be Element of Z();

        assume

         A8: p = [x, y, z];

        then x1 = x & y1 = y by A6, XTUPLE_0: 3;

        hence thesis by A6, A7, A8, XTUPLE_0: 3;

      end;

      consider f be Function of [:X(), Y(), Z():], T() such that

       A9: for p be Element of [:X(), Y(), Z():] holds Q[p, (f . p)] from FUNCT_2:sch 3( A2);

      take f;

      let x be Element of X();

      let y be Element of Y();

      let z be Element of Z();

      thus thesis by A9;

    end;

    scheme :: MULTOP_1:sch2

    TriOpEx { A() -> non empty set , P[ Element of A(), Element of A(), Element of A(), Element of A()] } :

ex o be TriOp of A() st for a,b,c be Element of A() holds P[a, b, c, (o . (a,b,c))]

      provided

       A1: for x,y,z be Element of A() holds ex t be Element of A() st P[x, y, z, t];

      defpred Q[ Element of A(), Element of A(), Element of A(), Element of A()] means for r be Element of A() st r = $4 holds P[$1, $2, $3, r];

      

       A2: for x,y,z be Element of A() holds ex t be Element of A() st Q[x, y, z, t]

      proof

        let x,y,z be Element of A();

        consider t be Element of A() such that

         A3: P[x, y, z, t] by A1;

        take t;

        thus thesis by A3;

      end;

      consider f be Function of [:A(), A(), A():], A() such that

       A4: for a,b,c be Element of A() holds Q[a, b, c, (f . [a, b, c])] from FuncEx3D( A2);

      take f;

      let a,b,c be Element of A();

      thus thesis by A4;

    end;

    scheme :: MULTOP_1:sch3

    Lambda3D { X,Y,Z,T() -> non empty set , F( Element of X(), Element of Y(), Element of Z()) -> Element of T() } :

ex f be Function of [:X(), Y(), Z():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds (f . [x, y, z]) = F(x,y,z);

      defpred Q[ Element of X(), Element of Y(), Element of Z(), Element of T()] means $4 = F($1,$2,$3);

      

       A1: for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds ex t be Element of T() st Q[x, y, z, t];

      ex f be Function of [:X(), Y(), Z():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds Q[x, y, z, (f . [x, y, z])] from FuncEx3D( A1);

      hence thesis;

    end;

    scheme :: MULTOP_1:sch4

    TriOpLambda { A,B,C,D() -> non empty set , O( Element of A(), Element of B(), Element of C()) -> Element of D() } :

ex o be Function of [:A(), B(), C():], D() st for a be Element of A(), b be Element of B(), c be Element of C() holds (o . (a,b,c)) = O(a,b,c);

      consider f be Function of [:A(), B(), C():], D() such that

       A1: for a be Element of A(), b be Element of B(), c be Element of C() holds (f . [a, b, c]) = O(a,b,c) from Lambda3D;

      take f;

      let a be Element of A(), b be Element of B(), c be Element of C();

      thus thesis by A1;

    end;

    definition

      let f be Function;

      let a,b,c,d be set;

      :: MULTOP_1:def2

      func f . (a,b,c,d) -> set equals (f . [a, b, c, d]);

      correctness ;

    end

    definition

      let A, B, C, D, E;

      let f be Function of [:A, B, C, D:], E;

      let a, b, c, d;

      :: original: .

      redefine

      func f . (a,b,c,d) -> Element of E ;

      coherence

      proof

        (f . [a, b, c, d]) is Element of E;

        hence thesis;

      end;

    end

    theorem :: MULTOP_1:4

    

     Th4: for f1,f2 be Function of [:X, Y, Z, S:], D st for x, y, z, s st x in X & y in Y & z in Z & s in S holds (f1 . [x, y, z, s]) = (f2 . [x, y, z, s]) holds f1 = f2

    proof

      let f1,f2 be Function of [:X, Y, Z, S:], D such that

       A1: for x, y, z, s st x in X & y in Y & z in Z & s in S holds (f1 . [x, y, z, s]) = (f2 . [x, y, z, s]);

      for t be object st t in [:X, Y, Z, S:] holds (f1 . t) = (f2 . t)

      proof

        let t be object;

        assume t in [:X, Y, Z, S:];

        then ex x, y, z, s st x in X & y in Y & z in Z & s in S & t = [x, y, z, s] by MCART_1: 79;

        hence thesis by A1;

      end;

      hence thesis by FUNCT_2: 12;

    end;

    theorem :: MULTOP_1:5

    

     Th5: for f1,f2 be Function of [:A, B, C, D:], E st for a, b, c, d holds (f1 . [a, b, c, d]) = (f2 . [a, b, c, d]) holds f1 = f2

    proof

      let f1,f2 be Function of [:A, B, C, D:], E;

      assume for a, b, c, d holds (f1 . [a, b, c, d]) = (f2 . [a, b, c, d]);

      then for x, y, z, s st x in A & y in B & z in C & s in D holds (f1 . [x, y, z, s]) = (f2 . [x, y, z, s]);

      hence thesis by Th4;

    end;

    theorem :: MULTOP_1:6

    for f1,f2 be Function of [:A, B, C, D:], E st for a, b, c, d holds (f1 . (a,b,c,d)) = (f2 . (a,b,c,d)) holds f1 = f2

    proof

      let f1,f2 be Function of [:A, B, C, D:], E such that

       A1: for a, b, c, d holds (f1 . (a,b,c,d)) = (f2 . (a,b,c,d));

      for a, b, c, d holds (f1 . [a, b, c, d]) = (f2 . [a, b, c, d])

      proof

        let a, b, c, d;

        (f1 . (a,b,c,d)) = (f1 . [a, b, c, d]) & (f2 . (a,b,c,d)) = (f2 . [a, b, c, d]);

        hence thesis by A1;

      end;

      hence thesis by Th5;

    end;

    definition

      let A;

      mode QuaOp of A is Function of [:A, A, A, A:], A;

    end

    scheme :: MULTOP_1:sch5

    FuncEx4D { X,Y,Z,S,T() -> non empty set , P[ object, object, object, object, object] } :

ex f be Function of [:X(), Y(), Z(), S():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds for s be Element of S() holds P[x, y, z, s, (f . [x, y, z, s])]

      provided

       A1: for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds for s be Element of S() holds ex t be Element of T() st P[x, y, z, s, t];

      defpred Q[ set, set] means for x be Element of X(), y be Element of Y(), z be Element of Z(), s be Element of S() st $1 = [x, y, z, s] holds P[x, y, z, s, $2];

      

       A2: for p be Element of [:X(), Y(), Z(), S():] holds ex t be Element of T() st Q[p, t]

      proof

        let p be Element of [:X(), Y(), Z(), S():];

        consider x1,y1,z1,s1 be object such that

         A3: x1 in X() and

         A4: y1 in Y() and

         A5: z1 in Z() and

         A6: s1 in S() and

         A7: p = [x1, y1, z1, s1] by MCART_1: 79;

        reconsider s1 as Element of S() by A6;

        reconsider z1 as Element of Z() by A5;

        reconsider y1 as Element of Y() by A4;

        reconsider x1 as Element of X() by A3;

        consider t be Element of T() such that

         A8: P[x1, y1, z1, s1, t] by A1;

        take t;

        let x be Element of X(), y be Element of Y(), z be Element of Z(), s be Element of S();

        assume

         A9: p = [x, y, z, s];

        then

         A10: z1 = z by A7, XTUPLE_0: 5;

        x1 = x & y1 = y by A7, A9, XTUPLE_0: 5;

        hence thesis by A7, A8, A9, A10, XTUPLE_0: 5;

      end;

      consider f be Function of [:X(), Y(), Z(), S():], T() such that

       A11: for p be Element of [:X(), Y(), Z(), S():] holds Q[p, (f . p)] from FUNCT_2:sch 3( A2);

      take f;

      let x be Element of X();

      let y be Element of Y();

      let z be Element of Z();

      let s be Element of S();

      thus thesis by A11;

    end;

    scheme :: MULTOP_1:sch6

    QuaOpEx { A() -> non empty set , P[ Element of A(), Element of A(), Element of A(), Element of A(), Element of A()] } :

ex o be QuaOp of A() st for a,b,c,d be Element of A() holds P[a, b, c, d, (o . (a,b,c,d))]

      provided

       A1: for x,y,z,s be Element of A() holds ex t be Element of A() st P[x, y, z, s, t];

      defpred Q[ Element of A(), Element of A(), Element of A(), Element of A(), Element of A()] means for r be Element of A() st r = $5 holds P[$1, $2, $3, $4, $5];

      

       A2: for x,y,z,s be Element of A() holds ex t be Element of A() st Q[x, y, z, s, t]

      proof

        let x,y,z,s be Element of A();

        consider t be Element of A() such that

         A3: P[x, y, z, s, t] by A1;

        take t;

        thus thesis by A3;

      end;

      consider f be Function of [:A(), A(), A(), A():], A() such that

       A4: for a,b,c,d be Element of A() holds Q[a, b, c, d, (f . [a, b, c, d])] from FuncEx4D( A2);

      take f;

      let a,b,c,d be Element of A();

      thus thesis by A4;

    end;

    scheme :: MULTOP_1:sch7

    Lambda4D { X,Y,Z,S,T() -> non empty set , F( Element of X(), Element of Y(), Element of Z(), Element of S()) -> Element of T() } :

ex f be Function of [:X(), Y(), Z(), S():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds for s be Element of S() holds (f . [x, y, z, s]) = F(x,y,z,s);

      defpred P[ Element of X(), Element of Y(), Element of Z(), Element of S(), Element of T()] means $5 = F($1,$2,$3,$4);

      

       A1: for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds for s be Element of S() holds ex t be Element of T() st P[x, y, z, s, t];

      ex f be Function of [:X(), Y(), Z(), S():], T() st for x be Element of X() holds for y be Element of Y() holds for z be Element of Z() holds for s be Element of S() holds P[x, y, z, s, (f . [x, y, z, s])] from FuncEx4D( A1);

      hence thesis;

    end;

    scheme :: MULTOP_1:sch8

    QuaOpLambda { A() -> non empty set , O( Element of A(), Element of A(), Element of A(), Element of A()) -> Element of A() } :

ex o be QuaOp of A() st for a,b,c,d be Element of A() holds (o . (a,b,c,d)) = O(a,b,c,d);

      deffunc F( Element of A(), Element of A(), Element of A(), Element of A()) = O($1,$2,$3,$4);

      consider f be Function of [:A(), A(), A(), A():], A() such that

       A1: for a,b,c,d be Element of A() holds (f . [a, b, c, d]) = F(a,b,c,d) from Lambda4D;

      take f;

      let a,b,c,d be Element of A();

      thus thesis by A1;

    end;