Repetitions in reserve (RIR) is the dominant heuristic for gauging proximity to muscular failure during resistance training, yet in practice it is applied through static load–rep charts and subjective self-report that take no account of the fatigue accumulated across a training session. This paper introduces the Vivanco Proximity-to-Failure Model (VPFM): a fatigue-adjusted formulation that predicts RIR continuously, set by set. The model couples an individualized load–rep law — derived as the unique solution of a proportional marginal-decay principle and fit from a small number of calibration sets — with a single dynamic capacity state that is depleted by hard sets and reconstituted during rest. The construction is proven to be strictly monotone in load, bounded and dimensionally consistent under all inputs, and uniquely identifiable from two calibration sets. The present version is a complete theoretical formulation; predictive validation against measured repetitions-to-failure is identified as the outstanding work.
Introduction
Knowing how many repetitions you have left before failure is the central judgment in modern strength training. Train too far from failure and the stimulus is too small; train to failure too often and fatigue outpaces recovery. The quantity that captures this is reps in reserve — how many more repetitions you could have completed at the moment you stopped.
The difficulty is that reps in reserve is not a fixed property of a weight. It changes within a single session: the third hard set at a given load leaves fewer reps in reserve than the first, because the earlier sets have already spent part of your capacity. The tools lifters use today do not capture this. Static load–rep charts assume a fresh, average lifter; subjective RIR self-report drifts with fatigue and experience. Neither updates as the workout proceeds.
The VPFM treats proximity to failure as a dynamical quantity. It begins from an individualized model of the fresh lifter — how many reps they can perform at any load — and then tracks a single capacity state that drains as hard sets accumulate and partially recovers during rest. At every set, the model returns an updated estimate of reps in reserve. The aim is not to replace the validated mathematics of one-rep-max estimation, but to add the layer those methods omit: the accumulation of fatigue across a session.
Why current RIR methods are limited
Three families of tools dominate current practice, and each leaves the same gap.
Static load–rep charts. Standard tables map a percentage of one-rep maximum to an expected number of repetitions. They are built on population averages and assume a rested lifter. They cannot represent the large differences in rep endurance between individuals, exercises, and muscle groups, and they say nothing about how earlier sets change later ones.
Subjective RIR / RPE self-report. The repetitions-in-reserve-based rating scale[2][3] asks the lifter to report how many reps they had left. It is practical and widely used, but it is subjective and experience-dependent: a scoping review of prediction accuracy found that estimates are systematically less reliable when training farther from failure and at higher repetition ranges[1]. Self-report is also a biased ruler — validating a model against perceived RIR measures it against the very error it should correct.
One-rep-max formulas. The classical estimators[6][7] predict a single point — the maximum — from a submaximal set. They are well validated for that purpose, but they describe only one location on the load–rep curve and contain no notion of within-session fatigue or mid-set proximity to failure.
The missing ingredient is common to all three: a model of fatigue accumulation that updates the prediction continuously. The reconstitution of work capacity during recovery has been modelled rigorously in endurance physiology — the W′ balance model describes a finite capacity that is spent above a threshold and refilled exponentially during easier efforts[4]. The VPFM adapts that structure to inter-set rest in resistance training, and pairs it with an individualized load–rep law and, optionally, the well-documented relationship between bar velocity and effort[5].
The mathematical model
The model is a discrete dynamical system over the sets performed in one session. It has two layers: a static load–rep law for the fresh lifter, and a fatigue state that modifies it set by set.
3.1 Notation
| Symbol | Meaning | Units |
|---|---|---|
| \(w_i,\ r_i,\ \Delta t_i\) | load, reps completed, and rest after set \(i\) | mass, reps, time |
| \(L_0\) | load-ceiling parameter (per person, per lift) | mass |
| \(\tau\) | endurance constant (rep-decay rate) | reps |
| \(C_i\in(0,1]\) | capacity available before set \(i\) | dimensionless |
| \(k,\ \gamma\) | per-set cost coefficient \((0,1)\), effort exponent \(\ge 1\) | dimensionless |
| \(T_{\mathrm{rec}}\) | recovery time constant | time |
| \(\rho(w),\ F(w,C)\) | fresh and fatigued maximum reps at load \(w\) | reps |
| \(e_i,\ \Phi_i\) | effort (proximity to failure) and Vivanco RIR on set \(i\) | dimensionless, reps |
3.2 Axioms
These are the model's assumptions, stated explicitly. Every result in §3.4 follows from them; their empirical adequacy is treated separately in §5.
On a working domain \([w_{\min}, L_0]\) there is a fresh load–rep function \(\rho\) that is continuous, strictly decreasing, with \(\rho(L_0)=0\). A heavier load must never predict more reps.
Each additional required repetition costs a fixed fraction of the load you could still handle: \(\dfrac{dw}{dR}=-\dfrac{1}{\tau}\,w.\)
At capacity \(C\), achievable reps are the fresh value scaled by \(C\): \(F(w,C)=C\,\rho(w).\) (A modeling choice; see §5.)
A set at effort \(e\) multiplies the remaining capacity by \(e^{-k\,e^{\gamma}}\): \(C^{+}=C\,e^{-k\,e^{\gamma}}.\) This stays in \((0,C]\) for every \(e\ge 0\).
During rest, capacity relaxes toward 1: \(C_{\text{next}}=1-(1-C^{+})\,e^{-\Delta t/T_{\mathrm{rec}}}.\)
3.3 The static law is forced, not chosen
The shape of \(\rho\) is not assumed — it is the unique consequence of A2.
The unique solution of A2 with \(w(0)=L_0\) is \(\displaystyle w(R)=L_0\,e^{-R/\tau}\), hence \(\displaystyle \rho(w)=\tau\ln\!\frac{L_0}{w},\quad 0 A2 separates as \(dw/w=-dR/\tau\); integrating gives \(\ln w=-R/\tau+c\), and \(w(0)=L_0\) fixes \(c=\ln L_0\). Thus \(w=L_0e^{-R/\tau}\); the right-hand side \(-w/\tau\) is Lipschitz on compact subsets of \((0,L_0]\), so by Picard–Lindelöf the solution is unique. Inverting gives \(\rho(w)=\tau\ln(L_0/w)\), which is continuous, strictly decreasing, and satisfies \(\rho(L_0)=0\), so A1 holds. ∎
The predicted one-rep maximum is the load at a single repetition: \(\ \mathrm{1RM}=w(1)=L_0\,e^{-1/\tau}.\) The ceiling \(L_0\) is the (slightly higher) zero-rep asymptote.
3.4 Core definitions and results
Effort is the proximity to failure on a set, \(\ e_i = r_i / F(w_i,C_i)\), with \(e_i=1\) meaning failure. The Vivanco RIR is the fatigued maximum minus the reps completed:
For every fixed \(C\), the map \(w\mapsto F(w,C)\) is strictly decreasing on \((0,L_0]\) with \(F(L_0,C)=0\); hence \(\Phi\) is strictly decreasing in load.
\(\partial F/\partial w = C\tau\cdot(-1/w) = -C\tau/w < 0\) for all \(w>0\). The derivative never changes sign, so no turning point exists; \(F(L_0,C)=C\tau\ln 1=0\). Since \(r\) is independent of \(w\), \(\partial\Phi/\partial w<0\). ∎
Under A4–A5 with \(k\in(0,1)\), \(\gamma\ge 1\), the capacity sequence satisfies \(C_i\in(0,1]\) for every \(i\) and every non-negative rep count — with no domain restriction. The model can never return a negative rep count or an out-of-range state.
By induction. \(C_1=1\). If \(C_i\in(0,1]\), then since \(e^{-k e^{\gamma}}\in(0,1]\) for all \(e\ge 0\), we have \(C_i^{+}=C_i e^{-k e^{\gamma}}\in(0,C_i]\subseteq(0,1]\). Then \(1-C_i^{+}\in[0,1)\) and \(e^{-\Delta t/T_{\mathrm{rec}}}\in(0,1]\), so \(C_{i+1}=1-(1-C_i^{+})e^{-\Delta t/T_{\mathrm{rec}}}\in(0,1]\). The earlier linear cost rule \(C^{+}=C(1-k e^{\gamma})\) admitted \(C^{+}<0\) when \(e>1\); the exponential form removes that failure mode entirely. ∎
Given two fresh sets to failure \((w_a,r_a)\) and \((w_b,r_b)\) with \(w_a\ne w_b\), the parameters are uniquely determined: \[ \tau=\frac{r_a-r_b}{\ln(w_b/w_a)},\qquad L_0=w_a\,e^{\,r_a/\tau}. \]
Failure at \(C=1\) gives \(r=\tau(\ln L_0-\ln w)\). Subtracting the two equations eliminates \(\ln L_0\): \(r_a-r_b=\tau\ln(w_b/w_a)\), and \(w_a\ne w_b\) makes the logarithm nonzero, fixing \(\tau\); back-substitution fixes \(L_0\). The system is linear in \((\ln L_0,\tau^{-1})\) with nonsingular matrix, so the solution is unique. One set alone is underdetermined. ∎
Failure points scatter day to day, and that scatter grows with the number of reps. The deterministic \(\Phi_i\) is therefore reported as an interval rather than a single value: treating the parameters and a heteroscedastic noise term (standard deviation increasing with \(F\)) as random, \(\Phi_i\) becomes a distribution, summarized by its median and a central interval. A model is then judged honest if its stated intervals contain the realized outcome at the stated rate.
3.5 The complete system
3.6 Bodyweight and fixed-load movements
Calisthenics seem to break the model — the load never changes and can look like zero — but both impressions are wrong, and bodyweight turns out to be a clean special case. Define the total effective load \(w = b\,m + a\), where \(m\) is bodyweight, \(b\in(0,1]\) is the movement's bodyweight-borne fraction (pull-up \(b\approx1\), push-up \(b\approx0.64\), bodyweight squat \(b\approx0.85\)), and \(a\) is added load (\(a<0\) for assistance). Since \(w \ge b\,m > 0\), the static law is always finite: there is no zero load, and \(\rho(0)=\infty\) cannot occur.
The load is constant at \(w_{\mathrm{BW}}=b\,m\), so two distinct loads are unavailable and Theorem 3 cannot fit the curve. It is also unnecessary: the one quantity needed is the fresh maximum at that load, which is simply measured. From one fresh set to failure, set \(F(C)=C\,\rho_{\mathrm{BW}}\); effort, RIR, depletion, and recovery are unchanged. The leverage constant \(b\) never even enters Case A.
With added load varying, \(w=b\,m+a\) takes two or more values and Theorem 3 applies directly to the totals. The axis must be total effective load: using added weight alone would place a bodyweight set at \(a=0\) and force \(\rho(0)=\infty\). The offset \(b\,m\) is what regularizes the axis.
A worked Case A example — pull-ups at a measured fresh max of \(\rho_{\mathrm{BW}}=12\), with \(k=0.4,\ \gamma=2,\ T_{\mathrm{rec}}=180\,\mathrm{s}\) and 120 s of rest between sets; no load is ever entered:
| Set | Reps | C before | F(C) | Effort e | RIR Φ | C after |
|---|---|---|---|---|---|---|
| Set 1 | 8 | 1.000 | 12.00 | 0.667 | 4.00 | 0.837 |
| Set 2 | 8 | 0.917 | 11.00 | 0.728 | 3.00 | 0.742 |
Two sets of eight strict pull-ups: the first leaves four reps in reserve, the second only three, because the first set spent capacity faster than the rest restored it (the second set begins at \(C=0.917\), not \(1\)) — and the model needed nothing but the one measured fresh max. For very high-rep bodyweight work the limiter becomes endurance rather than strength, the same scope caveat noted in §5.
Worked example
A lifter performs two calibration sets to failure: \(225\times 6\) and \(185\times 12\). Applying Theorem 3,
The curve fit from a 6-rep and a 12-rep set therefore recovers a one-rep maximum of about 265 lb — without the lifter ever attempting a true single. With dynamic parameters \(k=0.4,\ \gamma=2,\ T_{\mathrm{rec}}=180\,\mathrm{s}\), a session unfolds as follows.
| Set | Load | Reps | C before | F | Effort e | RIR Φ | C after |
|---|---|---|---|---|---|---|---|
| Warm-up | 135 | 5 | 1.000 | 21.66 | 0.231 | 16.66 | 0.979 |
| Working 1 | 205 | 6 | 0.989 | 8.76 | 0.685 | 2.76 | 0.820 |
| Working 2 | 205 | 6 | 0.934 | 8.26 | 0.726 | 2.26 | 0.756 |
Two things the static tools cannot show are visible here. First, the warm-up at low effort barely touches capacity — it nets out near \(0.99\) after rest — because the convex cost in A4 places easy sets on the flat part of the curve. Second, the identical set, \(205\times 6\), returns less reserve the second time (\(2.26\) versus \(2.76\)) because capacity has drained between them. That difference is the entire contribution of the model.
Every figure in this section is reproduced by a tested implementation of the model: the VITA Python library (pip install ablevlabs), which performs the same calibration, capacity tracking, and reps-in-reserve computation described here.
Limitations & validation status
The honest scope of the model matters as much as its results. What is proven below holds regardless of any experiment; what is assumed must be tested against data, not asserted.
Proven from the axioms
- The static law is the unique curve consistent with proportional marginal decay (Prop 1).
- RIR is strictly monotone in load, with no spurious turning point (Thm 1).
- Capacity stays in \((0,1]\) under all inputs; no negative reps; every equation is dimensionally consistent (Thm 2).
- Two calibration sets are necessary and sufficient to identify the curve uniquely (Thm 3).
Assumed — pending validation
- That fresh behavior follows proportional marginal decay (A2), and that fatigue acts multiplicatively (A3) rather than lowering the ceiling.
- That depletion is convex in effort (A4) and recovery is a single exponential (A5).
- The numerical values of \(\tau, L_0, k, \gamma, T_{\mathrm{rec}}\) for any lifter and lift.
- That five parameters are recoverable from realistic data without over-fitting.
Several known issues bound the model's present scope. Calibration is partly circular: two genuinely fresh sets cannot both be performed in one session, so calibration sets should be collected across sessions or fit jointly. Fatigue is represented by a single scalar, which cannot separately track strength fatigue and metabolic fatigue, which recover at different rates. The law predicts unbounded reps as load approaches zero, so it is valid only on a working range \([w_{\min},L_0]\). And validation must be against measured repetitions-to-failure, never against self-reported RIR, which carries the very bias the model is meant to correct.
The appropriate summary is that the core model is well-posed and provably well-behaved, and that its predictive accuracy is an open empirical question. Establishing that accuracy — the step from a sound formulation to a validated standard — is the work that remains.
Future work
- Two-state fatigue. Replace the single scalar with a strength capacity that scales the ceiling \(L_0\) and an endurance capacity that scales the rate \(\tau\), so the model can represent a heavy single surviving after metabolic work is exhausted, and the reverse.
- Velocity as a real-time observable. Bar velocity declines predictably toward failure[5]; using it to update the capacity state in real time would let the curve be estimated from submaximal sets and reduce the need to train to failure for calibration.
- Continuous-time formulation. Recast the per-set recursion as an ODE for \(C(t)\) over the whole session, and characterize the boundary between sustainable and collapsing set sequences — predicting in advance the set on which a prescribed target will be missed.
- Data collection and fitting. Log calibration and working sets across lifters and lifts; fit \(k,\gamma,T_{\mathrm{rec}}\) by regression and machine learning rather than assumption; build per-exercise parameter libraries.
Vivanco, C. A. (2026). The Vivanco Proximity-to-Failure Model (VPFM), Version 1.0. AbleVLabs. https://ablevlabs.com/vptf.html
References
- Halperin I, Malleron T, Har-Nir I, et al. Accuracy in Predicting Repetitions to Task Failure in Resistance Exercise: A Scoping Review and Exploratory Meta-analysis. Sports Med. 2022;52(2):377–390. doi:10.1007/s40279-021-01559-x
- Zourdos MC, Klemp A, Dolan C, et al. Novel Resistance Training–Specific Rating of Perceived Exertion Scale Measuring Repetitions in Reserve. J Strength Cond Res. 2016;30(1):267–275. doi:10.1519/JSC.0000000000001049
- Helms ER, Cronin J, Storey A, Zourdos MC. Application of the Repetitions in Reserve-Based Rating of Perceived Exertion Scale for Resistance Training. Strength Cond J. 2016;38(4):42–49. doi:10.1519/SSC.0000000000000218
- Skiba PF, Chidnok W, Vanhatalo A, Jones AM. Modeling the Expenditure and Reconstitution of Work Capacity above Critical Power. Med Sci Sports Exerc. 2012;44(8):1526–1532. doi:10.1249/MSS.0b013e3182517a80
- Morán-Navarro R, Martínez-Cava A, Sánchez-Medina L, et al. Movement Velocity as a Measure of Level of Effort During Resistance Exercise. J Strength Cond Res. 2019;33(6):1496–1504. doi:10.1519/JSC.0000000000002017
- Epley B. Poundage Chart. Boyd Epley Workout. Lincoln, NE: Body Enterprises; 1985.
- Brzycki M. Strength Testing — Predicting a One-Rep Max from Reps-to-Fatigue. JOPERD. 1993;64(1):88–90. doi:10.1080/07303084.1993.10606684