Article POLYNOM6, MML version 4.99.1005

:: POLYNOM6:prednot 1 => QUOFIELD:pred 2
notation
  let a1, a2 be non empty doubleLoopStr;
  synonym a1,a2 are_isomorphic for a1 is_ringisomorph_to a2;
end;

:: POLYNOM6:prednot 2 => POLYNOM6:pred 1
definition
  let a1, a2 be non empty doubleLoopStr;
  redefine pred a1 is_ringisomorph_to a2;
  symmetry;
::  for a1, a2 being non empty doubleLoopStr
::        st a1 is_ringisomorph_to a2
::     holds a2 is_ringisomorph_to a1;
  reflexivity;
::  for a1 being non empty doubleLoopStr holds
::     a1 is_ringisomorph_to a1;
end;

:: POLYNOM6:th 1
theorem
for b1, b2 being ordinal set
for b3 being set
      st for b4 being set holds
              b4 in b3
           iff
              ex b5 being ordinal set st
                 b4 = b1 +^ b5 & b5 in b2
   holds b1 +^ b2 = b1 \/ b3;

:: POLYNOM6:funcreg 1
registration
  let a1 be ordinal set;
  let a2 be ordinal non empty set;
  cluster a1 +^ a2 -> ordinal non empty;
end;

:: POLYNOM6:funcreg 2
registration
  let a1 be ordinal set;
  let a2 be ordinal non empty set;
  cluster a2 +^ a1 -> ordinal non empty;
end;

:: POLYNOM6:th 2
theorem
for b1 being ordinal set
for b2, b3 being natural-valued finite-support ManySortedSet of b1
      st b2 < b3
   holds ex b4 being ordinal set st
      b4 in b1 &
       b2 . b4 < b3 . b4 &
       (for b5 being ordinal set
             st b5 in b4
          holds b2 . b5 = b3 . b5);

:: POLYNOM6:funcnot 1 => POLYNOM6:func 1
definition
  let a1, a2 be ordinal set;
  let a3 be Element of Bags a1;
  let a4 be Element of Bags a2;
  func A3 +^ A4 -> Element of Bags (a1 +^ a2) means
    for b1 being ordinal set holds
       (b1 in a1 implies it . b1 = a3 . b1) &
        (b1 in (a1 +^ a2) \ a1 implies it . b1 = a4 . (b1 -^ a1));
end;

:: POLYNOM6:def 1
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2
for b5 being Element of Bags (b1 +^ b2) holds
      b5 = b3 +^ b4
   iff
      for b6 being ordinal set holds
         (b6 in b1 implies b5 . b6 = b3 . b6) &
          (b6 in (b1 +^ b2) \ b1 implies b5 . b6 = b4 . (b6 -^ b1));

:: POLYNOM6:th 3
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2
      st b2 = {}
   holds b3 +^ b4 = b3;

:: POLYNOM6:th 4
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2
      st b1 = {}
   holds b3 +^ b4 = b4;

:: POLYNOM6:th 5
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2 holds
      b3 +^ b4 = EmptyBag (b1 +^ b2)
   iff
      b3 = EmptyBag b1 & b4 = EmptyBag b2;

:: POLYNOM6:th 6
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags (b1 +^ b2) holds
   ex b4 being Element of Bags b1 st
      ex b5 being Element of Bags b2 st
         b3 = b4 +^ b5;

:: POLYNOM6:th 7
theorem
for b1, b2 being ordinal set
for b3, b4 being Element of Bags b1
for b5, b6 being Element of Bags b2
      st b3 +^ b5 = b4 +^ b6
   holds b3 = b4 & b5 = b6;

