polynom3.miz



    begin

    theorem :: POLYNOM3:1

    

     Th1: for L be add-associative right_zeroed right_complementable non empty addLoopStr holds for p be FinSequence of the carrier of L st for i be Element of NAT st i in ( dom p) holds (p . i) = ( 0. L) holds ( Sum p) = ( 0. L)

    proof

      let L be add-associative right_zeroed right_complementable non empty addLoopStr;

      let p be FinSequence of the carrier of L;

      assume

       A1: for k be Element of NAT st k in ( dom p) holds (p . k) = ( 0. L);

      now

        let k be Nat;

        assume

         A2: k in ( dom p);

        

        hence (p /. k) = (p . k) by PARTFUN1:def 6

        .= ( 0. L) by A1, A2;

      end;

      hence thesis by MATRLIN: 11;

    end;

    theorem :: POLYNOM3:2

    

     Th2: for V be Abelian add-associative right_zeroed non empty addLoopStr holds for p be FinSequence of the carrier of V holds ( Sum p) = ( Sum ( Rev p))

    proof

      let V be Abelian add-associative right_zeroed non empty addLoopStr;

      defpred P[ FinSequence of the carrier of V] means ( Sum $1) = ( Sum ( Rev $1));

      

       A1: for p be FinSequence of the carrier of V holds for x be Element of V st P[p] holds P[(p ^ <*x*>)]

      proof

        let p be FinSequence of the carrier of V;

        let x be Element of V;

        assume

         A2: ( Sum p) = ( Sum ( Rev p));

        

        thus ( Sum (p ^ <*x*>)) = (( Sum p) + ( Sum <*x*>)) by RLVECT_1: 41

        .= ( Sum ( <*x*> ^ ( Rev p))) by A2, RLVECT_1: 41

        .= ( Sum ( Rev (p ^ <*x*>))) by FINSEQ_5: 63;

      end;

      

       A3: P[( <*> the carrier of V)];

      thus for p be FinSequence of the carrier of V holds P[p] from FINSEQ_2:sch 2( A3, A1);

    end;

    theorem :: POLYNOM3:3

    

     Th3: for p be FinSequence of REAL holds ( Sum p) = ( Sum ( Rev p))

    proof

      defpred P[ FinSequence of REAL ] means ( Sum $1) = ( Sum ( Rev $1));

      

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

      proof

        let p be FinSequence of REAL ;

        let x be Element of REAL ;

        assume

         A2: ( Sum p) = ( Sum ( Rev p));

        

        thus ( Sum (p ^ <*x*>)) = (( Sum p) + ( Sum <*x*>)) by RVSUM_1: 75

        .= ( Sum ( <*x*> ^ ( Rev p))) by A2, RVSUM_1: 75

        .= ( Sum ( Rev (p ^ <*x*>))) by FINSEQ_5: 63;

      end;

      

       A3: P[( <*> REAL )];

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

    end;

    theorem :: POLYNOM3:4

    

     Th4: for p be FinSequence of NAT holds for i be Element of NAT st i in ( dom p) holds ( Sum p) >= (p . i)

    proof

      defpred P[ FinSequence of NAT ] means for i be Element of NAT st i in ( dom $1) holds ( Sum $1) >= ($1 . i);

      

       A1: for p be FinSequence of NAT holds for x be Element of NAT st P[p] holds P[(p ^ <*x*>)]

      proof

        let p be FinSequence of NAT qua set;

        let x be Element of NAT ;

        assume

         A2: for i be Element of NAT st i in ( dom p) holds ( Sum p) >= (p . i);

        let i be Element of NAT ;

        

         A3: ((p . i) + x) >= (p . i) by NAT_1: 11;

        ( len (p ^ <*x*>)) = (( len p) + 1) by FINSEQ_2: 16;

        

        then

         A4: ( dom (p ^ <*x*>)) = ( Seg (( len p) + 1)) by FINSEQ_1:def 3

        .= (( Seg ( len p)) \/ {(( len p) + 1)}) by FINSEQ_1: 9

        .= (( dom p) \/ {(( len p) + 1)}) by FINSEQ_1:def 3;

        assume

         A5: i in ( dom (p ^ <*x*>));

        per cases by A5, A4, XBOOLE_0:def 3;

          suppose

           A6: i in ( dom p);

          then ( Sum p) >= (p . i) by A2;

          then (( Sum p) + x) >= ((p . i) + x) by XREAL_1: 6;

          then ( Sum (p ^ <*x*>)) >= ((p . i) + x) by RVSUM_1: 74;

          then ( Sum (p ^ <*x*>)) >= (p . i) by A3, XXREAL_0: 2;

          hence thesis by A6, FINSEQ_1:def 7;

        end;

          suppose i in {(( len p) + 1)};

          then i = (( len p) + 1) by TARSKI:def 1;

          then ((p ^ <*x*>) . i) = x by FINSEQ_1: 42;

          then (( Sum p) + x) >= ((p ^ <*x*>) . i) by NAT_1: 11;

          hence thesis by RVSUM_1: 74;

        end;

      end;

      

       A7: P[( <*> NAT ) qua FinSequence of NAT ];

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

    end;

    definition

      let D be non empty set;

      let i be Element of NAT ;

      let p be FinSequence of D;

      :: original: Del

      redefine

      func Del (p,i) -> FinSequence of D ;

      coherence by FINSEQ_3: 105;

    end

    definition

      let D be non empty set;

      let a,b be Element of D;

      :: original: <*

      redefine

      func <*a,b*> -> Element of (2 -tuples_on D) ;

      coherence by FINSEQ_2: 101;

    end

    definition

      let D be non empty set;

      let k,n be Element of NAT ;

      let p be Element of (k -tuples_on D);

      let q be Element of (n -tuples_on D);

      :: original: ^

      redefine

      func p ^ q -> Element of ((k + n) -tuples_on D) ;

      coherence

      proof

        (p ^ q) is Tuple of (k + n), D;

        hence thesis by FINSEQ_2: 131;

      end;

    end

    definition

      let D be non empty set;

      let k,n be Nat;

      let p be FinSequence of (k -tuples_on D);

      let q be FinSequence of (n -tuples_on D);

      :: original: ^^

      redefine

      func p ^^ q -> Element of (((k + n) -tuples_on D) * ) ;

      coherence

      proof

        ( rng (p ^^ q)) c= ((k + n) -tuples_on D)

        proof

          let y be object;

          assume y in ( rng (p ^^ q));

          then

          consider x be object such that

           A1: x in ( dom (p ^^ q)) and

           A2: y = ((p ^^ q) . x) by FUNCT_1:def 3;

          reconsider x as set by TARSKI: 1;

          

           A3: x in (( dom p) /\ ( dom q)) by A1, PRE_POLY:def 4;

          then

           A4: x in ( dom p) by XBOOLE_0:def 4;

          

           A5: x in ( dom q) by A3, XBOOLE_0:def 4;

          y = ((p . x) ^ (q . x)) by A1, A2, PRE_POLY:def 4

          .= ((p /. x) ^ (q . x)) by A4, PARTFUN1:def 6

          .= ((p /. x) ^ (q /. x)) by A5, PARTFUN1:def 6;

          then y is Tuple of (k + n), D;

          hence thesis by FINSEQ_2: 131;

        end;

        then (p ^^ q) is FinSequence of ((k + n) -tuples_on D) by FINSEQ_1:def 4;

        hence thesis by FINSEQ_1:def 11;

      end;

    end

    scheme :: POLYNOM3:sch1

    SeqOfSeqLambdaD { D() -> non empty set , A() -> Element of NAT , T( Nat) -> Element of NAT , F( set, set) -> Element of D() } :

