================================================================================
BOUNDEDNESS AND PERSISTENCE OF WEAKLY REVERSIBLE MASS-ACTION SYSTEMS
a complete, self-contained proof
================================================================================
Written for a young reader who knows some calculus. No chemistry, no
analysis, and no prior exposure to reaction networks are assumed. Every
lemma and every step is proved in full. Notation is summarized at the end.
TABLE OF CONTENTS
0 The whole theorem in one paragraph
1 Setup: species, complexes, reactions, mass action
2 Weak reversibility, precisely
3 The main theorem, precisely
4 The idea of the proof
5 The affine approximation lemma (statement)
6 Proof of the affine lemma, steps 1 and 2
7 Proof of the affine lemma, steps 3 and 4
7b The uniform version (corollary)
8 The cut-flux lemma
9 The derivative of a finite minimum of affine functions
10 Applying the tools: tolerance, sign constraint, monomial order
11 The invariant polytope
12 Proof of the main theorem
13 Consequence: a positive equilibrium in every positive class
14 Remark: complex-balanced systems converge
15 Where this fits (history, and one instructive near-miss)
16 Notation summary
Difficulty guide. Sections 5, 6, 7 are the technical heart; they are
denser than the rest. Sections 0-4 and 10-16 form the "physical story"
and read straight through. Sections 8 and 9 are standard tools (slicing
edges, right derivatives of piecewise-linear functions) that many
readers already know.
--------------------------------------------------------------------------------
0. THE THEOREM IN ONE PARAGRAPH
--------------------------------------------------------------------------------
Imagine a finite collection of chemical reactions. For example, "2 A <-> B"
means two A molecules can combine into a B, and a B can split back into
two A molecules. Give every arrow a positive rate constant. In mass-action
kinetics, the rate of each arrow is that constant times the product of the
concentrations of the reactants on its left-hand side. The resulting ODE
is a polynomial system in the concentrations.
Say the network is WEAKLY REVERSIBLE if every arrow can be undone by a
sequence of arrows: for every reaction y -> z there is a directed path
from z back to y (possibly long, possibly through other chemicals).
Theorem (proved in full below). In any finite weakly reversible network,
with any positive rate constants, starting from any x(0) with every
coordinate positive, the solution exists for all t >= 0 and stays inside
a fixed compact box that is strictly inside the positive orthant:
0 < eps <= x_i(t) <= 1/eps < infinity (t >= 0, i = 1, ..., d),
for some eps in (0, 1) that depends only on the network, the rates, and
the initial vector x(0).
So: nothing explodes to infinity. Nothing goes extinct. The state stays
strictly positive and finite forever. The rest of this document is a
complete proof.
--------------------------------------------------------------------------------
1. SETUP
--------------------------------------------------------------------------------
Species. Let d >= 1 be an integer. There are d species X_1, ..., X_d with
concentrations x_1, ..., x_d >= 0. Write x = (x_1, ..., x_d).
Complexes. A complex is a vector y = (y_1, ..., y_d) whose entries are
nonnegative integers, where y_i counts molecules of species X_i. 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 network has a finite set R of reactions.
NOTE ON THE LETTER R. Throughout this document, the single capital
letter R appears with two meanings. Standing alone ("in R", "R is
weakly reversible"), R means the finite set of reactions.
Followed by a superscript or a subscript ("R^d", "R^m", "R_{>0}",
"R_{>=0}"), R means the real numbers. The context always disambiguates.
The distinction is the usual one: blackboard-bold R for reals,
calligraphic R for reactions. If you find the overload jarring,
simply mentally rename the reaction set to Rx throughout.
Linkage classes. Ignore the directions of the arrows. The resulting
undirected graph on C decomposes into connected components, called
linkage classes. Their number is not restricted; there can be any number
from 1 upward, and isolated complexes are allowed.
Mass-action kinetics. Each reaction y -> z in R has a positive constant
kappa_{y -> z} > 0. Using the monomial notation
x^y = x_1^{y_1} * x_2^{y_2} * ... * x_d^{y_d},
define, for i = 1, ..., d:
dx_i/dt = f_i(x) = sum over y->z in R of kappa_{y->z} * x^y * (z_i - y_i).
(1)
Write f = (f_1, ..., f_d) and dx/dt = f(x).
Fact 1 (smoothness). f is a polynomial with real coefficients, so f is
infinitely differentiable on all of R^d. The standard existence and
uniqueness theorem for ODEs then says: from any initial vector x(0) the
system has a unique maximal forward solution on an interval [0, T_max).
Either T_max = +infinity, or T_max is finite and the solution escapes to
infinity as t -> T_max, meaning the norm of x(t) tends to infinity.
Fact 2 (the positive orthant is preserved). If x(0) has every coordinate
>= 0, then every x_i(t) is >= 0 for all t in the maximal interval. If in
addition every x_i(0) > 0, then every x_i(t) > 0 for all t. Proof: on the
hyperplane x_i = 0 the i-th component of the field reduces to
f_i = sum over reactions with y_i = 0 of kappa_{y->z} * x^y * z_i,
because any reaction whose source y has y_i >= 1 contributes a monomial
x^y with a factor x_i and therefore vanishes when x_i = 0. Each remaining
term is nonnegative, since z_i >= 0 and kappa > 0. So the vector field
points weakly into the orthant on its boundary, and no trajectory can
cross the boundary from the inside.
Fact 3 (stoichiometric subspace). Define the linear subspace
S = span over real numbers of the vectors z - y, for y -> z in R.
Then f(x) lies in S for all x, so integrating (1) gives x(t) - x(0) in S
for all t. Thus every trajectory stays inside the affine subspace x(0)+S.
--------------------------------------------------------------------------------
2. WEAK REVERSIBILITY, PRECISELY
--------------------------------------------------------------------------------
Formally: a reaction network is WEAKLY REVERSIBLE if for every reaction
y -> z in R there exist y_0, y_1, ..., y_k in C with y_0 = z, y_k = y,
and every y_{j-1} -> y_j is a reaction of the network. In words: every
arrow can be undone by a directed path.
Some remarks.
(a) This is purely a graph property. It does not depend on the rate
constants, the stoichiometry, or the initial condition.
(b) It is strictly weaker than "strongly connected" in the graph. Strongly
connected means every pair of complexes is mutually reachable. Weak
reversibility only asks that each individual arrow have a return path.
With one linkage class the two notions coincide; with several linkage
classes they do not.
(c) "Reversible" (a special case) means every arrow y -> z has a direct
partner arrow z -> y in R. Weak reversibility allows multi-step
returns.
(d) A network with no reactions at all is trivially weakly reversible
(the condition is vacuous). The theorem then applies: f = 0 and every
trajectory is constant, hence automatically bounded and persistent.
(e) A network with a one-way reaction that cannot be undone is not weakly
reversible, and the theorem does not apply. For example, A -> B alone
is not weakly reversible; then x_1(t) = x_1(0) - t, so the trajectory
goes extinct in finite time. Weak reversibility is genuinely doing
work.
--------------------------------------------------------------------------------
3. THE MAIN THEOREM, PRECISELY
--------------------------------------------------------------------------------
Theorem 3.1. Let d >= 1, let C be a finite set of complexes in Z_{>=0}^d,
and let R be a set of reactions between them. Assume R is weakly
reversible. Let kappa_{y->z} > 0 be arbitrary positive constants. Let
x(0) in R^d have x_i(0) > 0 for all i = 1, ..., d. Then:
(i) The solution of (1) exists for all t >= 0 (T_max = +infinity);
(ii) There is eps in (0, 1), depending only on the network, the rates,
and x(0), with
eps <= x_i(t) <= 1/eps for all t >= 0, i = 1, ..., d.
Remarks.
* eps may depend on x(0). The theorem does not claim a single eps works
for every x(0) in one compatibility class x(0) + S.
* The theorem is indifferent to whether the compatibility class x(0) + S
is bounded. In particular it covers cases where x(0) + S is unbounded.
* Combined with (ii), "all t" implies: for every sequence t_n -> +inf,
some subsequence of x(t_n) converges to a point x^* in the compact box
[eps, 1/eps]^d. The omega-limit set is nonempty and stays strictly
away from the coordinate hyperplanes.
* The theorem does NOT assert that x(t) converges. Only that it stays
inside a fixed compact positive box. Convergence to a single point is
a stronger statement that is false in general, but true under extra
hypotheses (see section 14 on complex balance).
* In the special case of, say, the single reaction network 2A <-> B,
the conclusion follows immediately from a conservation law, and the
full machinery is overkill. The full machinery is needed for systems
where no such simple invariant exists.
--------------------------------------------------------------------------------
4. THE IDEA OF THE PROOF
--------------------------------------------------------------------------------
An individual reaction usually does NOT point inward across any fixed
face of the orthant. On its own, one arrow can push the state toward the
boundary or toward infinity. What weak reversibility guarantees is a
return path -- a sequence of arrows -- that undoes any outward push. But
a path is not one arrow. We must turn the "return-path" phenomenon into
a single inward-pointing statement about a cleverly designed function.
The strategy:
1. Build a concave piecewise-affine function F, adapted to the network
and to the initial point x(0).
2. Prove that F is nondecreasing along every forward trajectory inside
a certain positive box.
3. Arrange that F attains its maximum M = F(x(0)) at x(0), and that the
maximum level set
K = { x in R^d : F(x) = M }
is a compact convex polytope strictly inside the positive orthant.
4. Trap the trajectory. (a) Nondecrease of F prevents the trajectory
from moving to a place where F < M. (b) The maximum value M prevents
the trajectory from moving to a place where F > M. So the trajectory
is confined to K for all forward time. K is a fixed compact box.
5. Extend the solution past any finite blow-up time. If the solution
only existed up to a finite T_max, it would have to escape the box
K, contradicting confinement.
The shape of F is a finite minimum of affine functions:
F(x) = min over lambda in Lambda of ( r_lambda . x + c_lambda(h) ),
where the slopes r_lambda are FIXED vectors in [-1,1]^d (independent of h),
the offsets c_lambda(h) are tiny functions of a small parameter h in (0,1),
and Lambda is a finite index set. Only the offsets depend on h.
The slopes are chosen so that, at a chosen trial point of the form
X_h(p) = ( h^{p_1}, h^{p_2}, ..., h^{p_d} ), p in [-1,1]^d,
every label lambda active at X_h(p) has slope r_lambda approximately equal
to p. "Approximately equal" here needs to be quantified carefully, because
a naive version of this assertion is FALSE. The correct version is the
LABEL APPROXIMATION LEMMA of section 6. It requires:
- a prescribed tolerance rule E: [-1,1]^d -> (0, infinity), which can be
chosen freely by us (even without any regularity),
- a sufficiently small h (below a threshold h_0 chosen after E),
- and then: for any p in [-1,1]^d and any lambda active at X_h(p), we
have || p - r_lambda ||_infinity < E(r_lambda).
The proof of this lemma is the deepest technical step of the whole paper.
Once it is established, everything downstream is comparatively simple.
--------------------------------------------------------------------------------
5. THE AFFINE APPROXIMATION LEMMA (statement)
--------------------------------------------------------------------------------
This is the deepest technical piece of the proof. Roughly, it says that
we can approximate any positive "tolerance rule" E(r) on the cube by a
finite minimum of affine functions, and every active label at a point
X_h(p) has slope that is E-close to p.
Notation. Fix m >= 1 and real numbers a < b. For p in R^m and 0 < h < 1,
write
X_h(p) = ( h^{p_1}, h^{p_2}, ..., h^{p_m} ).
A "label" is a pair (r, c) where r in R^m is a vector (independent of h)
and c = c(h) is a real-valued function of h defined for all sufficiently
small h > 0. A finite family Lambda of labels is "active at x" (for given
h and x) at label lambda if
r_lambda . x + c_lambda(h) = min over eta in Lambda of ( r_eta . x + c_eta(h) ).
Every minimizer is called active; ties count.
Lemma 5.1 (affine approximation, arbitrary tolerance). Let m >= 1 and
real a < b. Let E: [a,b]^m -> (0, infinity) be any function; NO regularity
is assumed. Then there exists a finite nonempty family Lambda of labels
(r_lambda, c_lambda) such that
r_lambda in [a,b]^m for all lambda in Lambda, (3)
c_lambda(h) = o(h^a) as h -> 0+ for all lambda, (4)
and the following "sequential activation" property holds.
For every sequence h_nu -> 0+ and every sequence p^nu in R^m
converging to some p in [a,b]^m, if a FIXED label lambda in Lambda
is active at X_{h_nu}(p^nu) for every nu, then
|| p - r_lambda ||infinity < E(r_lambda). (5)
The family Lambda is chosen AFTER E but BEFORE any h. The slopes r_lambda
do not depend on h.
What the lemma says in English.
(a) We get to prescribe a positive tolerance E(r) at each possible slope
r in the cube, with NO regularity at all. Even if E is wildly
discontinuous, such as E(r) = |r . v| for some fixed v, the lemma
still works.
(b) The approximating family is finite. Each label comes with a fixed
slope in the cube [a,b]^m and an offset function of h that
vanishes faster than h^a as h -> 0+.
(c) The crucial property is about LIMITS. If we shrink h_nu -> 0+ and
pick exponent vectors p^nu -> p with p inside the cube, and some
fixed label is active at every trial point X_{h_nu}(p^nu), then
that label's slope must be within E(r_lambda) of p. If E is very
small near some r, then only labels near r can be active near r.
(d) The p^nu are allowed to lie OUTSIDE the cube [a,b]^m; only their
LIMIT p is required inside. This subtlety is needed in the
induction below.
The proof is by induction on m and is given in the next section. It is
long but entirely elementary.
--------------------------------------------------------------------------------
6. PROOF OF THE AFFINE APPROXIMATION LEMMA (Steps 1 and 2)
--------------------------------------------------------------------------------
Let m >= 1 and a < b, and let E: [a,b]^m -> (0, infinity) be any positive
function. The proof is by induction on m. Throughout, let
mu(p) = min over i in {1,...,m} of p_i
be the minimum coordinate of a vector p in R^m.
Strategy. We fix a value t in [a,b] and build a "local" family Lambda_t
adapted to the level mu(p) = t. In Step 1 we construct it. In Step 2 we
verify that activity at that level forces closeness. In Step 3 (next
section) we extend to a small neighborhood of t, and in Step 4 we glue
finitely many such neighborhoods together. Base cases are m=1 or t=b.
Notation. Throughout Steps 1-2, if a sequence h_nu -> 0+ and a sequence
p^nu -> p are given, we write h = h_nu and p_i^nu for the i-th coordinate
of p^nu. The exponent h^{p_i^nu} means h_nu raised to p_i^nu.
----------------------------------------
STEP 1. LOCAL FAMILY AT A FIXED t.
----------------------------------------
We build a finite family Lambda_t with these properties.
S1. Every slope r_lambda in Lambda_t has min_i r_lambda,i = t.
S2. The "center" label (t*1, 0) lies in Lambda_t (1 = (1,...,1)).
S3. Activity at mu(p) = t forces closeness:
if mu(p) = t and a fixed lambda in Lambda_t is active at
X_{h_nu}(p^nu) for all nu, with p^nu -> p in [a,b]^m, then
||p - r_lambda||infinity < E(r_lambda).
BASE CASE. If m = 1 or t = b, set Lambda_t = {(t*1, 0)}. A sequence
p^nu -> p in [a,b]^m with mu(p) = t must have p = t*1: for m = 1 this
is obvious; for t = b, mu(p) = b and p <= b forces p = t*1. Then
||p - r_lambda||infinity = 0 < E(r_lambda) (since E > 0). Done.
INDUCTION CASE. Assume m > 1 and t < b.
Types. A label in Lambda_t has TYPE k (0 <= k <= m-1) if exactly k of its
slope coordinates are strictly greater than t, and the remaining m-k
coordinates equal t. We construct types in increasing k.
Choose parameters
t < beta_{m-1} < beta_{m-2} < ... < beta_1 < b, (6)
subject to
beta_k - t < E(r) for every slope r of type k-1 (1 <= k <= m-1). (7)
At the moment of choosing beta_k, the types 0, ..., k-1 are already
built and finite, each E(r) > 0, so only finitely many strict comparisons
are required and beta_k exists.
Type 0. The single label (t*1, 0).
Type k (1 <= k <= m-1). For each k-element subset U of {1,...,m} and each
s in R^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 in dimension k to the cube [beta_k, b]^U
with the tolerance s -> E(r(s)). The result is 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 label put into Lambda_t
the type-k label
r = r(s_j), c(h) = -h^{beta_k} + d_j(h). (8)
Do this for every k-element subset U and every label in its local family.
Type k is finite.
End of construction. S1 holds by design. S2 holds because the type-0
label is (t*1, 0). Every offset is o(h^{beta_k}) for its type k, hence
o(h^t) since beta_k > t for k >= 1, and c=0 trivially for type 0.
----------------------------------------
STEP 2. CLOSENESS AT mu(p) = t.
----------------------------------------
Fix a sequence h_nu -> 0+, p^nu in R^m with p^nu -> p in [a,b]^m and
mu(p) = t. Let lambda = (r, c) be a type-k label of Lambda_t, active at
X_{h_nu}(p^nu) for every nu. Write U for the raised set of lambda (the
k indices with r_i > t).
We will prove three claims; combined they give S3.
Claim 1. For k >= 1 and every i in U: p_i >= beta_k.
Claim 2. For k <= m-2 and every j not in U: p_j <= beta_{k+1}.
Claim 3. If k = m-1 and j is the unique index not in U, then p_j = t.
How the claims give S3.
On U, Claim 1 gives p_i >= beta_k in the limit, and p_i <= b because p
is in [a,b]^m. The sub-label (s, d) obtained by slicing r to U and
dropping the common offset -h^{beta_k} is active in the induction family
at every X_{h_nu}(p^nu) (activity is preserved by adding a common offset
to every label of a sub-family). By construction the sub-label has slope in
[beta_k, b]^U. The induction hypothesis (in dimension k) gives
||p_U - r_U||infinity < E(r) on the U-coordinates.
Off U, Claim 2 gives |p_i - r_i| = |p_i - t| <= beta_{k+1} - t < E(r)
for k <= m-2 (using (7) at level k+1). For k = m-1, Claim 3 gives
|p_i - r_i| = 0 < E(r). Combining, ||p - r||infinity < E(r) as claimed.
Proof of Claim 1. Activity of lambda at X_{h_nu}(p^nu) means lambda
value <= center value. Equivalently:
sum_{i in U} (r_i - t) h^{p_i^nu} <= h^{beta_k} - d_j(h). (9)
Every coefficient r_i - t is at least beta_k - t > 0. Suppose p_i < beta_k
for some i in U. Fix delta > 0 with p_i <= beta_k - delta for all large
nu. Then for large nu, h^{p_i^nu} >= h^{beta_k - delta} = h^{-delta}
h^{beta_k}, so the single term (r_i - t) h^{p_i^nu} divided by h^{beta_k}
is at least (beta_k - t) h^{-delta}, which tends to +infinity as nu goes
to infinity. Hence the left-hand side of (9), divided by h^{beta_k},
diverges to +infinity. The right-hand side, divided by h^{beta_k}, is
1 - d_j(h)/h^{beta_k} -> 1 (since d_j = o(h^{beta_k})). Contradiction.
So p_i >= beta_k for every i in U.
Proof of Claim 2. Suppose p_j > beta_{k+1} for some j not in U. Build a
competitor type-(k+1) label in Lambda_t: same slopes as r on U, an extra
raised coordinate j with value s_j in [beta_{k+1}, b], and offset
c'(h) = -h^{beta_{k+1}} + d'(h) as in (8) (for some s_j; the choice of
s_j does not matter).
Activity of lambda forces competitor value >= lambda value, i.e.
competitor - lambda >= 0. Compute the difference. On U the slopes
coincide, so those terms cancel. The coordinate j contributes
(s_j - t) h^{p_j^nu}. The offsets contribute
c'(h) - c(h)
= -h^{beta_{k+1}} + d'(h) - (-h^{beta_k} + d_j(h)) (k >= 1)
= h^{beta_k} - h^{beta_{k+1}} + d'(h) - d_j(h)
= -h^{beta_{k+1}} (1 + o(1)),
because h^{beta_k} = o(h^{beta_{k+1}}) (since beta_k > 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)) with k = 0.
Also p_j > beta_{k+1} implies h^{p_j^nu} = o(h^{beta_{k+1}}). Therefore
competitor - lambda = (s_j - 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. Hence p_j <= beta_{k+1} for
every j not in U.
Proof of Claim 3. If k = m-1, exactly one index j is not in U. We have
mu(p) = t, so p_j >= t; but p_j <= b < infinity (since p is in [a,b]^m);
and every other coordinate is at least beta_{m-1} > t by Claim 1. So the
minimum of p is achieved uniquely at j, giving p_j = t. Then
|p_j - r_j| = |t - t| = 0 < E(r).
Claims 1, 2, 3 are proved. This finishes Step 2.
Observe: in Step 2, the CLOSENESS conclusion depends only on the LIMITS
p^nu -> p and on the finiteness of Lambda_t. Nothing depends on the
specific sequence (h_nu, p^nu) chosen; the closeness bound holds
uniformly over all sequences with the same limit p. This "uniformity in
sequences" is what will be upgraded to "uniformity in h and p" in the
corollary at the end of section 7.
--------------------------------------------------------------------------------
7. PROOF OF THE AFFINE APPROXIMATION LEMMA (Steps 3 and 4)
--------------------------------------------------------------------------------
We now extend the local family at level t to a neighborhood, and glue
finitely many such neighborhoods.
----------------------------------------
STEP 3. FROM EXACT LEVEL TO NEIGHBORHOOD.
----------------------------------------
Fix t in [a,b] and its family Lambda_t from Step 1. For each label lambda
in Lambda_t, define A_lambda subset of [a,b]^m to be the set of all LIMITS
p = lim p^nu of sequences h_nu -> 0+ and p^nu in R^m for which lambda is
active at X_{h_nu}(p^nu) within Lambda_t.
Claim 3.1. A_lambda is closed for each lambda in Lambda_t.
Proof. Take z_n in A_lambda with z_n -> z in [a,b]^m. For each n choose a
witness: h_n in (0, 1/n), u_n in R^m with ||u_n - z_n|| < 1/n, and lambda
active at X_{h_n}(u_n). Then u_n -> z, so z is itself a limit of active
points. Hence z in A_lambda. Closed. Done.
Define the bad set at level t by
B_t = union over lambda in Lambda_t
of { p in A_lambda : ||p - r_lambda||infinity >= E(r_lambda) }.
By Step 2, B_t contains no point p in [a,b]^m with mu(p) = t (since for
such p, any active lambda forces ||p - r_lambda|| < E(r_lambda), contrary
to B_t's construction). By Claim 3.1 and finiteness of Lambda_t, B_t is
compact. Hence by compactness of B_t and continuity of mu, there is a
radius rho_t > 0 such that
B_t is disjoint from { p in [a,b]^m : mu(p) in I_t }, (10)
where I_t := (t - rho_t, t + rho_t) is an open interval around t.
Shrink rho_t if necessary to further require
c_lambda(h) = o(h^{t + rho_t}) as h -> 0+ for every lambda in Lambda_t. (11)
For type 0, c_lambda = 0 and (11) holds trivially. For type k >= 1,
c_lambda = -h^{beta_k} + d_j(h). Since beta_k >= beta_{m-1} > t (by (6))
and d_j = o(h^{beta_k}), (11) holds provided t + rho_t < beta_{m-1}, i.e.
provided rho_t < beta_{m-1} - t. Choose rho_t in (0, min(beta_{m-1}-t,
original rho_t)). Done.
Conclusion of Step 3. For any sequence h_nu -> 0+ and p^nu -> p in
[a,b]^m with mu(p) in I_t, if some lambda in Lambda_t is active at every
X_{h_nu}(p^nu), then ||p - r_lambda||infinity < E(r_lambda).
Proof. Suppose not: ||p - r_lambda|| >= E(r_lambda). Then p in B_t by
definition (p is a limit of active points). But mu(p) in I_t, contra-
dicting (10). Done.
----------------------------------------
STEP 4. GLUING.
----------------------------------------
The intervals I_t = (t - rho_t, t + rho_t) cover [a,b] as t ranges over
[a,b] (each t is trivially in its own I_t). By compactness of [a,b], take
a finite subcover. Remove any interval that is contained in another; if
two intervals coincide, keep one copy. Relabel the surviving centers as
a <= t_1 < t_2 < ... < t_N <= b.
Each surviving interval has the form I_{t_j} = (L_j, R_j) in R. Since no
interval is contained in another, both endpoints are ordered consistently
with the centers:
L_1 < L_2 < ... < L_N, R_1 < R_2 < ... < R_N. (12)
Successive intervals overlap: otherwise R_j <= L_{j+1}, and any point of
[R_j, L_{j+1}] lies in (t_j, t_{j+1}) but in no chosen interval. Coverage
also forces L_1 <= a and R_N >= b.
For 1 <= j <= N - 1, choose a "cut" q_j in the nonempty open interval
q_j in ( max(t_j, L_{j+1}), min(t_{j+1}, R_j) ). (13)
This interval is open and nonempty because I_{t_j} and I_{t_{j+1}}
overlap (R_j > L_{j+1}) and each contains its own center (L_j < t_j < R_j
and L_{j+1} < t_{j+1} < R_{j+1}). Set q_0 = a, q_N = b. Then
t_j < q_j < t_{j+1} for 1 <= j <= N - 1, (14)
[q_{j-1}, q_j] subset of I_{t_j} for 1 <= j <= N. (15)
If N = 1, take q_0 = a, q_1 = b and [q_0, q_1] = [a,b] subset I_{t_1}.
Assemble the glued family. Start with the disjoint union of the local
families Lambda_{t_j}. Each label inherits an offset c_lambda(h) from its
own sub-family. Redefine the offset of a label from Lambda_{t_j} to
c~_lambda(h) = c_lambda(h) - sum_{l=1}^{j-1} h^{q_l}. (16)
The empty sum (j = 1) is zero. Slopes are unchanged.
Claim 4.1. Every shifted offset is o(h^a) as h -> 0+.
Proof. c_lambda = o(h^{t_j + rho_j}) by (11); since t_j + rho_j > a (as
t_j >= a and rho_j > 0), we have h^{t_j + rho_j} = o(h^a), so c_lambda =
o(h^a). Each cut-shift h^{q_l} has q_l > t_l >= a, so h^{q_l} = o(h^a).
Finitely many o(h^a) terms sum to o(h^a). Done.
Claim 4.2 (verification of the glued family). Suppose h_nu -> 0+, p^nu ->
p in [a,b]^m, and a label from the t_j level (i.e., inherited from
Lambda_{t_j}) is active in the glued family at every X_{h_nu}(p^nu). Then
q_{j-1} <= mu(p) <= q_j. (17)
Proof. First suppose mu(p) > q_j and j < N. Then every p_i > q_j, so
h^{p_i^nu} = o(h^{q_j}). Consider the shifted center (t_{j+1}*1, 0) from
Lambda_{t_{j+1}}. Its value minus the active label's value is
(t_{j+1}*1 - r) . X_h(p^nu)
+ (0 - sum_{l=1}^{j} h^{q_l}) - (c_lambda(h) - sum_{l=1}^{j-1} h^{q_l})
= (t_{j+1}*1 - r) . X_h(p^nu) - c_lambda(h) - h^{q_j}.
The first term is (t_{j+1}*1 - r) . X_h(p^nu), and every coefficient
(t_{j+1} - r_i) is bounded by |b - a|, while every h^{p_i^nu} = o(h^{q_j}).
So the first term is o(h^{q_j}). Also c_lambda = o(h^{q_j}): indeed
q_j in I_{t_j}, so q_j < t_j + rho_j, so h^{t_j + rho_j} = o(h^{q_j}), and
c_lambda = o(h^{t_j + rho_j}) = o(h^{q_j}). Hence
value difference = o(h^{q_j}) - o(h^{q_j}) - h^{q_j} = -h^{q_j}(1 + o(1)) < 0
for small h. So the shifted center is STRICTLY SMALLER than the active
label, contradicting activity. Hence mu(p) <= q_j when j < N.
Next suppose mu(p) < q_{j-1} and j > 1. Then some p_i < q_{j-1}. Consider
the shifted center (t_{j-1}*1, 0) from Lambda_{t_{j-1}}:
(t_{j-1}*1 - r) . X_h(p^nu)
+ (0 - sum_{l=1}^{j-2} h^{q_l}) - (c_lambda(h) - sum_{l=1}^{j-1} h^{q_l})
= -(r - t_{j-1}*1) . X_h(p^nu) - c_lambda(h) + h^{q_{j-1}}.
Every r_i >= t_j (by S1) so every coefficient r_i - t_{j-1} >= t_j -
t_{j-1} > 0. For the p_i < q_{j-1}, the term (r_i - t_{j-1}) h^{p_i^nu}
dominates: divided by h^{q_{j-1}}, it is at least (t_j - t_{j-1})
h^{p_i^nu - q_{j-1}} -> +infinity. So (r - t_{j-1}*1) . X_h(p^nu) /
h^{q_{j-1}} -> +infinity, and hence -(r - t_{j-1}*1) . X_h(p^nu) /
h^{q_{j-1}} -> -infinity. Also c_lambda = o(h^{q_{j-1}}): indeed q_{j-1} <
t_j < t_j + rho_j, so h^{t_j + rho_j} = o(h^{q_{j-1}}), and
c_lambda = o(h^{t_j + rho_j}) = o(h^{q_{j-1}}). And h^{q_{j-1}}/h^{q_{j-1}}
= 1. So the value difference divided by h^{q_{j-1}} tends to -infinity,
making it negative for small h. Contradiction. Hence mu(p) >= q_{j-1}
when j > 1. Done.
Completion of the lemma. Let h_nu -> 0+, p^nu -> p in [a,b]^m, and lambda
a label from the t_j level in the glued family, active at every
X_{h_nu}(p^nu). Claim 4.2 gives q_{j-1} <= mu(p) <= q_j, and (15) then
gives mu(p) in I_{t_j}. Within Lambda_{t_j}, all labels received the SAME
shift sum_{l=1}^{j-1} h^{q_l}, so activity within the sub-family is
preserved by the shift. Therefore lambda is active within Lambda_{t_j} at
every X_{h_nu}(p^nu). By the conclusion of Step 3, with mu(p) in I_{t_j}:
||p - r_lambda||infinity < E(r_lambda). Done.
This completes Lemma 5.1.
--------------------------------------------------------------------------------
7b. THE UNIFORM VERSION
--------------------------------------------------------------------------------
We now extract a strengthening: instead of "for every sequence", the
conclusion can be made to hold for every single (h, p) below a threshold.
Corollary 7.1 (uniform activity bound). Fix m >= 1, a < b, and any
positive function E: [a,b]^m -> (0, infinity). Let Lambda be any family
supplied by Lemma 5.1 (built with the tolerance E). Then there is a
threshold h_0 > 0 such that
for every 0 < h < h_0 and every p in [a,b]^m,
every label lambda in Lambda that is active at X_h(p) satisfies
|| p - r_lambda ||infinity < E(r_lambda). (18)
The family Lambda is fixed BEFORE h_0 is chosen.
Proof. Suppose the conclusion fails. Then there are sequences h_nu -> 0+
(whence h_nu eventually in (0, h_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}). (19)
By finiteness of Lambda and compactness of [a,b]^m, pass to a subsequence
with lambda_nu = lambda fixed and p^nu -> p in [a,b]^m. Take the limit in
(19): since E(r_lambda) is a FIXED positive number on this subsequence,
we get
|| p - r_lambda ||infinity >= E(r_lambda).
But Lemma 5.1 says the same inequality must be strict. Contradiction.
Done.
Remark. No regularity of E was used at any point. Only finiteness of
Lambda (for the subsequence extraction) and strict positivity of
E(r_lambda) (also a finite family of values, one per label) entered.
--------------------------------------------------------------------------------
8. THE CUT-FLUX LEMMA
--------------------------------------------------------------------------------
This is a purely combinatorial statement. It will be applied later with
weights w_y = x^y and levels a(y) = r_lambda . y.
Lemma 8.1 (flux across cuts). Let V be a finite vertex set and let E be
a finite set of directed edges, with source and target maps s, t : E -> V.
Assume every edge has a directed return path:
for every e in E, there is a path v_0 -> v_1 -> ... -> v_k in E
with v_0 = t(e) and v_k = s(e). (23)
Let a: V -> R and w: V -> (0, infinity), and let kappa: E -> (0,
infinity). Assume there is a constant delta > 0 with
a(u) < a(z) implies w_z <= delta * w_u for all u, z in V. (24)
If E is nonempty, assume in addition that
delta * sum_{e in E} kappa_e < min_{e in E} kappa_e. (25)
Then
sum_{e in E} kappa_e * w_{s(e)} * (a(t(e)) - a(s(e))) >= 0. (26)
This is completely elementary: we cut the ordered levels into slices and
estimate the net upward flux across each slice.
Proof. If E is empty, both sides of (26) are 0 (empty sum), and there
is nothing to prove. Assume E nonempty.
Distinct levels. Let alpha_1 < alpha_2 < ... < alpha_q be the distinct
values that a(v) takes on V. (Such values exist even if V is empty; then
q = 0 and E is empty. We have already handled E empty.)
For j = 1, ..., q - 1, split V at level alpha_j:
V_j^- = { v in V : a(v) <= alpha_j },
V_j^+ = { v in V : a(v) > alpha_j } (= V \ V_j^-).
Correspondingly split E into edges crossing upward and downward:
E_j^+ = { e in E : s(e) in V_j^- and t(e) in V_j^+ },
E_j^- = { e in E : s(e) in V_j^+ and t(e) in V_j^- }.
(Edges with both endpoints on the same side of the cut appear in neither
set.)
Net upward flux at cut j:
Q_j = sum_{e in E_j^+} kappa_e * w_{s(e)}
- sum_{e in E_j^-} kappa_e * w_{s(e)}.
Claim 8.1.1. Q_j >= 0 for every j.
Proof. If E_j^- is empty, then Q_j = sum over E_j^+ of kappa_e w_{s(e)}
>= 0, since each term is positive. Done.
Otherwise, E_j^- is nonempty. Choose one edge e_in in E_j^-. Its return
path from t(e_in) to s(e_in) starts in V_j^- (because t(e_in) in V_j^-)
and ends in V_j^+ (because s(e_in) in V_j^+). Therefore the path must
contain at least one edge that hops from V_j^- to V_j^+. Choose one such
edge; call it e_0. Then e_0 in E_j^+ and its source u := s(e_0) is in
V_j^-.
Every source z := s(e) of an edge e in E_j^- lies in V_j^+, so a(z) >
alpha_j >= a(u). Thus a(u) < a(z). By (24), w_z <= delta * w_u.
Therefore
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
<= kappa_{e_0} * w_u,
where the third line uses (25) and the fourth uses e_0 in E. But
kappa_{e_0} * w_u = kappa_{e_0} * w_{s(e_0)} is one of the summands in
sum over E_j^+, and every summand is positive. So
sum_{e in E_j^-} kappa_e w_{s(e)} < sum_{e in E_j^+} kappa_e w_{s(e)}.
Hence Q_j > 0. Claim 8.1.1 is proved.
Remark. The proof uses (24) for ALL pairs (u, z) in V with a(u) < a(z),
not just adjacent ones. In our upcoming application, u and z can be
complexes in different linkage classes, and the return path from t(e_in)
to s(e_in) need not visit every z in V_j^+. The all-pairs weight
condition (24) is what lets one preferred upward edge e_0 dominate the
ENTIRE downward flux at the cut, regardless of connectivity.
Now verify the identity.
Claim 8.1.2. For each edge e in 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).
Proof. Let a(s(e)) = alpha_{j_s} and a(t(e)) = alpha_{j_t}.
If j_t > j_s (upward edge), then e crosses cuts j = j_s, ..., j_t - 1,
each of them upward (e in E_j^+). And:
alpha_{j_t} - alpha_{j_s} = sum_{j = j_s}^{j_t - 1} (alpha_{j+1} - alpha_j),
which matches the first sum. All second-sum terms are absent.
If j_t < j_s (downward edge), then e crosses cuts j = j_t, ..., j_s - 1,
each of them downward (e in E_j^-). And:
alpha_{j_t} - alpha_{j_s} = - sum_{j = j_t}^{j_s - 1} (alpha_{j+1} - alpha_j),
which matches minus the second sum. All first-sum terms are absent.
If j_t = j_s, then a(t(e)) = a(s(e)) and e crosses no cuts; both sums
are empty. Done.
Now sum the identity over all e in E, weighted by kappa_e * w_{s(e)}:
sum_{e in E} kappa_e w_{s(e)} (a(t(e)) - a(s(e)))
= sum_{e in E} kappa_e w_{s(e)} [ sum_{j: e in E_j^+} (alpha_{j+1} - alpha_j)
- sum_{j: e in E_j^-} (alpha_{j+1} - alpha_j) ]
= sum_{j=1}^{q-1} (alpha_{j+1} - alpha_j) * Q_j
>= 0,
using Claim 8.1.1 and (alpha_{j+1} - alpha_j) > 0. This is (26). Done.
Edge cases. If q = 1 (all a-values equal), no cuts, both sides of (26)
are zero. If q = 0 (V empty), E is empty. Both are covered above. Equal
levels within the same class might contain edges; those edges cross no
cuts and contribute zero to the sum. This handles ties neatly.
--------------------------------------------------------------------------------
9. THE DERIVATIVE OF A FINITE MINIMUM OF AFFINE FUNCTIONS
--------------------------------------------------------------------------------
Let I be a finite nonempty index set. Let b_i in R^d and d_i in R for
i in I. Define
Phi(x) = min_{i in I} ( b_i . x + d_i ) for x in R^d. (27)
This Phi is the pointwise minimum of finitely many affine functions. It
is concave (a min of linear functions is concave), continuous, and
piecewise-affine.
For a point x, let
A(x) = { i in I : b_i . x + d_i = Phi(x) }
be the set of active indices at x.
Lemma 9.1 (right derivative and monotonicity). 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). (28)
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). Write A = A(gamma(tau)) for the active set at
gamma(tau); it is a nonempty finite set (I is finite and nonempty, so
the min is attained).
Each inactive i has strict gap:
b_i . gamma(tau) + d_i > Phi(gamma(tau)) + c_i for some c_i > 0.
Set c = min over inactive i of c_i (if I has no inactive indices, set
c = 1; if I has no active indices, impossible since min is attained).
The inactive set is finite, so this minimum is a positive number.
Upper bound on Phi o gamma. For an active index i_* in A, Phi(gamma(tau +
eta)) <= b_{i_*} . gamma(tau + eta) + d_{i_*}. So
Phi(gamma(tau + eta)) <= Phi(gamma(tau)) + eta * b_{i_*} . gamma'(tau) + o(eta).
Taking the infimum over the finitely many active i in A:
Phi(gamma(tau + eta)) <= Phi(gamma(tau)) + eta * (min_{i in A} b_i . gamma'(tau)) + o(eta) (upper).
Lower bound on Phi o gamma. For small eta > 0, gamma(tau + eta) is close
to gamma(tau). Combined with the strict gap on inactive indices, for
small eta every inactive index i satisfies b_i . gamma(tau + eta) + d_i
>= Phi(gamma(tau)) + c / 2. For the (finitely many) active i, we have
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, and we get
Phi(gamma(tau + eta)) >= Phi(gamma(tau)) + eta * (min_{i in A} b_i . gamma'(tau)) + o(eta) (lower).
Combining (upper) and (lower), Phi o gamma has right derivative (28).
Monotonicity. Suppose b_i . gamma'(tau) >= 0 for every tau in [u, v)
and every i in A(gamma(tau)). Then the right derivative of Phi o gamma
is nonnegative at every tau.
Now fix s, t with u <= s < t <= v. Let g(tau) = Phi(gamma(tau)) + epsilon
* tau, defined on [s, t], with epsilon > 0. The right derivative of g
is >= epsilon > 0 at every tau in [s, t). If g attained its maximum at
some tau_0 < t, then for slightly larger tau the value would strictly
increase, contradicting maximality. Hence the maximum of g on [s, t] is
attained at tau = t. So g(s) <= g(t), i.e.
Phi(gamma(s)) - Phi(gamma(t)) <= epsilon * (t - s).
Letting epsilon -> 0+ gives Phi(gamma(s)) <= Phi(gamma(t)). Since s < t
was arbitrary, Phi o gamma is nondecreasing. Done.
--------------------------------------------------------------------------------
10. APPLYING THE TOOLS: TOLERANCE, SIGN CONSTRAINT, MONOMIAL ORDER
--------------------------------------------------------------------------------
Now fix the network (C, R) with positive rates kappa_{y->z} > 0 and a
starting point x^0 in R_{>0}^d. We prepare the numerical data.
Finite set of directions. Let e_1, ..., e_d be the standard basis of R^d.
Set
D = { e_1, ..., e_d } U { z - y : y, z in C, y != z }. (29)
D is finite and contains only nonzero vectors.
Tolerance function. For r in [-1,1]^d, define
E(r) = min( {1/2} U { |r . v| / (2 ||v||_1) :
v in D, r . v != 0 } ). (30)
where ||v||_1 = sum_i |v_i|. Since D is finite and every |r . v| > 0 in
the set is positive, E(r) is positive for every r. E is DISCONTINUOUS at
the hyperplanes r . v = 0 (it jumps to values << 1/2 near those planes
while remaining positive). This is why arbitrary discontinuous tolerance
was allowed in Lemma 5.1.
The label family. Apply Lemma 5.1 with m = d, a = -1, b = 1, tolerance E
as in (30). Get a finite nonempty family Lambda of labels (r_lambda,
c_lambda), with r_lambda in [-1,1]^d and c_lambda(h) = o(h^{-1}).
The threshold. Let h_0 > 0 be the threshold from Corollary 7.1: for every
0 < h < h_0 and every p in [-1,1]^d, every label in Lambda that is active
at X_h(p) satisfies ||p - r_lambda||infinity < E(r_lambda).
Separation parameter. Define
H = min( {1} U { |r_lambda . v| / 2 :
lambda in Lambda, v in D, r_lambda . v != 0 } ). (31)
The inner set is finite, each value is positive, so H > 0. Also H <= 1
(or H <= 1/2 if the inner set is nonempty).
Order of choices. The logical order matters:
C, R -> D -> E -> Lambda -> (h_0, H) -> specific h.
In particular, H is fixed BEFORE any h is chosen. It is not a "separation
parameter that is allowed to tend to zero together with h".
Sign constraint (Lemma 10.1). Fix h in (0, h_0) and p in [-1,1]^d. Let
lambda in Lambda be an active label at x = X_h(p). For any v in D with
r_lambda . v != 0:
(a) sgn(p . v) = sgn(r_lambda . v),
(b) |p . v| >= H.
Proof. By Corollary 7.1, ||p - r_lambda||infinity < E(r_lambda). Let v in
D be such that r_lambda . v != 0. Then
|(p - r_lambda) . v| <= ||p - r_lambda||infinity * ||v||_1
< E(r_lambda) * ||v||_1
<= |r_lambda . v| / 2.
So |p . v - r_lambda . v| < |r_lambda . v| / 2. Hence p . v and r_lambda
. v have the same sign, and |p . v| >= |r_lambda . v| / 2. But by (31),
H <= |r_lambda . v| / 2. So |p . v| >= H. Done.
Monomial order (Corollary 10.2). 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,
x^z <= h^H * x^y. (32)
Proof. Let v = z - y in D; v != 0. And r_lambda . v = r_lambda . z -
r_lambda . y > 0. By Lemma 10.1, p . v and r_lambda . v have the same
sign, and |p . v| >= H. So p . v >= H. Then
x^z / x^y = h^{p . (z - y)} = h^{p . v} <= h^H,
because 0 < h < 1 and p . v >= H. So x^z <= h^H x^y. Done.
Remark. Every strict level ordering made by an active slope is thus
consistent with the actual monomial sizes, with multiplicative gap h^H.
This is the "consistent comparison" that makes the cut-flux lemma
applicable. Without the sign constraint, the levels r_lambda . y might
"lie" about the actual relative sizes of the monomials x^y, and no
monotone argument would work.
This concludes the setup. Section 11 builds the invariant polytope.
--------------------------------------------------------------------------------
11. THE INVARIANT POLYTOPE
--------------------------------------------------------------------------------
Choose a specific h in (0, h_0). Three conditions:
(a) Initial exponent p^0. Define p^0 in R^d by
p^0_i = log x^0_i / log h , i = 1, ..., d. (33)
Then X_h(p^0) = x^0. Require ||p^0||infinity < H.
(b) Rate separation. If R is nonempty, require
h^H * sum_{e in R} kappa_e < min_{e in R} kappa_e. (34)
(c) Smallness: 0 < h < h_0.
All three eventually hold as h -> 0+: p^0 -> 0 (because log h -> -infinity,
so p_i^0 -> 0) and h^H -> 0 (since H > 0). Pick any h satisfying them.
Set
F(x) = min_{lambda in Lambda} ( r_lambda . x + c_lambda(h) ),
x in R^d, (35)
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 for some i in {1, ..., d}, r_lambda,i != 0, so r_lambda .
e_i != 0. Apply Lemma 10.1 to v = e_i in D:
sgn(p^0_i) = sgn(r_lambda,i) and |p^0_i| >= H.
But ||p^0||infinity < H means |p^0_i| < H. Contradiction. Done.
Step B (constant branch at x^0).
Since Lambda is nonempty, at least one label is active at x^0. Choose one
with slope 0 (Step A). Since x^0 = X_h(p^0), its value at x^0 is
r_lambda_0 . x^0 + c_lambda_0(h) = 0 + c_lambda_0(h) =: M. Since F is the
minimum over all labels, and this particular value is M, we have
F(x) <= M for every x in R^d. (36)
And F(x^0) = M.
Step C (no maximum point on the boundary of B_h).
Claim. No x in d B_h satisfies F(x) = M.
Proof. Suppose x in d B_h with F(x) = M. Write x = X_h(p) for some p in
[-1,1]^d; the boundary condition corresponds to ||p||infinity = 1.
Since F(x) = M and r_lambda_0 . x + c_lambda_0(h) = M, the label
lambda_0 is active at x. Corollary 7.1 applies and gives
||p - r_lambda_0||infinity < E(r_lambda_0) = E(0) = 1/2
(the last equality because r = 0 has no nonzero r . v, so (30) simply
takes the minimum of {1/2} and gives 1/2). So ||p||infinity < 1/2,
contradicting ||p||infinity = 1. Done.
Step D (the polytope K).
Define
K = { x in R^d : F(x) = M }. (37)
By (36), K = { x : F(x) >= M } = intersection over lambda of the closed
half-spaces { x : r_lambda . x + c_lambda(h) >= M }. So K is a closed
convex polyhedron.
Properties:
(i) x^0 in K (since F(x^0) = M).
(ii) K misses d B_h (Step C).
(iii) K subset int B_h = (h, h^{-1})^d. Proof: otherwise, pick z in K
with z outside int B_h. The segment [x^0, z] lies in K (K is
convex). It starts at x^0 in int B_h and ends at z outside
int B_h, so it crosses d B_h at some w in K. Contradicts (ii).
(iv) K is closed (F continuous) and bounded (contained in the compact
box [h, h^{-1}]^d). So K is compact. And K subset int B_h means
every coordinate of every point of K lies in (h, h^{-1}), so
K subset R_{>0}^d.
(v) K is a convex polytope (a bounded closed convex polyhedron).
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 remains in K.
Proof.
E1. Active derivatives are nonnegative. Fix x in B_h and a label lambda
in Lambda active at x. Then r_lambda . f(x) >= 0.
Proof. Apply Lemma 8.1 (cut-flux) with V = C, E = R, s, t as given,
a(y) = r_lambda . y, w_y = x^y, kappa_e = kappa of reaction e, and
delta = h^H.
(23) is the weak reversibility of R. (24) is exactly (32): for u, z
in C with a(u) < a(z), x^z <= h^H x^u = delta * w_u. (25) is (34).
So (26) holds:
sum_{e in R} kappa_e x^{y_e} (a(z_e) - a(y_e)) >= 0.
But the left side is
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 on any interval inside B_h. Let x(t) be a
trajectory of (1) on [0, T_max) with x(0) = z in K. On any [a, b]
where x([a, b]) subset B_h, apply Lemma 9.1 (derivative of finite min)
with Phi = F and gamma = x. By E1, r_lambda . f(x(t)) >= 0 for every
active lambda. So the right derivative of F o x is >= 0, and F o x is
nondecreasing on [a, b].
E3. F o x <= M and F o x(0) = M. F <= M everywhere by (36). And
F(x(0)) = F(z) = M (since z in K). Combined with E2 (nondecrease),
F(x(t)) = M for all t in [0, T_max) with x(t) in B_h.
E4. First-exit argument. The point x(0) = z is in int B_h (Step D (iii)).
Let T = sup { t in [0, T_max) : x([0, t]) subset K }. Since x(0) in K
and K is closed, T > 0 and x([0, T]) subset K (continuity of x and
closedness of K). Then x([0, T]) subset int B_h, and by E3,
F(x(t)) = M on [0, T].
If T < T_max, then 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, we find
F(x(t)) = M on [T, T + delta], so x([T, T + delta]) subset K.
Therefore x([0, T + delta]) subset K. Contradicts the sup property of
T. So T = T_max. Hence x([0, T_max)) subset K.
E5. Extension past finite times. Suppose T_max < infinity. Since K is
compact, x([0, T_max)) subset K. The vector field f is a polynomial,
hence continuous, and bounded on compact K: L = sup_{x in K} ||f(x)|| <
infinity. So x is L-Lipschitz on [0, T_max). The limit z* = lim_{t ->
T_max} x(t) exists and lies in K (closedness). The integral form of
(1) passes to the endpoint. So the solution extends past T_max. This
contradicts maximality of T_max. Hence T_max = infinity.
So for every z in K, the solution of (1) exists for all t >= 0 and stays
in K. Step E is proved. Section 12 deduces the main theorem.
--------------------------------------------------------------------------------
12. PROOF OF THE MAIN THEOREM (Theorem 3.1)
--------------------------------------------------------------------------------
Let x^0 in R_{>0}^d. Build K as in Section 11. By Step D, K is compact,
convex, contained in R_{>0}^d, contains x^0, and is contained in
B_h = [h, h^{-1}]^d for some h in (0, 1).
By Step E, for every z in K, the solution x(t) of (1) starting at z
exists for all t >= 0 (T_max = infinity) and stays in K.
Apply this with z = x^0 (which is in K). So x(t) exists for all t >= 0
and stays in K subset [h, h^{-1}]^d. Therefore
h <= x_i(t) <= h^{-1} for all t >= 0 and i = 1, ..., d.
Let eps = h. Then
eps <= x_i(t) <= 1/eps for all t >= 0 and i = 1, ..., d.
Both (i) and (ii) of Theorem 3.1 hold. Done.
--------------------------------------------------------------------------------
13. CONSEQUENCE: A POSITIVE EQUILIBRIUM IN EVERY POSITIVE CLASS
--------------------------------------------------------------------------------
This is the "Boros theorem", stated in the introduction as a corollary of
the polytope construction.
Corollary 13.1. Let (C, R) be a finite weakly reversible mass-action
network with positive constants kappa_{y->z}. 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 3.
Proof. Let K be the invariant polytope for x^0 (Section 11) and let Q be
the "cross-section"
Q = K intersect (x^0 + S). (38)
Q is nonempty (x^0 in both), compact (K is compact, x^0 + S is closed),
and convex (intersection of convex sets).
Q is forward invariant: if y in Q, then the trajectory phi_t(y) stays in
K (Step E) and in y + S = x^0 + S (Fact 3 on the flow). So phi_t(y) in K
intersect (x^0 + S) = Q.
Brouwer fixed points. For every integer n >= 1, phi_{1/n}: Q -> Q is
continuous (flow of a 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.
Integral identity. For any z in Q,
phi_s(z) - z = int_0^s f(phi_r(z)) dr, 0 <= s <= 1/n.
Evaluating at s = 1/n and z = z_n, using phi_{1/n}(z_n) = z_n:
0 = phi_{1/n}(z_n) - z_n = int_0^{1/n} f(phi_r(z_n)) dr.
Multiply by n:
0 = n int_0^{1/n} f(phi_r(z_n)) dr = f(z_n) + n int_0^{1/n} ( f(phi_r(z_n)) - f(z_n) ) dr.
So
||f(z_n)|| <= n int_0^{1/n} ||f(phi_r(z_n)) - f(z_n)|| dr
<= sup_{0 <= r <= 1/n} ||f(phi_r(z_n)) - f(z_n)||. (39)
Uniform continuity. Since Q is compact and f is a polynomial, f is
uniformly continuous on Q. Also, phi_r(z_n) - z_n = int_0^r f(phi_u(z_n))
du has norm <= L * r <= L / n, where L = sup_Q ||f|| < infinity. So
phi_r(z_n) -> z_n uniformly in r in [0, 1/n] as n -> infinity. Hence
sup_{0 <= r <= 1/n} ||f(phi_r(z_n)) - f(z_n)|| -> 0 (40)
by uniform continuity of f on Q. So ||f(z_n)|| -> 0.
Compactness. Q is compact. Take a subsequence z_n -> x^* in Q. By
continuity of f, f(x^*) = 0. Since x^* in Q subset K subset R_{>0}^d,
it is positive, and x^* in x^0 + S. Done.
--------------------------------------------------------------------------------
14. REMARK: COMPLEX-BALANCED SYSTEMS CONVERGE
--------------------------------------------------------------------------------
A mass-action system is "complex-balanced" if there exists some positive
state x^* at which the total incoming and total outgoing fluxes agree at
every complex:
sum_{z -> y in R} kappa_{z->y} x^{*z} = sum_{y -> z in R} kappa_{y->z} x^{*y}
for every y in C. (41)
This is strictly stronger than f(x^*) = 0 (net balance per species); it
requires balance at each individual complex. Complex balance implies
weak reversibility of the reaction graph.
Theorem (Horn-Jackson). If a fixed choice of positive rate constants is
complex-balanced, then in each positive stoichiometric class (x^0 + S)
intersect R_{>0}^d there is exactly one complex-balanced state x^*. It is
a positive equilibrium.
The Horn-Jackson entropy function. Let V: R_{>0}^d -> R be
V(x) = sum_{i=1}^d ( x_i log(x_i / x^*_i) - x_i + x^*_i ). (42)
The standard properties (Feinberg's lecture notes; Horn-Jackson 1972):
(a) V is smooth and nonnegative on R_{>0}^d, and V(x) = 0 if and only
if x = x^*.
(b) Along any forward trajectory of (1),
dV(x(t)) / dt <= 0, (43)
with equality if and only if x(t) is complex-balanced.
(c) In each positive stoichiometric class, x^* is the unique
complex-balanced state.
Corollary 14.1. Under the complex-balance assumption, 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 3.1 gives
that x(t) stays inside the compact positive set K (Section 11). Hence
x(t) lies in Q = K intersect (x^0 + S) for all t >= 0, and Q is compact.
On Q, V is continuous, bounded below, and nonincreasing along the
trajectory by (b). LaSalle's invariance principle then says: the omega-
limit set of x(t) is a subset of the largest invariant set of the flow
inside Z = {x in Q : dV/dt at x = 0}. By (b) and (c), Z = {x^*}. So
x(t) -> x^*.
In particular, every weakly reversible DEFICIENCY-ZERO network (deficiency
= |C| - number of linkage classes - dim S) with positive rates is complex-
balanced, so its positive trajectories converge to a positive equilibrium.
--------------------------------------------------------------------------------
15. WHERE THIS FITS (history, and one instructive near-miss)
--------------------------------------------------------------------------------
The structural theory of reaction networks begins with complex balance:
Horn and Jackson's equilibrium and stability theory (1972), Horn's
complex-balancing criteria (1972), and Feinberg's deficiency-zero analysis
(1972). Weak reversibility is a GRAPH property (does not depend on rates);
complex balance also depends on rates. The global attractor conjecture for
complex-balanced systems asks whether every positive trajectory converges
to the unique positive equilibrium in its class; Corollary 14.1 answers
yes.
Feinberg (1987, Remark 6.1.E) asked the weaker question whether a positive
trajectory of a weakly reversible mass-action system can converge to a
point with some species extinct. Persistence rules out approach to the
boundary along any sequence of times. Anderson (2011, Section 1.1)
separated two conjectures: boundedness (positive trajectories are bounded)
and persistence (for bounded trajectories, no extinction). Theorem 3.1
proves both, for arbitrary positive constant rates and any number of
linkage classes.
Prior special cases (a partial list):
* Anderson (2011) proved boundedness for single-linkage-class weakly
reversible systems.
* Gopalkrishnan-Miller-Shiu (2014) proved permanence for strongly
endotactic systems, a class larger than single-linkage weakly
reversible; Boros-Hofbauer (2020) gave another proof for the single-
linkage case.
* Craciun-Nazarov-Pantea (2013) proved boundedness, persistence, and
permanence for TWO-SPECIES weakly reversible systems.
* Pantea (2012) proved persistence of bounded weakly reversible
trajectories when the stoichiometric subspace has dimension two,
with arbitrary species and linkage counts.
* Boros (2019) proved that every positive stoichiometric class contains
a positive equilibrium (this is our Corollary 13.1).
* Craciun (toric differential inclusions, 2019, revised 2026) proved
persistence of bounded positive trajectories of weakly reversible
systems with uniformly positive and bounded variable rates. Its
general weakly reversible statement ASSUMES a trajectory upper bound;
our Theorem 3.1 supplants that assumption with a proved bound.
Two species and two-dimensional stoichiometry are different restrictions,
and all the above results leave the general constant-rate case open.
Theorem 3.1 settles it.
An instructive near-miss. August and Barahona (2010, Theorem 6) previously
stated the general boundedness and persistence conclusion. Their proof,
Part III on page 45 before Equation (11), inferred monomial dominance from
a maximal sum of exponents together with a sufficiently large product of
concentrations. That inference does not hold in the stated region, and it
is worth seeing why, because it is exactly the trap the sign constraint of
Lemma 10.1 avoids.
Consider the simplest nontrivial reversible network: 2A <-> B alone, i.e.
(2, 0) <-> (0, 1) in d = 2, with both rate constants 1.
Naive hope. "At large concentrations all monomials are large, so monomial
sums must grow, so the trajectory must stay bounded." Equivalently: the
sum of exponents is maximal, so the "biggest" monomial should dominate.
Counterexample to that hope. Take the state (a, b) = (T, T^3) with T > 1:
a b = T^4 -> +infinity,
a^2 = T^2,
b = T^3 > T^2.
The product a b is huge, yet the monomial a^2 is SMALLER than b. Now look
at the sum s(t) = a(t) + b(t). Its derivative is
ds/dt = (-2 a^2 + 2 b) + (a^2 - b) = b - a^2 = T^3 - T^2 > 0
at (T, T^3) for T > 1. So the "sum of concentrations" is INCREASING there,
pushing the state along a direction that naive exponent arguments do not
control. The naive inference is wrong.
Why the theorem is nevertheless true for this example. There is a
conservation law: a + 2 b is constant (d/dt(a + 2b) = 0). This bounds
a by a(0) + 2b(0) and b by (a(0) + 2b(0))/2, so the trajectory IS bounded
and persistent, despite the naive argument's failure.
The moral. A single reaction does not point inward at any face; what
forces boundedness is the CONSPIRACY of return paths and monomials, not
naive exponent bookkeeping. The polytope construction of Section 11 makes
this conspiracy explicit. Its sign constraint (Lemma 10.1) rules out
exactly the failure above: if a slope r_lambda claims level y < level z,
then the monomial inequality x^z <= h^H x^y must hold, with a definite
gap.
The v2 text makes no claim to replace any of the earlier special-case
results with a cheaper proof. It only supplies the missing general case.
Remarks about scope.
* The theorem does not assert that the trajectory converges. It only
gives a fixed compact positive box around the trajectory. Convergence
requires complex balance (Section 14) or other structural assumptions.
* The bound eps depends on the initial condition. The theorem makes no
claim of uniformity across a compatibility class.
* The rates are CONSTANT. Variable rates that remain bounded above and
away from zero are treated by Craciun (2026); the argument there
assumes the trajectory stays bounded, which is exactly what Theorem
3.1 supplies.
--------------------------------------------------------------------------------
16. NOTATION SUMMARY
--------------------------------------------------------------------------------
R real numbers (as in R^d, R^m, R_{>0}, R_{>=0})
Z_{>=0} nonnegative integers (complex coordinates)
d number of species
X_1, ..., X_d species names
x_i concentration of species X_i
x = (x_1,...,x_d) concentration vector
R_{>0}^d open positive orthant
C finite set of complexes (vectors in Z_{>=0}^d)
R finite set of reactions y -> z, y != z in C
(see NOTE ON THE LETTER R at start of Sec. 1)
y, z complexes
y_i, z_i i-th component of a complex (integer >= 0)
kappa_{y->z} positive rate constant of reaction y -> z
x^y monomial prod_i x_i^{y_i}
f(x) vector field (dx/dt = f(x)), polynomial in x
S stoichiometric subspace span{ z - y : y -> z in R }
linkage class connected component of the undirected reaction graph
weak reversibility every arrow has a directed return path
T_max maximal forward existence time of the ODE solution
eps positive lower/upper bound from Theorem 3.1
m dimension of the auxiliary cube in the affine lemma
a, b endpoints of the cube [-1,1] in the application
[a,b]^m cube of exponent vectors
X_h(p) trial point (h^{p_1}, ..., h^{p_m})
h small parameter in (0,1), threshold h_0
Lambda finite label family
lambda a label (r_lambda, c_lambda)
r_lambda slope vector (fixed, in [a,b]^m or [-1,1]^d)
c_lambda(h) offset function of h
F(x), F_h(x) finite minimum of affine functions
active label a minimizing label at x
E(r) tolerance function
H separation parameter (fixed before h)
D finite set {e_i} U {z - y : y, z in C distinct}
B_h box [h, h^{-1}]^d
p^0 log(x^0) / log(h), so X_h(p^0) = x^0
M F(x^0), the maximum of F
K { x : F(x) = M }, the invariant polytope
Q K intersect (x^0 + S), for the equilibrium proof
V(x) Horn-Jackson entropy function (complex balance)
ln / log natural logarithm throughout
o(h^p) f(h) = o(h^p) means f(h) / h^p -> 0 as h -> 0+
||v||_1 sum_i |v_i|
||v||infinity max_i |v_i|
End of proof.