I would like to justify the "one can see that" statement in Page 477 of [Wang - Stability estimates of an inverse problem for the stationary transport equation](http://www.numdam.org/item/AIHPA_1999__70_5_473_0) on the stationary transport equation. Let $(x,v)\in (\Omega, V)$, where $\Omega\subset\mathbb{R}^n$, $n = 2,3$ is convex, open, and bounded, and $V$ is some annulus in $\mathbb{R}^n$ (or for simplicity, just the unit sphere). Let $f(x,v)$ denote the density of particles at location $x$ traveling in direction $v$. Define
$$\tau\_-(x,v) = \min\{t\geq 0: x - tv\in \partial \Omega\},$$
that is $\tau\_-(x,v)$ is the backwards escape time of a particle in $x$ traveling at velocity $v$.


Let $\tilde{f}(x,v) := f(x-\tau\_-(x,v)v,v)$. **The claim I am unable to show** is that $v\cdot\nabla\_x\tilde{f}(x,v) = 0$. Letting $D\_if$ denote the derivative in the $i$th spatial slot of $f(x,v)$, we can compute (at least formally):


\begin{align\*}
\frac{\partial}{\partial x\_i} \tilde{f}(x,v) &= \sum\_{j=1}^n D\_jf(x-\tau\_-(x,v)v,v)(\delta\_{ij} - \frac{\partial}{\partial x\_i}\tau\_-(x,v)v\_j\\
v\cdot \nabla\_x\tilde{f}(x,v) &= \sum\_{i,j}^n D\_jf(x-\tau\_-(x,v)v,v)\left(\delta\_{ij}v\_i - \frac{\partial}{\partial x\_i}\tau\_-(x,v)v\_jv\_i\right)\\
&= \nabla\_xf(x-\tau\_-(x,v),v)\cdot v-(v\cdot \nabla\_x\tau\_-(x,v))(v\cdot \nabla\_xf(x-\tau\_-(x,v)v,v)
\end{align\*}


Then it would suffice to show $v\cdot \nabla\_x\tau\_-(x,v) = 1$, but it is not clear to me that this is true.


EDIT: I have shown the result to be true if the domain $\Omega$ is a ball. Then if $\Omega = B(0,r)$, we have


\begin{align\*}
\tau\_-(x,v) &= \min\{t>0: x-tv\in \partial\Omega)\\
&= \min\{t>0:\|x-tv\|^2 = r^2\}\\
&= \min\{t>0: t^2\|v\|^2-2t(x\cdot v) + (\|x\|^2-r^2) = 0\}\\
&= \frac{2(x\cdot v) + \sqrt{4(x\cdot v)^2 - 4\|v\|^2(\|x\|^2-r^2)}}{2\|v\|^2}\\
\nabla\_x\tau\_-(x,v) &= \frac{v}{\|v\|^2}-\frac{2(x\cdot v)v-2\|v\|^2x}{\sqrt{(x\cdot v)^2 - \|v\|^2\|x\|^2 + r\|v\|^2}}.
\end{align\*}
Then clearly $v\cdot \nabla\_x\tau\_-(x,v) = 1$.


I'm now wondering if this approach can be generalized to general convex bounded domains.


EDIT 2: For the sake of making sure this is true (that $v\cdot \nabla\_x\tau\_-(x,v) = 1$), I've computed a few numerical examples in Python. First, I generate the convex hull of some randomly generated points in two or three dimensions, this doesn't quite have $C^1$ boundary, but the boundary is $C^1$ a.e, so it shouldn't matter. The function `compute_tau(x, v, hull, n)` computes $\tau\_-(x,v)$ in the hull and dimension $n$ using a method similar to the top answer [here](https://stackoverflow.com/questions/30486312/intersection-of-nd-line-with-convex-hull-in-python). Then I just compute the gradient of $\tau\_-$ using a forward finite difference. I did this for 20 arbitrary points $(x,v)$ and the dot product was nearly 1 in all cases:



```
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import ConvexHull

def gen_points(num_points, n = 2):
    # generate n points in the plane in [-5,5]^n
    points = np.random.uniform(low = -5, high = 5, size = (num_points,n))
    return points

def compute_tau(x,v,hull, n):
    # each face of the hull is a plane defined by <w,x> + b = 0
    # backwards exit ray is defined by x - tv
    # plug in, tau = (<w,x> + b)/<w, v>)
    # have to compute tau for each face, take the minimum positive tau

    eq = hull.equations
    w, b= eq[:, :n], eq[:, n]
    tau = (np.dot(w,x) + b)/(np.dot(w,v))
    return np.min(tau[tau>0])

def compute_grad_tau(x, v, hull, n):
    # compute \grad_x \tau_-(x,v)
    eps = 1e-10
    h = eps*np.eye(n)
    if n == 2:
        return np.array([compute_tau(x + h[0], v, hull, n) - compute_tau(x, v, hull, n), 
                     compute_tau(x + h[1], v, hull) - compute_tau(x, v, hull)])/eps
    else: 
        return np.array([compute_tau(x + h[0], v, hull, n) - compute_tau(x, v, hull, n), 
                         compute_tau(x + h[1], v, hull, n) - compute_tau(x, v, hull, n),
                         compute_tau(x + h[2], v, hull, n) - compute_tau(x, v, hull, n)])/eps

hull_points = np.append(hull.vertices, hull.vertices[0])

for _ in range(20):
    n = 3
    x = np.random.uniform(low = -0.5, high = 0.5, size = n)
    v = np.random.uniform(low = -1, high = 1, size = n)
    print(np.dot(v,compute_grad_tau(x,v,hull,n))) # hope it's equal to one!

```


Inner product of velocity and gradient of backwards escape is 1
The time $\tau\_-(\vec{x},\vec{v})$ is the time it takes a particle at $\vec{x}$ to reach the boundary while moving in the direction $-\vec{v}$. Let $\vec{x}\_-$ be the boundary point reached by that particle,
$$\vec{x}\_-\equiv\vec{x}-\tau\_-(\vec{x},\vec{v})\vec{v}.$$
If we vary $\vec{x}$ in the direction $-\vec{v}$ or $+\vec{v}$, the point $\vec{x}\_-$ remains the same, so
$$(\vec{v}\cdot\nabla\_x) \vec{x}\_-=0.$$
Combining these two equations we arrive at the desired result,
$$0=(\vec{v}\cdot\nabla\_x)\vec{x}-(\vec{v}\cdot\nabla\_x)\tau\_-\vec{v}=\vec{v}-(\vec{v}\cdot\nabla\_x)\tau\_-\vec{v}$$
$$\Rightarrow (\vec{v}\cdot\nabla\_x)\tau\_-=1. $$


