According to my calculus textbook for example to maximize $f(x,y,z): \mathcal{D} \subset \mathbb{R}^3 \to \mathbb{R}$ with contrains $F(x,y,z)=0$ and $G(x,y,z)=0$ it is required (along with others) that the Jacobian matrix of the constraining functions $\begin{bmatrix} F_x&F_y&F_z\\ G_x&G_y&G_z\\ \end{bmatrix}$ should be full rank at all points that satisfy all the constraints.
This is assumed to hold true for all examples and exercises in the chapter and for all n-dimension spaces with m-constrains. But it doesn't seem a trivial condition to me since it involves infinite many matrices and their rank.
The textbook uses the Jacobian condition in a short explanation for the case above that we can solve for example for $y=y(x)$ and $z=z(x)$ from $F(x,y,z)=0$ and $G(x,y,z)=0$ by the implicit function theorem (where the Jacobian condition is required) and plug them to $f(x, y(x), z(x))$ to convert it to a unconditional extremum problem with single variable $x$ and in the end to deduce the Lagrange multiplier method. But it is dedicated to this single case where n=3 and m=2 thus not a proof for the general case. Besides even if the implicit function near some points does not exist they could also be the extremum points right? By working backwards such a setup should be easy to construct.
I can come up with some trivial cases where it does cause trouble if the Jacobian matrix is not full rank. For example if $G(x,y,z) = kF(x,y,z) + c$ then the constraints might conflict with each other or just be redundant. But according to my understanding it should be a sufficiency rather than a necessity.
So my question is, is the Jacobian condition over sufficient or just trivial/usually satisfied (the examples and exercises never bother to check or mention)? What could happen if it is not satisfied (we just go ahead solve the equations)?
A) some solutions are not stationary points at all.
B) they are stationary points but the true extremas are not any of them.
C) the solution is incomplete, you missed some of them.
And so if the Jacobian condition is indeed important how do we check for it? What other options do we have if it can not be satisfied?