The Michaelis-Menten equation is one of the most important results in biochemistry. It describes how enzymes catalyze reactions and why the reaction rate saturates at high substrate concentrations. Textbooks derive it with steady-state assumptions and algebraic manipulation.
We don't need any of that. A 4-place Petri net with mass-action kinetics produces the same curve automatically.
Try the interactive demo at pilot.pflow.xyz/enzyme-kinetics.
An enzyme catalyzes the conversion of substrate to product in three steps:
E + S ⇌ ES → E + P
The enzyme is not consumed—it cycles between free and bound states.
Four places, three transitions:
| Place | Initial | Role |
|---|---|---|
substrate |
100 | Free substrate molecules |
enzyme |
10 | Free enzyme molecules |
complex |
0 | Enzyme-substrate complex |
product |
0 | Converted product |
| Transition | Rate | Arcs |
|---|---|---|
bind |
k1 = 0.01 | substrate + enzyme → complex |
unbind |
k-1 = 0.1 | complex → substrate + enzyme |
catalyze |
kcat = 0.5 | complex → product + enzyme |
The arc structure encodes the chemistry directly. The enzyme appears as both input and output of catalyze—it's a catalyst, returned after each reaction.
With mass-action kinetics, each transition fires at a rate proportional to the product of its input concentrations:
flux(bind) = k1 × [S] × [E]
flux(unbind) = k-1 × [ES]
flux(catalyze) = kcat × [ES]
The ODE system follows directly from the Petri net topology:
d[S]/dt = -k1·[S]·[E] + k-1·[ES]
d[E]/dt = -k1·[S]·[E] + k-1·[ES] + kcat·[ES]
d[ES]/dt = k1·[S]·[E] - k-1·[ES] - kcat·[ES]
d[P]/dt = kcat·[ES]
We didn't write these equations. They emerged from the net structure and mass-action kinetics.
At steady state (d[ES]/dt ≈ 0), the reaction rate simplifies to:
v = Vmax × [S] / (Km + [S])
where Km = (k-1 + kcat) / k1 and Vmax = kcat × [E]total. This is the Michaelis-Menten equation—derived not by algebra, but by running the ODE solver on the Petri net.
The demo computes four predictions automatically as you adjust parameters:
| Prediction | Default Value | What It Means |
|---|---|---|
| Time to 50% conversion | ~17s | When half the substrate is consumed |
| Peak reaction rate | ~2.95 | Maximum d[P]/dt, approaches Vmax |
| Final yield | ~70% | Percentage of substrate converted in the simulation window |
| Km / Vmax | 60 / 5.0 | The Michaelis-Menten constants |
The concentration chart shows the classic pattern: substrate depletes as product accumulates, with the enzyme-substrate complex rising quickly then falling as substrate runs out.
The reaction rate chart shows the saturation curve—the rate climbs rapidly at first, then levels off as enzyme molecules become saturated with substrate.
Why does the rate saturate? The Petri net makes it visible.
At low substrate, most enzyme is free. Increasing [S] means more binding events, so the rate climbs linearly. But at high substrate, almost all enzyme is tied up in complex. Adding more substrate can't speed things up—there's no free enzyme to bind with.
Km is the substrate concentration at half-maximum rate. It measures how tightly the enzyme binds substrate. A low Km means the enzyme binds eagerly; a high Km means it needs a lot of substrate before it's half-saturated.
In the Petri net, this emerges from the competition between unbind and catalyze for the complex tokens. When k-1 is large relative to kcat, the complex tends to fall apart rather than produce product—so you need more substrate to keep the enzyme occupied.
The sliders auto-simulate on every change. Some experiments to try:
High enzyme, low substrate (e0=50, s0=20): The reaction completes almost instantly. All substrate is converted because there's plenty of enzyme to go around. The rate curve is a sharp spike.
Low k1 (k1=0.001): Binding becomes the bottleneck. Km shoots up, meaning you need enormous substrate concentrations to reach half-max rate. The enzyme is effectively less efficient.
High kcat (kcat=2.0): The enzyme turns over faster. Vmax increases, and the 50% conversion time drops. But Km also increases—faster catalysis means the complex is consumed faster, so more substrate is needed to keep it populated.
Equal k-1 and kcat (km1=0.5, kcat=0.5): The complex is equally likely to unbind or catalyze. Km = (0.5 + 0.5) / 0.01 = 100—higher than default. The enzyme is less efficient because half the binding events are "wasted" on unbinding.
The Petri net enforces a conservation law automatically:
[E] + [ES] = [E]total = constant
Free enzyme plus bound enzyme always equals the initial enzyme count. This isn't coded as a constraint—it's a structural property of the net. The enzyme token circulates through enzyme → complex → enzyme but never leaves the system.
Similarly:
[S] + [ES] + [P] = [S]initial
Substrate is either free, bound in complex, or converted to product. Mass is conserved because every arc that removes a token from one place adds it to another.
These are P-invariants of the Petri net—linear combinations of places whose token count remains constant regardless of which transitions fire.
The Michaelis-Menten pattern appears far beyond biochemistry:
In each case, a limited resource (enzyme/core/agent/machine) cycles between free and occupied states. The Petri net structure is identical—only the labels change.
| Concept | Enzyme Kinetics Example |
|---|---|
| Mass-action kinetics | Transition rates from input concentrations |
| Emergent equations | Michaelis-Menten from net topology |
| Conservation laws | Enzyme total preserved (P-invariant) |
| Saturation | Rate limited by enzyme availability |
| Prediction | Time to 50%, peak rate, yield from ODE |
Four places and three transitions produce the Michaelis-Menten equation, the saturation curve, conservation laws, and quantitative predictions. We didn't derive anything—the structure produced the behavior.
This is the DDM pattern in its purest form: declare the relationships (places and arcs), assign rates, and let the ODE solver reveal what the system does. The enzyme kinetics model is small enough to understand completely, yet produces one of the most important results in biochemistry.
For the theory behind mass-action kinetics: Declarative Differential Models
For more ODE demos: ODE Simulation & Prediction