reserve X for set;
reserve a,b,c,k,m,n for Nat;
reserve i,j for Integer;
reserve r,s for Real;
reserve p,p1,p2,p3 for Prime;

theorem Th44:
  for f being natural-valued finite-support SetPrimes-defined Function holds
  f <= n & f is increasing implies
  Product (EmptyBag SetPrimes +* f) divides n!
  proof
    let f be natural-valued finite-support SetPrimes-defined Function;
    assume that
A1: f <= n and
A2: f is increasing;
    set b = B+*f;
    set C = canFS(support b);
    consider F being FinSequence of COMPLEX such that
A3: Product b = Product F and
A4: F = b*C by NAT_3:def 5;
    reconsider F as natural-valued FinSequence by A4;
    set S = sort_a(F);
A5: Product F = Product S by EULER_2:10,RFINSEQ2:def 6;
A6: F <= n by A1,A4,Th40;
A7: F is positive-yielding by A4,Th41;
A8: rng F = rng S by RFINSEQ2:def 6,CLASSES1:75;
    S is increasing by A2,A4,Th43;
    hence Product b divides n! by A3,A5,A6,A7,A8,Th35,Th38;
  end;
