10.07.2015 Views

University of Paderborn Department of Mathematics Diploma Thesis ...

University of Paderborn Department of Mathematics Diploma Thesis ...

University of Paderborn Department of Mathematics Diploma Thesis ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

120 CHAPTER 4. ALGORITHMS FOR STABLE IDEALSThe advantage <strong>of</strong> the above algorithm is that it can be used to compute single valuesh R/I (i) <strong>of</strong> a Hilbert function for large i ∈ N efficiently. The algorithm stated in Remark4.25 would have to compute h R/I (j) for all j < i to obtain h R/I (i), whereas the abovealgorithm can be implemented in so far that it first checks whether the value <strong>of</strong> i is largerthan the integer k <strong>of</strong> Lemma 4.26. If this is the case, there is no need to compute all valuesh R/I (j) for j < i. It suffices to compute the Hilbert polynomial, from which one obtainsh R/I (i). Next we give the source code <strong>of</strong> a possible implementation <strong>of</strong> the above algorithmin MuPAD.MuPAD Source Code 4.28. Let H = H(t) be the numerator <strong>of</strong> a reduced Hilbert series<strong>of</strong> R/I for I ⊂ R a saturated stable ideal. Let d be the exponent <strong>of</strong> (1 − t) in the denominator<strong>of</strong> H and n the index <strong>of</strong> the last variable in R. The procedure below computes thevalues <strong>of</strong> the corresponding Hilbert function up to an upper bound, which has to be givenas the third argument for the procedure.Input for the procedure compute Hilbert function.◦ H — the numerator <strong>of</strong> a reduced Hilbert series◦ d — the power <strong>of</strong> (1 − t) in the denominator <strong>of</strong> the Hilbert series◦ upper bound — the value, i.e. the upper bound, up to which the values <strong>of</strong> the Hilbertfunction (associated to the given Hilbert series) should be computed◦ n — the index <strong>of</strong> the last variable <strong>of</strong> the polynomial ring ROutput <strong>of</strong> the procedure compute Hilbert function.◦ values — a list containing the values <strong>of</strong> the Hilbert functioncompute_Hilbert_function:= proc(H, d, upper_bound, n)local coeffs, values, i, j, p, L_p, lastMon, G_bound;begincoeffs:= [coeff(poly(expand(1-t)^d, [t]))]:values:= [0 $ upper_bound + 1]:values[1]:= 1:p:= compute_Hilbert_polynomial2(H, d):L_p:= compute_L_p(p, n):lastMon:= L_p[nops(L_p)]:G_bound:= _plus(lastMon[i] $ i = 1..n+1):for i from 2 to d+1 dovalues[i]:= coeff(H,i-1):for j from 1 to i-1 dovalues[i]:= values[i] - (values[i-j] * coeffs[d+1-j])

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!