prelamb.miz



    begin

    definition

      struct ( 1-sorted) typealg (# the carrier -> set,

the left_quotient, right_quotient, inner_product -> BinOp of the carrier #)

       attr strict strict;

    end

    registration

      cluster non empty strict for typealg;

      existence

      proof

        set l = the BinOp of { {} };

        take typealg (# { {} }, l, l, l #);

        thus the carrier of typealg (# { {} }, l, l, l #) is non empty;

        thus thesis;

      end;

    end

    definition

      let s be non empty typealg;

      mode type of s is Element of s;

    end

    reserve s for non empty typealg,

T,X,Y,T9,X9,Y9 for FinSequence of s,

x,y,z,y9,z9 for type of s;

    definition

      let s, x, y;

      :: PRELAMB:def1

      func x \ y -> type of s equals (the left_quotient of s . (x,y));

      coherence ;

      :: PRELAMB:def2

      func x /" y -> type of s equals (the right_quotient of s . (x,y));

      coherence ;

      :: PRELAMB:def3

      func x * y -> type of s equals (the inner_product of s . (x,y));

      coherence ;

    end

    definition

      let s;

      mode PreProof of s is finite DecoratedTree of [: [:(the carrier of s * ), the carrier of s:], NAT :];

    end

    reserve Tr for PreProof of s;

    definition

      let s, Tr;

      let v be Element of ( dom Tr);

      :: PRELAMB:def4

      attr v is correct means

      : Def4: ( branchdeg v) = 0 & ex x st ((Tr . v) `1 ) = [ <*x*>, x] if ((Tr . v) `2 ) = 0 ,

( branchdeg v) = 1 & ex T, x, y st ((Tr . v) `1 ) = [T, (x /" y)] & ((Tr . (v ^ <* 0 *>)) `1 ) = [(T ^ <*y*>), x] if ((Tr . v) `2 ) = 1,

( branchdeg v) = 1 & ex T, x, y st ((Tr . v) `1 ) = [T, (y \ x)] & ((Tr . (v ^ <* 0 *>)) `1 ) = [( <*y*> ^ T), x] if ((Tr . v) `2 ) = 2,

( branchdeg v) = 2 & ex T, X, Y, x, y, z st ((Tr . v) `1 ) = [(((X ^ <*(x /" y)*>) ^ T) ^ Y), z] & ((Tr . (v ^ <* 0 *>)) `1 ) = [T, y] & ((Tr . (v ^ <*1*>)) `1 ) = [((X ^ <*x*>) ^ Y), z] if ((Tr . v) `2 ) = 3,

( branchdeg v) = 2 & ex T, X, Y, x, y, z st ((Tr . v) `1 ) = [(((X ^ T) ^ <*(y \ x)*>) ^ Y), z] & ((Tr . (v ^ <* 0 *>)) `1 ) = [T, y] & ((Tr . (v ^ <*1*>)) `1 ) = [((X ^ <*x*>) ^ Y), z] if ((Tr . v) `2 ) = 4,

( branchdeg v) = 1 & ex X, x, y, Y st ((Tr . v) `1 ) = [((X ^ <*(x * y)*>) ^ Y), z] & ((Tr . (v ^ <* 0 *>)) `1 ) = [(((X ^ <*x*>) ^ <*y*>) ^ Y), z] if ((Tr . v) `2 ) = 5,

( branchdeg v) = 2 & ex X, Y, x, y st ((Tr . v) `1 ) = [(X ^ Y), (x * y)] & ((Tr . (v ^ <* 0 *>)) `1 ) = [X, x] & ((Tr . (v ^ <*1*>)) `1 ) = [Y, y] if ((Tr . v) `2 ) = 6,

( branchdeg v) = 2 & ex T, X, Y, y, z st ((Tr . v) `1 ) = [((X ^ T) ^ Y), z] & ((Tr . (v ^ <* 0 *>)) `1 ) = [T, y] & ((Tr . (v ^ <*1*>)) `1 ) = [((X ^ <*y*>) ^ Y), z] if ((Tr . v) `2 ) = 7

      otherwise contradiction;

      correctness ;

    end

    definition

      let s;

      let IT be type of s;

      :: PRELAMB:def5

      attr IT is left means ex x, y st IT = (x \ y);

      :: PRELAMB:def6

      attr IT is right means ex x, y st IT = (x /" y);

      :: PRELAMB:def7

      attr IT is middle means ex x, y st IT = (x * y);

    end

    definition

      let s;

      let IT be type of s;

      :: PRELAMB:def8

      attr IT is primitive means not (IT is left or IT is right or IT is middle);

    end

    definition

      let s;

      let Tr be finite DecoratedTree of the carrier of s;

      let v be Element of ( dom Tr);

      :: original: .

      redefine

      func Tr . v -> type of s ;

      coherence

      proof

        reconsider Tr as DecoratedTree of the carrier of s;

        reconsider v as Element of ( dom Tr);

        (Tr . v) is type of s;

        hence thesis;

      end;

    end

    definition

      let s;

      let Tr be finite DecoratedTree of the carrier of s, x;

      :: PRELAMB:def9

      pred Tr represents x means ( dom Tr) is finite & for v be Element of ( dom Tr) holds (( branchdeg v) = 0 or ( branchdeg v) = 2) & (( branchdeg v) = 0 implies (Tr . v) is primitive) & (( branchdeg v) = 2 implies ex y, z st ((Tr . v) = (y /" z) or (Tr . v) = (y \ z) or (Tr . v) = (y * z)) & (Tr . (v ^ <* 0 *>)) = y & (Tr . (v ^ <*1*>)) = z);

    end

    notation

      let s;

      let Tr be finite DecoratedTree of the carrier of s, x;

      antonym Tr does_not_represent x for Tr represents x;

    end

    definition

      let IT be non empty typealg;

      :: PRELAMB:def10

      attr IT is free means not (ex x be type of IT st x is left right or x is left middle or x is right middle) & for x be type of IT holds ex Tr be finite DecoratedTree of the carrier of IT st for Tr1 be finite DecoratedTree of the carrier of IT holds Tr1 represents x iff Tr = Tr1;

    end

    definition

      let s, x;

      :: PRELAMB:def11

      func repr_of x -> finite DecoratedTree of the carrier of s means for Tr be finite DecoratedTree of the carrier of s holds Tr represents x iff it = Tr;

      existence by A1;

      uniqueness ;

    end

    deffunc PAIRSOF( typealg) = [:(the carrier of $1 * ), the carrier of $1:];

    definition

      let s;

      let f be FinSequence of s;

      let t be type of s;

      :: original: [

      redefine

      func [f,t] -> Element of [:(the carrier of s * ), the carrier of s:] ;

      coherence

      proof

        f in (the carrier of s * ) by FINSEQ_1:def 11;

        hence thesis by ZFMISC_1: 87;

      end;

    end

    definition

      let s;

      :: PRELAMB:def12

      mode Proof of s -> PreProof of s means

      : Def12: ( dom it ) is finite & for v be Element of ( dom it ) holds v is correct;

      existence

      proof

        set x = the type of s;

        set Tr = ( { {} } --> [ [ <*x*>, x], 0 ]);

        

         A1: ( dom Tr) = { {} } by FUNCOP_1: 13;

        reconsider Tr as finite DecoratedTree by TREES_1: 23;

        

         A2: [ [ <*x*>, x], 0 ] in [: PAIRSOF(s), NAT :] by ZFMISC_1: 87;

         { [ [ <*x*>, x], 0 ]} = ( rng Tr) by FUNCOP_1: 8;

        then ( rng Tr) c= [: PAIRSOF(s), NAT :] by A2, ZFMISC_1: 31;

        then

        reconsider Tr as PreProof of s by RELAT_1:def 19;

        take Tr;

        thus ( dom Tr) is finite;

        let v be Element of ( dom Tr);

        

         A3: v = {} by A1, TARSKI:def 1;

         A4:

        now

          set x = the Element of (( dom Tr) -level 1);

          assume (( dom Tr) -level 1) <> {} ;

          then x in (( dom Tr) -level 1);

          then x in { w where w be Element of ( dom Tr) : ( len w) = 1 } by TREES_2:def 6;

          then ex w be Element of ( dom Tr) st (x = w) & (( len w) = 1);

          hence contradiction by A1, CARD_1: 27, TARSKI:def 1;

        end;

        

         A5: ( branchdeg v) = ( card ( succ v)) by TREES_2:def 12

        .= 0 by A3, A4, CARD_1: 27, TREES_2: 13;

        

         A6: (Tr . v) = [ [ <*x*>, x], 0 ] by A1, FUNCOP_1: 7;

        then

         A7: ((Tr . v) `1 ) = [ <*x*>, x];

        ((Tr . v) `2 ) = 0 by A6;

        hence thesis by A5, A7, Def4;

      end;

    end

    reserve p for Proof of s,

v for Element of ( dom p);

    theorem :: PRELAMB:1

    

     Th1: ( branchdeg v) = 1 implies (v ^ <* 0 *>) in ( dom p)

    proof

      assume ( branchdeg v) = 1;

      then

       A1: ( succ v) <> {} by CARD_1: 27, TREES_2:def 12;

      set x = the Element of ( succ v);

      x in ( succ v) by A1;

      then x in { (v ^ <*n*>) where n be Nat : (v ^ <*n*>) in ( dom p) } by TREES_2:def 5;

      then

      consider n be Nat such that x = (v ^ <*n*>) and

       A2: (v ^ <*n*>) in ( dom p);

      thus thesis by A2, TREES_1:def 3;

    end;

    theorem :: PRELAMB:2

    

     Th2: ( branchdeg v) = 2 implies (v ^ <* 0 *>) in ( dom p) & (v ^ <*1*>) in ( dom p)

    proof

      

       A1: ( succ v) = { (v ^ <*n*>) where n be Nat : (v ^ <*n*>) in ( dom p) } by TREES_2:def 5;

      assume ( branchdeg v) = 2;

      then ( card ( succ v)) = 2 by TREES_2:def 12;

      then

      consider x,y be object such that

       A2: x <> y and

       A3: ( succ v) = {x, y} by CARD_2: 60;

      x in ( succ v) by A3, TARSKI:def 2;

      then

      consider n be Nat such that

       A4: x = (v ^ <*n*>) and

       A5: (v ^ <*n*>) in ( dom p) by A1;

      y in ( succ v) by A3, TARSKI:def 2;

      then

      consider k be Nat such that

       A6: y = (v ^ <*k*>) and

       A7: (v ^ <*k*>) in ( dom p) by A1;

      n <> 0 or k <> 0 by A2, A4, A6;

      then

       A8: n > 0 or k > 0 ;

      thus (v ^ <* 0 *>) in ( dom p) by A5, TREES_1:def 3;

      n >= ( 0 + 1) or k >= ( 0 + 1) by A8, NAT_1: 13;

      hence thesis by A5, A7, TREES_1:def 3;

    end;

    theorem :: PRELAMB:3

    ((p . v) `2 ) = 0 implies ex x st ((p . v) `1 ) = [ <*x*>, x]

    proof

      v is correct by Def12;

      hence thesis by Def4;

    end;

    theorem :: PRELAMB:4

    ((p . v) `2 ) = 1 implies ex w be Element of ( dom p), T, x, y st w = (v ^ <* 0 *>) & ((p . v) `1 ) = [T, (x /" y)] & ((p . w) `1 ) = [(T ^ <*y*>), x]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 1;

      then

       A3: ex T, x, y st ((p . v) `1 ) = [T, (x /" y)] & ((p . (v ^ <* 0 *>)) `1 ) = [(T ^ <*y*>), x] by A1, Def4;

      ( branchdeg v) = 1 by A1, A2, Def4;

      then (v ^ <* 0 *>) in ( dom p) by Th1;

      hence thesis by A3;

    end;

    theorem :: PRELAMB:5

    ((p . v) `2 ) = 2 implies ex w be Element of ( dom p), T, x, y st w = (v ^ <* 0 *>) & ((p . v) `1 ) = [T, (y \ x)] & ((p . w) `1 ) = [( <*y*> ^ T), x]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 2;

      then

       A3: ex T, x, y st ((p . v) `1 ) = [T, (y \ x)] & ((p . (v ^ <* 0 *>)) `1 ) = [( <*y*> ^ T), x] by A1, Def4;

      ( branchdeg v) = 1 by A1, A2, Def4;

      then (v ^ <* 0 *>) in ( dom p) by Th1;

      hence thesis by A3;

    end;

    theorem :: PRELAMB:6

    ((p . v) `2 ) = 3 implies ex w,u be Element of ( dom p), T, X, Y, x, y, z st w = (v ^ <* 0 *>) & u = (v ^ <*1*>) & ((p . v) `1 ) = [(((X ^ <*(x /" y)*>) ^ T) ^ Y), z] & ((p . w) `1 ) = [T, y] & ((p . u) `1 ) = [((X ^ <*x*>) ^ Y), z]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 3;

      then

       A3: ex T, X, Y, x, y, z st ((p . v) `1 ) = [(((X ^ <*(x /" y)*>) ^ T) ^ Y), z] & ((p . (v ^ <* 0 *>)) `1 ) = [T, y] & ((p . (v ^ <*1*>)) `1 ) = [((X ^ <*x*>) ^ Y), z] by A1, Def4;

      

       A4: ( branchdeg v) = 2 by A1, A2, Def4;

      then

       A5: (v ^ <* 0 *>) in ( dom p) by Th2;

      (v ^ <*1*>) in ( dom p) by A4, Th2;

      hence thesis by A3, A5;

    end;

    theorem :: PRELAMB:7

    ((p . v) `2 ) = 4 implies ex w,u be Element of ( dom p), T, X, Y, x, y, z st w = (v ^ <* 0 *>) & u = (v ^ <*1*>) & ((p . v) `1 ) = [(((X ^ T) ^ <*(y \ x)*>) ^ Y), z] & ((p . w) `1 ) = [T, y] & ((p . u) `1 ) = [((X ^ <*x*>) ^ Y), z]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 4;

      then

       A3: ex T, X, Y, x, y, z st ((p . v) `1 ) = [(((X ^ T) ^ <*(y \ x)*>) ^ Y), z] & ((p . (v ^ <* 0 *>)) `1 ) = [T, y] & ((p . (v ^ <*1*>)) `1 ) = [((X ^ <*x*>) ^ Y), z] by A1, Def4;

      

       A4: ( branchdeg v) = 2 by A1, A2, Def4;

      then

       A5: (v ^ <* 0 *>) in ( dom p) by Th2;

      (v ^ <*1*>) in ( dom p) by A4, Th2;

      hence thesis by A3, A5;

    end;

    theorem :: PRELAMB:8

    ((p . v) `2 ) = 5 implies ex w be Element of ( dom p), X, x, y, Y st w = (v ^ <* 0 *>) & ((p . v) `1 ) = [((X ^ <*(x * y)*>) ^ Y), z] & ((p . w) `1 ) = [(((X ^ <*x*>) ^ <*y*>) ^ Y), z]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 5;

      then

       A3: ex X, x, y, Y st ((p . v) `1 ) = [((X ^ <*(x * y)*>) ^ Y), z] & ((p . (v ^ <* 0 *>)) `1 ) = [(((X ^ <*x*>) ^ <*y*>) ^ Y), z] by A1, Def4;

      ( branchdeg v) = 1 by A1, A2, Def4;

      then (v ^ <* 0 *>) in ( dom p) by Th1;

      hence thesis by A3;

    end;

    theorem :: PRELAMB:9

    ((p . v) `2 ) = 6 implies ex w,u be Element of ( dom p), X, Y, x, y st w = (v ^ <* 0 *>) & u = (v ^ <*1*>) & ((p . v) `1 ) = [(X ^ Y), (x * y)] & ((p . w) `1 ) = [X, x] & ((p . u) `1 ) = [Y, y]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 6;

      then

       A3: ex X, Y, x, y st ((p . v) `1 ) = [(X ^ Y), (x * y)] & ((p . (v ^ <* 0 *>)) `1 ) = [X, x] & ((p . (v ^ <*1*>)) `1 ) = [Y, y] by A1, Def4;

      

       A4: ( branchdeg v) = 2 by A1, A2, Def4;

      then

       A5: (v ^ <* 0 *>) in ( dom p) by Th2;

      (v ^ <*1*>) in ( dom p) by A4, Th2;

      hence thesis by A3, A5;

    end;

    theorem :: PRELAMB:10

    

     Th10: ((p . v) `2 ) = 7 implies ex w,u be Element of ( dom p), T, X, Y, y, z st w = (v ^ <* 0 *>) & u = (v ^ <*1*>) & ((p . v) `1 ) = [((X ^ T) ^ Y), z] & ((p . w) `1 ) = [T, y] & ((p . u) `1 ) = [((X ^ <*y*>) ^ Y), z]

    proof

      

       A1: v is correct by Def12;

      assume

       A2: ((p . v) `2 ) = 7;

      then

       A3: ex T, X, Y, y, z st ((p . v) `1 ) = [((X ^ T) ^ Y), z] & ((p . (v ^ <* 0 *>)) `1 ) = [T, y] & ((p . (v ^ <*1*>)) `1 ) = [((X ^ <*y*>) ^ Y), z] by A1, Def4;

      

       A4: ( branchdeg v) = 2 by A1, A2, Def4;

      then

       A5: (v ^ <* 0 *>) in ( dom p) by Th2;

      (v ^ <*1*>) in ( dom p) by A4, Th2;

      hence thesis by A3, A5;

    end;

    theorem :: PRELAMB:11

    ((p . v) `2 ) = 0 or ... or ((p . v) `2 ) = 7

    proof

      v is correct by Def12;

      hence thesis by Def4;

    end;

    definition

      let s;

      let IT be PreProof of s;

      :: PRELAMB:def13

      attr IT is cut-free means for v be Element of ( dom IT) holds ((IT . v) `2 ) <> 7;

    end

    definition

      let s;

      :: PRELAMB:def14

      func size_w.r.t. s -> Function of the carrier of s, NAT means for x holds (it . x) = ( card ( dom ( repr_of x)));

      existence

      proof

        deffunc F( type of s) = ( card ( dom ( repr_of $1)));

        thus ex S be Function of the carrier of s, NAT st for x holds (S . x) = F(x) from FUNCT_2:sch 4;

      end;

      uniqueness

      proof

        let f,g be Function of the carrier of s, NAT ;

        deffunc F( type of s) = ( card ( dom ( repr_of $1)));

        assume that

         A1: (f . x) = F(x) and

         A2: (g . x) = F(x);

        now

          let c be Element of s;

          

          thus (f . c) = F(c) by A1

          .= (g . c) by A2;

        end;

        hence f = g by FUNCT_2: 63;

      end;

    end

    definition

      let D be non empty set, T be FinSequence of D, f be Function of D, NAT ;

      :: original: *

      redefine

      func f * T -> FinSequence of REAL ;

      coherence

      proof

        

         A1: (f * T) is FinSequence of NAT by FINSEQ_2: 32;

        ( rng (f * T)) c= REAL ;

        hence thesis by A1, FINSEQ_1:def 4;

      end;

    end

    

     Lm1: for D be non empty set, T be FinSequence of D holds for f be Function of D, NAT holds ( Sum (f * T)) is Nat

    proof

      let D be non empty set, T be FinSequence of D;

      let f be Function of D, NAT ;

      defpred P[ FinSequence of REAL ] means $1 is FinSequence of NAT implies ( Sum $1) is Nat;

      

       A1: P[( <*> REAL )] by RVSUM_1: 72;

      

       A2: for p be FinSequence of REAL , x be Element of REAL st P[p] holds P[(p ^ <*x*>)]

      proof

        let p be FinSequence of REAL , x be Element of REAL ;

        assume

         A3: P[p];

        assume (p ^ <*x*>) is FinSequence of NAT ;

        then

         A4: ( rng (p ^ <*x*>)) c= NAT by FINSEQ_1:def 4;

        ( rng p) c= ( rng (p ^ <*x*>)) by FINSEQ_1: 29;

        then

         A5: ( rng p) c= NAT by A4;

        ( rng <*x*>) c= ( rng (p ^ <*x*>)) by FINSEQ_1: 30;

        then

         A6: ( rng <*x*>) c= NAT by A4;

        ( rng <*x*>) = {x} by FINSEQ_1: 38;

        then

        reconsider n = x as Element of NAT by A6, ZFMISC_1: 31;

        reconsider s = ( Sum p) as Nat by A3, A5, FINSEQ_1:def 4;

        ( Sum (p ^ <*x*>)) = (s + n) by RVSUM_1: 74;

        hence thesis;

      end;

      

       A7: for p be FinSequence of REAL holds P[p] from FINSEQ_2:sch 2( A1, A2);

      (f * T) is FinSequence of NAT by FINSEQ_2: 32;

      hence thesis by A7;

    end;

    definition

      let s;

      let p be Proof of s;

      :: PRELAMB:def15

      func cutdeg p -> Nat means ex T, X, Y, y, z st ((p . {} ) `1 ) = [((X ^ T) ^ Y), z] & ((p . <* 0 *>) `1 ) = [T, y] & ((p . <*1*>) `1 ) = [((X ^ <*y*>) ^ Y), z] & it = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y)))) if ((p . {} ) `2 ) = 7

      otherwise it = 0 ;

      existence

      proof

        thus ((p . {} ) `2 ) = 7 implies ex r be Nat st ex T, X, Y, y, z st ((p . {} ) `1 ) = [((X ^ T) ^ Y), z] & ((p . <* 0 *>) `1 ) = [T, y] & ((p . <*1*>) `1 ) = [((X ^ <*y*>) ^ Y), z] & r = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y))))

        proof

          

           A1: ( {} ^ <* 0 *>) = <* 0 *> by FINSEQ_1: 34;

          

           A2: ( {} ^ <*1*>) = <*1*> by FINSEQ_1: 34;

          reconsider v = {} as Element of ( dom p) by TREES_1: 22;

          assume ((p . {} ) `2 ) = 7;

          then

          consider w,u be Element of ( dom p), T, X, Y, y, z such that

           A3: w = (v ^ <* 0 *>) and

           A4: u = (v ^ <*1*>) and

           A5: ((p . v) `1 ) = [((X ^ T) ^ Y), z] and

           A6: ((p . w) `1 ) = [T, y] and

           A7: ((p . u) `1 ) = [((X ^ <*y*>) ^ Y), z] by Th10;

          reconsider a = ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y))) as Nat by Lm1;

          reconsider tt = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + a) as Nat;

          take tt;

          thus thesis by A1, A2, A3, A4, A5, A6, A7;

        end;

        thus thesis;

      end;

      uniqueness

      proof

        let r1,r2 be Nat;

        thus ((p . {} ) `2 ) = 7 & (ex T, X, Y, y, z st ((p . {} ) `1 ) = [((X ^ T) ^ Y), z] & ((p . <* 0 *>) `1 ) = [T, y] & ((p . <*1*>) `1 ) = [((X ^ <*y*>) ^ Y), z] & r1 = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y))))) & (ex T, X, Y, y, z st ((p . {} ) `1 ) = [((X ^ T) ^ Y), z] & ((p . <* 0 *>) `1 ) = [T, y] & ((p . <*1*>) `1 ) = [((X ^ <*y*>) ^ Y), z] & r2 = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y))))) implies r1 = r2

        proof

          assume ((p . {} ) `2 ) = 7;

          given T, X, Y, y, z such that

           A8: ((p . {} ) `1 ) = [((X ^ T) ^ Y), z] and

           A9: ((p . <* 0 *>) `1 ) = [T, y] and ((p . <*1*>) `1 ) = [((X ^ <*y*>) ^ Y), z] and

           A10: r1 = (((( size_w.r.t. s) . y) + (( size_w.r.t. s) . z)) + ( Sum (( size_w.r.t. s) * ((X ^ T) ^ Y))));

          given T9, X9, Y9, y9, z9 such that

           A11: ((p . {} ) `1 ) = [((X9 ^ T9) ^ Y9), z9] and

           A12: ((p . <* 0 *>) `1 ) = [T9, y9] and ((p . <*1*>) `1 ) = [((X9 ^ <*y9*>) ^ Y9), z9] and

           A13: r2 = (((( size_w.r.t. s) . y9) + (( size_w.r.t. s) . z9)) + ( Sum (( size_w.r.t. s) * ((X9 ^ T9) ^ Y9))));

          

           A14: ((X ^ T) ^ Y) = ( [((X ^ T) ^ Y), z] `1 )

          .= ( [((X9 ^ T9) ^ Y9), z9] `1 ) by A8, A11

          .= ((X9 ^ T9) ^ Y9);

          

           A15: y = ( [T, y] `2 )

          .= ( [T9, y9] `2 ) by A9, A12

          .= y9;

          z = ( [((X ^ T) ^ Y), z] `2 )

          .= ( [((X9 ^ T9) ^ Y9), z9] `2 ) by A8, A11

          .= z9;

          hence thesis by A10, A13, A14, A15;

        end;

        thus thesis;

      end;

      consistency ;

    end

    reserve A for non empty set,

a,a1,a2,b for Element of (A * );

    definition

      let s, A;

      :: PRELAMB:def16

      mode Model of s,A -> Function of the carrier of s, ( bool (A * )) means for x, y holds (it . (x * y)) = { (a ^ b) : a in (it . x) & b in (it . y) } & (it . (x /" y)) = { a1 : for b st b in (it . y) holds (a1 ^ b) in (it . x) } & (it . (y \ x)) = { a2 : for b st b in (it . y) holds (b ^ a2) in (it . x) };

      existence

      proof

         {} in (A * ) by FINSEQ_1: 49;

        then { {} } c= (A * ) by ZFMISC_1: 31;

        then

        reconsider f = (the carrier of s --> { {} }) as Function of the carrier of s, ( bool (A * )) by FUNCOP_1: 45;

        

         A1: for t be set st t in (f . x) holds t = {}

        proof

          let t be set;

          assume t in (f . x);

          then t in { {} } by FUNCOP_1: 7;

          hence thesis by TARSKI:def 1;

        end;

        

         A2: {} in (f . x)

        proof

          (f . x) = { {} } by FUNCOP_1: 7;

          hence thesis by TARSKI:def 1;

        end;

        

         A3: {} is Element of (A * ) by FINSEQ_1: 49;

        take f;

        let x, y;

        thus (f . (x * y)) = { (a ^ b) : a in (f . x) & b in (f . y) }

        proof

          thus (f . (x * y)) c= { (a ^ b) : a in (f . x) & b in (f . y) }

          proof

            let t be object;

            assume t in (f . (x * y));

            then

             A4: t = {} by A1;

            

             A5: t = ( {} ^ {} ) by A4;

            

             A6: {} in (f . x) by A2;

             {} in (f . y) by A2;

            hence thesis by A5, A6;

          end;

          let t be object;

          assume t in { (a ^ b) : a in (f . x) & b in (f . y) };

          then

          consider a, b such that

           A7: t = (a ^ b) and

           A8: a in (f . x) and

           A9: b in (f . y);

          

           A10: a = {} by A1, A8;

          b = {} by A1, A9;

          then (a ^ b) = {} by A10, FINSEQ_1: 34;

          hence thesis by A2, A7;

        end;

        thus (f . (x /" y)) = { a : for b st b in (f . y) holds (a ^ b) in (f . x) }

        proof

          thus (f . (x /" y)) c= { a : for b st b in (f . y) holds (a ^ b) in (f . x) }

          proof

            let t be object;

            assume t in (f . (x /" y));

            then

             A11: t = {} by A1;

            now

              let b;

              assume b in (f . y);

              then b = {} by A1;

              then ( {} ^ b) = {} by FINSEQ_1: 34;

              hence ( {} ^ b) in (f . x) by A2;

            end;

            hence thesis by A3, A11;

          end;

          let t be object;

          assume t in { a : for b st b in (f . y) holds (a ^ b) in (f . x) };

          then

          consider a such that

           A12: t = a and

           A13: for b st b in (f . y) holds (a ^ b) in (f . x);

           {} in (f . y) by A2;

          then (a ^ {} ) in (f . x) by A13;

          then a = {} by A1;

          hence thesis by A2, A12;

        end;

        thus (f . (y \ x)) = { a : for b st b in (f . y) holds (b ^ a) in (f . x) }

        proof

          thus (f . (y \ x)) c= { a : for b st b in (f . y) holds (b ^ a) in (f . x) }

          proof

            let t be object;

            assume t in (f . (y \ x));

            then

             A14: t = {} by A1;

            now

              let b;

              assume b in (f . y);

              then b = {} by A1;

              then (b ^ {} ) = {} by FINSEQ_1: 34;

              hence (b ^ {} ) in (f . x) by A2;

            end;

            hence thesis by A3, A14;

          end;

          let t be object;

          assume t in { a : for b st b in (f . y) holds (b ^ a) in (f . x) };

          then

          consider a such that

           A15: t = a and

           A16: for b st b in (f . y) holds (b ^ a) in (f . x);

           {} in (f . y) by A2;

          then ( {} ^ a) in (f . x) by A16;

          then a = {} by A1;

          hence thesis by A2, A15;

        end;

      end;

    end

    definition

      struct ( typealg) typestr (# the carrier -> set,

the left_quotient, right_quotient, inner_product -> BinOp of the carrier,

the derivability -> Relation of ( the carrier * ), the carrier #)

       attr strict strict;

    end

    registration

      cluster non empty strict for typestr;

      existence

      proof

        set l = the BinOp of { {} }, d = the Relation of ( { {} } * ), { {} };

        take typestr (# { {} }, l, l, l, d #);

        thus the carrier of typestr (# { {} }, l, l, l, d #) is non empty;

        thus thesis;

      end;

    end

    reserve s for non empty typestr,

x for type of s;

    definition

      let s;

      let f be FinSequence of s, x;

      :: PRELAMB:def17

      pred f ==>. x means [f, x] in the derivability of s;

    end

    definition

      let IT be non empty typestr;

      :: PRELAMB:def18

      attr IT is SynTypes_Calculus-like means

      : Def18: (for x be type of IT holds <*x*> ==>. x) & (for T be FinSequence of IT, x,y be type of IT st (T ^ <*y*>) ==>. x holds T ==>. (x /" y)) & (for T be FinSequence of IT, x,y be type of IT st ( <*y*> ^ T) ==>. x holds T ==>. (y \ x)) & (for T,X,Y be FinSequence of IT, x,y,z be type of IT st T ==>. y & ((X ^ <*x*>) ^ Y) ==>. z holds (((X ^ <*(x /" y)*>) ^ T) ^ Y) ==>. z) & (for T,X,Y be FinSequence of IT, x,y,z be type of IT st T ==>. y & ((X ^ <*x*>) ^ Y) ==>. z holds (((X ^ T) ^ <*(y \ x)*>) ^ Y) ==>. z) & (for X,Y be FinSequence of IT, x,y,z be type of IT st (((X ^ <*x*>) ^ <*y*>) ^ Y) ==>. z holds ((X ^ <*(x * y)*>) ^ Y) ==>. z) & for X,Y be FinSequence of IT, x,y be type of IT st X ==>. x & Y ==>. y holds (X ^ Y) ==>. (x * y);

    end

    registration

      cluster SynTypes_Calculus-like for non empty typestr;

      existence

      proof

         [:( { 0 } * ), { 0 }:] c= [:( { 0 } * ), { 0 }:];

        then

        reconsider DER = [:( { 0 } * ), { 0 }:] as non empty Relation of ( { 0 } * ), { 0 };

        reconsider EM = typestr (# { 0 }, op2 , op2 , op2 , DER #) as non empty typestr;

        take EM;

        thus for x be type of EM holds <*x*> ==>. x;

        thus thesis;

      end;

    end

    definition

      mode SynTypes_Calculus is SynTypes_Calculus-like non empty typestr;

    end

    reserve s for SynTypes_Calculus,

T,X,Y for FinSequence of s,

x,y,z for type of s;

    deffunc e( typestr) = ( <*> the carrier of $1);

    

     Lm2: T ==>. y & (X ^ <*x*>) ==>. z implies ((X ^ <*(x /" y)*>) ^ T) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: (X ^ <*x*>) ==>. z;

      ((X ^ <*x*>) ^ e(s)) ==>. z by A2, FINSEQ_1: 34;

      then (((X ^ <*(x /" y)*>) ^ T) ^ e(s)) ==>. z by A1, Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm3: T ==>. y & ( <*x*> ^ Y) ==>. z implies (( <*(x /" y)*> ^ T) ^ Y) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: ( <*x*> ^ Y) ==>. z;

      (( e(s) ^ <*x*>) ^ Y) ==>. z by A2, FINSEQ_1: 34;

      then ((( e(s) ^ <*(x /" y)*>) ^ T) ^ Y) ==>. z by A1, Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm4: T ==>. y & <*x*> ==>. z implies ( <*(x /" y)*> ^ T) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: <*x*> ==>. z;

      ( e(s) ^ <*x*>) ==>. z by A2, FINSEQ_1: 34;

      then (( e(s) ^ <*(x /" y)*>) ^ T) ==>. z by A1, Lm2;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm5: T ==>. y & (X ^ <*x*>) ==>. z implies ((X ^ T) ^ <*(y \ x)*>) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: (X ^ <*x*>) ==>. z;

      ((X ^ <*x*>) ^ e(s)) ==>. z by A2, FINSEQ_1: 34;

      then (((X ^ T) ^ <*(y \ x)*>) ^ e(s)) ==>. z by A1, Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm6: T ==>. y & ( <*x*> ^ Y) ==>. z implies ((T ^ <*(y \ x)*>) ^ Y) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: ( <*x*> ^ Y) ==>. z;

      (( e(s) ^ <*x*>) ^ Y) ==>. z by A2, FINSEQ_1: 34;

      then ((( e(s) ^ T) ^ <*(y \ x)*>) ^ Y) ==>. z by A1, Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm7: T ==>. y & <*x*> ==>. z implies (T ^ <*(y \ x)*>) ==>. z

    proof

      assume that

       A1: T ==>. y and

       A2: <*x*> ==>. z;

      ( e(s) ^ <*x*>) ==>. z by A2, FINSEQ_1: 34;

      then (( e(s) ^ T) ^ <*(y \ x)*>) ==>. z by A1, Lm5;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm8: (( <*x*> ^ <*y*>) ^ Y) ==>. z implies ( <*(x * y)*> ^ Y) ==>. z

    proof

      assume (( <*x*> ^ <*y*>) ^ Y) ==>. z;

      then ((( e(s) ^ <*x*>) ^ <*y*>) ^ Y) ==>. z by FINSEQ_1: 34;

      then (( e(s) ^ <*(x * y)*>) ^ Y) ==>. z by Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm9: ((X ^ <*x*>) ^ <*y*>) ==>. z implies (X ^ <*(x * y)*>) ==>. z

    proof

      assume ((X ^ <*x*>) ^ <*y*>) ==>. z;

      then (((X ^ <*x*>) ^ <*y*>) ^ e(s)) ==>. z by FINSEQ_1: 34;

      then ((X ^ <*(x * y)*>) ^ e(s)) ==>. z by Def18;

      hence thesis by FINSEQ_1: 34;

    end;

    

     Lm10: ( <*x*> ^ <*y*>) ==>. z implies <*(x * y)*> ==>. z

    proof

      assume ( <*x*> ^ <*y*>) ==>. z;

      then (( e(s) ^ <*x*>) ^ <*y*>) ==>. z by FINSEQ_1: 34;

      then ( e(s) ^ <*(x * y)*>) ==>. z by Lm9;

      hence thesis by FINSEQ_1: 34;

    end;

    theorem :: PRELAMB:12

    

     Th12: ( <*(x /" y)*> ^ <*y*>) ==>. x & ( <*y*> ^ <*(y \ x)*>) ==>. x

    proof

      

       A1: <*x*> ==>. x by Def18;

       <*y*> ==>. y by Def18;

      hence thesis by A1, Lm4, Lm7;

    end;

    theorem :: PRELAMB:13

    

     Th13: <*x*> ==>. (y /" (x \ y)) & <*x*> ==>. ((y /" x) \ y)

    proof

      

       A1: ( <*(y /" x)*> ^ <*x*>) ==>. y by Th12;

      ( <*x*> ^ <*(x \ y)*>) ==>. y by Th12;

      hence thesis by A1, Def18;

    end;

    theorem :: PRELAMB:14

    

     Th14: <*(x /" y)*> ==>. ((x /" z) /" (y /" z))

    proof

      

       A1: ( <*(x /" y)*> ^ <*y*>) ==>. x by Th12;

       <*z*> ==>. z by Def18;

      then (( <*(x /" y)*> ^ <*(y /" z)*>) ^ <*z*>) ==>. x by A1, Lm2;

      then ( <*(x /" y)*> ^ <*(y /" z)*>) ==>. (x /" z) by Def18;

      hence thesis by Def18;

    end;

    theorem :: PRELAMB:15

    

     Th15: <*(y \ x)*> ==>. ((z \ y) \ (z \ x))

    proof

      

       A1: ( <*y*> ^ <*(y \ x)*>) ==>. x by Th12;

       <*z*> ==>. z by Def18;

      then (( <*z*> ^ <*(z \ y)*>) ^ <*(y \ x)*>) ==>. x by A1, Lm6;

      then ( <*z*> ^ ( <*(z \ y)*> ^ <*(y \ x)*>)) ==>. x by FINSEQ_1: 32;

      then ( <*(z \ y)*> ^ <*(y \ x)*>) ==>. (z \ x) by Def18;

      hence thesis by Def18;

    end;

    theorem :: PRELAMB:16

     <*x*> ==>. y implies <*(x /" z)*> ==>. (y /" z) & <*(z \ x)*> ==>. (z \ y)

    proof

      assume

       A1: <*x*> ==>. y;

      

       A2: <*z*> ==>. z by Def18;

      then

       A3: ( <*(x /" z)*> ^ <*z*>) ==>. y by A1, Lm4;

      ( <*z*> ^ <*(z \ x)*>) ==>. y by A1, A2, Lm7;

      hence thesis by A3, Def18;

    end;

    theorem :: PRELAMB:17

    

     Th17: <*x*> ==>. y implies <*(z /" y)*> ==>. (z /" x) & <*(y \ z)*> ==>. (x \ z)

    proof

      assume

       A1: <*x*> ==>. y;

      

       A2: <*z*> ==>. z by Def18;

      then

       A3: ( <*(z /" y)*> ^ <*x*>) ==>. z by A1, Lm4;

      ( <*x*> ^ <*(y \ z)*>) ==>. z by A1, A2, Lm7;

      hence thesis by A3, Def18;

    end;

    theorem :: PRELAMB:18

    

     Th18: <*(y /" ((y /" x) \ y))*> ==>. (y /" x)

    proof

       <*x*> ==>. ((y /" x) \ y) by Th13;

      hence thesis by Th17;

    end;

    theorem :: PRELAMB:19

    

     Th19: <*x*> ==>. y implies ( <*> the carrier of s) ==>. (y /" x) & ( <*> the carrier of s) ==>. (x \ y)

    proof

      assume

       A1: <*x*> ==>. y;

      

       A2: ( e(s) ^ <*x*>) = <*x*> by FINSEQ_1: 34;

      ( <*x*> ^ e(s)) = <*x*> by FINSEQ_1: 34;

      hence thesis by A1, A2, Def18;

    end;

    theorem :: PRELAMB:20

    

     Th20: ( <*> the carrier of s) ==>. (x /" x) & ( <*> the carrier of s) ==>. (x \ x)

    proof

       <*x*> ==>. x by Def18;

      hence thesis by Th19;

    end;

    theorem :: PRELAMB:21

    ( <*> the carrier of s) ==>. ((y /" (x \ y)) /" x) & ( <*> the carrier of s) ==>. (x \ ((y /" x) \ y))

    proof

      

       A1: <*x*> ==>. (y /" (x \ y)) by Th13;

       <*x*> ==>. ((y /" x) \ y) by Th13;

      hence thesis by A1, Th19;

    end;

    theorem :: PRELAMB:22

    ( <*> the carrier of s) ==>. (((x /" z) /" (y /" z)) /" (x /" y)) & ( <*> the carrier of s) ==>. ((y \ x) \ ((z \ y) \ (z \ x)))

    proof

      

       A1: <*(x /" y)*> ==>. ((x /" z) /" (y /" z)) by Th14;

       <*(y \ x)*> ==>. ((z \ y) \ (z \ x)) by Th15;

      hence thesis by A1, Th19;

    end;

    theorem :: PRELAMB:23

    ( <*> the carrier of s) ==>. x implies ( <*> the carrier of s) ==>. (y /" (y /" x)) & ( <*> the carrier of s) ==>. ((x \ y) \ y)

    proof

      

       A1: <*y*> ==>. y by Def18;

      then

       A2: ( e(s) ^ <*y*>) ==>. y by FINSEQ_1: 34;

      

       A3: ( <*y*> ^ e(s)) ==>. y by A1, FINSEQ_1: 34;

      assume

       A4: e(s) ==>. x;

      then

       A5: (( e(s) ^ <*(y /" x)*>) ^ e(s)) ==>. y by A2, Lm2;

      

       A6: (( e(s) ^ <*(x \ y)*>) ^ e(s)) ==>. y by A3, A4, Lm6;

      

       A7: ( e(s) ^ <*(y /" x)*>) ==>. y by A5, FINSEQ_1: 34;

      ( <*(x \ y)*> ^ e(s)) ==>. y by A6, FINSEQ_1: 34;

      hence thesis by A7, Def18;

    end;

    theorem :: PRELAMB:24

     <*(x /" (y /" y))*> ==>. x

    proof

       <*x*> ==>. x by Def18;

      then ( <*(x /" (y /" y))*> ^ e(s)) ==>. x by Lm4, Th20;

      hence thesis by FINSEQ_1: 34;

    end;

    definition

      let s, x, y;

      :: PRELAMB:def19

      pred x <==>. y means <*x*> ==>. y & <*y*> ==>. x;

      reflexivity by Def18;

      symmetry ;

    end

    theorem :: PRELAMB:25

    (x /" y) <==>. (x /" ((x /" y) \ x)) by Th13, Th18;

    theorem :: PRELAMB:26

    (x /" (z * y)) <==>. ((x /" y) /" z)

    proof

      

       A1: <*z*> ==>. z by Def18;

      

       A2: <*y*> ==>. y by Def18;

      

       A3: <*x*> ==>. x by Def18;

      ( <*z*> ^ <*y*>) ==>. (z * y) by A1, A2, Def18;

      then ( <*(x /" (z * y))*> ^ ( <*z*> ^ <*y*>)) ==>. x by A3, Lm4;

      then (( <*(x /" (z * y))*> ^ <*z*>) ^ <*y*>) ==>. x by FINSEQ_1: 32;

      then ( <*(x /" (z * y))*> ^ <*z*>) ==>. (x /" y) by Def18;

      then

       A4: <*(x /" (z * y))*> ==>. ((x /" y) /" z) by Def18;

      ( <*(x /" y)*> ^ <*y*>) ==>. x by A2, A3, Lm4;

      then (( <*((x /" y) /" z)*> ^ <*z*>) ^ <*y*>) ==>. x by A1, Lm3;

      then ( <*((x /" y) /" z)*> ^ <*(z * y)*>) ==>. x by Lm9;

      then <*((x /" y) /" z)*> ==>. (x /" (z * y)) by Def18;

      hence thesis by A4;

    end;

    theorem :: PRELAMB:27

     <*(x * (y /" z))*> ==>. ((x * y) /" z)

    proof

      

       A1: <*x*> ==>. x by Def18;

       <*y*> ==>. y by Def18;

      then

       A2: ( <*x*> ^ <*y*>) ==>. (x * y) by A1, Def18;

       <*z*> ==>. z by Def18;

      then (( <*x*> ^ <*(y /" z)*>) ^ <*z*>) ==>. (x * y) by A2, Lm2;

      then ( <*(x * (y /" z))*> ^ <*z*>) ==>. (x * y) by Lm8;

      hence thesis by Def18;

    end;

    theorem :: PRELAMB:28

     <*x*> ==>. ((x * y) /" y) & <*x*> ==>. (y \ (y * x))

    proof

      

       A1: <*x*> ==>. x by Def18;

      

       A2: <*y*> ==>. y by Def18;

      then

       A3: ( <*x*> ^ <*y*>) ==>. (x * y) by A1, Def18;

      ( <*y*> ^ <*x*>) ==>. (y * x) by A1, A2, Def18;

      hence thesis by A3, Def18;

    end;

    theorem :: PRELAMB:29

    ((x * y) * z) <==>. (x * (y * z))

    proof

      

       A1: <*x*> ==>. x by Def18;

      

       A2: <*y*> ==>. y by Def18;

      

       A3: <*z*> ==>. z by Def18;

      ( <*x*> ^ <*y*>) ==>. (x * y) by A1, A2, Def18;

      then (( <*x*> ^ <*y*>) ^ <*z*>) ==>. ((x * y) * z) by A3, Def18;

      then ( <*x*> ^ <*(y * z)*>) ==>. ((x * y) * z) by Lm9;

      then

       A4: <*(x * (y * z))*> ==>. ((x * y) * z) by Lm10;

      ( <*y*> ^ <*z*>) ==>. (y * z) by A2, A3, Def18;

      then ( <*x*> ^ ( <*y*> ^ <*z*>)) ==>. (x * (y * z)) by A1, Def18;

      then (( <*x*> ^ <*y*>) ^ <*z*>) ==>. (x * (y * z)) by FINSEQ_1: 32;

      then ( <*(x * y)*> ^ <*z*>) ==>. (x * (y * z)) by Lm8;

      then <*((x * y) * z)*> ==>. (x * (y * z)) by Lm10;

      hence thesis by A4;

    end;