Entre la respuesta de David y lo mucho que he mirado el artículo que he enlazado más arriba, creo que he averiguado lo que está pasando, así que he pensado en publicar un resumen de su método aquí también por si alguien más tiene un problema similar. Me estoy centrando aquí en $how$ utilizar su algoritmo, no $why$ funciona: Me resultó mucho más fácil seguir la teoría una vez que supe adónde iba.
Su configuración es la siguiente: dado un campo $k(x_1,\dots, x_n) = k(\mathbf{x})$ y un conjunto de elementos $\mathbf{g} = \{g_1, \dots, g_m\}\subset k(\mathbf{x})$ podemos formar el campo $k(\mathbf{g})$ generado por los elementos de $\mathbf{g}$ y luego pregunta: dado $f \in k(\mathbf{x})$ ¿tenemos $f \in k(\mathbf{g})$ y si es así, ¿cómo podemos escribir $f$ ¿en cuanto a los generadores? El objetivo de los autores es responder a esta pregunta sin recurrir a la ordenación lex, que, como ya se ha dicho, puede ser muy lenta.
Así que $g_i = n_i/d_i$ e introducir una nueva variable $T_i$ para cada $g_i$ . Reúne todos los divisores primos de cada uno de los denominadores $d_i$ en un conjunto $\{p_1, \dots, p_r\}$ (eliminar las repeticiones) e introducir una nueva variable $Y_i$ para cada $p_i$ .
En el anillo polinómico $k[Y_1, \dots, Y_r, x_1, \dots, x_n, T_1, \dots, T_m]$ definir el ideal $I=\langle n_1-T_1d_1, \dots, n_m-T_md_m, Y_1p_1-1,\dots,Y_rp_r-1\rangle$ y calcular una base de Groebner de $I$ . La única restricción para hacer el pedido es que debe tener $\textbf{Y} >> \textbf{x} >> \textbf{T}$ , dentro de cada bloque pueden ordenarse como se desee.
Elimine todos los términos que impliquen $Y_i$ de la base de Groebner; llame al conjunto resultante $G$ . Sea $H$ sea el subconjunto de $G$ que incluya términos sólo en el $T_i$ : este puede estar vacío. (Este paso parece ocuparse de las sinzigias entre los generadores, dándote el resultado más simple al final y evitando dividir por cero en cualquier punto).
Sea $S=\langle H \rangle$ y definir $L = Q(k[\mathbf{T}]/S)$ por lo que si $H$ estaba vacío esto es sólo $k(\mathbf{T})$ . Sea $\pi$ sea la incrustación natural $k[\mathbf{T}][\mathbf{x}] \hookrightarrow L[\mathbf{x}]$ y $G' := \pi(G)$ .
Si $f=n_f/d_f \in k(\mathbf{x})$ es el elemento de interés, introduzca una nueva variable $A$ (así que ahora estamos en el ring $L[\mathbf{x},A]$ ) y reducir el polinomio $n_f-Ad_f$ a la forma normal con respecto a la base de Groebner $G'$ debe obtener una expresión $N-AD$ .
Opcionalmente en este punto, puede reducir $N$ y $D$ a su forma más simple mediante la reducción de sus numeradores wrt $\pi(H)$ Recuerde que $N,D \in L[\mathbf{x}]$ donde $L$ es una localización de $k[\mathbf{T}]$ por lo que podrían ser funciones racionales en el $T_i$ .
Si $D = 0$ entonces $f \not\in k(\mathbf{g})$ . Si $D \neq 0$ entonces resuelve $N-AD = 0$ es decir $A=N/D$ . Si $N/D \not\in k(\mathbf{T})$ entonces $f \not\in k(\mathbf{g})$ de lo contrario $f=N(g_1, \dots, g_m)/D(g_1,\dots,g_m)$ .
¡Uf! Espero que quede bastante claro si sólo quieres aplicar el algoritmo; si quieres entender por qué funciona cada paso, el artículo al que enlazaba en la pregunta tiene todos los detalles técnicos. Sospecho que es esencialmente el mismo enfoque que la respuesta de David, con algunos ajustes para evitar necesariamente el uso de la ordenación lex y para hacer frente a las relaciones entre el conjunto de generadores.