reserve i,j,k,n,m for Nat,
        X for set,
        b,s for bag of X,
        x for object;

theorem Th18:
  for n be Ordinal,
      L be well-unital non trivial doubleLoopStr,
      b be bag of n,
      f be Function of n, L,
       u be Element of L st b.x = 0 holds
    eval(b,f +*(x,u)) = eval(b,f)
proof
  let n be Ordinal,
       L be well-unital non trivial doubleLoopStr,
      b be bag of n,f be Function of n, L,
       u be Element of L such that
A1: b.x = 0;
  set S=SgmX(RelIncl n, support b);
  set fxu = f +*(x,u);
  consider y be FinSequence of L such that
A2: len y = len S & eval(b,fxu) = Product y and
A3: for i be Element of NAT st 1 <= i & i <= len y holds
      y/.i = power(L).((fxu * S)/.i,(b * S)/.i) by POLYNOM2:def 2;
  RelIncl n linearly_orders support b by PRE_POLY:82;
  then
A4: rng S = support b by PRE_POLY:def 2;
  for i be Element of NAT st 1 <= i & i <= len y holds
  y/.i = power(L).((f*S)/.i,(b*S)/.i)
  proof
    let i be Element of NAT such that
A5: 1 <= i & i <= len y;
    dom f = n = dom fxu by FUNCT_2:def 1;
    then
A6: dom (f * S) = dom S = dom (fxu *S) by A4,RELAT_1:27;
    then
A7:(f * S)/.i = (f * S).i = f.(S.i) & i in dom S
    by A5,FINSEQ_3:25,A2,PARTFUN1:def 6,FUNCT_1:12;
    then S.i in rng S by FUNCT_1:def 3;
    then
A8: S.i <> x by A1,A4,PRE_POLY:def 7;
    (fxu * S)/.i = (fxu * S).i = fxu.(S.i)
    by A6,A5,FINSEQ_3:25,A2,PARTFUN1:def 6,FUNCT_1:12;
    then (f * S)/.i = (fxu * S)/.i by A7,A8,FUNCT_7:32;
    hence thesis by A5,A3;
  end;
  hence thesis by A2,POLYNOM2:def 2;
end;