:: POLYNOM6:th 8
theorem
for b1 being ordinal set
for b2 being non empty right_complementable Abelian add-associative right_zeroed associative distributive doubleLoopStr
for b3, b4, b5 being Function-like quasi_total Relation of Bags b1,the carrier of b2 holds
(b3 + b4) *' b5 = (b3 *' b5) + (b4 *' b5);

:: POLYNOM6:funcreg 3
registration
  let a1 be ordinal set;
  let a2 be non empty non trivial right_complementable Abelian add-associative right_zeroed associative well-unital distributive doubleLoopStr;
  cluster Polynom-Ring(a1,a2) -> non empty non trivial strict distributive;
end;

:: POLYNOM6:funcnot 2 => POLYNOM6:func 2
definition
  let a1, a2 be ordinal non empty set;
  let a3 be non empty non trivial right_complementable add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a4 be Function-like quasi_total finite-Support Relation of Bags a1,the carrier of Polynom-Ring(a2,a3);
  func Compress A4 -> Function-like quasi_total finite-Support Relation of Bags (a1 +^ a2),the carrier of a3 means
    for b1 being Element of Bags (a1 +^ a2) holds
       ex b2 being Element of Bags a1 st
          ex b3 being Element of Bags a2 st
             ex b4 being Function-like quasi_total finite-Support Relation of Bags a2,the carrier of a3 st
                b4 = a4 . b2 & b1 = b2 +^ b3 & it . b1 = b4 . b3;
end;

:: POLYNOM6:def 2
theorem
for b1, b2 being ordinal non empty set
for b3 being non empty non trivial right_complementable add-associative right_zeroed well-unital distributive doubleLoopStr
for b4 being Function-like quasi_total finite-Support Relation of Bags b1,the carrier of Polynom-Ring(b2,b3)
for b5 being Function-like quasi_total finite-Support Relation of Bags (b1 +^ b2),the carrier of b3 holds
      b5 = Compress b4
   iff
      for b6 being Element of Bags (b1 +^ b2) holds
         ex b7 being Element of Bags b1 st
            ex b8 being Element of Bags b2 st
               ex b9 being Function-like quasi_total finite-Support Relation of Bags b2,the carrier of b3 st
                  b9 = b4 . b7 & b6 = b7 +^ b8 & b5 . b6 = b9 . b8;

:: POLYNOM6:th 9
theorem
for b1, b2 being ordinal set
for b3, b4 being Element of Bags b1
for b5, b6 being Element of Bags b2
      st b3 divides b4 & b5 divides b6
   holds b3 +^ b5 divides b4 +^ b6;

:: POLYNOM6:th 10
theorem
for b1, b2 being ordinal set
for b3 being natural-valued finite-support ManySortedSet of b1 +^ b2
for b4 being Element of Bags b1
for b5 being Element of Bags b2
      st b3 divides b4 +^ b5
   holds ex b6 being Element of Bags b1 st
      ex b7 being Element of Bags b2 st
         b6 divides b4 & b7 divides b5 & b3 = b6 +^ b7;

:: POLYNOM6:th 11
theorem
for b1, b2 being ordinal set
for b3, b4 being Element of Bags b1
for b5, b6 being Element of Bags b2 holds
   b3 +^ b5 < b4 +^ b6
iff
   (b3 < b4 or b3 = b4 & b5 < b6);

:: POLYNOM6:th 12
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2
for b5 being FinSequence of (Bags (b1 +^ b2)) *
      st dom b5 = dom divisors b3 &
         (for b6 being natural set
               st b6 in dom divisors b3
            holds ex b7 being Element of Bags b1 st
               ex b8 being FinSequence of Bags (b1 +^ b2) st
                  b8 = b5 /. b6 &
                   (divisors b3) /. b6 = b7 &
                   len b8 = len divisors b4 &
                   (for b9 being natural set
                         st b9 in dom b8
                      holds ex b10 being Element of Bags b2 st
                         (divisors b4) /. b9 = b10 & b8 /. b9 = b7 +^ b10))
   holds divisors (b3 +^ b4) = FlattenSeq b5;

:: POLYNOM6:th 13
theorem
for b1, b2 being ordinal set
for b3, b4, b5 being Element of Bags b1
for b6, b7, b8 being Element of Bags b2
      st b5 = b4 -' b3 & b8 = b7 -' b6
   holds (b4 +^ b7) -' (b3 +^ b6) = b5 +^ b8;

:: POLYNOM6:th 14
theorem
for b1, b2 being ordinal set
for b3 being Element of Bags b1
for b4 being Element of Bags b2
for b5 being FinSequence of (2 -tuples_on Bags (b1 +^ b2)) *
      st dom b5 = dom decomp b3 &
         (for b6 being natural set
               st b6 in dom decomp b3
            holds ex b7, b8 being Element of Bags b1 st
               ex b9 being FinSequence of 2 -tuples_on Bags (b1 +^ b2) st
                  b9 = b5 /. b6 &
                   (decomp b3) /. b6 = <*b7,b8*> &
                   len b9 = len decomp b4 &
                   (for b10 being natural set
                         st b10 in dom b9
                      holds ex b11, b12 being Element of Bags b2 st
                         (decomp b4) /. b10 = <*b11,b12*> &
                          b9 /. b10 = <*b7 +^ b11,b8 +^ b12*>))
   holds decomp (b3 +^ b4) = FlattenSeq b5;

:: POLYNOM6:th 15
theorem
for b1, b2 being ordinal non empty set
for b3 being non empty non trivial right_complementable Abelian add-associative right_zeroed associative well-unital distributive doubleLoopStr holds
   Polynom-Ring(b1,Polynom-Ring(b2,b3)) is_ringisomorph_to Polynom-Ring(b1 +^ b2,b3);