ex p be FinSequence of (D() * ) st ( len p) = A() & for k be Element of NAT st k in ( Seg A()) holds ( len (p /. k)) = T(k) & for n be Element of NAT st n in ( dom (p /. k)) holds ((p /. k) . n) = F(k,n);

      defpred P[ Nat, FinSequence] means ( len $2) = T($1) & for n be Element of NAT st n in ( dom $2) holds ($2 . n) = F($1,n);

      

       A1: for k be Nat st k in ( Seg A()) holds ex d be Element of (D() * ) st P[k, d]

      proof

        let k be Nat;

        assume k in ( Seg A());

        deffunc G( Nat) = F(k,$1);

        consider d be FinSequence of D() such that

         A2: ( len d) = T(k) and

         A3: for n be Nat st n in ( dom d) holds (d . n) = G(n) from FINSEQ_2:sch 1;

        reconsider d as Element of (D() * ) by FINSEQ_1:def 11;

        take d;

        thus ( len d) = T(k) by A2;

        let n be Element of NAT ;

        assume n in ( dom d);

        hence thesis by A3;

      end;

      consider p be FinSequence of (D() * ) such that

       A4: ( dom p) = ( Seg A()) and

       A5: for k be Nat st k in ( Seg A()) holds P[k, (p /. k)] from RECDEF_1:sch 17( A1);

      take p;

      thus ( len p) = A() by A4, FINSEQ_1:def 3;

      let k be Element of NAT ;

      assume k in ( Seg A());

      hence thesis by A5;

    end;

    begin

    definition

      let n be Nat;

      let p,q be Element of (n -tuples_on NAT );

      :: POLYNOM3:def1

      pred p < q means ex i be Element of NAT st i in ( Seg n) & (p . i) < (q . i) & for k be Nat st 1 <= k & k < i holds (p . k) = (q . k);

      asymmetry

      proof

        let p,q be Element of (n -tuples_on NAT );

        given i be Element of NAT such that

         A1: i in ( Seg n) and

         A2: (p . i) < (q . i) and

         A3: for k be Nat st 1 <= k & k < i holds (p . k) = (q . k);

        

         A4: 1 <= i by A1, FINSEQ_1: 1;

        given j be Element of NAT such that

         A5: j in ( Seg n) and

         A6: (q . j) < (p . j) and

         A7: for k be Nat st 1 <= k & k < j holds (q . k) = (p . k);

        

         A8: 1 <= j by A5, FINSEQ_1: 1;

        per cases by XXREAL_0: 1;

          suppose i < j;

          hence contradiction by A2, A7, A4;

        end;

          suppose j < i;

          hence contradiction by A3, A6, A8;

        end;

          suppose i = j;

          hence contradiction by A2, A6;

        end;

      end;

    end

    notation

      let n be Element of NAT ;

      let p,q be Element of (n -tuples_on NAT );

      synonym q > p for p < q;

    end

    definition

      let n be Element of NAT ;

      let p,q be Element of (n -tuples_on NAT );

      :: POLYNOM3:def2

      pred p <= q means p < q or p = q;

      reflexivity ;

    end

    notation

      let n be Element of NAT ;

      let p,q be Element of (n -tuples_on NAT );

      synonym q >= p for p <= q;

    end

    theorem :: POLYNOM3:5

    

     Th5: for n be Element of NAT holds for p,q,r be Element of (n -tuples_on NAT ) holds (p < q & q < r implies p < r) & (p < q & q <= r or p <= q & q < r or p <= q & q <= r implies p <= r)

    proof

      let n be Element of NAT ;

      let p,q,r be Element of (n -tuples_on NAT );

      thus

       A1: p < q & q < r implies p < r

      proof

        assume that

         A2: p < q and

         A3: q < r;

        consider i be Element of NAT such that

         A4: i in ( Seg n) and

         A5: (p . i) < (q . i) and

         A6: for k be Nat st 1 <= k & k < i holds (p . k) = (q . k) by A2;

        consider j be Element of NAT such that

         A7: j in ( Seg n) and

         A8: (q . j) < (r . j) and

         A9: for k be Nat st 1 <= k & k < j holds (q . k) = (r . k) by A3;

        reconsider t = ( min (i,j)) as Element of NAT ;

        take t;

        thus t in ( Seg n) by A4, A7, XXREAL_0: 15;

        now

          per cases by XXREAL_0: 1;

            suppose

             A10: i < j;

            

             A11: i >= 1 by A4, FINSEQ_1: 1;

            t = i by A10, XXREAL_0:def 9;

            hence (p . t) < (r . t) by A5, A9, A10, A11;

          end;

            suppose

             A12: i > j;

            

             A13: j >= 1 by A7, FINSEQ_1: 1;

            t = j by A12, XXREAL_0:def 9;

            hence (p . t) < (r . t) by A6, A8, A12, A13;

          end;

            suppose i = j;

            hence (p . t) < (r . t) by A5, A8, XXREAL_0: 2;

          end;

        end;

        hence (p . t) < (r . t);

        let k be Nat;

        assume that

         A14: 1 <= k and

         A15: k < t;

        t <= j by XXREAL_0: 17;

        then

         A16: k < j by A15, XXREAL_0: 2;

        t <= i by XXREAL_0: 17;

        then k < i by A15, XXREAL_0: 2;

        

        hence (p . k) = (q . k) by A6, A14

        .= (r . k) by A9, A14, A16;

      end;

      assume

       A17: p < q & q <= r or p <= q & q < r or p <= q & q <= r;

      per cases by A17;

        suppose

         A18: p < q & q <= r;

        thus thesis by A1, A18;

      end;

        suppose

         A19: p <= q & q < r;

        thus thesis by A1, A19;

      end;

        suppose p <= q & q <= r;

        hence thesis by A1;

      end;

    end;

    theorem :: POLYNOM3:6

    

     Th6: for n be Nat holds for p,q be Element of (n -tuples_on NAT ) holds p <> q implies ex i be Element of NAT st i in ( Seg n) & (p . i) <> (q . i) & for k be Nat st 1 <= k & k < i holds (p . k) = (q . k)

    proof

      defpred P[ Nat] means for p,q be Element of ($1 -tuples_on NAT ) holds p <> q implies ex i be Element of NAT st i in ( Seg $1) & (p . i) <> (q . i) & for k be Nat st 1 <= k & k < i holds (p . k) = (q . k);

      

       A1: for n be Nat st P[n] holds P[(n + 1)]

      proof

        let n be Nat;

        assume

         A2: for p,q be Element of (n -tuples_on NAT ) holds p <> q implies ex i be Element of NAT st i in ( Seg n) & (p . i) <> (q . i) & for k be Nat st 1 <= k & k < i holds (p . k) = (q . k);

        let p,q be Element of ((n + 1) -tuples_on NAT );

        consider t1 be Element of (n -tuples_on NAT ), d1 be Element of NAT such that

         A3: p = (t1 ^ <*d1*>) by FINSEQ_2: 117;

        assume

         A4: p <> q;

        consider t2 be Element of (n -tuples_on NAT ), d2 be Element of NAT such that

         A5: q = (t2 ^ <*d2*>) by FINSEQ_2: 117;

        

         A6: ( len t1) = n by CARD_1:def 7;

        

         A7: ( len t2) = n by CARD_1:def 7;

        per cases ;

          suppose t1 <> t2;

          then

          consider i be Element of NAT such that

           A8: i in ( Seg n) and

           A9: (t1 . i) <> (t2 . i) and

           A10: for k be Nat st 1 <= k & k < i holds (t1 . k) = (t2 . k) by A2;

          take i;

          thus i in ( Seg (n + 1)) by A8, FINSEQ_2: 8;

          i in ( dom t1) by A6, A8, FINSEQ_1:def 3;

          then

           A11: (p . i) = (t1 . i) by A3, FINSEQ_1:def 7;

          i in ( dom t2) by A7, A8, FINSEQ_1:def 3;

          hence (p . i) <> (q . i) by A5, A9, A11, FINSEQ_1:def 7;

          let k be Nat;

          assume that

           A12: 1 <= k and

           A13: k < i;

          i <= n by A8, FINSEQ_1: 1;

          then

           A14: k <= n by A13, XXREAL_0: 2;

          then

           A15: k in ( dom t1) by A6, A12, FINSEQ_3: 25;

          

           A16: k in ( dom t2) by A7, A12, A14, FINSEQ_3: 25;

          (t1 . k) = (t2 . k) by A10, A12, A13;

          

          hence (p . k) = (t2 . k) by A3, A15, FINSEQ_1:def 7

          .= (q . k) by A5, A16, FINSEQ_1:def 7;

        end;

          suppose

           A17: t1 = t2;

          take i = (n + 1);

          thus i in ( Seg (n + 1)) by FINSEQ_1: 4;

          (p . i) = d1 by A3, FINSEQ_2: 116;

          hence (p . i) <> (q . i) by A3, A5, A4, A17, FINSEQ_2: 116;

          let k be Nat;

          assume that

           A18: 1 <= k and

           A19: k < i;

          

           A20: k <= n by A19, NAT_1: 13;

          then

           A21: k in ( dom t2) by A7, A18, FINSEQ_3: 25;

          k in ( dom t1) by A6, A18, A20, FINSEQ_3: 25;

          

          hence (p . k) = (t2 . k) by A3, A17, FINSEQ_1:def 7

          .= (q . k) by A5, A21, FINSEQ_1:def 7;

        end;

      end;

      

       A22: P[ 0 ];

      thus for n be Nat holds P[n] from NAT_1:sch 2( A22, A1);

    end;

    theorem :: POLYNOM3:7

    

     Th7: for n be Element of NAT holds for p,q be Element of (n -tuples_on NAT ) holds p <= q or p > q

    proof

      let n be Element of NAT ;

      let p,q be Element of (n -tuples_on NAT );

      assume

       A1: not p <= q;

      then

      consider i be Element of NAT such that

       A2: i in ( Seg n) and

       A3: (p . i) <> (q . i) and

       A4: for k be Nat st 1 <= k & k < i holds (p . k) = (q . k) by Th6;

      take i;

      thus i in ( Seg n) by A2;

       not p < q by A1;

      then (p . i) >= (q . i) by A2, A4;

      hence (q . i) < (p . i) by A3, XXREAL_0: 1;

      thus thesis by A4;

    end;

    definition

      let n be Element of NAT ;

      :: POLYNOM3:def3

      func TuplesOrder n -> Order of (n -tuples_on NAT ) means

      : Def3: for p,q be Element of (n -tuples_on NAT ) holds [p, q] in it iff p <= q;

      existence

      proof

        defpred P[ Element of (n -tuples_on NAT ), Element of (n -tuples_on NAT )] means $1 <= $2;

        consider R be Relation of (n -tuples_on NAT ), (n -tuples_on NAT ) such that

         A1: for x,y be Element of (n -tuples_on NAT ) holds [x, y] in R iff P[x, y] from RELSET_1:sch 2;

        

         A2: R is_transitive_in (n -tuples_on NAT )

        proof

          let x,y,z be object;

          assume that

           A3: x in (n -tuples_on NAT ) & y in (n -tuples_on NAT ) & z in (n -tuples_on NAT ) and

           A4: [x, y] in R & [y, z] in R;

          reconsider x1 = x, y1 = y, z1 = z as Element of (n -tuples_on NAT ) by A3;

          x1 <= y1 & y1 <= z1 by A1, A4;

          then x1 <= z1 by Th5;

          hence thesis by A1;

        end;

        

         A5: R is_reflexive_in (n -tuples_on NAT ) by A1;

        then

         A6: ( dom R) = (n -tuples_on NAT ) & ( field R) = (n -tuples_on NAT ) by ORDERS_1: 13;

        R is_antisymmetric_in (n -tuples_on NAT )

        proof

          let x,y be object;

          assume that

           A7: x in (n -tuples_on NAT ) & y in (n -tuples_on NAT ) and

           A8: [x, y] in R and

           A9: [y, x] in R;

          reconsider x1 = x, y1 = y as Element of (n -tuples_on NAT ) by A7;

          x1 <= y1 by A1, A8;

          then

           A10: x1 < y1 or x1 = y1;

          y1 <= x1 by A1, A9;

          hence thesis by A10;

        end;

        then

        reconsider R as Order of (n -tuples_on NAT ) by A5, A2, A6, PARTFUN1:def 2, RELAT_2:def 9, RELAT_2:def 12, RELAT_2:def 16;

        take R;

        thus thesis by A1;

      end;

      uniqueness

      proof

        let T1,T2 be Order of (n -tuples_on NAT ) such that

         A11: for p,q be Element of (n -tuples_on NAT ) holds [p, q] in T1 iff p <= q and

         A12: for p,q be Element of (n -tuples_on NAT ) holds [p, q] in T2 iff p <= q;

        let x,y be object;

        thus [x, y] in T1 implies [x, y] in T2

        proof

          assume

           A13: [x, y] in T1;

          then

          consider p,q be object such that

           A14: [x, y] = [p, q] and

           A15: p in (n -tuples_on NAT ) & q in (n -tuples_on NAT ) by RELSET_1: 2;

          reconsider p, q as Element of (n -tuples_on NAT ) by A15;

          p <= q by A11, A13, A14;

          hence thesis by A12, A14;

        end;

        assume

         A16: [x, y] in T2;

        then

        consider p,q be object such that

         A17: [x, y] = [p, q] and

         A18: p in (n -tuples_on NAT ) & q in (n -tuples_on NAT ) by RELSET_1: 2;

        reconsider p, q as Element of (n -tuples_on NAT ) by A18;

        p <= q by A12, A16, A17;

        hence thesis by A11, A17;

      end;

    end

    registration

      let n be Element of NAT ;

      cluster ( TuplesOrder n) -> being_linear-order;

      coherence

      proof

        now

          let x,y be object;

          assume that

           A1: x in (n -tuples_on NAT ) & y in (n -tuples_on NAT ) and x <> y and

           A2: not [x, y] in ( TuplesOrder n);

          reconsider p = x, q = y as Element of (n -tuples_on NAT ) by A1;

           not p <= q by A2, Def3;

          then p > q by Th7;

          then q <= p;

          hence [y, x] in ( TuplesOrder n) by Def3;

        end;

        then ( field ( TuplesOrder n)) = (n -tuples_on NAT ) & ( TuplesOrder n) is_connected_in (n -tuples_on NAT ) by ORDERS_1: 15;

        then ( TuplesOrder n) is connected;

        hence thesis by ORDERS_1:def 6;

      end;

    end

    begin

    definition

      let i be non zero Element of NAT ;

      let n be Element of NAT ;

      :: POLYNOM3:def4

      func Decomp (n,i) -> FinSequence of (i -tuples_on NAT ) means

      : Def4: ex A be finite Subset of (i -tuples_on NAT ) st it = ( SgmX (( TuplesOrder i),A)) & for p be Element of (i -tuples_on NAT ) holds p in A iff ( Sum p) = n;

      existence

      proof

        reconsider n1 = (n + 1) as non empty set;

        defpred P[ Element of (i -tuples_on NAT )] means ( Sum $1) = n;

        consider A be Subset of (i -tuples_on NAT ) such that

         A1: for p be Element of (i -tuples_on NAT ) holds p in A iff P[p] from SUBSET_1:sch 3;

        

         A2: A c= (i -tuples_on (n + 1))

        proof

          let x be object;

          assume

           A3: x in A;

          then

          reconsider p = x as Element of (i -tuples_on NAT );

          

           A4: ( Sum p) = n by A1, A3;

          ( rng p) c= (n + 1)

          proof

            let y be object;

            assume that

             A5: y in ( rng p) and

             A6: not y in (n + 1);

            ( rng p) c= NAT by FINSEQ_1:def 4;

            then

            reconsider k = y as Element of NAT by A5;

             not y in { t where t be Nat : t < (n + 1) } by A6, AXIOMS: 4;

            then

             A7: k >= (n + 1);

            ex j be Nat st j in ( dom p) & (p . j) = k by A5, FINSEQ_2: 10;

            then ( Sum p) >= k by Th4;

            hence contradiction by A4, A7, NAT_1: 13;

          end;

          then ( len p) = i & p is FinSequence of (n + 1) by CARD_1:def 7, FINSEQ_1:def 4;

          then p is Element of (i -tuples_on n1) by FINSEQ_2: 92;

          hence thesis;

        end;

        reconsider A as finite Subset of (i -tuples_on NAT ) by A2;

        take ( SgmX (( TuplesOrder i),A));

        thus thesis by A1;

      end;

      uniqueness

      proof

        let p1,p2 be FinSequence of (i -tuples_on NAT );

        given A1 be finite Subset of (i -tuples_on NAT ) such that

         A8: p1 = ( SgmX (( TuplesOrder i),A1)) and

         A9: for p be Element of (i -tuples_on NAT ) holds p in A1 iff ( Sum p) = n;

        given A2 be finite Subset of (i -tuples_on NAT ) such that

         A10: p2 = ( SgmX (( TuplesOrder i),A2)) and

         A11: for p be Element of (i -tuples_on NAT ) holds p in A2 iff ( Sum p) = n;

        now

          let x be object;

          thus x in A1 implies x in A2

          proof

            assume

             A12: x in A1;

            then

            reconsider p = x as Element of (i -tuples_on NAT );

            ( Sum p) = n by A9, A12;

            hence thesis by A11;

          end;

          assume

           A13: x in A2;

          then

          reconsider p = x as Element of (i -tuples_on NAT );

          ( Sum p) = n by A11, A13;

          hence x in A1 by A9;

        end;

        hence thesis by A8, A10, TARSKI: 2;

      end;

    end

    registration

      let i be non zero Element of NAT ;

      let n be Element of NAT ;

      cluster ( Decomp (n,i)) -> non empty one-to-one FinSequence-yielding;

      coherence

      proof

        reconsider p2 = ((i -' 1) |-> 0 ) as FinSequence of NAT ;

        i >= 1 by NAT_1: 14;

        then ((i -' 1) + 1) = i by XREAL_1: 235;

        then (((i -' 1) |-> 0 ) ^ <*n*>) is Tuple of i, NAT ;

        then

        reconsider p1 = (((i -' 1) |-> 0 ) ^ <*n*>) as Element of (i -tuples_on NAT ) by FINSEQ_2: 131;

        consider A be finite Subset of (i -tuples_on NAT ) such that

         A1: ( Decomp (n,i)) = ( SgmX (( TuplesOrder i),A)) and

         A2: for p be Element of (i -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

        ( Sum p1) = (( Sum p2) + n) by RVSUM_1: 74

        .= ( 0 + n) by RVSUM_1: 81;

        then

        reconsider A as non empty finite Subset of (i -tuples_on NAT ) by A2;

        ( SgmX (( TuplesOrder i),A)) is non empty finite;

        hence thesis by A1;

      end;

    end

    theorem :: POLYNOM3:8

    

     Th8: for n be Element of NAT holds ( len ( Decomp (n,1))) = 1

    proof

      let n be Element of NAT ;

      consider A be finite Subset of (1 -tuples_on NAT ) such that

       A1: ( Decomp (n,1)) = ( SgmX (( TuplesOrder 1),A)) and

       A2: for p be Element of (1 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      

       A3: A = { <*n*>}

      proof

        thus A c= { <*n*>}

        proof

          let y be object;

          assume

           A4: y in A;

          then

          reconsider p = y as Element of (1 -tuples_on NAT );

          

           A5: ( Sum p) = n by A2, A4;

          consider k be Element of NAT such that

           A6: p = <*k*> by FINSEQ_2: 97;

          ( Sum p) = k by A6, RVSUM_1: 73;

          hence thesis by A5, A6, TARSKI:def 1;

        end;

        let y be object;

        assume y in { <*n*>};

        then

         A7: y = <*n*> by TARSKI:def 1;

        ( Sum <*n*>) = n by RVSUM_1: 73;

        hence y in A by A2, A7;

      end;

      ( field ( TuplesOrder 1)) = (1 -tuples_on NAT ) by ORDERS_1: 15;

      then ( TuplesOrder 1) linearly_orders (1 -tuples_on NAT ) by ORDERS_1: 37;

      

      hence ( len ( Decomp (n,1))) = ( card A) by A1, ORDERS_1: 38, PRE_POLY: 11

      .= 1 by A3, CARD_1: 30;

    end;

    theorem :: POLYNOM3:9

    

     Th9: for n be Element of NAT holds ( len ( Decomp (n,2))) = (n + 1)

    proof

      let n be Element of NAT ;

      deffunc F( Nat) = <*$1, (n -' $1)*>;

      consider q be FinSequence such that

       A1: ( len q) = n and

       A2: for k be Nat st k in ( dom q) holds (q . k) = F(k) from FINSEQ_1:sch 2;

      

       A3: ( dom q) = ( Seg n) by A1, FINSEQ_1:def 3;

      set q1 = (q ^ <* <* 0 , n*>*>);

      

       A4: ( dom q) = ( Seg n) by A1, FINSEQ_1:def 3;

      

       A5: ( len q1) = (n + 1) by A1, FINSEQ_2: 16;

      then

       A6: ( dom q1) = ( Seg (n + 1)) by FINSEQ_1:def 3;

      now

        let x1,x2 be object;

        assume that

         A7: x1 in ( dom q1) and

         A8: x2 in ( dom q1) and

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

        reconsider k1 = x1, k2 = x2 as Element of NAT by A7, A8;

        x2 in (( Seg n) \/ {(n + 1)}) by A6, A8, FINSEQ_1: 9;

        then

         A10: x2 in ( Seg n) or x2 in {(n + 1)} by XBOOLE_0:def 3;

        x1 in (( Seg n) \/ {(n + 1)}) by A6, A7, FINSEQ_1: 9;

        then

         A11: x1 in ( Seg n) or x1 in {(n + 1)} by XBOOLE_0:def 3;

        now

          per cases by A11, A10, TARSKI:def 1;

            suppose

             A12: x1 in ( Seg n) & x2 in ( Seg n);

            then

             A13: (q1 . k1) = (q . k1) & (q1 . k2) = (q . k2) by A3, FINSEQ_1:def 7;

            (q . k1) = <*k1, (n -' k1)*> & (q . k2) = <*k2, (n -' k2)*> by A2, A4, A12;

            hence x1 = x2 by A9, A13, FINSEQ_1: 77;

          end;

            suppose

             A14: x1 in ( Seg n) & x2 = (n + 1);

            then

             A15: (q1 . k2) = <* 0 , n*> by A1, FINSEQ_1: 42;

            (q1 . k1) = (q . k1) by A3, A14, FINSEQ_1:def 7

            .= <*k1, (n -' k1)*> by A2, A4, A14;

            then k1 = 0 by A9, A15, FINSEQ_1: 77;

            hence x1 = x2 by A14, FINSEQ_1: 1;

          end;

            suppose

             A16: x1 = (n + 1) & x2 in ( Seg n);

            then

             A17: (q1 . k1) = <* 0 , n*> by A1, FINSEQ_1: 42;

            (q1 . k2) = (q . k2) by A3, A16, FINSEQ_1:def 7

            .= <*k2, (n -' k2)*> by A2, A4, A16;

            then k2 = 0 by A9, A17, FINSEQ_1: 77;

            hence x1 = x2 by A16, FINSEQ_1: 1;

          end;

            suppose x1 = (n + 1) & x2 = (n + 1);

            hence x1 = x2;

          end;

        end;

        hence x1 = x2;

      end;

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

      then

       A18: ( card ( rng q1)) = (n + 1) by A5, FINSEQ_4: 62;

      

       A19: ( rng q) c= ( rng q1) by FINSEQ_1: 29;

      

       A20: ( rng q1) = { <*i, (n -' i)*> where i be Element of NAT : i <= n }

      proof

        thus ( rng q1) c= { <*i, (n -' i)*> where i be Element of NAT : i <= n }

        proof

          let x be object;

          assume x in ( rng q1);

          then

          consider j be Nat such that

           A21: j in ( dom q1) and

           A22: (q1 . j) = x by FINSEQ_2: 10;

          reconsider j as Element of NAT by ORDINAL1:def 12;

          j in (( Seg n) \/ {(n + 1)}) by A6, A21, FINSEQ_1: 9;

          then

           A23: j in ( Seg n) or j in {(n + 1)} by XBOOLE_0:def 3;

          now

            per cases by A23, TARSKI:def 1;

              suppose

               A24: j in ( Seg n);

              then

               A25: (q1 . j) = (q . j) by A3, FINSEQ_1:def 7;

              (q . j) = <*j, (n -' j)*> & j <= n by A2, A4, A24, FINSEQ_1: 1;

              hence thesis by A22, A25;

            end;

              suppose j = (n + 1);

              

              then (q1 . j) = <* 0 , n*> by A1, FINSEQ_1: 42

              .= <* 0 , (n -' 0 )*> by NAT_D: 40;

              hence thesis by A22;

            end;

          end;

          hence thesis;

        end;

        let x be object;

        assume x in { <*i, (n -' i)*> where i be Element of NAT : i <= n };

        then

        consider i be Element of NAT such that

         A26: x = <*i, (n -' i)*> and

         A27: i <= n;

        

         A28: i = 0 or i >= ( 0 qua Nat + 1) by NAT_1: 13;

        now

          per cases by A27, A28, FINSEQ_1: 1;

            suppose

             A29: i = 0 ;

            

             A30: (n + 1) in ( dom q1) by A6, FINSEQ_1: 4;

            (q1 . (n + 1)) = <* 0 , n*> by A1, FINSEQ_1: 42

            .= x by A26, A29, NAT_D: 40;

            hence thesis by A30, FUNCT_1:def 3;

          end;

            suppose

             A31: i in ( Seg n);

            then (q . i) = x by A2, A4, A26;

            then x in ( rng q) by A3, A31, FUNCT_1:def 3;

            hence thesis by A19;

          end;

        end;

        hence thesis;

      end;

      consider A be finite Subset of (2 -tuples_on NAT ) such that

       A32: ( Decomp (n,2)) = ( SgmX (( TuplesOrder 2),A)) and

       A33: for p be Element of (2 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      

       A34: A = { <*i, (n -' i)*> where i be Element of NAT : i <= n }

      proof

        thus A c= { <*i, (n -' i)*> where i be Element of NAT : i <= n }

        proof

          let x be object;

          assume

           A35: x in A;

          then

          reconsider p = x as Element of (2 -tuples_on NAT );

          consider d1,d2 be Element of NAT such that

           A36: p = <*d1, d2*> by FINSEQ_2: 100;

          

           A37: (d1 + d2) = ( Sum p) by A36, RVSUM_1: 77

          .= n by A33, A35;

          then (n - d1) >= 0 ;

          then

           A38: d2 = (n -' d1) by A37, XREAL_0:def 2;

          d1 <= n by A37, NAT_1: 11;

          hence thesis by A36, A38;

        end;

        let x be object;

        assume x in { <*i, (n -' i)*> where i be Element of NAT : i <= n };

        then

        consider i be Element of NAT such that

         A39: x = <*i, (n -' i)*> and

         A40: i <= n;

        

         A41: (n - i) >= 0 by A40, XREAL_1: 48;

        ( Sum <*i, (n -' i)*>) = (i + (n -' i)) by RVSUM_1: 77

        .= (i + (n - i)) by A41, XREAL_0:def 2

        .= n;

        hence thesis by A33, A39;

      end;

      ( field ( TuplesOrder 2)) = (2 -tuples_on NAT ) by ORDERS_1: 15;

      then ( TuplesOrder 2) linearly_orders (2 -tuples_on NAT ) by ORDERS_1: 37;

      hence thesis by A32, A34, A20, A18, ORDERS_1: 38, PRE_POLY: 11;

    end;

    theorem :: POLYNOM3:10

    for n be Element of NAT holds ( Decomp (n,1)) = <* <*n*>*>

    proof

      let n be Element of NAT ;

      consider A be finite Subset of (1 -tuples_on NAT ) such that

       A1: ( Decomp (n,1)) = ( SgmX (( TuplesOrder 1),A)) and

       A2: for p be Element of (1 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      

       A3: A = { <*n*>}

      proof

        thus A c= { <*n*>}

        proof

          let y be object;

          assume

           A4: y in A;

          then

          reconsider p = y as Element of (1 -tuples_on NAT );

          

           A5: ( Sum p) = n by A2, A4;

          consider k be Element of NAT such that

           A6: p = <*k*> by FINSEQ_2: 97;

          ( Sum p) = k by A6, RVSUM_1: 73;

          hence thesis by A5, A6, TARSKI:def 1;

        end;

        let y be object;

        assume y in { <*n*>};

        then

         A7: y = <*n*> by TARSKI:def 1;

        ( Sum <*n*>) = n by RVSUM_1: 73;

        hence thesis by A2, A7;

      end;

      ( len ( Decomp (n,1))) = 1 by Th8;

      

      then

       A8: ( dom ( Decomp (n,1))) = ( Seg 1) by FINSEQ_1:def 3

      .= ( dom <* <*n*>*>) by FINSEQ_1: 38;

      ( field ( TuplesOrder 1)) = (1 -tuples_on NAT ) by ORDERS_1: 15;

      then ( TuplesOrder 1) linearly_orders A by ORDERS_1: 37, ORDERS_1: 38;

      then ( rng <* <*n*>*>) = { <*n*>} & ( rng ( Decomp (n,1))) = { <*n*>} by A1, A3, FINSEQ_1: 39, PRE_POLY:def 2;

      hence thesis by A8, FUNCT_1: 7;

    end;

    theorem :: POLYNOM3:11

    

     Th11: for i,j,n,k1,k2 be Element of NAT st (( Decomp (n,2)) . i) = <*k1, (n -' k1)*> & (( Decomp (n,2)) . j) = <*k2, (n -' k2)*> holds i < j iff k1 < k2

    proof

      let i,j,n,k1,k2 be Element of NAT ;

      assume that

       A1: (( Decomp (n,2)) . i) = <*k1, (n -' k1)*> and

       A2: (( Decomp (n,2)) . j) = <*k2, (n -' k2)*>;

      

       A3: j in ( dom ( Decomp (n,2))) by A2, FUNCT_1:def 2;

      then

       A4: (( Decomp (n,2)) . j) = (( Decomp (n,2)) /. j) by PARTFUN1:def 6;

      consider A be finite Subset of (2 -tuples_on NAT ) such that

       A5: ( Decomp (n,2)) = ( SgmX (( TuplesOrder 2),A)) and for p be Element of (2 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      ( field ( TuplesOrder 2)) = (2 -tuples_on NAT ) by ORDERS_1: 15;

      then

       A6: ( TuplesOrder 2) linearly_orders A by ORDERS_1: 37, ORDERS_1: 38;

      

       A7: i in ( dom ( Decomp (n,2))) by A1, FUNCT_1:def 2;

      then

       A8: (( Decomp (n,2)) . i) = (( Decomp (n,2)) /. i) by PARTFUN1:def 6;

      thus i < j implies k1 < k2

      proof

        assume

         A9: i < j;

        then [ <*k1, (n -' k1)*>, <*k2, (n -' k2)*>] in ( TuplesOrder 2) by A5, A6, A1, A2, A7, A3, A8, A4, PRE_POLY:def 2;

        then

         A10: <*k1, (n -' k1)*> <= <*k2, (n -' k2)*> by Def3;

         <*k1, (n -' k1)*> <> <*k2, (n -' k2)*> by A5, A6, A1, A2, A7, A3, A8, A4, A9, PRE_POLY:def 2;

        then <*k1, (n -' k1)*> < <*k2, (n -' k2)*> by A10;

        then

        consider t be Element of NAT such that

         A11: t in ( Seg 2) and

         A12: ( <*k1, (n -' k1)*> . t) < ( <*k2, (n -' k2)*> . t) and

         A13: for k be Nat st 1 <= k & k < t holds ( <*k1, (n -' k1)*> . k) = ( <*k2, (n -' k2)*> . k);

        per cases by A11, FINSEQ_1: 2, TARSKI:def 2;

          suppose

           A14: t = 1;

          then ( <*k1, (n -' k1)*> . t) = k1 by FINSEQ_1: 44;

          hence thesis by A12, A14, FINSEQ_1: 44;

        end;

          suppose t = 2;

          then ( <*k1, (n -' k1)*> . 1) = ( <*k2, (n -' k2)*> . 1) by A13;

          then ( <*k1, (n -' k1)*> . 1) = k2 by FINSEQ_1: 44;

          then k1 = k2 by FINSEQ_1: 44;

          hence thesis by A12;

        end;

      end;

      assume

       A15: k1 < k2;

      

       A16: for k be Nat st 1 <= k & k < 1 holds ( <*k1, (n -' k1)*> . k) = ( <*k2, (n -' k2)*> . k);

      

       A17: ( <*k1, (n -' k1)*> . 1) = k1 by FINSEQ_1: 44;

      1 in ( Seg 2) & ( <*k2, (n -' k2)*> . 1) = k2 by FINSEQ_1: 1, FINSEQ_1: 44;

      then

       A18: <*k1, (n -' k1)*> < <*k2, (n -' k2)*> by A15, A17, A16;

      assume

       A19: i >= j;

      per cases by A19, XXREAL_0: 1;

        suppose i = j;

        hence contradiction by A1, A2, A15, A17, FINSEQ_1: 44;

      end;

        suppose j < i;

        then [ <*k2, (n -' k2)*>, <*k1, (n -' k1)*>] in ( TuplesOrder 2) by A5, A6, A1, A2, A7, A3, A8, A4, PRE_POLY:def 2;

        then

         A20: <*k2, (n -' k2)*> <= <*k1, (n -' k1)*> by Def3;

        thus contradiction by A18, A20;

      end;

    end;

    theorem :: POLYNOM3:12

    

     Th12: for i,n,k1,k2 be Element of NAT st (( Decomp (n,2)) . i) = <*k1, (n -' k1)*> & (( Decomp (n,2)) . (i + 1)) = <*k2, (n -' k2)*> holds k2 = (k1 + 1)

    proof

      let i,n,k1,k2 be Element of NAT ;

      assume that

       A1: (( Decomp (n,2)) . i) = <*k1, (n -' k1)*> and

       A2: (( Decomp (n,2)) . (i + 1)) = <*k2, (n -' k2)*>;

      assume

       A3: k2 <> (k1 + 1);

      (i + 0 qua Nat) < (i + 1) by XREAL_1: 6;

      then

       A4: k1 < k2 by A1, A2, Th11;

      then (k1 + 1) <= k2 by NAT_1: 13;

      then

       A5: (k1 + 1) < k2 by A3, XXREAL_0: 1;

      consider A be finite Subset of (2 -tuples_on NAT ) such that

       A6: ( Decomp (n,2)) = ( SgmX (( TuplesOrder 2),A)) and

       A7: for p be Element of (2 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      ( field ( TuplesOrder 2)) = (2 -tuples_on NAT ) by ORDERS_1: 15;

      then ( TuplesOrder 2) linearly_orders A by ORDERS_1: 37, ORDERS_1: 38;

      then

       A8: ( rng ( Decomp (n,2))) = A by A6, PRE_POLY:def 2;

      k1 < n

      proof

        ( Sum <*k2, (n -' k2)*>) = (k2 + (n -' k2)) by RVSUM_1: 77;

        then

         A9: ( Sum <*k2, (n -' k2)*>) >= k2 by NAT_1: 11;

        assume k1 >= n;

        then k2 > n by A4, XXREAL_0: 2;

        then not (( Decomp (n,2)) . (i + 1)) in ( rng ( Decomp (n,2))) by A7, A8, A2, A9;

        then not (i + 1) in ( dom ( Decomp (n,2))) by FUNCT_1:def 3;

        hence contradiction by A2, FUNCT_1:def 2;

      end;

      then

       A10: (k1 + 1) <= n by NAT_1: 13;

      ( Sum <*(k1 + 1), (n -' (k1 + 1))*>) = ((k1 + 1) + (n -' (k1 + 1))) by RVSUM_1: 77

      .= n by A10, XREAL_1: 235;

      then <*(k1 + 1), (n -' (k1 + 1))*> in ( rng ( Decomp (n,2))) by A7, A8;

      then

      consider k be Nat such that k in ( dom ( Decomp (n,2))) and

       A11: (( Decomp (n,2)) . k) = <*(k1 + 1), (n -' (k1 + 1))*> by FINSEQ_2: 10;

      reconsider k as Element of NAT by ORDINAL1:def 12;

      (k1 + 0 qua Nat) < (k1 + 1) by XREAL_1: 6;

      then i < k by A1, A11, Th11;

      then (i + 1) <= k by NAT_1: 13;

      hence contradiction by A2, A5, A11, Th11;

    end;

    theorem :: POLYNOM3:13

    

     Th13: for n be Element of NAT holds (( Decomp (n,2)) . 1) = <* 0 , n*>

    proof

      let n be Element of NAT ;

      consider A be finite Subset of (2 -tuples_on NAT ) such that

       A1: ( Decomp (n,2)) = ( SgmX (( TuplesOrder 2),A)) and

       A2: for p be Element of (2 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

       A3:

      now

        let y be Element of (2 -tuples_on NAT );

        consider d1,d2 be Element of NAT such that

         A4: y = <*d1, d2*> by FINSEQ_2: 100;

        assume y in A;

        then ( Sum <*d1, d2*>) = n by A2, A4;

        then

         A5: (d1 + d2) = n by RVSUM_1: 77;

        now

          per cases ;

            suppose d1 = 0 ;

            hence <* 0 , n*> <= <*d1, d2*> by A5;

          end;

            suppose d1 > 0 ;

            then ( <* 0 , n*> . 1) < d1 by FINSEQ_1: 44;

            then

             A6: ( <* 0 , n*> . 1) < ( <*d1, d2*> . 1) by FINSEQ_1: 44;

            1 in ( Seg 2) & for k be Nat st 1 <= k & k < 1 holds ( <* 0 , n*> . k) = ( <*d1, d2*> . k) by FINSEQ_1: 1;

            then <* 0 , n*> < <*d1, d2*> by A6;

            hence <* 0 , n*> <= <*d1, d2*>;

          end;

        end;

        hence [ <* 0 , n*>, y] in ( TuplesOrder 2) by A4, Def3;

      end;

      1 <= (n + 1) by NAT_1: 11;

      then 1 in ( Seg (n + 1)) by FINSEQ_1: 1;

      then 1 in ( Seg ( len ( Decomp (n,2)))) by Th9;

      then

       A7: 1 in ( dom ( Decomp (n,2))) by FINSEQ_1:def 3;

      ( field ( TuplesOrder 2)) = (2 -tuples_on NAT ) by ORDERS_1: 15;

      then

       A8: ( TuplesOrder 2) linearly_orders A by ORDERS_1: 37, ORDERS_1: 38;

      ( Sum <* 0 , n*>) = ( 0 qua Nat + n) by RVSUM_1: 77;

      then <* 0 , n*> in A by A2;

      then (( SgmX (( TuplesOrder 2),A)) /. 1) = <* 0 , n*> by A8, A3, PRE_POLY: 20;

      hence thesis by A1, A7, PARTFUN1:def 6;

    end;

    theorem :: POLYNOM3:14

    

     Th14: for n,i be Element of NAT st i in ( Seg (n + 1)) holds (( Decomp (n,2)) . i) = <*(i -' 1), ((n + 1) -' i)*>

    proof

      let n,i be Element of NAT ;

      defpred P[ Nat] means $1 <= (n + 1) implies (( Decomp (n,2)) . $1) = <*($1 -' 1), ((n + 1) -' $1)*>;

      assume i in ( Seg (n + 1));

      then

       A1: 1 <= i & i <= (n + 1) by FINSEQ_1: 1;

      consider A be finite Subset of (2 -tuples_on NAT ) such that

       A2: ( Decomp (n,2)) = ( SgmX (( TuplesOrder 2),A)) and

       A3: for p be Element of (2 -tuples_on NAT ) holds p in A iff ( Sum p) = n by Def4;

      

       A4: for j be non zero Nat st P[j] holds P[(j + 1)]

      proof

        ( field ( TuplesOrder 2)) = (2 -tuples_on NAT ) by ORDERS_1: 15;

        then

         A5: ( TuplesOrder 2) linearly_orders A by ORDERS_1: 37, ORDERS_1: 38;

        let j be non zero Nat;

        assume that

         A6: j <= (n + 1) implies (( Decomp (n,2)) . j) = <*(j -' 1), ((n + 1) -' j)*> and

         A7: (j + 1) <= (n + 1);

        n >= j by A7, XREAL_1: 6;

        then

         A8: (n - j) >= 0 by XREAL_1: 48;

        ((n + 1) - (j + 1)) >= 0 by A7, XREAL_1: 48;

        

        then

         A9: ((n + 1) -' (j + 1)) = (n - j) by XREAL_0:def 2

        .= (n -' j) by A8, XREAL_0:def 2;

        reconsider jj = j as non zero Element of NAT by ORDINAL1:def 12;

        j >= 1 by NAT_1: 14;

        then

         A10: (j - 1) >= (1 - 1) by XREAL_1: 9;

        (j + 1) >= 1 by NAT_1: 11;

        then (j + 1) in ( Seg (n + 1)) by A7, FINSEQ_1: 1;

        then (j + 1) in ( Seg ( len ( Decomp (n,2)))) by Th9;

        then

         A11: (j + 1) in ( dom ( Decomp (n,2))) by FINSEQ_1:def 3;

        then (( Decomp (n,2)) . (j + 1)) = (( Decomp (n,2)) /. (j + 1)) by PARTFUN1:def 6;

        then

        consider d1,d2 be Element of NAT such that

         A12: (( Decomp (n,2)) . (j + 1)) = <*d1, d2*> by FINSEQ_2: 100;

        (( Decomp (n,2)) . (j + 1)) in ( rng ( Decomp (n,2))) by A11, FUNCT_1:def 3;

        then (( Decomp (n,2)) . (j + 1)) in A by A2, A5, PRE_POLY:def 2;

        then ( Sum <*d1, d2*>) = n by A3, A12;

        then

         A13: (d1 + d2) = n by RVSUM_1: 77;

        then (n - d1) >= 0 ;

        then

         A14: d2 = (n -' d1) by A13, XREAL_0:def 2;

        j < (n + 1) by A7, NAT_1: 13;

        then

         A15: ((n + 1) - j) >= 0 by XREAL_1: 48;

        then (n - (j - 1)) >= 0 ;

        then

         A16: (n - (j -' 1)) >= 0 by A10, XREAL_0:def 2;

        ((n + 1) -' j) = (n - (j - 1)) by A15, XREAL_0:def 2

        .= (n - (j -' 1)) by A10, XREAL_0:def 2

        .= (n -' (j -' 1)) by A16, XREAL_0:def 2;

        

        then d1 = ((jj -' 1) + 1) by A6, A7, A12, A14, Th12, NAT_1: 13

        .= j by NAT_1: 14, XREAL_1: 235;

        hence thesis by A12, A14, A9, NAT_D: 34;

      end;

      

       A17: P[1]

      proof

        assume 1 <= (n + 1);

        

        thus (( Decomp (n,2)) . 1) = <* 0 , n*> by Th13

        .= <*(1 -' 1), n*> by XREAL_1: 232

        .= <*(1 -' 1), ((n + 1) -' 1)*> by NAT_D: 34;

      end;

      for j be non zero Nat holds P[j] from NAT_1:sch 10( A17, A4);

      hence thesis by A1;

    end;

    definition

      let L be non empty multMagma;

      let p,q,r be sequence of L;

      let t be FinSequence of (3 -tuples_on NAT );

      :: POLYNOM3:def5

      func prodTuples (p,q,r,t) -> Element of (the carrier of L * ) means

      : Def5: ( len it ) = ( len t) & for k be Element of NAT st k in ( dom t) holds (it . k) = (((p . ((t /. k) /. 1)) * (q . ((t /. k) /. 2))) * (r . ((t /. k) /. 3)));

      existence

      proof

        deffunc F( Nat) = (((p . ((t /. $1) /. 1)) * (q . ((t /. $1) /. 2))) * (r . ((t /. $1) /. 3)));

        consider p1 be FinSequence of the carrier of L such that

         A1: ( len p1) = ( len t) and

         A2: for k be Nat st k in ( dom p1) holds (p1 . k) = F(k) from FINSEQ_2:sch 1;

        

         A3: ( dom p1) = ( Seg ( len t)) by A1, FINSEQ_1:def 3;

        reconsider p1 as Element of (the carrier of L * ) by FINSEQ_1:def 11;

        take p1;

        thus ( len p1) = ( len t) by A1;

        let k be Element of NAT ;

        assume k in ( dom t);

        then k in ( Seg ( len t)) by FINSEQ_1:def 3;

        hence thesis by A2, A3;

      end;

      uniqueness

      proof

        let p1,p2 be Element of (the carrier of L * ) such that

         A4: ( len p1) = ( len t) and

         A5: for k be Element of NAT st k in ( dom t) holds (p1 . k) = (((p . ((t /. k) /. 1)) * (q . ((t /. k) /. 2))) * (r . ((t /. k) /. 3))) and

         A6: ( len p2) = ( len t) and

         A7: for k be Element of NAT st k in ( dom t) holds (p2 . k) = (((p . ((t /. k) /. 1)) * (q . ((t /. k) /. 2))) * (r . ((t /. k) /. 3)));

        

         A8: ( dom p1) = ( Seg ( len t)) by A4, FINSEQ_1:def 3;

        now

          let i be Nat;

          assume i in ( dom p1);

          then

           A9: i in ( dom t) by A8, FINSEQ_1:def 3;

          

          hence (p1 . i) = (((p . ((t /. i) /. 1)) * (q . ((t /. i) /. 2))) * (r . ((t /. i) /. 3))) by A5

          .= (p2 . i) by A7, A9;

        end;

        hence thesis by A4, A6, FINSEQ_2: 9;

      end;

    end

    theorem :: POLYNOM3:15

    

     Th15: for L be non empty multMagma holds for p,q,r be sequence of L holds for t be FinSequence of (3 -tuples_on NAT ) holds for P be Permutation of ( dom t) holds for t1 be FinSequence of (3 -tuples_on NAT ) st t1 = (t * P) holds ( prodTuples (p,q,r,t1)) = (( prodTuples (p,q,r,t)) * P)

    proof

      let L be non empty multMagma;

      let p,q,r be sequence of L;

      let t be FinSequence of (3 -tuples_on NAT );

      let P be Permutation of ( dom t);

      let t1 be FinSequence of (3 -tuples_on NAT );

      

       A1: ( rng P) = ( dom t) by FUNCT_2:def 3;

      assume

       A2: t1 = (t * P);

      then

       A3: ( dom P) = ( dom t1) by A1, RELAT_1: 27;

       A4:

      now

        let x be object;

        assume

         A5: x in ( dom t1);

        then

        reconsider i = x as Element of NAT ;

        

         A6: (( prodTuples (p,q,r,t1)) . i) = (((p . ((t1 /. i) /. 1)) * (q . ((t1 /. i) /. 2))) * (r . ((t1 /. i) /. 3))) & ((( prodTuples (p,q,r,t)) * P) . x) = (( prodTuples (p,q,r,t)) . (P . x)) by A3, A5, Def5, FUNCT_1: 13;

        reconsider j = (P . i) as Element of NAT ;

        

         A7: (P . i) in ( rng P) by A3, A5, FUNCT_1:def 3;

        (t1 /. i) = (t1 . i) by A5, PARTFUN1:def 6

        .= (t . (P . i)) by A2, A5, FUNCT_1: 12

        .= (t /. j) by A1, A7, PARTFUN1:def 6;

        hence (( prodTuples (p,q,r,t1)) . x) = ((( prodTuples (p,q,r,t)) * P) . x) by A1, A7, A6, Def5;

      end;

      ( len ( prodTuples (p,q,r,t1))) = ( len t1) by Def5;

      then

       A8: ( dom ( prodTuples (p,q,r,t1))) = ( Seg ( len t1)) by FINSEQ_1:def 3;

      ( len ( prodTuples (p,q,r,t))) = ( len t) by Def5;

      then ( rng P) = ( dom ( prodTuples (p,q,r,t))) by A1, FINSEQ_3: 29;

      then

       A9: ( dom (( prodTuples (p,q,r,t)) * P)) = ( dom t1) by A3, RELAT_1: 27;

      ( dom t1) = ( Seg ( len t1)) by FINSEQ_1:def 3;

      hence thesis by A8, A9, A4, FUNCT_1: 2;

    end;

    theorem :: POLYNOM3:16

    

     Th16: for D be set, f be FinSequence of (D * ), i be Nat holds ( Card (f | i)) = (( Card f) | i)

    proof

      let D be set;

      let f be FinSequence of (D * );

      let i be Nat;

      

       A1: (f | i) = (f | ( Seg i)) by FINSEQ_1:def 15;

      reconsider k = ( min (i,( len f))) as Nat by TARSKI: 1;

      ( dom ( Card (f | i))) = ( dom (f | i)) by CARD_3:def 2;

      

      then

       A2: ( len ( Card (f | i))) = ( len (f | i)) by FINSEQ_3: 29

      .= ( min (i,( len f))) by A1, FINSEQ_2: 21;

      then

       A3: ( dom ( Card (f | i))) = ( Seg k) by FINSEQ_1:def 3;

      

       A4: ( dom ( Card f)) = ( dom f) by CARD_3:def 2;

      

       A5: (( Card f) | i) = (( Card f) | ( Seg i)) by FINSEQ_1:def 15;

       A6:

      now

        

         A7: ( len f) = ( len ( Card f)) by A4, FINSEQ_3: 29;

        let j be Nat;

        assume

         A8: j in ( dom ( Card (f | i)));

        per cases ;

          suppose

           A9: i <= ( len f);

          

           A10: 1 <= j by A3, A8, FINSEQ_1: 1;

          

           A11: k = i by A9, XXREAL_0:def 9;

          then j <= i by A3, A8, FINSEQ_1: 1;

          then j <= ( len f) by A9, XXREAL_0: 2;

          then

           A12: j in ( dom f) by A10, FINSEQ_3: 25;

          ( len (( Card f) | i)) = i by A7, A9, FINSEQ_1: 59;

          then

           A13: ( dom (( Card f) | i)) = ( Seg i) by FINSEQ_1:def 3;

          reconsider Cf = ( Card f) as FinSequence of NAT qua set;

          

           A14: ( Seg ( len (f | i))) = ( dom (f | i)) by FINSEQ_1:def 3;

          

           A15: ( len (f | i)) = i by A9, FINSEQ_1: 59;

          

          hence (( Card (f | i)) . j) = ( card ((f | i) . j)) by A3, A8, A11, A14, CARD_3:def 2

          .= ( card ((f | i) /. j)) by A3, A8, A11, A15, A14, PARTFUN1:def 6

          .= ( card (f /. j)) by A3, A8, A11, A15, A14, FINSEQ_4: 70

          .= ( card (f . j)) by A12, PARTFUN1:def 6

          .= (( Card f) . j) by A12, CARD_3:def 2

          .= (Cf /. j) by A4, A12, PARTFUN1:def 6

          .= ((Cf | i) /. j) by A3, A8, A11, A13, FINSEQ_4: 70

          .= ((( Card f) | i) . j) by A3, A8, A11, A13, PARTFUN1:def 6;

        end;

          suppose

           A16: i > ( len f);

          then (f | i) = f by A1, FINSEQ_2: 20;

          hence (( Card (f | i)) . j) = ((( Card f) | i) . j) by A5, A7, A16, FINSEQ_2: 20;

        end;

      end;

      ( len (( Card f) | i)) = ( min (i,( len ( Card f)))) by A5, FINSEQ_2: 21

      .= ( min (i,( len f))) by A4, FINSEQ_3: 29;

      hence thesis by A2, A6, FINSEQ_2: 9;

    end;

    ::$Canceled

    theorem :: POLYNOM3:18

    

     Th17: for p be FinSequence of NAT holds for i,j be Nat st i <= j holds ( Sum (p | i)) <= ( Sum (p | j))

    proof

      let p be FinSequence of NAT ;

      let i,j be Nat;

      assume

       A1: i <= j;

      then

      consider k be Nat such that

       A2: j = (i + k) by NAT_1: 10;

      reconsider k as Element of NAT by ORDINAL1:def 12;

      per cases ;

        suppose

         A3: j <= ( len p);

        then

         A4: ( len (p | j)) = (i + k) by A2, FINSEQ_1: 59;

        then

        consider q,r be FinSequence of NAT such that

         A5: ( len q) = i and ( len r) = k and

         A6: (p | j) = (q ^ r) by FINSEQ_2: 23;

        

         A7: ( len (p | i)) = i by A1, A3, FINSEQ_1: 59, XXREAL_0: 2;

        then

         A8: ( dom (p | i)) = ( Seg i) by FINSEQ_1:def 3;

         A9:

        now

          reconsider p1 = p as FinSequence of REAL by FINSEQ_2: 24, NUMBERS: 19;

          let n be Nat;

          assume

           A10: n in ( dom (p | i));

          then

           A11: ((p | i) /. n) = (p /. n) by FINSEQ_4: 70;

          

           A12: ( Seg i) = ( dom q) by A5, FINSEQ_1:def 3;

          

           A13: ( Seg i) c= ( Seg j) & ( Seg j) = ( dom (p | j)) by A1, A2, A4, FINSEQ_1: 5, FINSEQ_1:def 3;

          ( Seg i) = ( dom (p | i)) by A7, FINSEQ_1:def 3;

          then

           A14: ((p | j) /. n) = (p /. n) by A10, A13, FINSEQ_4: 70;

          

          thus ((p | i) . n) = ((p | i) /. n) by A10, PARTFUN1:def 6

          .= ((p | j) . n) by A8, A10, A13, A11, A14, PARTFUN1:def 6

          .= (q . n) by A6, A8, A10, A12, FINSEQ_1:def 7;

        end;

        

         A15: (( Sum q) + ( Sum r)) >= (( Sum q) + 0 qua Nat) by XREAL_1: 6;

        ( Sum (p | j)) = (( Sum q) + ( Sum r)) by A6, RVSUM_1: 75;

        hence thesis by A7, A5, A9, A15, FINSEQ_2: 9;

      end;

        suppose j > ( len p);

        then

         A16: (p | j) = p by FINSEQ_1: 58;

        now

          per cases ;

            suppose i >= ( len p);

            hence thesis by A16, FINSEQ_1: 58;

          end;

            suppose

             A17: i < ( len p);

            then

            consider t be Nat such that

             A18: ( len p) = (i + t) by NAT_1: 10;

            consider q,r be FinSequence of NAT such that

             A19: ( len q) = i and ( len r) = t and

             A20: p = (q ^ r) by A18, FINSEQ_2: 23;

            

             A21: ( len (p | i)) = i by A17, FINSEQ_1: 59;

            then

             A22: ( dom (p | i)) = ( Seg i) by FINSEQ_1:def 3;

             A23:

            now

              

               A24: ( Seg i) = ( dom q) by A19, FINSEQ_1:def 3;

              let n be Nat;

              

               A25: ( dom (p | i)) c= ( dom p) by FINSEQ_5: 18;

              assume

               A26: n in ( dom (p | i));

              then

               A27: ((p | i) /. n) = (p /. n) by FINSEQ_4: 70;

              

              thus ((p | i) . n) = ((p | i) /. n) by A26, PARTFUN1:def 6

              .= (p . n) by A26, A27, A25, PARTFUN1:def 6

              .= (q . n) by A20, A22, A26, A24, FINSEQ_1:def 7;

            end;

            

             A28: (( Sum q) + ( Sum r)) >= (( Sum q) + 0 qua Nat) by XREAL_1: 6;

            ( Sum p) = (( Sum q) + ( Sum r)) by A20, RVSUM_1: 75;

            hence thesis by A16, A19, A21, A23, A28, FINSEQ_2: 9;

          end;

        end;

        hence thesis;

      end;

    end;

    ::$Canceled

    theorem :: POLYNOM3:20

    

     Th19: for p be FinSequence of REAL holds for i be Element of NAT st i < ( len p) holds ( Sum (p | (i + 1))) = (( Sum (p | i)) + (p . (i + 1)))

    proof

      let p be FinSequence of REAL ;

      let i be Element of NAT ;

      assume i < ( len p);

      then (p | (i + 1)) = ((p | i) ^ <*(p . (i + 1))*>) by FINSEQ_5: 83;

      hence thesis by RVSUM_1: 74;

    end;

    theorem :: POLYNOM3:21

    

     Th20: for p be FinSequence of NAT holds for i,j,k1,k2 be Element of NAT st i < ( len p) & j < ( len p) & 1 <= k1 & 1 <= k2 & k1 <= (p . (i + 1)) & k2 <= (p . (j + 1)) & (( Sum (p | i)) + k1) = (( Sum (p | j)) + k2) holds i = j & k1 = k2

    proof

      let p be FinSequence of NAT ;

      let i,j,k1,k2 be Element of NAT ;

      assume that

       A1: i < ( len p) and

       A2: j < ( len p) and

       A3: 1 <= k1 and

       A4: 1 <= k2 and

       A5: k1 <= (p . (i + 1)) and

       A6: k2 <= (p . (j + 1)) and

       A7: (( Sum (p | i)) + k1) = (( Sum (p | j)) + k2) and

       A8: i <> j or k1 <> k2;

      

       A9: i <> j by A7, A8, XCMPLX_1: 2;

      reconsider p1 = p as FinSequence of REAL by FINSEQ_2: 24, NUMBERS: 19;

      

       A10: (( Sum (p | i)) + (p . (i + 1))) >= (( Sum (p | i)) + k1) by A5, XREAL_1: 6;

      

       A11: (( Sum (p | j)) + (p . (j + 1))) >= (( Sum (p | j)) + k2) by A6, XREAL_1: 6;

      per cases ;

        suppose i < j;

        then (i + 1) <= j by NAT_1: 13;

        then ( Sum (p | j)) >= ( Sum (p | (i + 1))) by Th17;

        then ( Sum (p | j)) >= (( Sum (p1 | i)) + (p . (i + 1))) by A1, Th19;

        then

         A12: ( Sum (p | j)) >= (( Sum (p | j)) + k2) by A7, A10, XXREAL_0: 2;

        (( Sum (p | j)) + k2) >= ( Sum (p | j)) by NAT_1: 11;

        then ( Sum (p | j)) = (( Sum (p | j)) + k2) by A12, XXREAL_0: 1;

        then k2 = 0 ;

        hence contradiction by A4;

      end;

        suppose i >= j;

        then j < i by A9, XXREAL_0: 1;

        then (j + 1) <= i by NAT_1: 13;

        then ( Sum (p | i)) >= ( Sum (p | (j + 1))) by Th17;

        then ( Sum (p | i)) >= (( Sum (p1 | j)) + (p . (j + 1))) by A2, Th19;

        then

         A13: ( Sum (p | i)) >= (( Sum (p | i)) + k1) by A7, A11, XXREAL_0: 2;

        (( Sum (p | i)) + k1) >= ( Sum (p | i)) by NAT_1: 11;

        then ( Sum (p | i)) = (( Sum (p | i)) + k1) by A13, XXREAL_0: 1;

        then k1 = 0 ;

        hence contradiction by A3;

      end;

    end;

    theorem :: POLYNOM3:22

    

     Th21: for D1,D2 be set holds for f1 be FinSequence of (D1 * ) holds for f2 be FinSequence of (D2 * ) holds for i1,i2,j1,j2 be Element of NAT st i1 in ( dom f1) & i2 in ( dom f2) & j1 in ( dom (f1 . i1)) & j2 in ( dom (f2 . i2)) & ( Card f1) = ( Card f2) & (( Sum (( Card f1) | (i1 -' 1))) + j1) = (( Sum (( Card f2) | (i2 -' 1))) + j2) holds i1 = i2 & j1 = j2

    proof

      let D1,D2 be set;

      let f1 be FinSequence of (D1 * );

      let f2 be FinSequence of (D2 * );

      let i1,i2,j1,j2 be Element of NAT ;

      assume that

       A1: i1 in ( dom f1) and

       A2: i2 in ( dom f2) and

       A3: j1 in ( dom (f1 . i1)) and

       A4: j2 in ( dom (f2 . i2)) and

       A5: ( Card f1) = ( Card f2) & (( Sum (( Card f1) | (i1 -' 1))) + j1) = (( Sum (( Card f2) | (i2 -' 1))) + j2);

      

       A6: j1 >= 1 & j2 >= 1 by A3, A4, FINSEQ_3: 25;

      

       A7: 1 <= i1 by A1, FINSEQ_3: 25;

      then

       A8: (i1 - 1) >= 0 by XREAL_1: 48;

      j1 <= ( len (f1 . i1)) by A3, FINSEQ_3: 25;

      then j1 <= (( Card f1) . i1) by A1, CARD_3:def 2;

      then

       A9: j1 <= (( Card f1) . ((i1 -' 1) + 1)) by A7, XREAL_1: 235;

      

       A10: 1 <= i2 by A2, FINSEQ_3: 25;

      then

       A11: (i2 - 1) >= 0 by XREAL_1: 48;

      ( dom ( Card f2)) = ( dom f2) by CARD_3:def 2;

      then

       A12: ( len ( Card f2)) = ( len f2) by FINSEQ_3: 29;

      ( dom ( Card f1)) = ( dom f1) by CARD_3:def 2;

      then

       A13: ( len ( Card f1)) = ( len f1) by FINSEQ_3: 29;

      i1 <= ( len f1) by A1, FINSEQ_3: 25;

      then i1 < (( len f1) + 1) by NAT_1: 13;

      then (i1 - 1) < ((( len f1) + 1) - 1) by XREAL_1: 9;

      then

       A14: (i1 -' 1) < ( len ( Card f1)) by A13, A8, XREAL_0:def 2;

      j2 <= ( len (f2 . i2)) by A4, FINSEQ_3: 25;

      then j2 <= (( Card f2) . i2) by A2, CARD_3:def 2;

      then

       A15: j2 <= (( Card f2) . ((i2 -' 1) + 1)) by A10, XREAL_1: 235;

      i2 <= ( len f2) by A2, FINSEQ_3: 25;

      then i2 < (( len f2) + 1) by NAT_1: 13;

      then (i2 - 1) < ((( len f2) + 1) - 1) by XREAL_1: 9;

      then (i2 -' 1) < ( len ( Card f2)) by A12, A11, XREAL_0:def 2;

      then (i1 -' 1) = (i2 -' 1) by A5, A14, A6, A9, A15, Th20;

      then (i1 - 1) = (i2 -' 1) by A8, XREAL_0:def 2;

      then (i1 - 1) = (i2 - 1) by A11, XREAL_0:def 2;

      hence thesis by A5, A14, A6, A9, A15, Th20;

    end;

    begin

    definition

      let L be non empty ZeroStr;

      mode Polynomial of L is AlgSequence of L;

    end

    theorem :: POLYNOM3:23

    for L be non empty ZeroStr holds for p be Polynomial of L holds for n be Element of NAT holds n >= ( len p) iff n is_at_least_length_of p by ALGSEQ_1: 8, XXREAL_0: 2, ALGSEQ_1:def 3;

    scheme :: POLYNOM3:sch2

    PolynomialLambdaF { R() -> non empty addLoopStr , A() -> Element of NAT , F( Element of NAT ) -> Element of R() } :

ex p be Polynomial of R() st ( len p) <= A() & for n be Element of NAT st n < A() holds (p . n) = F(n);

      defpred P[ Element of NAT , Element of R()] means $1 < A() & $2 = F($1) or $1 >= A() & $2 = ( 0. R());

      

       A1: for x be Element of NAT holds ex y be Element of R() st P[x, y]

      proof

        let x be Element of NAT ;

        x < A() implies x < A() & F(x) = F(x);

        hence thesis;

      end;

      ex f be sequence of the carrier of R() st for x be Element of NAT holds P[x, (f . x)] from FUNCT_2:sch 3( A1);

      then

      consider f be sequence of the carrier of R() such that

       A2: for x be Element of NAT holds x < A() & (f . x) = F(x) or x >= A() & (f . x) = ( 0. R());

      ex n be Nat st for i be Nat st i >= n holds (f . i) = ( 0. R())

      proof

        take A();

        let i be Nat;

        i in NAT by ORDINAL1:def 12;

        hence thesis by A2;

      end;

      then

      reconsider f as AlgSequence of R() by ALGSEQ_1:def 1;

      take f;

      now

        let i be Nat;

        i in NAT by ORDINAL1:def 12;

        hence i >= A() implies (f . i) = ( 0. R()) by A2;

      end;

      then A() is_at_least_length_of f;

      hence thesis by A2, ALGSEQ_1:def 3;

    end;

    registration

      let L be right_zeroed non empty addLoopStr;

      let p,q be Polynomial of L;

      cluster (p + q) -> finite-Support;

      coherence

      proof

        take s = (( len p) + ( len q));

        let i be Nat;

        assume

         A1: i >= s;

        (( len p) + ( len q)) >= ( len p) by NAT_1: 11;

        then

         A2: (p . i) = ( 0. L) by A1, ALGSEQ_1: 8, XXREAL_0: 2;

        

         A3: (( len p) + ( len q)) >= ( len q) by NAT_1: 11;

        

        thus ((p + q) . i) = ((p . i) + (q . i)) by NORMSP_1:def 2

        .= (( 0. L) + ( 0. L)) by A1, A2, A3, ALGSEQ_1: 8, XXREAL_0: 2

        .= ( 0. L) by RLVECT_1:def 4;

      end;

    end

    theorem :: POLYNOM3:24

    for L be right_zeroed non empty addLoopStr holds for p,q be Polynomial of L holds for n be Element of NAT holds (n is_at_least_length_of p & n is_at_least_length_of q) implies n is_at_least_length_of (p + q)

    proof

      let L be right_zeroed non empty addLoopStr;

      let p,q be Polynomial of L;

      let n be Element of NAT ;

      assume

       A1: n is_at_least_length_of p & n is_at_least_length_of q;

      let i be Nat;

      assume i >= n;

      then

       A2: (p . i) = ( 0. L) & (q . i) = ( 0. L) by A1;

      

      thus ((p + q) . i) = (( 0. L) + ( 0. L)) by A2, NORMSP_1:def 2

      .= ( 0. L) by RLVECT_1:def 4;

    end;

    definition

      let L be Abelian non empty addLoopStr;

      let p,q be sequence of L;

      :: original: +

      redefine

      func p + q;

      commutativity

      proof

        let p,q be sequence of L;

        let n be Element of NAT ;

        

        thus ((p + q) . n) = ((p . n) + (q . n)) by NORMSP_1:def 2

        .= ((q + p) . n) by NORMSP_1:def 2;

      end;

    end

    ::$Canceled

    theorem :: POLYNOM3:26

    

     Th24: for L be add-associative non empty addLoopStr holds for p,q,r be sequence of L holds ((p + q) + r) = (p + (q + r))

    proof

      let L be add-associative non empty addLoopStr;

      let p,q,r be sequence of L;

      now

        let n be Element of NAT ;

        

        thus (((p + q) + r) . n) = (((p + q) . n) + (r . n)) by NORMSP_1:def 2

        .= (((p . n) + (q . n)) + (r . n)) by NORMSP_1:def 2

        .= ((p . n) + ((q . n) + (r . n))) by RLVECT_1:def 3

        .= ((p . n) + ((q + r) . n)) by NORMSP_1:def 2

        .= ((p + (q + r)) . n) by NORMSP_1:def 2;

      end;

      hence thesis;

    end;

    registration

      let L be add-associative right_zeroed right_complementable non empty addLoopStr;

      let p be Polynomial of L;

      cluster ( - p) -> finite-Support;

      coherence

      proof

        take s = ( len p);

        let i be Nat;

        assume

         A1: i >= s;

        

        thus (( - p) . i) = ( - (p . i)) by BHSP_1: 44

        .= ( - ( 0. L)) by A1, ALGSEQ_1: 8

        .= ( 0. L) by RLVECT_1: 12;

      end;

    end

    

     Lm1: for L be non empty addLoopStr holds for p,q be sequence of L holds (p - q) = (p + ( - q))

    proof

      let L be non empty addLoopStr;

      let p,q be sequence of L;

      let n be Element of NAT ;

      

      thus ((p - q) . n) = ((p . n) - (q . n)) by NORMSP_1:def 3

      .= ((p . n) + (( - q) . n)) by BHSP_1: 44

      .= ((p + ( - q)) . n) by NORMSP_1:def 2;

    end;

    definition

      let L be non empty addLoopStr;

      let p,q be sequence of L;

      :: original: -

      redefine

      :: POLYNOM3:def6

      func p - q equals (p + ( - q));

      compatibility by Lm1;

    end

    registration

      let L be add-associative right_zeroed right_complementable non empty addLoopStr;

      let p,q be Polynomial of L;

      cluster (p - q) -> finite-Support;

      coherence ;

    end

    theorem :: POLYNOM3:27

    for L be non empty addLoopStr holds for p,q be sequence of L holds for n be Element of NAT holds ((p - q) . n) = ((p . n) - (q . n)) by NORMSP_1:def 3;

    definition

      let L be non empty ZeroStr;

      :: POLYNOM3:def7

      func 0_. (L) -> sequence of L equals ( NAT --> ( 0. L));

      coherence ;

    end

    registration

      let L be non empty ZeroStr;

      cluster ( 0_. L) -> finite-Support;

      coherence

      proof

        take 0 ;

        let i be Nat;

        assume i >= 0 ;

        i in NAT by ORDINAL1:def 12;

        hence thesis by FUNCOP_1: 7;

      end;

    end

    theorem :: POLYNOM3:28

    

     Th26: for L be right_zeroed non empty addLoopStr holds for p be sequence of L holds (p + ( 0_. L)) = p

    proof

      let L be right_zeroed non empty addLoopStr;

      let p be sequence of L;

      now

        let n be Element of NAT ;

        

        thus ((p + ( 0_. L)) . n) = ((p . n) + (( 0_. L) . n)) by NORMSP_1:def 2

        .= ((p . n) + ( 0. L)) by FUNCOP_1: 7

        .= (p . n) by RLVECT_1:def 4;

      end;

      hence thesis;

    end;

    theorem :: POLYNOM3:29

    

     Th27: for L be add-associative right_zeroed right_complementable non empty addLoopStr holds for p be sequence of L holds (p - p) = ( 0_. L)

    proof

      let L be add-associative right_zeroed right_complementable non empty addLoopStr;

      let p be sequence of L;

      now

        let n be Element of NAT ;

        

        thus ((p - p) . n) = ((p . n) - (p . n)) by NORMSP_1:def 3

        .= ( 0. L) by RLVECT_1: 15

        .= (( 0_. L) . n) by FUNCOP_1: 7;

      end;

      hence thesis;

    end;

    definition

      let L be non empty multLoopStr_0;

      :: POLYNOM3:def8

      func 1_. (L) -> sequence of L equals (( 0_. L) +* ( 0 ,( 1. L)));

      coherence ;

    end

    registration

      let L be non empty multLoopStr_0;

      cluster ( 1_. L) -> finite-Support;

      coherence

      proof

        take 1;

        let i be Nat;

        

         A1: i in NAT by ORDINAL1:def 12;

        assume i >= 1;

        

        hence (( 1_. L) . i) = (( 0_. L) . i) by FUNCT_7: 32

        .= ( 0. L) by A1, FUNCOP_1: 7;

      end;

    end

    theorem :: POLYNOM3:30

    

     Th28: for L be non empty multLoopStr_0 holds (( 1_. L) . 0 ) = ( 1. L) & for n be Nat st n <> 0 holds (( 1_. L) . n) = ( 0. L)

    proof

      let L be non empty multLoopStr_0;

       0 in NAT ;

      then 0 in ( dom ( 0_. L)) by FUNCT_2:def 1;

      hence (( 1_. L) . 0 ) = ( 1. L) by FUNCT_7: 31;

      let n be Nat;

      

       A1: n in NAT by ORDINAL1:def 12;

      assume n <> 0 ;

      

      hence (( 1_. L) . n) = (( 0_. L) . n) by FUNCT_7: 32

      .= ( 0. L) by A1, FUNCOP_1: 7;

    end;

    definition

      let L be non empty doubleLoopStr;

      let p,q be sequence of L;

      :: POLYNOM3:def9

      func p *' q -> sequence of L means

      : Def9: for i be Element of NAT holds ex r be FinSequence of the carrier of L st ( len r) = (i + 1) & (it . i) = ( Sum r) & for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k)));

      existence

      proof

        defpred P[ Element of NAT , Element of L] means ex r be FinSequence of the carrier of L st ( len r) = ($1 + 1) & $2 = ( Sum r) & for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (q . (($1 + 1) -' k)));

        

         A1: for i be Element of NAT holds ex v be Element of L st P[i, v]

        proof

          let i be Element of NAT ;

          deffunc F( Nat) = ((p . ($1 -' 1)) * (q . ((i + 1) -' $1)));

          consider r be FinSequence of the carrier of L such that

           A2: ( len r) = (i + 1) and

           A3: for k be Nat st k in ( dom r) holds (r . k) = F(k) from FINSEQ_2:sch 1;

          take v = ( Sum r);

          take r;

          thus ( len r) = (i + 1) by A2;

          thus v = ( Sum r);

          let k be Element of NAT ;

          assume k in ( dom r);

          hence thesis by A3;

        end;

        consider f be sequence of the carrier of L such that

         A4: for i be Element of NAT holds P[i, (f . i)] from FUNCT_2:sch 3( A1);

        take f;

        thus thesis by A4;

      end;

      uniqueness

      proof

        let p1,p2 be sequence of L such that

         A5: for i be Element of NAT holds ex r be FinSequence of the carrier of L st ( len r) = (i + 1) & (p1 . i) = ( Sum r) & for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) and

         A6: for i be Element of NAT holds ex r be FinSequence of the carrier of L st ( len r) = (i + 1) & (p2 . i) = ( Sum r) & for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k)));

        now

          let i be Element of NAT ;

          consider r1 be FinSequence of the carrier of L such that

           A7: ( len r1) = (i + 1) and

           A8: (p1 . i) = ( Sum r1) and

           A9: for k be Element of NAT st k in ( dom r1) holds (r1 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A5;

          consider r2 be FinSequence of the carrier of L such that

           A10: ( len r2) = (i + 1) and

           A11: (p2 . i) = ( Sum r2) and

           A12: for k be Element of NAT st k in ( dom r2) holds (r2 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A6;

          

           A13: ( dom r1) = ( Seg ( len r2)) by A7, A10, FINSEQ_1:def 3

          .= ( dom r2) by FINSEQ_1:def 3;

          now

            let k be Nat;

            assume

             A14: k in ( dom r1);

            

            hence (r1 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A9

            .= (r2 . k) by A12, A13, A14;

          end;

          hence (p1 . i) = (p2 . i) by A8, A11, A13, FINSEQ_1: 13;

        end;

        hence p1 = p2;

      end;

    end

    registration

      let L be add-associative right_zeroed right_complementable distributive non empty doubleLoopStr;

      let p,q be Polynomial of L;

      cluster (p *' q) -> finite-Support;

      coherence

      proof

        take s = (( len p) + ( len q));

        let i be Nat;

        i in NAT by ORDINAL1:def 12;

        then

        consider r be FinSequence of the carrier of L such that

         A1: ( len r) = (i + 1) and

         A2: ((p *' q) . i) = ( Sum r) and

         A3: for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by Def9;

        assume i >= s;

        then ( len p) <= (i - ( len q)) by XREAL_1: 19;

        then

         A4: ( - ( len p)) >= ( - (i - ( len q))) by XREAL_1: 24;

        now

          let k be Element of NAT ;

          assume

           A5: k in ( dom r);

          then

           A6: (r . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A3;

          k <= (i + 1) by A1, A5, FINSEQ_3: 25;

          then

           A7: ((i + 1) - k) >= 0 by XREAL_1: 48;

          per cases ;

            suppose (k -' 1) < ( len p);

            then (k - 1) < ( len p) by XREAL_0:def 2;

            then ( - (k - 1)) > ( - ( len p)) by XREAL_1: 24;

            then (1 - k) > (( len q) - i) by A4, XXREAL_0: 2;

            then (i + (1 - k)) > ( len q) by XREAL_1: 19;

            then ((i + 1) -' k) >= ( len q) by A7, XREAL_0:def 2;

            then (q . ((i + 1) -' k)) = ( 0. L) by ALGSEQ_1: 8;

            hence (r . k) = ( 0. L) by A6;

          end;

            suppose (k -' 1) >= ( len p);

            then (p . (k -' 1)) = ( 0. L) by ALGSEQ_1: 8;

            hence (r . k) = ( 0. L) by A6;

          end;

        end;

        hence thesis by A2, Th1;

      end;

    end

    theorem :: POLYNOM3:31

    

     Th29: for L be Abelian add-associative right_zeroed right_complementable right-distributive non empty doubleLoopStr holds for p,q,r be sequence of L holds (p *' (q + r)) = ((p *' q) + (p *' r))

    proof

      let L be Abelian add-associative right_zeroed right_complementable right-distributive non empty doubleLoopStr;

      let p,q,r be sequence of L;

      now

        let i be Element of NAT ;

        consider r1 be FinSequence of the carrier of L such that

         A1: ( len r1) = (i + 1) and

         A2: ((p *' (q + r)) . i) = ( Sum r1) and

         A3: for k be Element of NAT st k in ( dom r1) holds (r1 . k) = ((p . (k -' 1)) * ((q + r) . ((i + 1) -' k))) by Def9;

        

         A4: ( dom r1) = ( Seg (i + 1)) by A1, FINSEQ_1:def 3;

        consider r3 be FinSequence of the carrier of L such that

         A5: ( len r3) = (i + 1) and

         A6: ((p *' r) . i) = ( Sum r3) and

         A7: for k be Element of NAT st k in ( dom r3) holds (r3 . k) = ((p . (k -' 1)) * (r . ((i + 1) -' k))) by Def9;

        consider r2 be FinSequence of the carrier of L such that

         A8: ( len r2) = (i + 1) and

         A9: ((p *' q) . i) = ( Sum r2) and

         A10: for k be Element of NAT st k in ( dom r2) holds (r2 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by Def9;

        reconsider r29 = r2, r39 = r3 as Element of ((i + 1) -tuples_on the carrier of L) by A8, A5, FINSEQ_2: 92;

        

         A11: ( len (r29 + r39)) = (i + 1) by CARD_1:def 7;

        now

          let k be Nat;

          assume

           A12: k in ( dom r1);

          then

           A13: k in ( dom (r2 + r3)) by A11, A4, FINSEQ_1:def 3;

          k in ( dom r3) by A5, A4, A12, FINSEQ_1:def 3;

          then

           A14: (r3 . k) = ((p . (k -' 1)) * (r . ((i + 1) -' k))) by A7;

          k in ( dom r2) by A8, A4, A12, FINSEQ_1:def 3;

          then

           A15: (r2 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A10;

          

          thus (r1 . k) = ((p . (k -' 1)) * ((q + r) . ((i + 1) -' k))) by A3, A12

          .= ((p . (k -' 1)) * ((q . ((i + 1) -' k)) + (r . ((i + 1) -' k)))) by NORMSP_1:def 2

          .= (((p . (k -' 1)) * (q . ((i + 1) -' k))) + ((p . (k -' 1)) * (r . ((i + 1) -' k)))) by VECTSP_1:def 2

          .= ((r2 + r3) . k) by A13, A15, A14, FVSUM_1: 17;

        end;

        

        then ( Sum r1) = ( Sum (r29 + r39)) by A1, A11, FINSEQ_2: 9

        .= (( Sum r2) + ( Sum r3)) by FVSUM_1: 76;

        hence ((p *' (q + r)) . i) = (((p *' q) + (p *' r)) . i) by A2, A9, A6, NORMSP_1:def 2;

      end;

      hence thesis;

    end;

    theorem :: POLYNOM3:32

    

     Th30: for L be Abelian add-associative right_zeroed right_complementable left-distributive non empty doubleLoopStr holds for p,q,r be sequence of L holds ((p + q) *' r) = ((p *' r) + (q *' r))

    proof

      let L be Abelian add-associative right_zeroed right_complementable left-distributive non empty doubleLoopStr;

      let p,q,r be sequence of L;

      now

        let i be Element of NAT ;

        consider r1 be FinSequence of the carrier of L such that

         A1: ( len r1) = (i + 1) and

         A2: (((p + q) *' r) . i) = ( Sum r1) and

         A3: for k be Element of NAT st k in ( dom r1) holds (r1 . k) = (((p + q) . (k -' 1)) * (r . ((i + 1) -' k))) by Def9;

        

         A4: ( dom r1) = ( Seg (i + 1)) by A1, FINSEQ_1:def 3;

        consider r3 be FinSequence of the carrier of L such that

         A5: ( len r3) = (i + 1) and

         A6: ((q *' r) . i) = ( Sum r3) and

         A7: for k be Element of NAT st k in ( dom r3) holds (r3 . k) = ((q . (k -' 1)) * (r . ((i + 1) -' k))) by Def9;

        consider r2 be FinSequence of the carrier of L such that

         A8: ( len r2) = (i + 1) and

         A9: ((p *' r) . i) = ( Sum r2) and

         A10: for k be Element of NAT st k in ( dom r2) holds (r2 . k) = ((p . (k -' 1)) * (r . ((i + 1) -' k))) by Def9;

        reconsider r29 = r2, r39 = r3 as Element of ((i + 1) -tuples_on the carrier of L) by A8, A5, FINSEQ_2: 92;

        

         A11: ( len (r29 + r39)) = (i + 1) by CARD_1:def 7;

        now

          let k be Nat;

          assume

           A12: k in ( dom r1);

          then

           A13: k in ( dom (r2 + r3)) by A11, A4, FINSEQ_1:def 3;

          k in ( dom r3) by A5, A4, A12, FINSEQ_1:def 3;

          then

           A14: (r3 . k) = ((q . (k -' 1)) * (r . ((i + 1) -' k))) by A7;

          k in ( dom r2) by A8, A4, A12, FINSEQ_1:def 3;

          then

           A15: (r2 . k) = ((p . (k -' 1)) * (r . ((i + 1) -' k))) by A10;

          

          thus (r1 . k) = (((p + q) . (k -' 1)) * (r . ((i + 1) -' k))) by A3, A12

          .= (((p . (k -' 1)) + (q . (k -' 1))) * (r . ((i + 1) -' k))) by NORMSP_1:def 2

          .= (((p . (k -' 1)) * (r . ((i + 1) -' k))) + ((q . (k -' 1)) * (r . ((i + 1) -' k)))) by VECTSP_1:def 3

          .= ((r2 + r3) . k) by A13, A15, A14, FVSUM_1: 17;

        end;

        

        then ( Sum r1) = ( Sum (r29 + r39)) by A1, A11, FINSEQ_2: 9

        .= (( Sum r2) + ( Sum r3)) by FVSUM_1: 76;

        hence (((p + q) *' r) . i) = (((p *' r) + (q *' r)) . i) by A2, A9, A6, NORMSP_1:def 2;

      end;

      hence thesis;

    end;

    theorem :: POLYNOM3:33

    

     Th31: for L be Abelian add-associative right_zeroed right_complementable well-unital associative distributive non empty doubleLoopStr holds for p,q,r be sequence of L holds ((p *' q) *' r) = (p *' (q *' r))

    proof

      let L be Abelian add-associative right_zeroed right_complementable well-unital associative distributive non empty doubleLoopStr;

      let p,q,r be sequence of L;

      now

        let i be Element of NAT ;

        deffunc F( Nat) = (( Decomp (($1 -' 1),2)) ^^ ($1 |-> <*((i + 1) -' $1)*>) qua FinSequence of (1 -tuples_on NAT ));

        consider f2 be FinSequence of (((2 + 1) -tuples_on NAT ) * ) such that

         A1: ( len f2) = (i + 1) and

         A2: for k be Nat st k in ( dom f2) holds (f2 . k) = F(k) from FINSEQ_2:sch 1;

        

         A3: ( dom f2) = ( Seg (i + 1)) by A1, FINSEQ_1:def 3;

        reconsider f2 as FinSequence of ((3 -tuples_on NAT ) * );

        deffunc F( Nat) = ((((i + 2) -' $1) |-> <*($1 -' 1)*>) ^^ ( Decomp (((i + 1) -' $1),2)));

        consider g2 be FinSequence of (((1 + 2) -tuples_on NAT ) * ) such that

         A4: ( len g2) = (i + 1) and

         A5: for k be Nat st k in ( dom g2) holds (g2 . k) = F(k) from FINSEQ_2:sch 1;

        

         A6: ( dom g2) = ( Seg (i + 1)) by A4, FINSEQ_1:def 3;

        reconsider g2 as FinSequence of ((3 -tuples_on NAT ) * );

        consider r2 be FinSequence of the carrier of L such that

         A7: ( len r2) = (i + 1) and

         A8: ((p *' (q *' r)) . i) = ( Sum r2) and

         A9: for k be Element of NAT st k in ( dom r2) holds (r2 . k) = ((p . (k -' 1)) * ((q *' r) . ((i + 1) -' k))) by Def9;

        

         A10: ( dom r2) = ( Seg (i + 1)) by A7, FINSEQ_1:def 3;

        

         A11: ( dom ( Card f2)) = ( dom f2) by CARD_3:def 2

        .= ( Seg ( len g2)) by A1, A4, FINSEQ_1:def 3

        .= ( dom g2) by FINSEQ_1:def 3

        .= ( dom ( Card g2)) by CARD_3:def 2

        .= ( dom ( Rev ( Card g2))) by FINSEQ_5: 57;

         A12:

        now

          let j be Nat;

          

           A13: ( dom (j |-> <*((i + 1) -' j)*>)) = ( Seg j) by FUNCOP_1: 13;

          assume

           A14: j in ( dom ( Card f2));

          then

           A15: j in ( Seg ( len ( Rev ( Card g2)))) by A11, FINSEQ_1:def 3;

          then

           A16: j >= 1 by FINSEQ_1: 1;

          then (j - 1) >= 0 by XREAL_1: 48;

          then

           A17: ((i + 1) - (j - 1)) <= (i + 1) by XREAL_1: 43;

          

           A18: ( dom ( Card g2)) = ( dom g2) by CARD_3:def 2;

          then

           A19: ( len ( Card g2)) = ( len g2) by FINSEQ_3: 29;

          then

           A20: j in ( Seg ( len g2)) by A15, FINSEQ_5:def 3;

          then

           A21: (f2 . j) = (( Decomp ((j -' 1),2)) ^^ (j |-> <*((i + 1) -' j)*>)) by A2, A3, A4;

          (i + 1) >= j by A4, A20, FINSEQ_1: 1;

          then

           A22: ((i + 1) - j) >= 0 by XREAL_1: 48;

          then (((i + 1) - j) + 1) = (((i + 1) -' j) + 1) by XREAL_0:def 2;

          then

          reconsider lj = ((( len ( Card g2)) - j) + 1) as Element of NAT by A4, A18, FINSEQ_3: 29;

          ((i + 1) - (((i + 1) - j) + 1)) = ( 0 qua Nat + (j - 1));

          then

           A23: ((i + 1) - (((i + 1) - j) + 1)) >= 0 by A16, XREAL_1: 48;

          

          then

           A24: (((i + 1) -' lj) + 1) = (( 0 qua Nat + (j - 1)) + 1) by A4, A19, XREAL_0:def 2

          .= j;

          (((i + 1) - j) + 1) >= ( 0 qua Nat + 1) by A22, XREAL_1: 6;

          then lj in ( Seg (i + 1)) by A4, A19, A17, FINSEQ_1: 1;

          then

           A25: (g2 . lj) = ((((i + 2) -' lj) |-> <*(lj -' 1)*>) ^^ ( Decomp (((i + 1) -' lj),2))) by A5, A6;

          

           A26: (((i + 1) -' lj) + 1) = (((i + 1) - lj) + 1) by A4, A19, A23, XREAL_0:def 2

          .= ((i + (1 + 1)) - lj);

          

           A27: ( dom (((i + 2) -' lj) |-> <*(lj -' 1)*>)) = ( Seg ((i + 2) -' lj)) by FUNCOP_1: 13

          .= ( Seg j) by A24, A26, XREAL_0:def 2;

          

           A28: ( dom ( Decomp (((i + 1) -' lj),2))) = ( Seg ( len ( Decomp (((i + 1) -' lj),2)))) by FINSEQ_1:def 3

          .= ( Seg j) by A24, Th9;

          ( Seg ( len (g2 . lj))) = ( dom (g2 . lj)) by FINSEQ_1:def 3

          .= (( Seg j) /\ ( Seg j)) by A25, A28, A27, PRE_POLY:def 4

          .= ( Seg j);

          then

           A29: ( len (g2 . lj)) = j by FINSEQ_1: 6;

          

           A30: ( dom ( Decomp ((j -' 1),2))) = ( Seg ( len ( Decomp ((j -' 1),2)))) by FINSEQ_1:def 3

          .= ( Seg ((j -' 1) + 1)) by Th9

          .= ( Seg j) by A16, XREAL_1: 235;

          ( Seg ( len (f2 . j))) = ( dom (f2 . j)) by FINSEQ_1:def 3

          .= (( Seg j) /\ ( Seg j)) by A21, A30, A13, PRE_POLY:def 4

          .= ( Seg j);

          then

           A31: ( len (f2 . j)) = j by FINSEQ_1: 6;

          ((( len ( Card g2)) - j) + 1) in ( Seg ( len g2)) by A19, A20, FINSEQ_5: 2;

          then

           A32: ((( len ( Card g2)) - j) + 1) in ( dom g2) by FINSEQ_1:def 3;

          j in ( dom f2) by A14, CARD_3:def 2;

          

          hence (( Card f2) . j) = j by A31, CARD_3:def 2

          .= (( Card g2) . ((( len ( Card g2)) - j) + 1)) by A32, A29, CARD_3:def 2

          .= (( Rev ( Card g2)) . j) by A11, A14, FINSEQ_5:def 3;

        end;

        ( len ( Card f2)) = ( len ( Rev ( Card g2))) by A11, FINSEQ_3: 29;

        then

         A33: ( Card f2) = ( Rev ( Card g2)) by A12, FINSEQ_2: 9;

        reconsider w = ( Card g2) as FinSequence of NAT ;

        

         A34: ( Seg ( len ( FlattenSeq f2))) = ( dom ( FlattenSeq f2)) by FINSEQ_1:def 3;

        now

          let y be object;

          thus y in ( rng ( FlattenSeq f2)) implies y in ( rng ( FlattenSeq g2))

          proof

            assume y in ( rng ( FlattenSeq f2));

            then

            consider x be Nat such that

             A35: x in ( dom ( FlattenSeq f2)) and

             A36: (( FlattenSeq f2) . x) = y by FINSEQ_2: 10;

            consider i1,j1 be Nat such that

             A37: i1 in ( dom f2) and

             A38: j1 in ( dom (f2 . i1)) and x = (( Sum ( Card (f2 | (i1 -' 1)))) + j1) and

             A39: ((f2 . i1) . j1) = (( FlattenSeq f2) . x) by A35, PRE_POLY: 29;

            

             A40: (f2 . i1) = (( Decomp ((i1 -' 1),2)) ^^ (i1 |-> <*((i + 1) -' i1)*>)) by A2, A37;

            then j1 in (( dom ( Decomp ((i1 -' 1),2))) /\ ( dom (i1 |-> <*((i + 1) -' i1)*>))) by A38, PRE_POLY:def 4;

            then j1 in ( dom (i1 |-> <*((i + 1) -' i1)*>)) by XBOOLE_0:def 4;

            then

             A41: j1 in ( Seg i1) by FUNCOP_1: 13;

            then

             A42: j1 <= i1 by FINSEQ_1: 1;

            then

             A43: (i1 - j1) >= 0 by XREAL_1: 48;

            set j2 = ((i1 -' j1) + 1);

            set i2 = j1;

            

             A44: ( dom (((i + 2) -' i2) |-> <*(i2 -' 1)*>)) = ( Seg ((i + 2) -' i2)) by FUNCOP_1: 13;

            

             A45: i1 in ( Seg (i + 1)) by A1, A37, FINSEQ_1:def 3;

            then

             A46: 1 <= i1 by FINSEQ_1: 1;

            then

             A47: j1 in ( Seg ((i1 -' 1) + 1)) by A41, XREAL_1: 235;

            

             A48: i1 <= (i + 1) by A45, FINSEQ_1: 1;

            then

             A49: ((i + 1) - i1) >= 0 by XREAL_1: 48;

            

             A50: (i + 1) >= j1 by A48, A42, XXREAL_0: 2;

            then

             A51: ((i + 1) - j1) >= 0 by XREAL_1: 48;

            

            then

             A52: (((i + 1) -' i2) + 1) = (((i + 1) - i2) + 1) by XREAL_0:def 2

            .= ((i + (1 + 1)) - i2);

            ((i + 1) -' j1) >= (i1 -' j1) by A48, NAT_D: 42;

            then (((i + 1) -' j1) + 1) >= ((i1 -' j1) + 1) by XREAL_1: 6;

            then ((((i + 1) -' j1) + 1) - ((i1 -' j1) + 1)) >= 0 by XREAL_1: 48;

            

            then

             A53: ((((i + 1) -' j1) + 1) -' ((i1 -' j1) + 1)) = ((((i + 1) -' j1) + 1) - ((i1 -' j1) + 1)) by XREAL_0:def 2

            .= ((((i + 1) -' j1) + 1) - ((i1 - j1) + 1)) by A43, XREAL_0:def 2

            .= ((((i + 1) - j1) + 1) - ((1 - j1) + i1)) by A51, XREAL_0:def 2

            .= ((i + 1) -' i1) by A49, XREAL_0:def 2;

            1 <= j1 by A41, FINSEQ_1: 1;

            then

             A54: i2 in ( Seg (i + 1)) by A50, FINSEQ_1: 1;

            then

             A55: (g2 . i2) = ((((i + 2) -' i2) |-> <*(i2 -' 1)*>) ^^ ( Decomp (((i + 1) -' i2),2))) by A5, A6;

            (i1 -' j1) <= ((i + 1) -' i2) by A48, NAT_D: 42;

            then 1 <= ((i1 -' j1) + 1) & ((i1 -' j1) + 1) <= (((i + 1) -' i2) + 1) by NAT_1: 11, XREAL_1: 6;

            then

             A56: j2 in ( Seg (((i + 1) -' i2) + 1)) by FINSEQ_1: 1;

            then

             A57: j2 in ( Seg ((i + 2) -' i2)) by A52, XREAL_0:def 2;

            ( dom ( Decomp (((i + 1) -' i2),2))) = ( Seg ( len ( Decomp (((i + 1) -' i2),2)))) by FINSEQ_1:def 3

            .= ( Seg (((i + 1) -' i2) + 1)) by Th9

            .= ( Seg ((i + 2) -' i2)) by A52, XREAL_0:def 2;

            then ( dom (g2 . i2)) = (( Seg ((i + 2) -' i2)) /\ ( Seg ((i + 2) -' i2))) by A55, A44, PRE_POLY:def 4;

            then

             A58: j2 in ( dom (g2 . i2)) by A56, A52, XREAL_0:def 2;

            

            then

             A59: ((g2 . i2) . j2) = (((((i + 2) -' i2) |-> <*(i2 -' 1)*>) . j2) ^ (( Decomp (((i + 1) -' i2),2)) . j2)) by A55, PRE_POLY:def 4

            .= ( <*(i2 -' 1)*> ^ (( Decomp (((i + 1) -' i2),2)) . j2)) by A57, FUNCOP_1: 7

            .= ( <*(i2 -' 1)*> ^ <*(j2 -' 1), ((((i + 1) -' i2) + 1) -' j2)*>) by A56, Th14

            .= <*(j1 -' 1), (((i1 -' j1) + 1) -' 1), ((((i + 1) -' j1) + 1) -' ((i1 -' j1) + 1))*> by FINSEQ_1: 43

            .= <*(j1 -' 1), (i1 -' j1), ((i + 1) -' i1)*> by A53, NAT_D: 34;

            i2 in ( dom g2) by A4, A54, FINSEQ_1:def 3;

            then

             A60: (( Sum ( Card (g2 | (i2 -' 1)))) + j2) in ( dom ( FlattenSeq g2)) & ((g2 . i2) . j2) = (( FlattenSeq g2) . (( Sum ( Card (g2 | (i2 -' 1)))) + j2)) by A58, PRE_POLY: 30;

            y = ((( Decomp ((i1 -' 1),2)) . j1) ^ ((i1 |-> <*((i + 1) -' i1)*>) . j1)) by A36, A38, A39, A40, PRE_POLY:def 4

            .= ((( Decomp ((i1 -' 1),2)) . j1) ^ <*((i + 1) -' i1)*>) by A41, FUNCOP_1: 7

            .= ( <*(j1 -' 1), (((i1 -' 1) + 1) -' j1)*> ^ <*((i + 1) -' i1)*>) by A47, Th14

            .= ( <*(j1 -' 1), (i1 -' j1)*> ^ <*((i + 1) -' i1)*>) by A46, XREAL_1: 235

            .= <*(j1 -' 1), (i1 -' j1), ((i + 1) -' i1)*> by FINSEQ_1: 43;

            hence thesis by A59, A60, FUNCT_1:def 3;

          end;

          assume y in ( rng ( FlattenSeq g2));

          then

          consider x be Nat such that

           A61: x in ( dom ( FlattenSeq g2)) and

           A62: (( FlattenSeq g2) . x) = y by FINSEQ_2: 10;

          consider i1,j1 be Nat such that

           A63: i1 in ( dom g2) and

           A64: j1 in ( dom (g2 . i1)) and x = (( Sum ( Card (g2 | (i1 -' 1)))) + j1) and

           A65: ((g2 . i1) . j1) = (( FlattenSeq g2) . x) by A61, PRE_POLY: 29;

          

           A66: (g2 . i1) = ((((i + 2) -' i1) |-> <*(i1 -' 1)*>) ^^ ( Decomp (((i + 1) -' i1),2))) by A5, A63;

          then j1 in (( dom (((i + 2) -' i1) |-> <*(i1 -' 1)*>)) /\ ( dom ( Decomp (((i + 1) -' i1),2)))) by A64, PRE_POLY:def 4;

          then j1 in ( dom (((i + 2) -' i1) |-> <*(i1 -' 1)*>)) by XBOOLE_0:def 4;

          then

           A67: j1 in ( Seg ((i + 2) -' i1)) by FUNCOP_1: 13;

          then j1 >= 1 by FINSEQ_1: 1;

          then

           A68: (j1 - 1) >= 0 by XREAL_1: 48;

          

           A69: i1 in ( Seg (i + 1)) by A4, A63, FINSEQ_1:def 3;

          then i1 <= (i + 1) by FINSEQ_1: 1;

          then

           A70: ((i + 1) - i1) >= 0 by XREAL_1: 48;

          

          then (((i + 1) -' i1) + 1) = (((i + 1) - i1) + 1) by XREAL_0:def 2

          .= ((i + (1 + 1)) - i1);

          then

           A71: j1 in ( Seg (((i + 1) -' i1) + 1)) by A67, XREAL_0:def 2;

          then

           A72: j1 <= (((i + 1) -' i1) + 1) by FINSEQ_1: 1;

          then

           A73: ((((i + 1) -' i1) + 1) - j1) >= 0 by XREAL_1: 48;

          j1 <= (((i + 1) - i1) + 1) by A70, A72, XREAL_0:def 2;

          then (j1 - 1) <= ((i + 1) - i1) by XREAL_1: 20;

          then

           A74: ((j1 - 1) + i1) <= (i + 1) by XREAL_1: 19;

          then

           A75: ((j1 -' 1) + i1) <= (i + 1) by A68, XREAL_0:def 2;

          ((i + 1) - ((j1 - 1) + i1)) >= 0 by A74, XREAL_1: 48;

          then ((i + 1) - ((j1 -' 1) + i1)) >= 0 by A68, XREAL_0:def 2;

          

          then

           A76: ((i + 1) -' ((j1 -' 1) + i1)) = ((i + 1) - ((j1 -' 1) + i1)) by XREAL_0:def 2

          .= ((i + 1) - ((j1 - 1) + i1)) by A68, XREAL_0:def 2

          .= ((((i + 1) - i1) + 1) - j1)

          .= ((((i + 1) -' i1) + 1) - j1) by A70, XREAL_0:def 2

          .= ((((i + 1) -' i1) + 1) -' j1) by A73, XREAL_0:def 2;

          

           A77: y = (((((i + 2) -' i1) |-> <*(i1 -' 1)*>) . j1) ^ (( Decomp (((i + 1) -' i1),2)) . j1)) by A62, A64, A65, A66, PRE_POLY:def 4

          .= ( <*(i1 -' 1)*> ^ (( Decomp (((i + 1) -' i1),2)) . j1)) by A67, FUNCOP_1: 7

          .= ( <*(i1 -' 1)*> ^ <*(j1 -' 1), ((((i + 1) -' i1) + 1) -' j1)*>) by A71, Th14

          .= <*(i1 -' 1), (j1 -' 1), ((((i + 1) -' i1) + 1) -' j1)*> by FINSEQ_1: 43;

          set j2 = i1;

          set i2 = ((j1 -' 1) + i1);

          

           A78: ((j1 -' 1) + i1) >= i1 by NAT_1: 11;

          

           A79: ( dom (i2 |-> <*((i + 1) -' i2)*>)) = ( Seg i2) by FUNCOP_1: 13;

          

           A80: 1 <= i1 by A69, FINSEQ_1: 1;

          then

           A81: j2 in ( Seg i2) by A78, FINSEQ_1: 1;

          then

           A82: j2 in ( Seg ((i2 -' 1) + 1)) by A80, A78, XREAL_1: 235, XXREAL_0: 2;

          ((j1 -' 1) + i1) >= 1 by A80, A78, XXREAL_0: 2;

          then

           A83: i2 in ( Seg (i + 1)) by A75, FINSEQ_1: 1;

          then

           A84: (f2 . i2) = (( Decomp ((i2 -' 1),2)) ^^ (i2 |-> <*((i + 1) -' i2)*>)) by A2, A3;

          ( dom ( Decomp ((i2 -' 1),2))) = ( Seg ( len ( Decomp ((i2 -' 1),2)))) by FINSEQ_1:def 3

          .= ( Seg ((i2 -' 1) + 1)) by Th9

          .= ( Seg i2) by A80, A78, XREAL_1: 235, XXREAL_0: 2;

          then ( dom (f2 . i2)) = (( Seg i2) /\ ( Seg i2)) by A84, A79, PRE_POLY:def 4;

          then

           A85: j2 in ( dom (f2 . i2)) by A80, A78, FINSEQ_1: 1;

          i2 in ( dom f2) by A1, A83, FINSEQ_1:def 3;

          then

           A86: (( Sum ( Card (f2 | (i2 -' 1)))) + j2) in ( dom ( FlattenSeq f2)) & ((f2 . i2) . j2) = (( FlattenSeq f2) . (( Sum ( Card (f2 | (i2 -' 1)))) + j2)) by A85, PRE_POLY: 30;

          ((f2 . i2) . j2) = ((( Decomp ((i2 -' 1),2)) . j2) ^ ((i2 |-> <*((i + 1) -' i2)*>) . j2)) by A84, A85, PRE_POLY:def 4

          .= ((( Decomp ((i2 -' 1),2)) . j2) ^ <*((i + 1) -' i2)*>) by A81, FUNCOP_1: 7

          .= ( <*(j2 -' 1), (((i2 -' 1) + 1) -' j2)*> ^ <*((i + 1) -' i2)*>) by A82, Th14

          .= <*(j2 -' 1), (((i2 -' 1) + 1) -' j2), ((i + 1) -' i2)*> by FINSEQ_1: 43

          .= <*(i1 -' 1), (((j1 -' 1) + i1) -' i1), ((i + 1) -' ((j1 -' 1) + i1))*> by A80, A78, XREAL_1: 235, XXREAL_0: 2

          .= <*(i1 -' 1), (j1 -' 1), ((((i + 1) -' i1) + 1) -' j1)*> by A76, NAT_D: 34;

          hence y in ( rng ( FlattenSeq f2)) by A77, A86, FUNCT_1:def 3;

        end;

        then

         A87: ( rng ( FlattenSeq f2)) = ( rng ( FlattenSeq g2)) by TARSKI: 2;

        now

          

           A88: ((i + 1) + 1) >= (i + 1) by NAT_1: 11;

          let x,y be object;

          assume that

           A89: x in ( dom ( FlattenSeq g2)) and

           A90: y in ( dom ( FlattenSeq g2)) and

           A91: (( FlattenSeq g2) . x) = (( FlattenSeq g2) . y);

          consider i1,j1 be Nat such that

           A92: i1 in ( dom g2) and

           A93: j1 in ( dom (g2 . i1)) and

           A94: x = (( Sum ( Card (g2 | (i1 -' 1)))) + j1) and

           A95: ((g2 . i1) . j1) = (( FlattenSeq g2) . x) by A89, PRE_POLY: 29;

          

           A96: (g2 . i1) = ((((i + 2) -' i1) |-> <*(i1 -' 1)*>) ^^ ( Decomp (((i + 1) -' i1),2))) by A5, A92;

          i1 in ( Seg (i + 1)) by A4, A92, FINSEQ_1:def 3;

          then

           A97: i1 <= (i + 1) by FINSEQ_1: 1;

          then ((i + 1) + 1) >= i1 by A88, XXREAL_0: 2;

          then

           A98: ((i + 2) - i1) >= 0 by XREAL_1: 48;

          ((i + 1) - i1) >= 0 by A97, XREAL_1: 48;

          

          then

           A99: (((i + 1) -' i1) + 1) = (((i + 1) - i1) + 1) by XREAL_0:def 2

          .= ((i + 2) -' i1) by A98, XREAL_0:def 2;

          

           A100: ( dom (((i + 2) -' i1) |-> <*(i1 -' 1)*>)) = ( Seg ((i + 2) -' i1)) by FUNCOP_1: 13;

          ( dom ( Decomp (((i + 1) -' i1),2))) = ( Seg ( len ( Decomp (((i + 1) -' i1),2)))) by FINSEQ_1:def 3

          .= ( Seg ((i + 2) -' i1)) by A99, Th9;

          

          then

           A101: ( dom (g2 . i1)) = (( Seg ((i + 2) -' i1)) /\ ( Seg ((i + 2) -' i1))) by A96, A100, PRE_POLY:def 4

          .= ( Seg ((i + 2) -' i1));

          j1 in ( Seg ( len (g2 . i1))) by A93, FINSEQ_1:def 3;

          then

           A102: j1 >= 1 by FINSEQ_1: 1;

          consider i2,j2 be Nat such that

           A103: i2 in ( dom g2) and

           A104: j2 in ( dom (g2 . i2)) and

           A105: y = (( Sum ( Card (g2 | (i2 -' 1)))) + j2) and

           A106: ((g2 . i2) . j2) = (( FlattenSeq g2) . y) by A90, PRE_POLY: 29;

          

           A107: (g2 . i2) = ((((i + 2) -' i2) |-> <*(i2 -' 1)*>) ^^ ( Decomp (((i + 1) -' i2),2))) by A5, A103;

          i2 in ( Seg (i + 1)) by A4, A103, FINSEQ_1:def 3;

          then

           A108: i2 <= (i + 1) by FINSEQ_1: 1;

          then ((i + 1) + 1) >= i2 by A88, XXREAL_0: 2;

          then

           A109: ((i + 2) - i2) >= 0 by XREAL_1: 48;

          ((i + 1) - i2) >= 0 by A108, XREAL_1: 48;

          

          then

           A110: (((i + 1) -' i2) + 1) = (((i + 1) - i2) + 1) by XREAL_0:def 2

          .= ((i + 2) -' i2) by A109, XREAL_0:def 2;

          

           A111: ( dom (((i + 2) -' i2) |-> <*(i2 -' 1)*>)) = ( Seg ((i + 2) -' i2)) by FUNCOP_1: 13;

          ( dom ( Decomp (((i + 1) -' i2),2))) = ( Seg ( len ( Decomp (((i + 1) -' i2),2)))) by FINSEQ_1:def 3

          .= ( Seg ((i + 2) -' i2)) by A110, Th9;

          

          then

           A112: ( dom (g2 . i2)) = (( Seg ((i + 2) -' i2)) /\ ( Seg ((i + 2) -' i2))) by A107, A111, PRE_POLY:def 4

          .= ( Seg ((i + 2) -' i2));

          

           A113: ((g2 . i2) . j2) = (((((i + 2) -' i2) |-> <*(i2 -' 1)*>) . j2) ^ (( Decomp (((i + 1) -' i2),2)) . j2)) by A104, A107, PRE_POLY:def 4

          .= ( <*(i2 -' 1)*> ^ (( Decomp (((i + 1) -' i2),2)) . j2)) by A104, A112, FUNCOP_1: 7

          .= ( <*(i2 -' 1)*> ^ <*(j2 -' 1), ((((i + 1) -' i2) + 1) -' j2)*>) by A104, A110, A112, Th14

          .= <*(i2 -' 1), (j2 -' 1), ((((i + 1) -' i2) + 1) -' j2)*> by FINSEQ_1: 43;

          j2 in ( Seg ( len (g2 . i2))) by A104, FINSEQ_1:def 3;

          then

           A114: j2 >= 1 by FINSEQ_1: 1;

          ((g2 . i1) . j1) = (((((i + 2) -' i1) |-> <*(i1 -' 1)*>) . j1) ^ (( Decomp (((i + 1) -' i1),2)) . j1)) by A93, A96, PRE_POLY:def 4

          .= ( <*(i1 -' 1)*> ^ (( Decomp (((i + 1) -' i1),2)) . j1)) by A93, A101, FUNCOP_1: 7

          .= ( <*(i1 -' 1)*> ^ <*(j1 -' 1), ((((i + 1) -' i1) + 1) -' j1)*>) by A93, A99, A101, Th14

          .= <*(i1 -' 1), (j1 -' 1), ((((i + 1) -' i1) + 1) -' j1)*> by FINSEQ_1: 43;

          then (i1 -' 1) = (i2 -' 1) & (j1 -' 1) = (j2 -' 1) by A91, A95, A106, A113, FINSEQ_1: 78;

          hence x = y by A94, A105, A102, A114, XREAL_1: 234;

        end;

        then

         A115: ( FlattenSeq g2) is one-to-one by FUNCT_1:def 4;

        

         A116: w is FinSequence of REAL by FINSEQ_2: 24, NUMBERS: 19;

        ( len ( FlattenSeq f2)) = ( Sum ( Card f2)) by PRE_POLY: 27

        .= ( Sum w) by A33, Th3, A116

        .= ( len ( FlattenSeq g2)) by PRE_POLY: 27;

        then ( FlattenSeq f2) is one-to-one by A87, A115, FINSEQ_4: 61;

        then (( FlattenSeq f2),( FlattenSeq g2)) are_fiberwise_equipotent by A87, A115, RFINSEQ: 26;

        then

        consider P be Permutation of ( dom ( FlattenSeq g2)) such that

         A117: ( FlattenSeq f2) = (( FlattenSeq g2) * P) by RFINSEQ: 4;

        

         A118: ( dom ( Card g2)) = ( dom g2) by CARD_3:def 2;

        then

         A119: ( len ( Card g2)) = ( len g2) by FINSEQ_3: 29;

        consider r1 be FinSequence of the carrier of L such that

         A120: ( len r1) = (i + 1) and

         A121: (((p *' q) *' r) . i) = ( Sum r1) and

         A122: for k be Element of NAT st k in ( dom r1) holds (r1 . k) = (((p *' q) . (k -' 1)) * (r . ((i + 1) -' k))) by Def9;

        

         A123: ( dom r1) = ( Seg (i + 1)) by A120, FINSEQ_1:def 3;

        deffunc F( Nat) = ( prodTuples (p,q,r,(f2 /. $1) qua Element of ((3 -tuples_on NAT ) * )));

        consider f1 be FinSequence of (the carrier of L * ) such that

         A124: ( len f1) = ( len f2) and

         A125: for k be Nat st k in ( dom f1) holds (f1 . k) = F(k) from FINSEQ_2:sch 1;

        

         A126: ( dom f1) = ( Seg ( len f2)) by A124, FINSEQ_1:def 3;

         A127:

        now

          let j be Nat;

          

           A128: ( dom (j |-> <*((i + 1) -' j)*>)) = ( Seg j) by FUNCOP_1: 13;

          consider r3 be FinSequence of the carrier of L such that

           A129: ( len r3) = ((j -' 1) + 1) and

           A130: ((p *' q) . (j -' 1)) = ( Sum r3) and

           A131: for k be Element of NAT st k in ( dom r3) holds (r3 . k) = ((p . (k -' 1)) * (q . (((j -' 1) + 1) -' k))) by Def9;

          assume

           A132: j in ( dom r1);

          then

           A133: 1 <= j by A123, FINSEQ_1: 1;

          then

           A134: ( len r3) = j by A129, XREAL_1: 235;

          ( len ( Decomp ((j -' 1),2))) = ((j -' 1) + 1) by Th9

          .= j by A133, XREAL_1: 235;

          then

           A135: ( dom ( Decomp ((j -' 1),2))) = ( Seg j) by FINSEQ_1:def 3;

          

           A136: ( dom r1) = ( dom f1) by A120, A1, A124, FINSEQ_3: 29;

          

          then

           A137: (f1 /. j) = (f1 . j) by A132, PARTFUN1:def 6

          .= ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) by A1, A125, A126, A123, A132;

          ( dom f1) = ( dom f2) by A124, FINSEQ_3: 29;

          

          then

           A138: (f2 /. j) = (f2 . j) by A132, A136, PARTFUN1:def 6

          .= (( Decomp ((j -' 1),2)) ^^ (j |-> <*((i + 1) -' j)*>)) by A2, A3, A123, A132;

          

          then

           A139: ( dom (f2 /. j)) = (( dom ( Decomp ((j -' 1),2))) /\ ( dom (j |-> <*((i + 1) -' j)*>))) by PRE_POLY:def 4

          .= ( Seg j) by A135, A128;

          

           A140: ( len ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * )))) = ( len (f2 /. j) qua Element of ((3 -tuples_on NAT ) * )) by Def5

          .= j by A132, A139, FINSEQ_1:def 3;

          then

           A141: ( dom ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * )))) = ( Seg j) by FINSEQ_1:def 3;

          

           A142: ( dom (r3 * (r . ((i + 1) -' j)))) = ( dom r3) by POLYNOM1:def 2;

           A143:

          now

            let k be Nat;

            assume

             A144: k in ( dom ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * ))));

            

            then

             A145: ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) = ((f2 /. j) . k) by A139, A141, PARTFUN1:def 6

            .= ((( Decomp ((j -' 1),2)) . k) ^ ((j |-> <*((i + 1) -' j)*>) . k)) by A138, A139, A141, A144, PRE_POLY:def 4

            .= ( <*(k -' 1), (((j -' 1) + 1) -' k)*> ^ ((j |-> <*((i + 1) -' j)*>) . k)) by A129, A134, A141, A144, Th14

            .= ( <*(k -' 1), (((j -' 1) + 1) -' k)*> ^ <*((i + 1) -' j)*>) by A141, A144, FUNCOP_1: 7

            .= <*(k -' 1), (((j -' 1) + 1) -' k), ((i + 1) -' j)*> by FINSEQ_1: 43;

            1 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 1 in ( Seg ( len ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A145, FINSEQ_1: 45;

            then 1 in ( dom ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A146: (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 1) = (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) . 1) by PARTFUN1:def 6

            .= (k -' 1) by A145, FINSEQ_1: 45;

            

             A147: k in ( dom r3) by A134, A141, A144, FINSEQ_1:def 3;

            

            then

             A148: (r3 /. k) = (r3 . k) by PARTFUN1:def 6

            .= ((p . (k -' 1)) * (q . (((j -' 1) + 1) -' k))) by A131, A147;

            3 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 3 in ( Seg ( len ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A145, FINSEQ_1: 45;

            then 3 in ( dom ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A149: (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 3) = (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) . 3) by PARTFUN1:def 6

            .= ((i + 1) -' j) by A145, FINSEQ_1: 45;

            2 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 2 in ( Seg ( len ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A145, FINSEQ_1: 45;

            then 2 in ( dom ((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A150: (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 2) = (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) . 2) by PARTFUN1:def 6

            .= (((j -' 1) + 1) -' k) by A145, FINSEQ_1: 45;

            

            thus (( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) . k) = (((p . (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 1)) * (q . (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 2))) * (r . (((f2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 3))) by A139, A141, A144, Def5

            .= ((r3 * (r . ((i + 1) -' j))) /. k) by A147, A148, A146, A150, A149, POLYNOM1:def 2

            .= ((r3 * (r . ((i + 1) -' j))) . k) by A142, A147, PARTFUN1:def 6;

          end;

          ( len f1) = ( len ( Sum f1)) by MATRLIN:def 6;

          then

           A151: ( dom f1) = ( dom ( Sum f1)) by FINSEQ_3: 29;

          ( len (r3 * (r . ((i + 1) -' j)))) = ( len r3) by A142, FINSEQ_3: 29;

          then

           A152: ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) = (r3 * (r . ((i + 1) -' j))) by A140, A134, A143, FINSEQ_2: 9;

          (((p *' q) . (j -' 1)) * (r . ((i + 1) -' j))) = ( Sum (r3 * (r . ((i + 1) -' j)))) by A130, POLYNOM1: 13;

          

          hence (r1 . j) = ( Sum (r3 * (r . ((i + 1) -' j)))) by A122, A132

          .= (( Sum f1) /. j) by A132, A151, A136, A137, A152, MATRLIN:def 6

          .= (( Sum f1) . j) by A132, A151, A136, PARTFUN1:def 6;

        end;

        deffunc F( Nat) = ( prodTuples (p,q,r,(g2 /. $1) qua Element of ((3 -tuples_on NAT ) * )));

        consider g1 be FinSequence of (the carrier of L * ) such that

         A153: ( len g1) = ( len g2) and

         A154: for k be Nat st k in ( dom g1) holds (g1 . k) = F(k) from FINSEQ_2:sch 1;

        

         A155: ( dom g1) = ( Seg ( len g2)) by A153, FINSEQ_1:def 3;

         A156:

        now

          let j be Nat;

          

           A157: ( dom (((i + 2) -' j) |-> <*(j -' 1)*>)) = ( Seg ((i + 2) -' j)) by FUNCOP_1: 13;

          consider r3 be FinSequence of the carrier of L such that

           A158: ( len r3) = (((i + 1) -' j) + 1) and

           A159: ((q *' r) . ((i + 1) -' j)) = ( Sum r3) and

           A160: for k be Element of NAT st k in ( dom r3) holds (r3 . k) = ((q . (k -' 1)) * (r . ((((i + 1) -' j) + 1) -' k))) by Def9;

          assume

           A161: j in ( dom r2);

          then

           A162: j <= (i + 1) by A10, FINSEQ_1: 1;

          ((i + 1) + 1) >= (i + 1) by NAT_1: 11;

          then ((i + 1) + 1) >= j by A162, XXREAL_0: 2;

          then

           A163: ((i + 2) - j) >= 0 by XREAL_1: 48;

          ((i + 1) - j) >= 0 by A162, XREAL_1: 48;

          

          then

           A164: (((i + 1) -' j) + 1) = (((i + 1) - j) + 1) by XREAL_0:def 2

          .= ((i + 2) -' j) by A163, XREAL_0:def 2;

          then ( len ( Decomp (((i + 1) -' j),2))) = ((i + 2) -' j) by Th9;

          then

           A165: ( dom ( Decomp (((i + 1) -' j),2))) = ( Seg ((i + 2) -' j)) by FINSEQ_1:def 3;

          

           A166: ( dom r2) = ( dom g1) by A7, A4, A153, FINSEQ_3: 29;

          

          then

           A167: (g1 /. j) = (g1 . j) by A161, PARTFUN1:def 6

          .= ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) by A4, A154, A155, A10, A161;

          ( dom g1) = ( dom g2) by A153, FINSEQ_3: 29;

          

          then

           A168: (g2 /. j) = (g2 . j) by A161, A166, PARTFUN1:def 6

          .= ((((i + 2) -' j) |-> <*(j -' 1)*>) ^^ ( Decomp (((i + 1) -' j),2))) by A5, A6, A10, A161;

          

          then

           A169: ( dom (g2 /. j)) = (( dom (((i + 2) -' j) |-> <*(j -' 1)*>)) /\ ( dom ( Decomp (((i + 1) -' j),2)))) by PRE_POLY:def 4

          .= ( Seg ((i + 2) -' j)) by A165, A157;

          

           A170: ( len ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * )))) = ( len (g2 /. j) qua Element of ((3 -tuples_on NAT ) * )) by Def5

          .= ((i + 2) -' j) by A169, FINSEQ_1:def 3;

          then

           A171: ( dom ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * )))) = ( Seg ((i + 2) -' j)) by FINSEQ_1:def 3;

          

           A172: ( dom ((p . (j -' 1)) * r3)) = ( dom r3) by POLYNOM1:def 1;

           A173:

          now

            let k be Nat;

            assume

             A174: k in ( dom ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * ))));

            

            then

             A175: ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) = ((g2 /. j) . k) by A169, A171, PARTFUN1:def 6

            .= (((((i + 2) -' j) |-> <*(j -' 1)*>) . k) ^ (( Decomp (((i + 1) -' j),2)) . k)) by A168, A169, A171, A174, PRE_POLY:def 4

            .= (((((i + 2) -' j) |-> <*(j -' 1)*>) . k) ^ <*(k -' 1), ((((i + 1) -' j) + 1) -' k)*>) by A164, A171, A174, Th14

            .= ( <*(j -' 1)*> ^ <*(k -' 1), ((((i + 1) -' j) + 1) -' k)*>) by A171, A174, FUNCOP_1: 7

            .= <*(j -' 1), (k -' 1), ((((i + 1) -' j) + 1) -' k)*> by FINSEQ_1: 43;

            1 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 1 in ( Seg ( len ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A175, FINSEQ_1: 45;

            then 1 in ( dom ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A176: (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 1) = (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) . 1) by PARTFUN1:def 6

            .= (j -' 1) by A175, FINSEQ_1: 45;

            

             A177: k in ( dom r3) by A158, A164, A171, A174, FINSEQ_1:def 3;

            

            then

             A178: (r3 /. k) = (r3 . k) by PARTFUN1:def 6

            .= ((q . (k -' 1)) * (r . ((((i + 1) -' j) + 1) -' k))) by A160, A177;

            3 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 3 in ( Seg ( len ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A175, FINSEQ_1: 45;

            then 3 in ( dom ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A179: (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 3) = (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) . 3) by PARTFUN1:def 6

            .= ((((i + 1) -' j) + 1) -' k) by A175, FINSEQ_1: 45;

            2 in ( Seg 3) by ENUMSET1:def 1, FINSEQ_3: 1;

            then 2 in ( Seg ( len ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ))) by A175, FINSEQ_1: 45;

            then 2 in ( dom ((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k)) by FINSEQ_1:def 3;

            

            then

             A180: (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 2) = (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) . 2) by PARTFUN1:def 6

            .= (k -' 1) by A175, FINSEQ_1: 45;

            

            thus (( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) . k) = (((p . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 1)) * (q . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 2))) * (r . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 3))) by A169, A171, A174, Def5

            .= ((p . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 1)) * ((q . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 2)) * (r . (((g2 /. j) qua Element of ((3 -tuples_on NAT ) * ) /. k) qua Element of (3 -tuples_on NAT ) /. 3)))) by GROUP_1:def 3

            .= (((p . (j -' 1)) * r3) /. k) by A177, A178, A176, A180, A179, POLYNOM1:def 1

            .= (((p . (j -' 1)) * r3) . k) by A172, A177, PARTFUN1:def 6;

          end;

          ( len g1) = ( len ( Sum g1)) by MATRLIN:def 6;

          then

           A181: ( dom g1) = ( dom ( Sum g1)) by FINSEQ_3: 29;

          ( len ((p . (j -' 1)) * r3)) = ( len r3) by A172, FINSEQ_3: 29;

          then

           A182: ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) = ((p . (j -' 1)) * r3) by A158, A164, A170, A173, FINSEQ_2: 9;

          ((p . (j -' 1)) * ((q *' r) . ((i + 1) -' j))) = ( Sum ((p . (j -' 1)) * r3)) by A159, POLYNOM1: 12;

          

          hence (r2 . j) = ( Sum ((p . (j -' 1)) * r3)) by A9, A161

          .= (( Sum g1) /. j) by A161, A181, A166, A167, A182, MATRLIN:def 6

          .= (( Sum g1) . j) by A161, A181, A166, PARTFUN1:def 6;

        end;

        

         A183: ( dom ( Card g2)) = ( Seg (i + 1)) by A4, A118, FINSEQ_1:def 3;

         A184:

        now

          let j be Nat;

          assume

           A185: j in ( dom ( Card g2));

          then

           A186: j in ( dom g1) by A4, A153, A183, FINSEQ_1:def 3;

          (g1 . j) = ( prodTuples (p,q,r,(g2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) by A4, A154, A155, A183, A185;

          

          then

           A187: ( len (g1 . j)) = ( len (g2 /. j)) by Def5

          .= ( len (g2 . j)) by A118, A185, PARTFUN1:def 6;

          

          thus (( Card g2) . j) = ( len (g2 . j)) by A118, A185, CARD_3:def 2

          .= (( Card g1) . j) by A186, A187, CARD_3:def 2;

        end;

        

         A188: ( dom ( Card g1)) = ( dom g1) by CARD_3:def 2;

        then ( len ( Card g1)) = ( len g1) by FINSEQ_3: 29;

        then

         A189: ( Card g2) = ( Card g1) by A153, A119, A184, FINSEQ_2: 9;

        then

         A190: ( len ( FlattenSeq g2)) = ( len ( FlattenSeq g1)) by PRE_POLY: 28;

        then

         A191: ( dom ( FlattenSeq g2)) = ( dom ( FlattenSeq g1)) by FINSEQ_3: 29;

        then

        reconsider P as Permutation of ( dom ( FlattenSeq g1));

        

         A192: ( dom ( FlattenSeq g1)) = ( Seg ( len ( FlattenSeq g1))) by FINSEQ_1:def 3;

         A193:

        now

          let j be Nat;

          assume

           A194: j in ( dom ( FlattenSeq g1));

          then

          consider i1,j1 be Nat such that

           A195: i1 in ( dom g1) and

           A196: j1 in ( dom (g1 . i1)) and

           A197: j = (( Sum ( Card (g1 | (i1 -' 1)))) + j1) and

           A198: ((g1 . i1) . j1) = (( FlattenSeq g1) . j) by PRE_POLY: 29;

          

           A199: j in ( dom ( FlattenSeq g2)) by A190, A192, A194, FINSEQ_1:def 3;

          then

          consider i2,j2 be Nat such that

           A200: i2 in ( dom g2) & j2 in ( dom (g2 . i2)) and

           A201: j = (( Sum ( Card (g2 | (i2 -' 1)))) + j2) and

           A202: ((g2 . i2) . j2) = (( FlattenSeq g2) . j) by PRE_POLY: 29;

          (( Sum (( Card g1) | (i1 -' 1))) + j1) = (( Sum ( Card (g1 | (i1 -' 1)))) + j1) by Th16

          .= (( Sum (( Card g2) | (i2 -' 1))) + j2) by A197, A201, Th16;

          then

           A203: i1 = i2 & j1 = j2 by A189, A195, A196, A200, Th21;

          i1 in ( Seg ( len g2)) by A153, A195, FINSEQ_1:def 3;

          then

           A204: i1 in ( dom g2) by FINSEQ_1:def 3;

          

           A205: (g1 . i1) = ( prodTuples (p,q,r,(g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ))) by A154, A195;

          

          then ( len (g1 . i1)) = ( len (g2 /. i1)) by Def5

          .= ( len (g2 . i1)) by A188, A118, A189, A195, PARTFUN1:def 6;

          then j1 in ( Seg ( len (g2 . i1))) by A196, FINSEQ_1:def 3;

          then

           A206: j1 in ( Seg ( len (g2 /. i1))) by A204, PARTFUN1:def 6;

          then j1 in ( dom (g2 /. i1)) by FINSEQ_1:def 3;

          

          then

           A207: ((g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) = ((g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) . j1) by PARTFUN1:def 6

          .= ((g2 . i1) . j1) by A204, PARTFUN1:def 6

          .= (( FlattenSeq g2) /. j) by A199, A202, A203, PARTFUN1:def 6;

          ( Seg ( len (g2 /. i1))) = ( dom (g2 /. i1)) by FINSEQ_1:def 3;

          

          hence (( FlattenSeq g1) . j) = (((p . (((g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 1)) * (q . (((g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 2))) * (r . (((g2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 3))) by A198, A205, A206, Def5

          .= (( prodTuples (p,q,r,( FlattenSeq g2))) . j) by A191, A194, A207, Def5;

        end;

        

         A208: ( dom ( Card f2)) = ( dom f2) by CARD_3:def 2;

        then

         A209: ( len ( Card f2)) = ( len f2) by FINSEQ_3: 29;

        

         A210: ( dom ( Card f2)) = ( Seg (i + 1)) by A1, A208, FINSEQ_1:def 3;

         A211:

        now

          let j be Nat;

          assume

           A212: j in ( dom ( Card f2));

          then

           A213: j in ( dom f1) by A1, A124, A210, FINSEQ_1:def 3;

          (f1 . j) = ( prodTuples (p,q,r,(f2 /. j) qua Element of ((3 -tuples_on NAT ) * ))) by A1, A125, A126, A210, A212;

          

          then

           A214: ( len (f1 . j)) = ( len (f2 /. j)) by Def5

          .= ( len (f2 . j)) by A208, A212, PARTFUN1:def 6;

          

          thus (( Card f2) . j) = ( len (f2 . j)) by A208, A212, CARD_3:def 2

          .= (( Card f1) . j) by A213, A214, CARD_3:def 2;

        end;

        

         A215: ( dom ( Card f1)) = ( dom f1) by CARD_3:def 2;

        then ( len ( Card f1)) = ( len f1) by FINSEQ_3: 29;

        then

         A216: ( Card f2) = ( Card f1) by A124, A209, A211, FINSEQ_2: 9;

        then

         A217: ( len ( FlattenSeq f1)) = ( len ( FlattenSeq f2)) by PRE_POLY: 28;

        

         A218: ( Seg ( len ( FlattenSeq f1))) = ( dom ( FlattenSeq f1)) by FINSEQ_1:def 3;

         A219:

        now

          let j be Nat;

          assume

           A220: j in ( dom ( FlattenSeq f1));

          then

          consider i1,j1 be Nat such that

           A221: i1 in ( dom f1) and

           A222: j1 in ( dom (f1 . i1)) and

           A223: j = (( Sum ( Card (f1 | (i1 -' 1)))) + j1) and

           A224: ((f1 . i1) . j1) = (( FlattenSeq f1) . j) by PRE_POLY: 29;

          

           A225: j in ( dom ( FlattenSeq f2)) by A217, A34, A220, FINSEQ_1:def 3;

          then

          consider i2,j2 be Nat such that

           A226: i2 in ( dom f2) & j2 in ( dom (f2 . i2)) and

           A227: j = (( Sum ( Card (f2 | (i2 -' 1)))) + j2) and

           A228: ((f2 . i2) . j2) = (( FlattenSeq f2) . j) by PRE_POLY: 29;

          (( Sum (( Card f1) | (i1 -' 1))) + j1) = (( Sum ( Card (f1 | (i1 -' 1)))) + j1) by Th16

          .= (( Sum (( Card f2) | (i2 -' 1))) + j2) by A223, A227, Th16;

          then

           A229: i1 = i2 & j1 = j2 by A216, A221, A222, A226, Th21;

          i1 in ( Seg ( len f2)) by A124, A221, FINSEQ_1:def 3;

          then

           A230: i1 in ( dom f2) by FINSEQ_1:def 3;

          

           A231: (f1 . i1) = ( prodTuples (p,q,r,(f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ))) by A125, A221;

          

          then ( len (f1 . i1)) = ( len (f2 /. i1)) by Def5

          .= ( len (f2 . i1)) by A215, A208, A216, A221, PARTFUN1:def 6;

          then j1 in ( Seg ( len (f2 . i1))) by A222, FINSEQ_1:def 3;

          then

           A232: j1 in ( Seg ( len (f2 /. i1))) by A230, PARTFUN1:def 6;

          then j1 in ( dom (f2 /. i1)) by FINSEQ_1:def 3;

          

          then

           A233: ((f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) = ((f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) . j1) by PARTFUN1:def 6

          .= ((f2 . i1) . j1) by A230, PARTFUN1:def 6

          .= (( FlattenSeq f2) /. j) by A225, A228, A229, PARTFUN1:def 6;

          ( Seg ( len (f2 /. i1))) = ( dom (f2 /. i1)) by FINSEQ_1:def 3;

          

          hence (( FlattenSeq f1) . j) = (((p . (((f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 1)) * (q . (((f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 2))) * (r . (((f2 /. i1) qua Element of ((3 -tuples_on NAT ) * ) /. j1) qua Element of (3 -tuples_on NAT ) /. 3))) by A224, A231, A232, Def5

          .= (((p . ((( FlattenSeq f2) /. j) /. 1)) * (q . ((( FlattenSeq f2) /. j) /. 2))) * (r . ((( FlattenSeq f2) /. j) /. 3))) by A233

          .= (( prodTuples (p,q,r,( FlattenSeq f2))) . j) by A217, A34, A218, A220, Def5;

        end;

        ( len ( Sum g1)) = (i + 1) by A4, A153, MATRLIN:def 6;

        then r2 = ( Sum g1) by A7, A156, FINSEQ_2: 9;

        then

         A234: ( Sum r2) = ( Sum ( FlattenSeq g1)) by POLYNOM1: 14;

        ( len ( FlattenSeq g1)) = ( len ( prodTuples (p,q,r,( FlattenSeq g2)))) by A190, Def5;

        then

         A235: ( FlattenSeq g1) = ( prodTuples (p,q,r,( FlattenSeq g2))) by A193, FINSEQ_2: 9;

        ( len ( FlattenSeq f1)) = ( len ( prodTuples (p,q,r,( FlattenSeq f2)))) by A217, Def5;

        then ( FlattenSeq f1) = ( prodTuples (p,q,r,( FlattenSeq f2))) by A219, FINSEQ_2: 9;

        then

         A236: ( FlattenSeq f1) = (( FlattenSeq g1) * P) by A235, A117, Th15;

        ( len ( Sum f1)) = (i + 1) by A1, A124, MATRLIN:def 6;

        then r1 = ( Sum f1) by A120, A127, FINSEQ_2: 9;

        then ( Sum r1) = ( Sum ( FlattenSeq f1)) by POLYNOM1: 14;

        hence (((p *' q) *' r) . i) = ((p *' (q *' r)) . i) by A121, A8, A234, A236, RLVECT_2: 7;

      end;

      hence thesis;

    end;

    definition

      let L be Abelian add-associative right_zeroed commutative non empty doubleLoopStr;

      let p,q be sequence of L;

      :: original: *'

      redefine

      func p *' q;

      commutativity

      proof

        let p,q be sequence of L;

        now

          let i be Element of NAT ;

          consider r1 be FinSequence of the carrier of L such that

           A1: ( len r1) = (i + 1) and

           A2: ((p *' q) . i) = ( Sum r1) and

           A3: for k be Element of NAT st k in ( dom r1) holds (r1 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by Def9;

          consider r2 be FinSequence of the carrier of L such that

           A4: ( len r2) = (i + 1) and

           A5: ((q *' p) . i) = ( Sum r2) and

           A6: for k be Element of NAT st k in ( dom r2) holds (r2 . k) = ((q . (k -' 1)) * (p . ((i + 1) -' k))) by Def9;

          now

            let k be Nat;

            assume

             A7: k in ( dom r1);

            then

             A8: 1 <= k by FINSEQ_3: 25;

            then

             A9: (k - 1) >= 0 by XREAL_1: 48;

            k <= (i + 1) by A1, A7, FINSEQ_3: 25;

            then

             A10: ((i + 1) - k) >= 0 by XREAL_1: 48;

            then

            reconsider k1 = ((( len r2) - k) + 1) as Element of NAT by A4, INT_1: 3;

            

             A11: ((i + 1) -' k) = ((((i + 1) - k) + 1) - 1) by A10, XREAL_0:def 2

            .= (k1 -' 1) by A4, A10, XREAL_0:def 2;

            (1 - k) <= 0 by A8, XREAL_1: 47;

            then (i + (1 - k)) <= (i + 0 qua Nat) by XREAL_1: 6;

            then

             A12: k1 <= (i + 1) by A4, XREAL_1: 6;

            then ((i + 1) - k1) >= 0 by XREAL_1: 48;

            

            then

             A13: ((i + 1) -' k1) = ((i + 1) - ((i + 1) - (k - 1))) by A4, XREAL_0:def 2

            .= (k -' 1) by A9, XREAL_0:def 2;

            (((i + 1) - k) + 1) >= ( 0 qua Nat + 1) by A10, XREAL_1: 6;

            then

             A14: k1 in ( dom r2) by A4, A12, FINSEQ_3: 25;

            

            thus (r1 . k) = ((p . (k -' 1)) * (q . ((i + 1) -' k))) by A3, A7

            .= (r2 . ((( len r2) - k) + 1)) by A6, A14, A13, A11;

          end;

          then r1 = ( Rev r2) by A1, A4, FINSEQ_5:def 3;

          hence ((p *' q) . i) = ((q *' p) . i) by A2, A5, Th2;

        end;

        hence (p *' q) = (q *' p);

      end;

    end

    theorem :: POLYNOM3:34

    for L be add-associative right_zeroed right_complementable right-distributive non empty doubleLoopStr holds for p be sequence of L holds (p *' ( 0_. L)) = ( 0_. L)

    proof

      let L be add-associative right_zeroed right_complementable right-distributive non empty doubleLoopStr;

      let p be sequence of L;

      now

        let i be Element of NAT ;

        consider r be FinSequence of the carrier of L such that ( len r) = (i + 1) and

         A1: ((p *' ( 0_. L)) . i) = ( Sum r) and

         A2: for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (( 0_. L) . ((i + 1) -' k))) by Def9;

        now

          let k be Element of NAT ;

          assume k in ( dom r);

          

          hence (r . k) = ((p . (k -' 1)) * (( 0_. L) . ((i + 1) -' k))) by A2

          .= ((p . (k -' 1)) * ( 0. L)) by FUNCOP_1: 7

          .= ( 0. L);

        end;

        

        hence ((p *' ( 0_. L)) . i) = ( 0. L) by A1, Th1

        .= (( 0_. L) . i) by FUNCOP_1: 7;

      end;

      hence thesis;

    end;

    theorem :: POLYNOM3:35

    

     Th33: for L be add-associative right_zeroed well-unital right_complementable right-distributive non empty doubleLoopStr holds for p be sequence of L holds (p *' ( 1_. L)) = p

    proof

      let L be add-associative right_zeroed well-unital right_complementable right-distributive non empty doubleLoopStr;

      let p be sequence of L;

      now

        let i be Element of NAT ;

        consider r be FinSequence of the carrier of L such that

         A1: ( len r) = (i + 1) and

         A2: ((p *' ( 1_. L)) . i) = ( Sum r) and

         A3: for k be Element of NAT st k in ( dom r) holds (r . k) = ((p . (k -' 1)) * (( 1_. L) . ((i + 1) -' k))) by Def9;

        

         a1: r <> {} by A1;

        (i + 1) in ( Seg ( len r)) by A1, FINSEQ_1: 4;

        then

         A4: (i + 1) in ( dom r) by FINSEQ_1:def 3;

        now

          let k be Element of NAT ;

          assume k in ( dom ( Del (r,(i + 1))));

          then

           A5: k in ( Seg ( len ( Del (r,(i + 1))))) by FINSEQ_1:def 3;

          then k in ( Seg i) by A1, PRE_POLY: 12;

          then

           A6: k <= i by FINSEQ_1: 1;

          then

           A7: k < (i + 1) by NAT_1: 13;

          

           A8: ((i + 1) - k) <> 0 by A6, NAT_1: 13;

          ((i + 1) - k) >= 0 by A7, XREAL_1: 48;

          then

           A9: ((i + 1) -' k) <> 0 by A8, XREAL_0:def 2;

          1 <= k by A5, FINSEQ_1: 1;

          then k in ( Seg (i + 1)) by A7, FINSEQ_1: 1;

          then

           A10: k in ( dom r) by A1, FINSEQ_1:def 3;

          

          thus (( Del (r,(i + 1))) . k) = (r . k) by A7, FINSEQ_3: 110

          .= ((p . (k -' 1)) * (( 1_. L) . ((i + 1) -' k))) by A3, A10

          .= ((p . (k -' 1)) * ( 0. L)) by A9, Th28

          .= ( 0. L);

        end;

        then

         A11: ( Sum ( Del (r,(i + 1)))) = ( 0. L) by Th1;

        r = (( Del (r,(i + 1))) ^ <*(r . (i + 1))*>) by A1, a1, PRE_POLY: 13

        .= (( Del (r,(i + 1))) ^ <*(r /. (i + 1))*>) by A4, PARTFUN1:def 6;

        

        then

         A12: ( Sum r) = (( Sum ( Del (r,(i + 1)))) + ( Sum <*(r /. (i + 1))*>)) by RLVECT_1: 41

        .= (( Sum ( Del (r,(i + 1)))) + (r /. (i + 1))) by RLVECT_1: 44;

        (r /. (i + 1)) = (r . (i + 1)) by A4, PARTFUN1:def 6

        .= ((p . ((i + 1) -' 1)) * (( 1_. L) . ((i + 1) -' (i + 1)))) by A3, A4

        .= ((p . i) * (( 1_. L) . ((i + 1) -' (i + 1)))) by NAT_D: 34

        .= ((p . i) * (( 1_. L) . 0 )) by XREAL_1: 232

        .= ((p . i) * ( 1_ L)) by Th28

        .= (p . i);

        hence ((p *' ( 1_. L)) . i) = (p . i) by A2, A12, A11, RLVECT_1: 4;

      end;

      hence thesis;

    end;

    begin

    definition

      let L be add-associative right_zeroed right_complementable distributive non empty doubleLoopStr;

      :: POLYNOM3:def10

      func Polynom-Ring L -> strict non empty doubleLoopStr means

      : Def10: (for x be set holds x in the carrier of it iff x is Polynomial of L) & (for x,y be Element of it , p,q be sequence of L st x = p & y = q holds (x + y) = (p + q)) & (for x,y be Element of it , p,q be sequence of L st x = p & y = q holds (x * y) = (p *' q)) & ( 0. it ) = ( 0_. L) & ( 1. it ) = ( 1_. L);

      existence

      proof

        

         A1: ( 0_. L) in the set of all x where x be Polynomial of L;

        then

        reconsider Ca = the set of all x where x be Polynomial of L as non empty set;

        reconsider Ze = ( 0_. L) as Element of Ca by A1;

        defpred P[ set, set, set] means ex p,q be Polynomial of L st p = $1 & q = $2 & $3 = (p + q);

        

         A2: for x,y be Element of Ca holds ex u be Element of Ca st P[x, y, u]

        proof

          let x,y be Element of Ca;

          x in Ca;

          then

          consider p be Polynomial of L such that

           A3: x = p;

          y in Ca;

          then

          consider q be Polynomial of L such that

           A4: y = q;

          (p + q) in Ca;

          then

          reconsider u = (p + q) as Element of Ca;

          take u, p, q;

          thus thesis by A3, A4;

        end;

        consider Ad be Function of [:Ca, Ca:], Ca such that

         A5: for x,y be Element of Ca holds P[x, y, (Ad . (x,y))] from BINOP_1:sch 3( A2);

        ( 1_. L) in the set of all x where x be Polynomial of L;

        then

        reconsider Un = ( 1_. L) as Element of Ca;

        defpred P[ set, set, set] means ex p,q be Polynomial of L st p = $1 & q = $2 & $3 = (p *' q);

        

         A6: for x,y be Element of Ca holds ex u be Element of Ca st P[x, y, u]

        proof

          let x,y be Element of Ca;

          x in Ca;

          then

          consider p be Polynomial of L such that

           A7: x = p;

          y in Ca;

          then

          consider q be Polynomial of L such that

           A8: y = q;

          (p *' q) in Ca;

          then

          reconsider u = (p *' q) as Element of Ca;

          take u, p, q;

          thus thesis by A7, A8;

        end;

        consider Mu be Function of [:Ca, Ca:], Ca such that

         A9: for x,y be Element of Ca holds P[x, y, (Mu . (x,y))] from BINOP_1:sch 3( A6);

        reconsider P = doubleLoopStr (# Ca, Ad, Mu, Un, Ze #) as strict non empty doubleLoopStr;

        take P;

        thus for x be set holds x in the carrier of P iff x is Polynomial of L

        proof

          let x be set;

          thus x in the carrier of P implies x is Polynomial of L

          proof

            assume x in the carrier of P;

            then ex p be Polynomial of L st x = p;

            hence thesis;

          end;

          thus thesis;

        end;

        thus for x,y be Element of P, p,q be sequence of L st x = p & y = q holds (x + y) = (p + q)

        proof

          let x,y be Element of P;

          let p,q be sequence of L;

          assume

           A10: x = p & y = q;

          ex p1,q1 be Polynomial of L st p1 = x & q1 = y & (Ad . (x,y)) = (p1 + q1) by A5;

          hence thesis by A10;

        end;

        thus for x,y be Element of P, p,q be sequence of L st x = p & y = q holds (x * y) = (p *' q)

        proof

          let x,y be Element of P;

          let p,q be sequence of L;

          assume

           A11: x = p & y = q;

          ex p1,q1 be Polynomial of L st p1 = x & q1 = y & (Mu . (x,y)) = (p1 *' q1) by A9;

          hence thesis by A11;

        end;

        thus ( 0. P) = ( 0_. L);

        thus thesis;

      end;

      uniqueness

      proof

        let P1,P2 be strict non empty doubleLoopStr such that

         A12: for x be set holds x in the carrier of P1 iff x is Polynomial of L and

         A13: for x,y be Element of P1, p,q be sequence of L st x = p & y = q holds (x + y) = (p + q) and

         A14: for x,y be Element of P1, p,q be sequence of L st x = p & y = q holds (x * y) = (p *' q) and

         A15: ( 0. P1) = ( 0_. L) & ( 1. P1) = ( 1_. L) and

         A16: for x be set holds x in the carrier of P2 iff x is Polynomial of L and

         A17: for x,y be Element of P2, p,q be sequence of L st x = p & y = q holds (x + y) = (p + q) and

         A18: for x,y be Element of P2, p,q be sequence of L st x = p & y = q holds (x * y) = (p *' q) and

         A19: ( 0. P2) = ( 0_. L) & ( 1. P2) = ( 1_. L);

         A20:

        now

          let x be object;

          x in the carrier of P1 iff x is Polynomial of L by A12;

          hence x in the carrier of P1 iff x in the carrier of P2 by A16;

        end;

        then

         A21: the carrier of P1 = the carrier of P2 by TARSKI: 2;

         A22:

        now

          let x be Element of P1, y be Element of P2;

          reconsider y1 = y as Element of P1 by A20;

          reconsider x1 = x as Element of P2 by A20;

          reconsider p = x as sequence of L by A12;

          reconsider q = y as sequence of L by A16;

          

          thus (the multF of P1 . (x,y)) = (x * y1)

          .= (p *' q) by A14

          .= (x1 * y) by A18

          .= (the multF of P2 . (x,y));

        end;

        now

          let x be Element of P1, y be Element of P2;

          reconsider y1 = y as Element of P1 by A20;

          reconsider x1 = x as Element of P2 by A20;

          reconsider p = x as sequence of L by A12;

          reconsider q = y as sequence of L by A16;

          

          thus (the addF of P1 . (x,y)) = (x + y1)

          .= (p + q) by A13

          .= (x1 + y) by A17

          .= (the addF of P2 . (x,y));

        end;

        then the addF of P1 = the addF of P2 by A21, BINOP_1: 2;

        hence thesis by A15, A19, A21, A22, BINOP_1: 2;

      end;

    end

    registration

      let L be Abelian add-associative right_zeroed right_complementable distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> Abelian;

      coherence

      proof

        let p,q be Element of ( Polynom-Ring L);

        reconsider p1 = p, q1 = q as sequence of L by Def10;

        

        thus (p + q) = (p1 + q1) by Def10

        .= (q + p) by Def10;

      end;

    end

    registration

      let L be add-associative right_zeroed right_complementable distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> add-associative;

      coherence

      proof

        let p,q,r be Element of ( Polynom-Ring L);

        reconsider p1 = p, q1 = q, r1 = r as sequence of L by Def10;

        

         A1: (q + r) = (q1 + r1) by Def10;

        (p + q) = (p1 + q1) by Def10;

        

        hence ((p + q) + r) = ((p1 + q1) + r1) by Def10

        .= (p1 + (q1 + r1)) by Th24

        .= (p + (q + r)) by A1, Def10;

      end;

      cluster ( Polynom-Ring L) -> right_zeroed;

      coherence

      proof

        let p be Element of ( Polynom-Ring L);

        reconsider p1 = p as sequence of L by Def10;

        ( 0. ( Polynom-Ring L)) = ( 0_. L) by Def10;

        

        hence (p + ( 0. ( Polynom-Ring L))) = (p1 + ( 0_. L)) by Def10

        .= p by Th26;

      end;

      cluster ( Polynom-Ring L) -> right_complementable;

      coherence

      proof

        let p be Element of ( Polynom-Ring L);

        reconsider p1 = p as Polynomial of L by Def10;

        reconsider q = ( - p1) as Element of ( Polynom-Ring L) by Def10;

        take q;

        

        thus (p + q) = (p1 - p1) by Def10

        .= ( 0_. L) by Th27

        .= ( 0. ( Polynom-Ring L)) by Def10;

      end;

    end

    registration

      let L be Abelian add-associative right_zeroed right_complementable commutative distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> commutative;

      coherence

      proof

        let p,q be Element of ( Polynom-Ring L);

        reconsider p1 = p, q1 = q as sequence of L by Def10;

        

        thus (p * q) = (p1 *' q1) by Def10

        .= (q * p) by Def10;

      end;

    end

    registration

      let L be Abelian add-associative right_zeroed right_complementable well-unital associative distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> associative;

      coherence

      proof

        let p,q,r be Element of ( Polynom-Ring L);

        reconsider p1 = p, q1 = q, r1 = r as sequence of L by Def10;

        

         A1: (q * r) = (q1 *' r1) by Def10;

        (p * q) = (p1 *' q1) by Def10;

        

        hence ((p * q) * r) = ((p1 *' q1) *' r1) by Def10

        .= (p1 *' (q1 *' r1)) by Th31

        .= (p * (q * r)) by A1, Def10;

      end;

    end

    theorem :: POLYNOM3:36

    

     Th33a: for L be add-associative right_zeroed well-unital right_complementable left-distributive non empty doubleLoopStr holds for p be sequence of L holds (( 1_. L) *' p) = p

    proof

      let L be add-associative right_zeroed well-unital right_complementable left-distributive non empty doubleLoopStr;

      let p be sequence of L;

      now

        let i be Element of NAT ;

        consider r be FinSequence of the carrier of L such that

         A1: ( len r) = (i + 1) and

         A2: ((( 1_. L) *' p) . i) = ( Sum r) and

         A3: for k be Element of NAT st k in ( dom r) holds (r . k) = ((( 1_. L) . (k -' 1)) * (p . ((i + 1) -' k))) by Def9;

        

         A4: 1 in ( dom r) by A1, CARD_1: 27, FINSEQ_5: 6;

        now

          let k be Element of NAT ;

          

           A5: (k + 1) >= 1 by NAT_1: 11;

          assume

           A6: k in ( dom ( Del (r,1)));

          then

           A7: k <> 0 by FINSEQ_3: 25;

          ( len ( Del (r,1))) = i by A1, A4, FINSEQ_3: 109;

          then

           A8: k <= i by A6, FINSEQ_3: 25;

          then (k + 1) <= (i + 1) by XREAL_1: 6;

          then

           A9: (k + 1) in ( dom r) by A1, A5, FINSEQ_3: 25;

          ( 0 + 1) <= k by A6, FINSEQ_3: 25;

          

          hence (( Del (r,1)) . k) = (r . (k + 1)) by A1, A4, A8, FINSEQ_3: 111

          .= ((( 1_. L) . ((k + 1) -' 1)) * (p . ((i + 1) -' (k + 1)))) by A3, A9

          .= ((( 1_. L) . k) * (p . ((i + 1) -' (k + 1)))) by NAT_D: 34

          .= (( 0. L) * (p . ((i + 1) -' (k + 1)))) by A7, Th28

          .= ( 0. L);

        end;

        then

         A10: ( Sum ( Del (r,1))) = ( 0. L) by Th1;

        r = ( <*(r . 1)*> ^ ( Del (r,1))) by A1, FINSEQ_5: 86, CARD_1: 27

        .= ( <*(r /. 1)*> ^ ( Del (r,1))) by A4, PARTFUN1:def 6;

        

        then

         A11: ( Sum r) = (( Sum <*(r /. 1)*>) + ( Sum ( Del (r,1)))) by RLVECT_1: 41

        .= ((r /. 1) + ( Sum ( Del (r,1)))) by RLVECT_1: 44;

        (r /. 1) = (r . 1) by A4, PARTFUN1:def 6

        .= ((( 1_. L) . (1 -' 1)) * (p . ((i + 1) -' 1))) by A3, A4

        .= ((( 1_. L) . (1 -' 1)) * (p . i)) by NAT_D: 34

        .= ((( 1_. L) . 0 ) * (p . i)) by XREAL_1: 232

        .= (( 1_ L) * (p . i)) by Th28

        .= (p . i);

        hence ((( 1_. L) *' p) . i) = (p . i) by A2, A11, A10, RLVECT_1: 4;

      end;

      hence thesis;

    end;

     Lm2:

    now

      let L be add-associative right_zeroed right_complementable well-unital Abelian distributive non empty doubleLoopStr;

      set Pm = ( Polynom-Ring L);

      let x,e be Element of Pm;

      reconsider p = x as Polynomial of L by Def10;

      assume

       A1: e = ( 1. Pm);

      

       A2: ( 1. Pm) = ( 1_. L) by Def10;

      

      hence (x * e) = (p *' ( 1_. L)) by A1, Def10

      .= x by Th33;

      

      thus (e * x) = (( 1_. L) *' p) by A1, A2, Def10

      .= x by Th33a;

    end;

    registration

      let L be add-associative right_zeroed right_complementable well-unital Abelian distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> well-unital;

      coherence by Lm2;

    end

    registration

      let L be Abelian add-associative right_zeroed right_complementable distributive non empty doubleLoopStr;

      cluster ( Polynom-Ring L) -> distributive;

      coherence

      proof

        let p,q,r be Element of ( Polynom-Ring L);

        reconsider p1 = p, q1 = q, r1 = r as sequence of L by Def10;

        

         A1: (p * q) = (p1 *' q1) & (p * r) = (p1 *' r1) by Def10;

        (q + r) = (q1 + r1) by Def10;

        

        hence (p * (q + r)) = (p1 *' (q1 + r1)) by Def10

        .= ((p1 *' q1) + (p1 *' r1)) by Th29

        .= ((p * q) + (p * r)) by A1, Def10;

        

         A2: (q * p) = (q1 *' p1) & (r * p) = (r1 *' p1) by Def10;

        (q + r) = (q1 + r1) by Def10;

        

        hence ((q + r) * p) = ((q1 + r1) *' p1) by Def10

        .= ((q1 *' p1) + (r1 *' p1)) by Th30

        .= ((q * p) + (r * p)) by A2, Def10;

      end;

    end

    theorem :: POLYNOM3:37

    for L be add-associative right_zeroed right_complementable well-unital Abelian distributive non empty doubleLoopStr holds ( 1. ( Polynom-Ring L)) = ( 1_. L) by Def10;