I can show that this is true for your "simple" case. ---------- *If g(x,y) ∈ C<sup>∞</sup>(ℝ<sup>2</sup>) vanishes on x ≤ 0 then it decomposes as g(x,y) = a(x)G(x,y) where a(x) ∈ C<sup>∞</sup>(ℝ) vanishes on x ≤ 0 and G(x,y) ∈ C<sup>∞</sup>(ℝ<sup>2</sup>).* ---------- This can be shown by proving the statements below. They could possibly be standard results, but I've never seen them before. First, I'll refer to the following sets of functions. - Let *U* be thet set of functions f(x)∈C<sup>∞</sup>(ℝ) which vanish on x≤0 and are positive on x>0. - Let *V* be the set of functions f:ℝ<sup>+</sup>→ℝ such that x<sup>-n</sup>f(x)→0 as x→0, for each positive integer n. The statements I need to show the main result are as follows. **Lemma 1**: *For any f∈V, there is a g∈U such that f(x)/g(x)→0 as x→0.* *Proof*: Choose any smooth function r:ℝ<sup>+</sup>→ℝ<sup>+</sup> with r(0) = 1 and r(x)=0 for x≥1. For example, we can use r(x) = exp(1-1/(1-x)) for x < 1. Then, the idea is to choose a sequence of positive reals α<sub>k</sub>→0 satisfying ∑<sub>k</sub>α<sub>k</sub> < ∞, and set $$g(x) = x^{\theta(x)},\ \ \ \theta(x)=\sum_{k=1}^\infty r(x/\alpha_k)$$ for x>0 and g(x)=0 for x≤0. Only finitely many terms in the summation will be nonzero outside any neighborhood of 0, so it is a well defined expression, and smooth on x>0. Clearly, θ(x)→∞ and, therefore, x<sup>-n</sup>g(x)→0 as x→0. It needs to be shown that all the derivatives of g vanish at 0 so that g∈U. As r and all its derivatives are bounded with compact support, r<sup>(n)</sup>(x) ≤K<sub>n</sub>x<sup>-n-1</sup> for some constants K<sub>n</sub>. The n<sup>th</sup> derivative of θ is $$\theta^{(n)}(x)=\sum_k\alpha_k^{-n}r^{(n)}(x/\alpha_k)\le K_nx^{-n-1}\sum_k\alpha_k$$ which has polynomially bounded growth in 1/x. The derivatives of log(g) satisfy $$\frac{d^n}{dx^n}\log(g(x))=\frac{d^n}{dx^n}\left(\log(x)\theta(x)\right)$$ which also has polynomially bounded growth in 1/x. However, the derivative on the left hand side is g<sup>(n)</sup>(x)/g(x) plus a polynomial in g<sup>(i)</sup>(x)/g(x) for i<n. So, induction gives that g<sup>(n)</sup>(x)/g(x) has polynomially bounded growth in 1/x and, multiplying by g(x), g<sup>(n)</sup>(x)→0 as x→0. By definition of f∈V, there is a decreasing sequence of positive reals ε<sub>k</sub> such that f(x)≤x<sup>n</sup> for x≤ε<sub>n</sub>. We just need to make sure that α<sub>k</sub>≤ε<sub>n+1</sub> for k≥n to ensure that g(x)≥x<sup>n-1</sup> for ε<sub>n+1</sub>≤x≤min(ε<sub>n</sub>,1). Then f(x)/g(x) goes to zero at rate x as x→0. █ **Lemma 2**: For any sequence f<sub>1</sub>,f<sub>2</sub>,...∈V there is a g∈U such that f<sub>k</sub>(x)/g(x)→0 as x→0 for all k. *Proof*: The idea is to apply Lemma 1 to f(x)=Σ<sub>k</sub>λ<sub>k</sub>|f<sub>k</sub>(x)| for positive reals λ<sub>k</sub>. This works as long as f∈V, which is the case if Σ<sub>k</sub>λsup<sub>x≤k</sub><sub>k</sub>min(x,1)<sup>-k</sup>|f<sub>k</sub>(x)| is finite, and this condition is easy to ensure. █ **Lemma 3**: For any sequence f<sub>1</sub>,f<sub>2</sub>,...∈V there is a g∈U such that f<sub>k</sub>(x)/g(x)<sup>n</sup>→0 as x→0 for all positive integers k,n. *Proof*: Apply Lemma 2 to the doubly indexed sequence f<sub>k,n</sub>=|f<sub>k</sub>|<sup>1/n</sup>. The result follows from applying lemma 3 to the triply indexed sequence f<sub>i,j,k</sub>(x)=max{|(d<sup>i+j</sup>/dx<sup>i</sup>dy<sup>j</sup>)g(x,y)|:|y|≤k}∈V. Then, there is an a∈U such that f<sub>ijk</sub>(x)/a(x)<sup>n</sup>→0 as x→0. Set G(x,y) = f(x,y)/a(x) for x>0 and G(x,y) = 0 for x ≤ 0. On any bounded region for x>0, the derivatives of G(x,y) to any order are bounded by a sum of terms, each of which is a product of f<sub>ijk</sub>(x,y)/a(x)<sup>n</sup> with derivatives of a(x), so this vanishes as x→0. Therefore, G∈C<sup>∞</sup>(ℝ<sup>2</sup>). █ In fact, using a similar method, the simple case can be generalized to arbitrary submersions. ---------- Let p: M →N be a submersion. If h ∈ C<sup>∞</sup>(N) and g ∈ C<sup>∞</sup>(M) satisfy hg = 0 then, g = aG for some G ∈ C<sup>∞</sup>(M) and a ∈ C<sup>∞</sup>(N) satisfying ha = 0. ---------- I'll add more explanation of this in a moment...