if or not for any initial value $(x_0,y_0)$ in a given set $V=\{(x,y)\mid x^2+y=0\}$, the program would always terminate in a finite number of iterations.

For simplicity, the polynomial of the loop guard is denoted as $G(x,y)=x+y$, and the two polynomial vectors of the assignments as ${\pmb{A}}_1(x,y)=(y^2,2x+y)$ and ${\pmb{A}}_2(x,y)=(2x^2+y-1,x+2y+1)$. Our approach is to compute the set $D$ of all possible initial values of $(x_0,y_0)$ for which the program may not terminate. Thus, the termination problem of the program on the set of inputs $X$ is easily obtained by checking if $X\cap D=\emptyset$. The detailed procedure is described step by step as follows:

1.  Consider the equation $G(x,y)=x+y=0$, and write the set of its solutions as $D_0$. Thus, $(x_0,y_0)\in D_0$ means that the body of the loop should be executed once at least w.r.t. the input.

2.  Denote by $D_{(1)}$ and $D_{(2)}$ the solution sets of equations: $$\begin{split}
    &\left\{
       \begin{aligned}
       &G(x,y)=x+y=0\\
       &G({\pmb{A}}_1(x,y))=y^2+(2x+y)=0
       \end{aligned}\right.\\
    {\rm and}&\\
    &\left\{
       \begin{aligned}
       &G(x,y)=x+y=0\\
       &G({\pmb{A}}_2(x,y))=(2x^2+y-1)+(x+2y+1)=0
       \end{aligned}\right.
    \end{split}$$ respectively. So, $(x_0,y_0)\in D_{(i)}\ (i=1,2)$ means that the loop body may be executed twice at least by correspondingly choosing ${\pmb{A}}_i$ to be the assignment in the first iteration. So $(x_0,y_0)\in D_1\triangleq D_{(1)}\cup D_{(2)}$ allows at least two iterations in the 