with(Groebner): gen_ord_upper := proc(k::integer) local eqs, nterms, basis, realroots, posroots, i; eqs := [ -S + A + B + C + D + x + x, -A + A_C*x^2 + C*A_C*x + B*A_B*x + D*A_D*x, -A_t + B*A_B*x + D*A_D*x, -A_C + C + C*A_C*x + A_B, -A_B + B + B*A_D*x + A_D, -A_D + D + D*A_D*x, -B + A*B_0*x^2 + C*B_0 + D*B_0, -B_0 + A*x^2 + C + D + A*B_0*x^2 + C*B_0 + D*B_0, -C + A_t*x^3 + B*x^3 + D*x, -D + k*x ]; nterms := [ D, C, B_1, B_0, B, A_D, A_B, A_C, A_t, A, S ]; basis := gbasis(eqs, lexdeg(nterms[1..-2], [S])); print("gen ord upper basis computed", k); realroots := fsolve(discrim(basis[1], S) = 0, x); posroots := select(type, [realroots], positive); print(posroots); 1/min(seq(posroots[i], i=1..nops(posroots))); end: gen_rpn_upper := proc(k::integer) local eqs, nterms, basis, realroots, posroots, i; eqs := [ -S + A + B + C + D + x + x, -A + A_B*x^2 + C*A_C*x + B*A_B*x + D*A_D*x, -A_t + B*A_B*x + D*A_D*x, -A_C + C + C*A_C*x + A_B, -A_B + B + B*A_D*x + A_D, -A_D + D + D*A_D*x, -B + A*B_0*x + C*B_1*x + D*B_0*x, -B_0 + A + C + D + A*B_0*x + C*B_1*x + D*B_0*x, -B_1 + A + D + A*B_0*x + D*B_0*x, -C + A_t*x + B*x + D*x, -D + k*x ]; nterms := [ D, C, B_1, B_0, B, A_D, A_B, A_C, A_t, A, S ]; basis := gbasis(eqs, lexdeg(nterms[1..-2], [S])); print("gen rpn upper basis computed", k); realroots := fsolve(discrim(basis[1], S) = 0, x); posroots := select(type, [realroots], positive); print(posroots); 1/min(seq(posroots[i], i=1..nops(posroots))); end: gen_alph_upper := proc(k::integer) local eqs, nterms, basis, realroots, posroots, i; eqs := [ -S + A + B + C + D, -A + A_B + C*A_C + B*A_B + D*A_D, -A_t + B*A_B + D*A_D, -A_C + C + C*A_C + A_B, -A_B + B + B*A_D + A_D, -A_D + D + D*A_D, -B + A*B_0 + C*B_1 + D*B_0, -B_0 + A + C + D + A*B_0 + C*B_1 + D*B_0, -B_1 + A + D + A*B_0 + D*B_0, -C + A_t + B + D, -D + k*x ]; nterms := [ D, C, B_1, B_0, B, A_D, A_B, A_C, A_t, A, S ]; basis := gbasis(eqs, lexdeg(nterms[1..-2], [S])); print("gen alph upper basis computed", k); realroots := fsolve(discrim(basis[1], S) = 0, x); posroots := select(type, [realroots], positive); print(posroots); 1/min(seq(posroots[i], i=1..nops(posroots))); end: