====================================================================
BOUNDEDNESS AND PERSISTENCE OF WEAKLY REVERSIBLE MASS-ACTION SYSTEMS
a complete proof
====================================================================
We prove two conjectures of Feinberg (1987) and Anderson (2011): every
finite weakly reversible mass-action system with positive constant
rates, started from x(0) > 0, has a global forward solution that stays
in a fixed compact box [eps, 1/eps]^d with eps > 0 depending only on
the network, the rates, and x(0). No boundedness or persistence is
assumed. The proof is self-contained and complete; only first-course
calculus and ODE theory are assumed. Notation is summarized in Sec 15.
====================================================================
0. THE SETUP AND THE THEOREM
====================================================================
Species. d >= 1 distinct species X_1, ..., X_d with concentrations
x_1, ..., x_d >= 0. Write x = (x_1, ..., x_d).
Complexes. A complex is an integer vector y = (y_1, ..., y_d) with
y_i in Z_{>=0}. The y_i counts molecules of X_i in that complex. The
network has a finite set C of complexes.
Reactions. A reaction is a directed edge y -> z with y, z in C and
y != z. The reaction set, denoted Reactions, is finite. We deliberately
avoid using the single letter R for the reaction set (R is reserved for
the real numbers throughout, as in R^d).
Linkage classes (used later for contrast). Ignore arrow directions.
The resulting undirected graph on C splits into connected components,
called linkage classes. Their number is not restricted; isolated
complexes are allowed.
Rates. Each reaction y -> z has a positive constant rate kappa_{y->z}
> 0.
Mass-action vector field. Using the monomial x^y = x_1^{y_1} ... x_d^{y_d},
dx_i/dt = f_i(x) = sum over y->z in Reactions of
kappa_{y->z} x^y (z_i - y_i), i = 1..d. (1)
Write f = (f_1, ..., f_d). Each f_i is a polynomial with real
coefficients; f is infinitely differentiable on R^d.
Three basic facts.
(i) Existence/uniqueness: from any x(0) in R^d there is a unique
maximal forward solution x : [0, T_max) -> R^d with T_max in
(0, +infinity]. If T_max < infinity, ||x(t)|| -> infinity as
t -> T_max (the solution escapes to infinity).
(ii) Positive orthant is forward invariant. On the hyperplane
{x_i = 0} the i-th component of f reduces to
f_i = sum over y->z in Reactions with y_i = 0 of
kappa_{y->z} x^y z_i,
because any incoming reaction with y_i >= 1 contributes a
monomial x^y divisible by x_i and vanishes. Each surviving term
is >= 0 (kappa > 0, z_i >= 0). So f points weakly into the
orthant. If x(0) > 0 componentwise, then x_i(t) > 0 for all t.
(iii) Stoichiometric subspace. Define
S = real span of { z - y : y -> z in Reactions }.
For every x, f(x) is in S (each summand kappa x^y (z - y) has
the vector z - y in S). So x(t) - x(0) is always in S. Every
trajectory stays in its affine class x(0) + S.
Weak reversibility. Reactions is weakly reversible if for every
reaction y -> z in Reactions there exist complexes y_0 = z, y_1, ...,
y_k = y with every y_{j-1} -> y_j a reaction of Reactions. In words:
every arrow can be undone by a directed path. This is a pure graph
property; it does not depend on rates or initial values.
Theorem 0.1 (main). Let C be finite, Reactions be weakly reversible,
kappa_{y->z} > 0 arbitrary positive constants, and x(0) in R_{>0}^d
(all coordinates strictly positive). Then:
(a) T_max = infinity: the solution exists for all t >= 0.
(b) There is eps in (0, 1), depending only on C, Reactions, kappa,
and x(0), such that
eps <= x_i(t) <= 1/eps for all t >= 0, i = 1..d. (2)
Neither the upper bound nor the lower bound in (b) is assumed: both
are proved. The theorem does NOT claim
- convergence of x(t) (only boundedness/persistence);
- uniformity of eps over the compatibility class x(0) + S.
====================================================================
1. THE IDEA OF THE PROOF
====================================================================
A single reaction generally does not push back into the orthant: one
arrow can drive a species toward zero or toward infinity. Weak
reversibility guarantees only that paths exist that undo any outward
push. We must convert "return paths exist" into one statement about a
fixed set that traps the trajectory.
Plan.
A. Build a concave piecewise-affine function
F(x) = min over lambda of ( r_lambda . x + c_lambda(h) ).
The slopes r_lambda in [-1, 1]^d are fixed constants; the offsets
c_lambda(h) depend on a small parameter h in (0, 1). Lambda is a
finite index set.
B. Prove that F never decreases along any forward trajectory inside
the box B_h = [h, h^{-1}]^d.
C. Arrange that F has a maximum M = F(x(0)) that is attained exactly
on a compact convex polytope
K = { x : F(x) = M }
which contains x(0) and is strictly inside R_{>0}^d.
D. Trap the trajectory: F(x(t)) >= F(x(0)) = M by (B), and F <= M
everywhere by (C), so F(x(t)) = M for all t. Hence x(t) stays in
K, which is a fixed compact positive set.
Step (B) is the crux. If F were a single linear function r . x + c,
then (B) would be one inequality r . f(x) >= 0 for all x in B_h; an
individual reaction "need not point inward" would kill this. The
piecewise structure and the choice of active slopes r_lambda make
individual negativities cancel along return paths.
Why monomials fix the comparison. Suppose x = X_h(p) is a point in
B_h, where X_h(p) = (h^{p_1}, ..., h^{p_d}) for some p in [-1, 1]^d.
The monomial x^y = h^{p . y} is determined by the scalar p . y in
[-Y, Y] for some bound Y. Two different p . y values differ by a
factor h^{gap}. If the active slope r_lambda of F satisfies
r_lambda . y < r_lambda . z, we want the SAME ordering of monomials:
x^y >> x^z when h is small. This requires that r_lambda . (z - y) has
the same SIGN as p . (z - y), which is what the affine approximation
lemma (Sec 2) supplies. Then the monomial inequality
x^z <= h^{H} * x^y when r_lambda . y < r_lambda . z (3)
holds with a uniform "gap exponent" H > 0 (independent of h once the
slope family is chosen). Inequality (3), fed into a finite return-path
sum, gives (B).
Section 2 states the affine approximation lemma. Sections 3-5 prove it.
Section 6 is the cut-flux lemma (the finite return-path sum). Section 7
is the derivative formula for a finite minimum of affine functions.
Sections 8-10 apply these tools, build F and K, and prove the main
theorem. Sections 11-15 contain the corollary, remarks, history, and
notation.
====================================================================
2. THE AFFINE APPROXIMATION LEMMA
====================================================================
Notation. For p in R^m and 0 < h < 1, let X_h(p) = (h^{p_1}, ...,
h^{p_m}) in R^m_{>0}. A LABEL is a pair (r, c) where r in R^m is a
fixed slope (independent of h) and c = c(h) is a real-valued function
defined for all sufficiently small h > 0 (the offset). A finite family
Lambda of labels is given. A label lambda = (r_lambda, c_lambda) is
ACTIVE at x in R^m (for given h) if
r_lambda . x + c_lambda(h) = min over eta in Lambda of
( r_eta . x + c_eta(h) ).
Every minimizer is active: ties count.
Lemma 2.1 (affine approximation with arbitrary tolerance). Let m >= 1
and a < b be real numbers. Let E : [a, b]^m -> (0, infinity) be any
positive function; no regularity is assumed (E may jump or be wildly
discontinuous). Then there is a finite nonempty family Lambda of labels
with
r_lambda in [a, b]^m for every lambda in Lambda, (4)
c_lambda(h) = o(h^a) as h -> 0+ for every lambda, (5)
and the following sequential closure property:
(P) For every pair of sequences h_nu -> 0+ and p^nu in R^m with
p^nu -> p in [a, b]^m, if a FIXED lambda in Lambda is active
at X_{h_nu}(p^nu) for every nu, then
|| p - r_lambda ||_infinity < E(r_lambda). (6)
The family Lambda is chosen AFTER E but BEFORE any h. The slopes
r_lambda are fixed and do not depend on h.
What the lemma says in English. We can prescribe a separate positive
tolerance E(r) at each candidate slope r, with no regularity, and the
finite minimum of affine functions will make sure every active slope
along a convergent sequence is E-close to the actual exponent vector
limit. This lets the DYNAMICS (which sees only active slopes) access a
prescribed sign rule (namely sgn(r . v) = sgn(p . v) for finitely many
v = z - y).
Proof structure. Section 3 proves the case mu(p) = t exactly, where
mu(p) = min_i p_i and t is a chosen value. Section 4 extends to a
neighborhood of t and glues finitely many such neighborhoods together.
Section 5 upgrades (P) to a uniform bound. Base case is m = 1.
====================================================================
3. PROOF OF LEMMA 2.1, STEP 1: EXACT MINIMUM
====================================================================
Induct on m. Fix m, a < b, E. Throughout write mu(p) = min_i p_i.
Fix t in [a, b]. We construct a finite family Lambda_t of labels with:
L1. Every slope r_lambda in Lambda_t satisfies mu(r_lambda) = t.
L2. The "center" label (t*1, 0) is in Lambda_t, where 1 = (1,...,1).
L3. Sequential closeness at mu = t: if p is in [a,b]^m with mu(p) = t,
h_nu -> 0+, p^nu in R^m with p^nu -> p, and a fixed lambda in
Lambda_t is active at X_{h_nu}(p^nu) for all nu, then
|| p - r_lambda ||_infinity < E(r_lambda).
BASE CASE. If m = 1 or t = b, take Lambda_t = {(t*1, 0)}. Then mu(p) = t
with p in [a,b]^m forces p = t*1 (m = 1: trivial; t = b: p_i <= b = t
and mu(p) = t = b gives p_i = b for all i). And r_lambda = t*1 = p, so
||p - r_lambda||_infinity = 0 < E(r_lambda). Done.
INDUCTION STEP. Assume m > 1, t < b.
Types. A label in Lambda_t has TYPE k (0 <= k <= m-1) if exactly k of
its slope entries are strictly greater than t and the remaining m-k
entries equal t. We construct types in increasing k.
Parameters. Choose
t < beta_{m-1} < beta_{m-2} < ... < beta_1 < b, (7)
subject, for 1 <= k <= m-1, to
beta_k - t < E(r) for every slope r of type k-1. (8)
At step k, types 0, ..., k-1 are already built and finite; each E(r) is
strictly positive, so only finitely many strict bounds are imposed and
such beta_k exists.
Type 0. The single label (t*1, 0).
Type k (1 <= k <= m-1). Let U be any k-element subset of {1, ..., m}
and let s in [beta_k, b]^U be a slope on U. Define r(s) in R^m by
r(s)_i = s_i if i in U,
r(s)_i = t if i not in U.
Apply the induction hypothesis of Lemma 2.1 in dimension k to the cube
[beta_k, b]^U with tolerance s -> E(r(s)). This yields a finite family
of k-dimensional labels (s_j, d_j) with s_j in [beta_k, b]^U and
d_j(h) = o(h^{beta_k}) as h -> 0+. For each such (s_j, d_j), put into
Lambda_t the m-dimensional label
r = r(s_j), c_lambda(h) = -h^{beta_k} + d_j(h). (9)
Do this for every k-element subset U and every label in its local family.
The result is finite (finitely many U times finitely many labels per U).
CHECK. L1 holds for type 0 (mu(t*1) = t) and for type k (exactly k
coordinate entries r_i = s_i >= beta_k > t, all other entries equal t,
so min_i r_i = t). L2 holds (type 0). Every offset c_lambda has
c_lambda = o(h^{beta_k}) for its type k, hence c_lambda = o(h^t) since
beta_k > t; type-0 offset is 0. L3 is what Step 2 proves.
STEP 2: prove L3.
Let p be in [a,b]^m with mu(p) = t. Let h_nu -> 0+, p^nu -> p, and let
lambda = (r, c) be a type-k label of Lambda_t, active at X_{h_nu}(p^nu)
for every nu. Let U be its raised set (the k coordinates with r_i > t
and hence r_i >= beta_k). We prove three claims; combined they give L3.
C1. If k >= 1 and i in U: p_i >= beta_k.
C2. If k <= m-2 and j not in U: p_j <= beta_{k+1}.
C3. If k = m-1 and j is the unique index not in U: p_j = t.
CLAIM C1. Compare lambda to the center (t*1, 0). Activity (minimum)
gives
sum_{i in U} (r_i - t) h^{p_i^nu} + c(h) <= 0.
Substitute c(h) = -h^{beta_k} + d_j(h):
sum_{i in U} (r_i - t) h^{p_i^nu} <= h^{beta_k} - d_j(h). (10)
Every r_i - t >= beta_k - t > 0. Suppose p_i < beta_k for some i in U.
Pick delta > 0 with p_i < beta_k - delta for all large nu. Then
h^{p_i^nu} >= h^{beta_k - delta},
so the i-th term of the left of (10), divided by h^{beta_k}, is at least
(beta_k - t) h^{p_i^nu - beta_k} >= (beta_k - t) h^{-delta} -> +infinity.
So the left of (10), divided by h^{beta_k}, diverges to +infinity, while
the right, divided by h^{beta_k}, is 1 + o(1) (bounded). Contradiction.
So p_i >= beta_k. Done.
CLAIM C2. Suppose p_j > beta_{k+1} for some j not in U. Construct a
type-(k+1) competitor with raised set U U {j}, slope equal to r on U,
an extra raised coordinate j with value s in [beta_{k+1}, b], and
offset c'(h) = -h^{beta_{k+1}} + d'(h) as in (9) (any s works).
Activity of lambda means competitor value >= lambda value. On U the
slopes coincide and cancel. Coordinate j contributes (s - t) h^{p_j^nu}.
The offsets contribute
c'(h) - c(h) = -h^{beta_{k+1}} + d'(h) - (-h^{beta_k} + d_j(h))
= h^{beta_k} - h^{beta_{k+1}} + d'(h) - d_j(h)
= -h^{beta_{k+1}} (1 + o(1)), (11)
because beta_k > beta_{k+1} makes h^{beta_k} = o(h^{beta_{k+1}}),
d'(h) = o(h^{beta_{k+1}}), and d_j(h) = o(h^{beta_k}) = o(h^{beta_{k+1}}).
(For k = 0, the same computation gives c'(h) - 0 = -h^{beta_1} + d'(h) =
-h^{beta_{k+1}}(1 + o(1)), since c(h) = 0 for the center.)
Also p_j > beta_{k+1} makes h^{p_j^nu} = o(h^{beta_{k+1}}). Hence
competitor - lambda = (s - t) h^{p_j^nu} + c'(h) - c(h)
= o(h^{beta_{k+1}}) - h^{beta_{k+1}}(1 + o(1))
= -h^{beta_{k+1}}(1 + o(1)) < 0
for all sufficiently small h. Contradiction with activity of lambda. So
p_j <= beta_{k+1}. Done.
CLAIM C3. If k = m-1, U has m-1 elements. Every i in U satisfies
p_i >= beta_{m-1} > t (by C1). Since mu(p) = t, the unique j not in U
is the coordinate attaining the minimum, so p_j = t. Then
|p_j - r_j| = |t - t| = 0 < E(r). Done.
FINISH L3. The map from the induction hypothesis is used as follows.
The label (s_j, d_j) from the k-dimensional induction family (that
generated lambda via (9)) is active at X_h(p_U^nu) in its own family:
activity within the type-k subfamily is preserved because all that sub-
family has the same offset shift -h^{beta_k}.
By C1, every p_i for i in U is >= beta_k in the limit (and <= b since
p in [a,b]^m). By the induction hypothesis applied in dimension k, we
get
|p_i - r_i| < E(r) for i in U. (12)
By C2, for k <= m-2, every j not in U has |p_j - r_j| = |p_j - t| <=
beta_{k+1} - t < E(r) by (8) at level k+1. By C3, for k = m-1, the
unique j not in U has |p_j - r_j| = 0 < E(r).
Together, || p - r_lambda ||_infinity < E(r_lambda). This proves L3.
Done with Step 2.
Also note for later use: for any label lambda in Lambda_t, mu(r_lambda)
= t and r_lambda in [a, b]^m (by L1). This is what will help glue in
Step 3.
====================================================================
4. PROOF OF LEMMA 2.1, STEPS 3-4: NEIGHBORHOODS AND GLUING
====================================================================
Step 3. From mu = t exactly to a neighborhood of t.
Fix t in [a, b] and Lambda_t from Step 1. For lambda in Lambda_t,
define the reachable set at level t by
A_lambda = { p in [a,b]^m : there exist h_nu -> 0+ and p^nu in R^m
with p^nu -> p and lambda active at X_{h_nu}(p^nu) }.
A_lambda is closed: if z_n in A_lambda and z_n -> z, choose witnesses
h_n in (0, 1/n), u_n in R^m with ||u_n - z_n|| < 1/n, lambda active at
X_{h_n}(u_n). Then u_n -> z, so z is a limit of active points.
Define the bad set at level t:
B_t = union over lambda in Lambda_t of
{ p in A_lambda : || p - r_lambda ||_infinity >= E(r_lambda) }.
B_t is compact (finite union of closed subsets of the compact [a,b]^m).
By L3, no p with mu(p) = t lies in B_t (such p would have an active
lambda in Lambda_t and would violate the strict inequality in L3).
Since B_t is compact, {mu = t} is closed, and they are disjoint,
dist(B_t, {mu = t}) > 0. Choose rho_t > 0 such that
(t - rho_t, t + rho_t) is disjoint from B_t. (13)
Every label of Lambda_t has offset o(h^t) by construction. Shrink rho_t
if necessary so that additionally, for some epsilon_t > 0,
t + rho_t - epsilon_t > t, and
c_lambda(h) = o(h^{t + rho_t - epsilon_t}) for every lambda. (14)
Such shrinkage is possible because c_lambda = o(h^t) is a stronger
decay than o(h^{t + gap}) for any gap > 0. Choose epsilon_t small
enough that t + rho_t - epsilon_t > t.
Let I_t = (t - rho_t, t + rho_t). By (13) and the proof of L3:
L3'. If p is in [a,b]^m with mu(p) in I_t, h_nu -> 0+, p^nu -> p, and
lambda in Lambda_t is active at X_{h_nu}(p^nu) for all nu, then
|| p - r_lambda ||_infinity < E(r_lambda).
Indeed: the assumption ||p - r_lambda||_infinity >= E(r_lambda) would
place p in B_t (p is in A_lambda as a limit of active points). But
mu(p) in I_t, contradicting (13).
Step 4. Gluing.
The intervals I_t as t runs over [a, b] cover [a, b] (t is trivially
in I_t). By compactness of [a, b], extract a finite subcover. Remove
any interval contained in another. Relabel the surviving centers as
a <= t_1 < t_2 < ... < t_N <= b.
Write I_{t_j} = (L_j, R_j). Since no interval contains another,
L_1 < L_2 < ... < L_N and R_1 < R_2 < ... < R_N. Coverage forces
L_1 <= a and R_N >= b. Consecutive intervals overlap: R_j > L_{j+1}
(otherwise any point of [R_j, L_{j+1}] is in [a, b] but not in any
chosen interval, contradicting coverage).
For 1 <= j <= N - 1 choose a cut
q_j in ( max(t_j, L_{j+1}), min(t_{j+1}, R_j) ). (15)
This open interval is nonempty: I_{t_j} contains its own center t_j
and overlaps I_{t_{j+1}}, which contains t_{j+1}. Set q_0 = a and
q_N = b. Then
t_j < q_j < t_{j+1} (1 <= j <= N-1), (16)
[q_{j-1}, q_j] subset I_{t_j} (1 <= j <= N). (17)
The glued family. Take the disjoint union of the local families
Lambda_{t_j}. For a label lambda in Lambda_{t_j} with original offset
c_lambda(h), redefine the offset to
c~_lambda(h) = c_lambda(h) - sum_{l=1}^{j-1} h^{q_l}. (18)
The empty sum (j = 1) is zero. Slopes are unchanged.
CLAIM 4.1. Every new offset is o(h^a).
Proof. c_lambda = o(h^{t_j + rho_j - epsilon_{t_j}}) by (14). Since
t_j + rho_j - epsilon_{t_j} > a, h^{t_j + rho_j - epsilon_{t_j}} =
o(h^a), so c_lambda = o(h^a). Each shift h^{q_l} has q_l > t_l >= a,
so h^{q_l} = o(h^a). A finite sum of o(h^a) terms is o(h^a). Done.
CLAIM 4.2. Suppose a fixed label from level t_j is active in the glued
family at X_{h_nu}(p^nu) for h_nu -> 0+, p^nu -> p in [a, b]^m. Then
q_{j-1} <= mu(p) <= q_j. (19)
Proof of upper bound. Assume j < N and mu(p) > q_j. Then every
h^{p_i^nu} = o(h^{q_j}) (all p_i^nu close to p_i > q_j; drop to fixed
delta > 0 in the exponent). The original offset c_lambda is o(h^{q_j}):
this follows from (14), q_j in I_{t_j} (so q_j < t_j + rho_j), and
q_j > t_j + rho_j - epsilon_{t_j} (choose epsilon_{t_j} small enough,
say < rho_j / 2; then q_j > t_j + rho_j/2 > t_j + rho_j - epsilon_{t_j},
so h^{t_j + rho_j - epsilon_{t_j}} = o(h^{q_j}) and c_lambda = o(h^{q_j})).
Compare the shifted center (t_{j+1}*1, 0) (with its shift -sum_{l=1}^{j}
h^{q_l}) to the glued label lambda (with its shift -sum_{l=1}^{j-1}
h^{q_l}). The difference, center minus label, is
(t_{j+1}*1 - r) . X_h(p^nu) - c_lambda(h) - h^{q_j}. (20)
Every coefficient in the scalar product is bounded (|t_{j+1} - r_i| <=
b - a), and every h^{p_i^nu} = o(h^{q_j}); so the first term is
o(h^{q_j}). The second term is o(h^{q_j}). Hence (20) equals
-h^{q_j}(1 + o(1)) < 0 for small h. So the shifted center is STRICTLY
SMALLER than the supposed-active label, which contradicts activity.
Proof of lower bound. Assume j > 1 and mu(p) < q_{j-1}. Then some p_i <
q_{j-1}. Compare the shifted center (t_{j-1}*1, 0) (shift
-sum_{l=1}^{j-2} h^{q_l}) to the glued label lambda (shift
-sum_{l=1}^{j-1} h^{q_l}). The difference, center minus label, is
(t_{j-1}*1 - r) . X_h(p^nu) - c_lambda(h) + h^{q_{j-1}}. (21)
Every r_i >= t_j (by L1 for lambda in Lambda_{t_j}). So t_{j-1} - r_i
<= -(t_j - t_{j-1}) < 0. The i-th contribution -sum_i (r_i - t_{j-1})
h^{p_i^nu} contains a term of size >= (t_j - t_{j-1}) h^{p_i^nu} for the
specific p_i < q_{j-1}. Dividing (21) by h^{q_{j-1}}:
- (t_j - t_{j-1}) h^{p_i^nu - q_{j-1}} -> -infinity
(because p_i in limit < q_{j-1}).
The second term -c_lambda divided by h^{q_{j-1}}: c_lambda = o(h^{q_{j-1}})
by (14) and q_{j-1} < t_j < t_j + rho_j - epsilon_{t_j}. So this term
vanishes. The third term is +1. Hence (21) / h^{q_{j-1}} -> -infinity,
so (21) is negative for small h. Contradicts activity of lambda.
Conclusions from Claim 4.2 give (19). Done.
Finish the proof of (6) for the glued family.
Suppose a label lambda from level t_j is active in the glued family at
X_{h_nu}(p^nu) for every nu, with h_nu -> 0+ and p^nu -> p in [a, b]^m.
By Claim 4.2, mu(p) in [q_{j-1}, q_j] subset I_{t_j} by (17).
The label is also active within its ORIGINAL subfamily Lambda_{t_j}:
all labels in Lambda_{t_j} received the same shift -sum_{l=1}^{j-1}
h^{q_l}, so activity among them is unchanged. By L3',
|| p - r_lambda ||_infinity < E(r_lambda). Done.
====================================================================
5. COROLLARY: UNIFORM FORM
====================================================================
Corollary 5.1 (uniform activity bound). Let m >= 1, a < b, E : [a,b]^m
-> (0, infinity) any positive function. Fix a finite family Lambda
supplied by Lemma 2.1 (built with tolerance E). Then there is
h_0 > 0 such that, for every 0 < h < h_0 and every p in [a, b]^m,
every label lambda in Lambda active at X_h(p) satisfies
|| p - r_lambda ||_infinity < E(r_lambda). (22)
The family Lambda is fixed BEFORE h_0 is chosen.
Proof. Suppose the conclusion fails. Then there are sequences h_nu ->
0+ and p^nu in [a, b]^m and labels lambda_nu in Lambda, active at
X_{h_nu}(p^nu), with
|| p^nu - r_{lambda_nu} ||_infinity >= E(r_{lambda_nu}). (23)
By finiteness of Lambda and compactness of [a, b]^m, take a subsequence
with lambda_nu = lambda fixed and p^nu -> p in [a, b]^m. Pass to the
limit in (23): since E(r_lambda) is a fixed positive number, the strict
inequality of Lemma 2.1's (6) is violated. Contradiction. Done.
====================================================================
6. THE CUT-FLUX LEMMA
====================================================================
This finite combinatorial lemma isolates the role of weak reversibility.
The weights will be the monomials x^y and the levels will be
r_lambda . y.
Setting. V is a finite set. E is a finite set of directed edges with
source and target maps s, t : E -> V. Every edge has a directed path
from its target t(e) back to its source s(e) (the RETURN-PATH property;
equivalent to the edges being weakly reversible). a : V -> R is a level
function. w_v > 0 for every v in V (weights). kappa_e > 0 for every e
in E. Suppose delta > 0 satisfies
a(u) < a(z) implies w_z <= delta * w_u (u, z in V). (24)
If E is nonempty, also assume the separation condition
delta * sum_{e in E} kappa_e < min_{e in E} kappa_e. (25)
Lemma 6.1 (cut-flux).
sum_{e in E} kappa_e w_{s(e)} ( a(t(e)) - a(s(e)) ) >= 0. (26)
Proof. If E is empty, both sides of (26) are 0.
Distinct levels. Let alpha_1 < alpha_2 < ... < alpha_q be the distinct
values of a on V (q = 0 or q >= 1). Suppose first E nonempty, so V and
its levels are nonempty: q >= 1. For 1 <= j <= q-1 split V into
V_j^- = { v in V : a(v) <= alpha_j },
V_j^+ = { v in V : a(v) > alpha_j }.
Let E_j^+ be the edges from V_j^- to V_j^+, and E_j^- the edges from
V_j^+ to V_j^-. Define the net upward flux
Q_j = sum_{e in E_j^+} kappa_e w_{s(e)}
- sum_{e in E_j^-} kappa_e w_{s(e)}. (27)
Claim A. Q_j >= 0 for every j.
If E_j^- is empty, Q_j is a sum of positive terms. Suppose E_j^- is
nonempty. Take any e_in in E_j^-; its return path from t(e_in) in V_j^-
to s(e_in) in V_j^+ crosses the cut at least once upward, so it contains
some e_0 in E_j^+. Let u = s(e_0) in V_j^-. Every source z of an edge
in E_j^- has a(z) > alpha_j >= a(u), so a(u) < a(z), and (24) gives
w_z <= delta * w_u. Hence
sum_{e in E_j^-} kappa_e w_{s(e)}
<= delta * w_u * sum_{e in E_j^-} kappa_e
<= delta * w_u * sum_{e in E} kappa_e
< w_u * min_{e in E} kappa_e (by 25)
<= kappa_{e_0} * w_u.
Since e_0 in E_j^+, the term kappa_{e_0} w_u = kappa_{e_0} w_{s(e_0)} is
one summand of sum_{e in E_j^+} kappa_e w_{s(e)}. So
sum_{e in E_j^-} kappa_e w_{s(e)} < sum_{e in E_j^+} kappa_e w_{s(e)}.
Thus Q_j > 0. Claim A is proved.
Identity. For each edge e,
a(t(e)) - a(s(e)) = sum_{j : e in E_j^+} (alpha_{j+1} - alpha_j)
- sum_{j : e in E_j^-} (alpha_{j+1} - alpha_j). (28)
If the edge is upward from level j_s to j_t (j_t > j_s), it crosses cuts
j_s, j_s + 1, ..., j_t - 1 upward, and (alpha_{j_t} - alpha_{j_s}) is
exactly the sum of those gaps. If downward (j_t < j_s), symmetric. If
j_t = j_s (same level), both sides are 0.
Sum (28) over all e in E with weight kappa_e w_{s(e)}:
sum_e kappa_e w_{s(e)} ( a(t(e)) - a(s(e)) )
= sum_{j=1}^{q-1} (alpha_{j+1} - alpha_j) Q_j
>= 0,
using Claim A and alpha_{j+1} - alpha_j > 0. This is (26).
If q = 1 (all levels equal), no cuts, both sides are 0. If E is empty,
both sides are 0. Done.
====================================================================
7. DERIVATIVE OF A FINITE MINIMUM OF AFFINE FUNCTIONS
====================================================================
Finite index set I. Vectors b_i in R^d and reals d_i for i in I. Define
Phi(x) = min_{i in I} ( b_i . x + d_i ), x in R^d. (29)
Phi is concave (min of linear functions is concave), continuous, and
piecewise affine.
Active set at x: A(x) = { i in I : b_i . x + d_i = Phi(x) }.
Lemma 7.1. Let gamma : [u, v] -> R^d be continuously differentiable.
Then at every tau in [u, v), the right derivative of Phi o gamma exists
and equals
(d/dtau)^+ Phi(gamma(tau)) = min_{i in A(gamma(tau))} b_i . gamma'(tau). (30)
Moreover, if b_i . gamma'(tau) >= 0 for every tau in [u, v) and every
i in A(gamma(tau)), then Phi o gamma is nondecreasing on [u, v].
Proof. Fix tau in [u, v). Let A = A(gamma(tau)); A is nonempty and
finite. Inactive indices have a strict gap: for each i in I \ A, there
is c_i > 0 with
b_i . gamma(tau) + d_i >= Phi(gamma(tau)) + c_i.
Let c = min over inactive i of c_i (if none, set c = 1). c > 0: finitely
many positive numbers.
Upper bound. For any active i_* and small eta > 0,
Phi(gamma(tau + eta)) <= b_{i_*} . gamma(tau + eta) + d_{i_*}
= Phi(gamma(tau))
+ eta * b_{i_*} . gamma'(tau) + o(eta).
Taking the infimum over the finitely many active i (uniformity: finite
set, o(eta) independent of i in A):
Phi(gamma(tau + eta))
<= Phi(gamma(tau)) + eta * (min_{i in A} b_i . gamma'(tau)) + o(eta). (31)
Lower bound. For inactive i and small eta > 0, gamma(tau + eta) is close
to gamma(tau), so b_i . gamma(tau + eta) + d_i >= Phi(gamma(tau)) + c/2.
For active i,
b_i . gamma(tau + eta) + d_i
= Phi(gamma(tau)) + eta * b_i . gamma'(tau) + o(eta),
uniformly over the finite active set. Taking the minimum over all i in
I for small eta, only active indices can be near the minimum:
Phi(gamma(tau + eta))
>= Phi(gamma(tau)) + eta * (min_{i in A} b_i . gamma'(tau)) + o(eta). (32)
Combine (31) and (32): (30) holds. Done.
Monotonicity. If b_i . gamma'(tau) >= 0 for every active i, then by (30)
the right derivative of Phi o gamma is >= 0 at every tau in [u, v).
Standard argument: for any u <= s < t <= v and any eps > 0, the
function g(tau) = Phi(gamma(tau)) + eps tau has strictly positive right
derivative on [s, t), so g cannot attain its maximum anywhere except at
t. Hence g(s) <= g(t); let eps -> 0 to get Phi(gamma(s)) <= Phi(gamma(t)).
Done.
====================================================================
8. APPLICATION: TOLERANCE, SIGN CONSTRAINT, MONOMIAL ORDER
====================================================================
Fix the network (C, Reactions) with positive rates kappa_{y->z}, and
fix x(0) in R_{>0}^d. We prepare numerical data for Lemma 2.1.
Directions. Let e_1, ..., e_d be the standard basis of R^d, and put
D = { e_1, ..., e_d } U { z - y : y, z in C, y != z }. (33)
D is finite, and every vector in D is nonzero.
Tolerance. For r in [-1,1]^d define
E(r) = min( {1/2} U { |r . v| / (2 ||v||_1) :
v in D, r . v != 0 } ), (34)
where ||v||_1 = sum_i |v_i|. Since D is finite and every |r . v| in the
second set is positive, E(r) is positive for every r; in particular,
E(0) = 1/2. E is DISCONTINUOUS at hyperplanes r . v = 0 but Lemma 2.1
allows arbitrary tolerances.
Label family. Apply Lemma 2.1 with m = d, a = -1, b = 1, tolerance E as
in (34). This yields a finite nonempty family Lambda of labels
(r_lambda, c_lambda) with r_lambda in [-1,1]^d, c_lambda(h) = o(h^{-1}).
Threshold from Corollary 5.1. Let h_0 > 0 be such that for every
0 < h < h_0 and every p in [-1,1]^d, every active label lambda in
Lambda at X_h(p) satisfies
||p - r_lambda||_infinity < E(r_lambda). (35)
Separation parameter. Define
H = min( {1} U { |r_lambda . v| / 2 :
lambda in Lambda, v in D, r_lambda . v != 0 } ). (36)
Finiteness again gives H > 0. Also H <= 1.
Order of choices. Important: the data is chosen in the order
C, Reactions -> D -> E -> Lambda -> (h_0, H) -> specific h.
In particular, H is fixed BEFORE any h.
LEMMA 8.1 (sign constraint). Fix h in (0, h_0) and p in [-1,1]^d, let
lambda in Lambda be active at x = X_h(p), and let v in D satisfy
r_lambda . v != 0. Then
(a) sgn(p . v) = sgn(r_lambda . v);
(b) |p . v| >= H. (37)
Proof. By (35), ||p - r_lambda||_infinity < E(r_lambda). Let v in D with
r_lambda . v != 0. Then
|(p - r_lambda) . v| <= ||p - r_lambda||_infinity ||v||_1
< E(r_lambda) ||v||_1
<= |r_lambda . v| / 2
(the last step by definition (34)). So |p . v - r_lambda . v| <
|r_lambda . v| / 2. This gives (a) (same sign, because p . v is closer
to r_lambda . v than it is to 0) and (b) (|p . v| >= |r_lambda . v|/2,
while H <= |r_lambda . v|/2 by (36)).
COROLLARY 8.2 (monomial order). Let y, z in C be distinct. Suppose
r_lambda . y < r_lambda . z. Then for x = X_h(p) with 0 < h < h_0 and
lambda active at x,
x^z <= h^H x^y. (38)
Proof. z - y is in D (by definition (33)) and r_lambda . (z - y) > 0.
By Lemma 8.1(b) with v = z - y, p . (z - y) >= H. So
x^z / x^y = h^{p . (z-y)} <= h^H.
Done.
====================================================================
9. THE INVARIANT POLYTOPE
====================================================================
Choose h in (0, h_0) satisfying three conditions:
(a) ||p^0||_infinity < H, where p^0 in R^d is defined by
p^0_i = log(x(0)_i) / log(h). Then X_h(p^0) = x(0). (39)
(b) h^H * sum_{e in Reactions} kappa_e < min_{e in Reactions} kappa_e. (40)
(Only if Reactions is nonempty.)
(c) 0 < h < h_0, of course.
Each condition holds for small h: log(h) -> -infinity gives p^0 -> 0;
and h^H -> 0 since H > 0. Choose h to satisfy all three.
Set
F(x) = min over lambda in Lambda of ( r_lambda . x + c_lambda(h) ),
x in R^d, (41)
B_h = [h, h^{-1}]^d.
STEP A: labels active at x(0) have slope 0.
Let lambda in Lambda be active at x(0) = X_h(p^0). Then r_lambda = 0.
Proof. Suppose r_lambda,i != 0 for some i, so r_lambda . e_i != 0.
Apply Lemma 8.1 with v = e_i:
sgn(p^0_i) = sgn(r_lambda,i) and |p^0_i| >= H.
But (39) gives |p^0_i| <= ||p^0||_infinity < H. Contradiction. So
r_lambda = 0.
Step A is the reason H is fixed before h: the slope of a label active
at x(0) must be forced to 0.
STEP B: choose a zero-slope branch with constant value M.
Choose one active label at x(0); call it lambda_0. By Step A, r_lambda_0
= 0. Its value at x(0) is r_lambda_0 . x(0) + c_lambda_0(h) =
c_lambda_0(h). Since it is active, that value equals F(x(0)):
hence
M := F(x(0)) = c_lambda_0(h). (42)
Since F is the minimum over all labels, F(x) <= M for every x in R^d,
and F(x(0)) = M.
STEP C: no maximum on the boundary of B_h.
Claim. No x in the boundary dB_h satisfies F(x) = M.
Proof. Suppose x in dB_h with F(x) = M. Since x in B_h = [h, h^{-1}]^d,
x = X_h(p) for some p in [-1,1]^d with ||p||_infinity = 1 (boundary).
Now r_lambda_0 . x + c_lambda_0(h) = 0 + M = M = F(x). So lambda_0 is
active at x. Apply Corollary 5.1: ||p - r_lambda_0||_infinity <
E(r_lambda_0) = E(0) = 1/2. Since r_lambda_0 = 0, ||p||_infinity < 1/2.
Contradiction with ||p||_infinity = 1.
STEP D: the polytope K.
Define
K = { x in R^d : F(x) = M }. (43)
By Step B, F(x) <= M everywhere, so K = { x : F(x) >= M } = intersection
over lambda of closed half-spaces { x : r_lambda . x + c_lambda(h) >=
M }. Thus K is a closed convex polyhedron.
Properties:
D1. x(0) in K (since F(x(0)) = M).
D2. K is disjoint from dB_h (Step C).
D3. K is contained in int B_h = (h, h^{-1})^d. Proof: if z in K with
z outside int B_h, the segment [x(0), z] lies in K (K convex),
starts in int B_h, and ends outside int B_h, so it crosses dB_h at
some w in K. Contradicts D2.
D4. K is compact (closed and contained in compact B_h) and convex,
and lies strictly inside R_{>0}^d (D3).
STEP E: K is forward invariant.
Claim. For every z in K, the solution x(t) of (1) starting at z exists
for all t >= 0 and stays in K.
Proof.
E1. Nonnegative derivative on active branches. For every x in B_h and
every label lambda in Lambda active at x, r_lambda . f(x) >= 0.
Proof. Apply Lemma 6.1 (cut-flux) with
V = C, E = Reactions,
a(y) = r_lambda . y, w_y = x^y,
kappa_e = rate of reaction e, delta = h^H.
Return-path property: weak reversibility of Reactions.
Condition (24) of Lemma 6.1: for u, z in C with a(u) < a(z) (i.e.
r_lambda . u < r_lambda . z), we have x^z <= h^H x^u = delta w_u by
Corollary 8.2.
Condition (25): h^H * sum kappa_e < min kappa_e by (40).
Conclusion (26): sum_e kappa_e x^{y_e} ( a(z_e) - a(y_e) ) >= 0, where
y_e and z_e are source and target of reaction e. This sum equals
sum_e kappa_e x^{y_e} ( r_lambda . z_e - r_lambda . y_e )
= r_lambda . ( sum_e kappa_e x^{y_e} ( z_e - y_e ) )
= r_lambda . f(x).
So r_lambda . f(x) >= 0. Done.
E2. F o x is nondecreasing inside B_h. Let x(t) be the trajectory of
(1) starting at z in K, on [0, T_max). For any [a, b] with x([a,b]) in
B_h, apply Lemma 7.1 with Phi = F and gamma = x. The active slopes all
give r_lambda . f(x(t)) >= 0 (E1). So (d/dtau)^+ F(x(t)) >= 0, and F o x
is nondecreasing on [a, b].
E3. F o x is at M. F <= M everywhere (Step B), and F(x(0)) = M.
Nondecrease (E2) forces F(x(t)) = M for all t with x(t) in B_h.
E4. First-exit argument. z in K, hence x(0) = z in int B_h (D3). Define
T = sup { t in [0, T_max) : x([0, t]) subset K }.
Since x(0) in K and K is closed, x is continuous, we have T > 0 and
x([0, T]) subset K. So x([0, T]) subset int B_h (D3). By E3 and
continuity, F(x(t)) = M for t in [0, T].
If T < T_max: x(T) in K subset int B_h (interior is open), so by
continuity of x there is delta > 0 with x([T, T + delta]) subset
int B_h. Applying E2 on [T, T + delta] and E3 gives F(x(t)) = M for
t in [T, T + delta]; hence x([T, T + delta]) subset K. Thus
x([0, T + delta]) subset K, contradicting the sup definition of T.
Therefore T = T_max. So x([0, T_max)) subset K.
E5. Extension past finite time. Suppose T_max < infinity. Since K is
compact and x([0, T_max)) subset K, f is a polynomial so L = sup_K ||
f || < infinity. Hence x is L-Lipschitz on [0, T_max). The limit z* =
lim_{t -> T_max} x(t) exists and lies in K (K closed). By standard ODE
extension, the solution extends past T_max. Contradiction. So T_max =
infinity.
Done. Step E holds: every trajectory starting in K stays in K and
exists globally.
====================================================================
10. PROOF OF THE MAIN THEOREM (Theorem 0.1)
====================================================================
Let x(0) in R_{>0}^d. Build K as in section 9. Then:
- K is a compact convex subset of R_{>0}^d (D4), containing x(0) (D1).
- K is forward invariant with global solutions (Step E).
- K is contained in B_h = [h, h^{-1}]^d (D3).
Starting at x(0) (which is in K), the trajectory exists for all t >= 0
and stays in K subset [h, h^{-1}]^d. Therefore for eps = h in (0, 1),
eps <= x_i(t) <= 1/eps for all t >= 0 and i = 1, ..., d.
Theorem 0.1(a) and (b) are proved. Done.
====================================================================
11. COROLLARY: A POSITIVE EQUILIBRIUM IN EVERY POSITIVE CLASS
====================================================================
Corollary 11.1. Let (C, Reactions) be a finite weakly reversible
mass-action network with positive constants kappa_{y->z} > 0. Let
x(0) in R_{>0}^d. Then there is a positive equilibrium x* in
(x(0) + S) intersect R_{>0}^d, where S is the stoichiometric subspace
from Fact (iii).
Proof. Let K be the invariant polytope of section 9. Define
Q = K intersect (x(0) + S). (44)
Four properties.
- Q is nonempty: x(0) is in K and in x(0) + S.
- Q is compact: K is compact, x(0) + S is closed (linear subspace).
- Q is convex: intersection of convex sets.
- Q is forward invariant: if y in Q then phi_t(y) is in K (Step E)
and in y + S = x(0) + S (Fact (iii)), so phi_t(y) in Q.
Brouwer fixed points. For each integer n >= 1, the map phi_{1/n} : Q ->
Q is continuous (flow of smooth ODE) and Q is compact convex. By
Brouwer's fixed point theorem there is z_n in Q with
phi_{1/n}(z_n) = z_n. (45)
Integral identity. For any z in Q,
phi_s(z) - z = int_0^s f(phi_r(z)) dr, 0 <= s <= 1/n.
At s = 1/n and z = z_n, using (45):
0 = phi_{1/n}(z_n) - z_n = int_0^{1/n} f(phi_r(z_n)) dr.
Multiply by n and rearrange:
f(z_n) = - n int_0^{1/n} ( f(phi_r(z_n)) - f(z_n) ) dr.
Uniform bound. Let L = sup_{x in Q} ||f(x)|| < infinity (Q compact).
||phi_r(z_n) - z_n|| <= L r <= L / n for 0 <= r <= 1/n.
Since f is uniformly continuous on compact Q, and phi_r(z_n) -> z_n
uniformly in r in [0, 1/n],
||f(z_n)|| <= sup_{0 <= r <= 1/n} || f(phi_r(z_n)) - f(z_n) || -> 0.
Compactness. Q is compact. Take a subsequence z_{n_k} -> x* in Q. By
continuity of f, f(x*) = 0. Since x* in Q subset K subset R_{>0}^d
(D3), x* is positive; and x* in x(0) + S. Done.
====================================================================
12. REMARK: COMPLEX-BALANCED SYSTEMS CONVERGE
====================================================================
A mass-action system is "complex-balanced" if there is a positive state
x* at which the total incoming and outgoing fluxes agree at every
complex:
sum_{z: z->y in Reactions} kappa_{z->y} (x*)^z
= sum_{w: y->w in Reactions} kappa_{y->w} (x*)^y (46)
for every complex y in C. This is strictly stronger than f(x*) = 0
(net balance per species) and implies weak reversibility.
Theorem (Horn-Jackson). With complex-balanced positive rates, every
positive stoichiometric class contains exactly one complex-balanced
state x*. That state is a positive equilibrium.
Horn-Jackson entropy. Define V : R_{>0}^d -> R by
V(x) = sum_{i=1}^d ( x_i log(x_i / x*_i) - x_i + x*_i ). (47)
Standard facts (Horn-Jackson 1972):
(a) V is smooth, nonnegative on R_{>0}^d, and V(x) = 0 iff x = x*.
(b) Along any trajectory of (1), dV(x(t))/dt <= 0 with equality only
at complex-balanced states.
(c) In each positive stoichiometric class there is exactly one
complex-balanced state.
Corollary 12.1. Under complex balance, for every x(0) in R_{>0}^d the
trajectory x(t) converges to the unique positive equilibrium x* in
(x(0) + S) intersect R_{>0}^d.
Proof. Complex balance implies weak reversibility, so Theorem 0.1 traps
x(t) in K subset R_{>0}^d. Hence x(t) stays in Q = K intersect (x(0)+S),
which is compact. V is continuous and nonincreasing on Q by (b). The
omega-limit set of x(t) lies in the set of x in Q with dV/dt = 0. By
(b) and (c), that is the single point x*. So x(t) -> x*. Done.
In particular, every weakly reversible DEFICIENCY-ZERO network (deficiency
= |C| - (# linkage classes) - dim S) is complex-balanced. Thus its
positive trajectories converge to a positive equilibrium.
====================================================================
13. WHERE THIS FITS (history, and the August-Barahona gap)
====================================================================
Historical background. The structural theory starts with complex
balance: Horn-Jackson (1972), Horn (1972), Feinberg (1972, deficiency-
zero theory). Weak reversibility is a GRAPH property; complex balance
depends on rates. The "global attractor conjecture" for complex-balanced
systems asks whether positive trajectories converge to the unique
positive equilibrium in the class; Corollary 12.1 answers yes.
Feinberg (1987, Remark 6.1.E) asked whether a positive trajectory of
any weakly reversible mass-action system can converge to a point where
some species is zero. Anderson (2011, Section 1.1) separated this into
two conjectures: BOUNDEDNESS (positive trajectories are bounded) and
PERSISTENCE (for bounded trajectories, no extinction). Theorem 0.1
proves both, for arbitrary positive constant rates and any number of
linkage classes.
Prior partial results (incomplete list):
* Anderson (2011): boundedness for SINGLE linkage class systems.
* Gopalkrishnan-Miller-Shiu (2014): permanence of strongly endotactic
systems (a class larger than single-linkage weakly reversible);
Boros-Hofbauer (2020) gave another proof for single-linkage.
* Craciun-Nazarov-Pantea (2013): boundedness/persistence/permanence
for TWO-SPECIES weakly reversible systems.
* Pantea (2012): persistence of bounded weakly reversible trajectories
when dim S = 2, for arbitrary species and linkage counts.
* Boros (2019): every positive stoichiometric class contains a
positive equilibrium (Corollary 11.1).
* Craciun (toric differential inclusions, 2019, revised 2026):
persistence of bounded positive trajectories with variable rates
that stay bounded above and away from zero. Its general weakly
reversible statement ASSUMES a trajectory upper bound; Theorem 0.1
supplies that bound.
Two species with dim S = 2 is a restriction. Any number of linkage
classes, any d, is the scope of Theorem 0.1.
An instructive near-miss. August and Barahona (2010, Theorem 6)
previously stated the general conclusion. Their proof (Part III, p. 45,
before Eq. (11)) inferred monomial dominance from a maximal sum of
exponents together with a "sufficiently large product of concentrations".
That inference fails in the stated region; let us see why, because the
failure is exactly the trap avoided by the sign constraint of Lemma 8.1.
Consider the simplest reversible network: 2A <-> B, both rates 1. Write
a = [A], b = [B]. Then
da/dt = -2 a^2 + 2 b,
db/dt = a^2 - b. (2*)
Take the state (a, b) = (T, T^3) with T > 1:
a b = T^4 -> +infinity,
a^2 = T^2 < T^3 = b,
d/dt (a + b) = b - a^2 = T^3 - T^2 > 0.
So the sum a + b is INCREASING there, pushing the state outward along
a direction the naive exponent argument does not control. The inference
"big product -> all monomials large enough -> boundedness" is wrong.
For the network itself the actual trajectory IS bounded: a + 2b is
conserved (d/dt (a+2b) = 0). So (2*) is bounded despite the naive
argument failing on it.
Why our proof does not fail here. The point is to force the DYNAMICALLY
active slope (not an arbitrary chosen normal) to know the actual
monomial sizes. In 2A <-> B with r_lambda an active slope, the
monomial-order Corollary 8.2 gives: if r_lambda . (2,0) < r_lambda .
(0,1), i.e. 2 r_lambda,1 < r_lambda,2, then a^2 = x^{(2,0)} and b =
x^{(0,1)} satisfy
x^{(0,1)} <= h^H x^{(2,0)},
i.e. b <= h^H a^2. On the OTHER side of the tie, r_lambda,2 < 2
r_lambda,1 gives a^2 <= h^H b. In either case the cut-flux lemma 6.1
sums the inward contribution of one edge and the outward contribution
of the return path, and the h^H-gap dominates the finite collection of
rates. No dominant monomial heuristic is needed at any point.
Remarks about scope.
* The theorem does not assert convergence. It only gives a fixed
compact positive box around the trajectory. Convergence to a single
point is a stronger statement that requires complex balance
(section 12) or other structural assumptions.
* The bound eps depends on x(0). The theorem makes no claim of
uniformity across a stoichiometric compatibility class.
* Rates are CONSTANT. Variable rates that stay bounded above and
away from zero can be partially handled by the argument of Craciun
(2026), which ASSUMES the trajectory stays bounded (something
Theorem 0.1 supplies for the constant-rate case).
====================================================================
14. STRATEGIC SUMMARY
====================================================================
The proof uses four ideas, each of which has an independent purpose.
1. Monomial parametrization. Points in the positive box B_h =
[h, h^{-1}]^d can be written as X_h(p) = (h^{p_1}, ..., h^{p_d})
with p in [-1, 1]^d. Comparisons between monomials x^y and x^z
reduce to comparisons between p . y and p . z, with strict gaps
of h^H.
2. Adaptive affine minimization. Lemma 2.1 produces a finite family
of affine labels whose ACTIVE slopes, at any point of B_h, are
forced (by Corollary 5.1) to be E-close to the actual exponent
vector p. This is how DYNAMICAL sign information (from f, which
depends only on active slopes) is made to agree with the concrete
monomial comparisons.
3. Finite return-path accounting. Lemma 6.1 (cut-flux) sums kappa_e
w_{s(e)} (a(t(e)) - a(s(e))) over all reactions and shows it is
nonnegative when the weights satisfy the strict monomial-order
gap (Corollary 8.2) and a rate-separation inequality. This is the
exact step where weak reversibility does its work.
4. Compact convex trapping. The set K = {F = M}, a bounded polyhedron
strictly inside the positive orthant, is forward-invariant for the
dynamics. The "first-exit" argument (Step E4) is the technical
lemma that makes the invariant structure rigid; because K is
compact and stays inside B_h, a finite-time blowup is impossible
(Step E5).
Iterating these ideas at all scales h is exactly what the label
construction of Lemma 2.1 does. The result is a proof that needs
neither a particular structure of the network's linkage classes nor
any a priori bound on the compatibility class.
====================================================================
15. NOTATION SUMMARY
====================================================================
C finite set of complexes (in Z_{>=0}^d)
Reactions finite set of reactions y -> z (y, z in C)
kappa_{y->z} positive rate constant (constant in t)
d number of species
x = (x_i) concentration vector in R_{>0}^d
x^y monomial prod_i x_i^{y_i}
f = f(x) polynomial vector field, dx/dt = f(x)
S stoichiometric subspace of R^d
x(0) initial positive concentration vector
T_max maximum forward existence time
R, R^d, R_{>0}^d, real numbers / Euclidean space / positive
R_{>=0}^d orthant / nonnegative orthant
Z_{>=0} nonnegative integers
||v||_1, ||v||_inf sum |v_i|, max |v_i|
sgn sign function (-1, 0, +1)
B_h box [h, h^{-1}]^d
X_h(p) point (h^{p_1}, ..., h^{p_d}) in B_h
p^0 log(x(0)) / log(h), so X_h(p^0) = x(0)
mu(p) min_i p_i for p in R^m
E(r) tolerance function, (34)
Lambda finite family of labels from Lemma 2.1
lambda = (r_lambda, label with slope r_lambda and offset c_lambda
c_lambda) (= function of h)
active label a minimizer of r_lambda . x + c_lambda at x
H separation parameter, fixed before h, (36)
D finite set {e_i} U {z - y}, (33)
h small parameter in (0, h_0)
F(x), F_h(x) min over lambda of (r_lambda . x + c_lambda(h))
M F(x(0)), a constant (Step B)
K {x : F(x) = M}, the invariant polytope
Q K intersect (x(0) + S)
V(x) Horn-Jackson entropy function (section 12)
o(h^a) g(h) = o(h^a) means g(h)/h^a -> 0 as h -> 0+
This completes the proof of Theorem 0.1, plus Corollary 11.1
(equilibrium existence) and Corollary 12.1 (complex-balanced
convergence).