Package $contrib/openmath/stat Alias OM := $contrib/openmath/stat; Divides(T1,T2):=Type(T2/T1)<>RATFUN; Define Est(L) If Shape(L)<>NewList(Len(L),POLY) Then PrintLn 'Power product list expected' End; N:=NumIndets(); Id:=Ideal(L); New_L:=[Poly(1)]; L1:=[Poly(1)]; Repeat Old_L:=New_L; New_L:=[]; Foreach X In Indets() Do Num:=Len(Old_L); For I:=1 To Num Do Append(New_L,X*Old_L[I]); If OM.Divides(X,Old_L[I]) Then Old_L[I]:=0 End; End; Old_L:=[T In Old_L| T<>0]; End; New_L:=[T In New_L|Not T IsIn Id]; L1:=Concat(L1,New_L); Until New_L=[]; Return L1; End; Define Estt(I) L := Gens(LT(I)); Monomials := OM.Est(L) ; R := [ ]; For I:=1 To Len(Monomials) Do Mon := Monomials[I]; Append(R,[LC(Mon),Log(Mon)]); End; Return R; End; -- EstId Define EstP(I) L := Gens(LT(I)); Monomials := OM.Est(L) ; Return Monomials; End; -- EstId End;