Chapter 8: Recipe as Geometric Construction
“Faites simple — above all, keep it simple.” — Auguste Escoffier, Le Guide Culinaire (1903)
RUNNING EXAMPLE — SUBSTITUTION NIGHT
Marcus has guests in an hour and is whisking the vinaigrette he makes for every dinner party: good olive oil, a spoon of mustard, a little honey, and the sharp squeeze of lime that he has decided, over years, is the thing that makes his dressing his. He has the oil, the mustard, the honey. He reaches for a lime and finds — nothing. The limes are gone. There is one tired lemon on the windowsill, and behind it, in the cupboard, a bottle of distilled white vinegar.
He does not hesitate over the lemon. He halves it, squeezes, whisks, tastes off the back of the spoon. The dressing is fine — a touch rounder, a touch less green than with lime, but unmistakably his dressing. The lemon landed almost exactly where the lime would have. Then, idly, he considers the vinegar. It has acid too; the bottle even reads “5% acidity,” the same sourness the lemon supplied, and a vinaigrette is named for vinegar. For half a second the substitution seems obvious — acid is acid. And then his hand stops, because he already knows, without trying it, that distilled vinegar would wreck the dressing. It would deliver the sourness and nothing else: no citrus oil, no floral top note, no zest. It would be sour the way a chemistry set is sour.
Two substitutions, one accepted and one rejected, decided in under ten seconds and without a second taste. The accepted one moved the dressing a short distance in a direction that barely mattered. The rejected one would have moved it the right distance along the one axis he cared about and a ruinous distance along three axes he had not consciously named. Marcus cannot write the equation. But he computed it.
The Recipe as a Program
A recipe is the most familiar artifact in all of gastronomy and the least examined as a mathematical object. We read recipes as instructions — a list of things to buy and a sequence of things to do — and we judge them by whether the result tastes good. But an instruction list that reliably produces a flavor is doing something precise: it is constructing a point in the flavor space $\mathcal{F}$ of Chapter 1, starting from raw ingredients and arriving, if the cook is competent, within a small neighborhood of an intended target $\mathbf{f}^\star$.
Seen this way, a recipe is a program, and like every program it has two ingredients of its own: data and operations. The data are the ingredients, each contributing a flavor vector. The operations are the cooking transformations of Chapter 7 — heat, time, mechanical work — each mapping vectors to vectors. The recipe is the source code; the dish is the value it returns. This chapter develops that analogy until it is no longer an analogy but a working description, pulling together threads from the whole book: the flavor vector (Chapter 1), the seasoning operators (Chapter 6), and the transformations under heat (Chapter 7), now assembled into the structure that appears on a printed card or a phone screen.
The payoff is not metaphorical elegance. It is that three practical mysteries — why order matters, why “season to taste” works, and why some substitutions are safe and others catastrophic — turn out to be the same mystery from three angles, and the angle that resolves all three is geometric. Marcus’s frozen hand over the vinegar bottle is the whole chapter in one gesture, and by the end we will say exactly what he computed.
8.1 Ingredients as Basis, Quantities as Coefficients
Begin with the simplest possible recipe: a combination, with no cooking at all. A vinaigrette. A spice blend. A glass of mixed juice. Here the only operation is mixing, and mixing, to a first approximation, is addition.
[Modeling Axiom.] Let a recipe draw on ingredients $1, \dots, n$, each contributing a flavor vector $\mathbf{f}_i \in \mathcal{F}$, used in amount $a_i \ge 0$. The flavor of the assembled dish is the weighted sum $$ \mathbf{f}_{\text{dish}} = \sum_{i=1}^{n} a_i\, \mathbf{f}_i. $$ The ingredients play the role of basis vectors and the quantities play the role of coefficients. A recipe, in its barest form, is a coordinate specification: it names a set of directions in $\mathcal{F}$ and the distance to travel along each.
Two qualifications keep this honest, and both are themselves geometric facts rather than disclaimers. First, the $\mathbf{f}_i$ are not orthogonal and need not be linearly independent — two herbs may point in nearly the same direction, so adding both is close to adding more of one. The “basis” is really a spanning set, often overcomplete, and the reachable dishes form the conical hull of the ingredient vectors (a cone, not a subspace, because we cannot use negative quantities — there is no anti-cilantro). Second, the sum is linear only locally. Real mixing is mildly nonlinear: salt and glutamate combine superlinearly (the umami synergy of Chapter 1), sweet suppresses bitter sublinearly, and the perceptual norm saturates as concentrations rise (Weber–Fechner, Chapter 3). So the honest statement is $\mathbf{f}_{\text{dish}} = \sum_i a_i \mathbf{f}_i + (\text{curvature correction})$, the correction small for modest quantities and growing near the edges of the space.
[Empirical.] The linear-plus-curvature picture is visible in the kitchen. Doubling the garlic in a sauce roughly doubles its contribution at low levels and conspicuously fails to at high levels — the second head adds far less perceived pungency than the first, exactly the logarithmic compression Fechner described. The linear regime is where recipes are written (“two cloves”) and the saturating regime is where they break (“the whole bulb”); a good recipe keeps its coefficients inside the regime where addition behaves like addition.
This is why a recipe can be written down at all. If flavors combined chaotically — if every pair interacted unpredictably — no list of quantities could specify a result, and cooking would be the un-learnable combinatorial nightmare that Chapter 1 dissolved. That a recipe is mostly a list of coefficients on mostly-additive ingredient vectors is the structural reason recipes transmit across kitchens and centuries. The geometry was always real; the ingredient list is its coordinate readout.
8.2 Order of Operations: Cooking Does Not Commute
Mixing is addition, and addition commutes: $a\,\mathbf{f}_1 + b\,\mathbf{f}_2 = b\,\mathbf{f}_2 + a\,\mathbf{f}_1$. If a recipe were only mixing, order would never matter, and any cook who has scorched garlic by adding it before the onions had sweated knows that order matters enormously. The reason is that cooking is not only addition. It is the application of operators — the maps $T: \mathcal{F} \to \mathcal{F}$ of Chapter 7 — and operators, in general, do not commute.
[Modeling Axiom.] Let $S$ denote searing (a Maillard operator, building roasted and savory aroma dimensions through high dry heat) and $B$ denote braising (a hydrolytic operator, breaking down connective tissue and extracting into liquid at moderate wet heat). Applied to a raw vector $\mathbf{f}_0$, the two orders give $$ S(B(\mathbf{f}_0)) \neq B(S(\mathbf{f}_0)), $$ and the inequality is not subtle. Sear-then-braise builds a crust of Maillard compounds and then redistributes them through the braising liquid: the roasted notes survive and suffuse the sauce. Braise-then-sear stews the raw surface to grey first, then attempts a sear on a wet, collagen-slack surface that browns poorly. The first is a pot roast. The second is a disappointment. Same ingredients, same total heat, opposite results — because the operators were composed in opposite order.
The mathematical name for this is non-commutativity, and the set of cooking transformations, composed by sequencing, forms a non-abelian structure. (It is a monoid rather than a group, strictly, because most cooking operations have no inverse — you cannot un-sear, un-ferment, or un-reduce; this irreversibility is the arrow of time that Chapter 7 traced and that Chapter 14 will revisit.) The order-dependence is measured by the commutator $[S, B] = SB - BS$, zero exactly when two operations can be freely reordered and large when they cannot. Hervé This, founding molecular gastronomy, spent much of Molecular Gastronomy (2006) demonstrating that such sequence effects are physical, not folklore — that when a transformation is applied changes its product. Salting and resting roughly commute; searing and braising spectacularly do not.
[Empirical.] Non-commutativity is the hidden subject of an enormous amount of culinary technique. “Bloom the spices first” (toast whole spices in fat before the liquid goes in) claims that the toasting operator and the simmering operator do not commute — toast-then-simmer distributes the new roasted aromatics, while simmer-then-toast is impossible once the pot is wet. Mise en place itself, the next section’s subject, exists partly because non-commutativity makes the timing of additions load-bearing: if the order is wrong you cannot fix it later, so it must be right the first time. A recipe’s verb sequence is not decoration on its ingredient list. It is a word in a non-abelian monoid, and the word and its anagram name different dishes.
8.3 Mise en Place as Coordinate Preparation
Before service, a professional kitchen performs a ritual that looks like mere tidiness and is in fact a mathematical operation: mise en place, everything in its place. Onions diced to a uniform brunoise, herbs picked and chopped, stock reduced and waiting, acid squeezed into a labeled ramekin, salt in a cellar at the cook’s right hand. The French phrase is usually translated as preparation; it is more precisely coordinate preparation.
[Modeling Axiom.] Mise en place converts raw ingredients — which arrive in arbitrary, entangled, hard-to-combine forms — into a set of clean, normalized basis vectors ready for the linear combination of §8.1. A whole onion is not a usable basis vector: it must be peeled, diced, and (often) sweated to a known state before it points reliably in a known direction with a known magnitude. The diced, measured, pre-treated onion is the basis vector $\mathbf{f}_{\text{onion}}$ that the recipe’s coefficient $a_{\text{onion}}$ multiplies. Mise en place is the transformation from raw material to standard basis.
Two properties of a good basis explain the ritual’s form. The first is normalization: each component is brought to a standard, repeatable state — uniform dice for even cooking, stock reduced to a known concentration, citrus juiced and strained so a teaspoon always means the same vector. A basis whose vectors have unpredictable magnitude is useless for specifying coordinates, which is why professional recipes obsess over uniformity. The second is availability: the components must be simultaneously at hand, because during the fast, non-commutative sequence of §8.2 there is no time to re-derive a basis vector from scratch. You cannot dice an onion in the ninety seconds when it needs to hit the pan; if it is not already $\mathbf{f}_{\text{onion}}$, the window closes.
There is a direct kinship with the line cook of Chapter 1, who navigated a flat purée by feel along a few axes. That navigation was possible only because her station was already a prepared coordinate system — forty open containers, each a clean basis vector within reach. Mise en place is what makes the geometric move fast: it front-loads the slow work of building the basis so that, in service, cooking reduces to choosing coefficients and sequencing operators on a coordinate frame already standing by.
8.4 Balancing as Optimization
No recipe specifies the final dish exactly, because ingredients vary: this lime is sharper, this batch of stock saltier, this tomato sweeter. The written coefficients place the dish in the right neighborhood; the cook’s palate closes the gap. The instruction that does this — the most common and least examined in all of cooking, season to taste — describes an algorithm.
[Modeling Axiom.] Balancing is iterative optimization toward a target region. Let $\mathbf{f}^\star$ be the intended dish and $R$ a tolerance neighborhood around it (the dish need not be a single point — many seasonings are “right”). At each step the cook tastes, perceives the current vector $\mathbf{f}_t$, estimates the error $\mathbf{e}_t = \mathbf{f}^\star - \mathbf{f}_t$, and applies a corrective ingredient that pushes along the deficient direction: $$ \mathbf{f}_{t+1} = \mathbf{f}_t + \eta\, a^\star \mathbf{v}_{\text{correction}}, \qquad \text{until } \mathbf{f}_t \in R. $$ This is gradient-style descent on the distance $\lVert \mathbf{f}^\star - \mathbf{f}_t \rVert$ in the flavor metric of Chapter 3, with a learned step size $\eta$ and a corrective vector chosen — as the line cook chose lime and miso — to point along the largest component of the current error. Samin Nosrat’s Salt, Fat, Acid, Heat (2017) is, read geometrically, a basis for exactly these corrective vectors: four near-orthogonal directions along which a cook diagnoses and repairs a dish.
Several familiar features of seasoning fall out immediately. You can add but rarely subtract: the corrective vectors are confined to the positive cone (§8.1), so over-salting is dangerous in a way under-salting is not — the only recoveries are dilution (scaling the whole vector down) or addition of an antagonist (sweet or acid to mask, a different direction entirely). Small steps near the target: experienced cooks reduce $\eta$ as they approach $R$, adding pinches rather than spoonfuls, exactly as a well-tuned optimizer shrinks its step near a minimum to avoid overshoot. Balance is a region, not a point: this connects directly to the seasoning fixed point of Chapter 6 — a dish is properly seasoned when small perturbations no longer reduce the distance to $\mathbf{f}^\star$, when the gradient vanishes and $\mathbf{f}_t$ sits inside $R$.
[Empirical.] The descent is not blind, and this distinguishes the expert. A novice tastes “something is wrong” — perceiving the magnitude of the error $\lVert \mathbf{e}_t \rVert$ but not its direction, so they correct at random and often increase the distance. The expert perceives the error as a vector — “it needs acid,” “it’s flat, it needs salt,” “it’s harsh, it needs fat to round it” — and steps directly along $\mathbf{e}_t$. The fifteen years of training Chapter 1 invoked are, in this language, the acquisition of an accurate direction estimate: the ability to decompose a perceived deficiency into the basis of corrective operators (Chapter 6’s salt, acid, fat, heat) and step the right way the first time. Expertise is not a bigger spice rack. It is a better gradient.
SUBSTITUTION NIGHT, REVISITED — THE LEMON STEP AND THE VINEGAR LEAP
Return to Marcus over the whisk. The vinaigrette without its acid sits at a point $\mathbf{f}_0$ deficient along the bright/sour direction: $f_{\text{sour}}$ low, and with it the citrus-aroma components that lift oil and honey out of cloying flatness. The lime would have supplied the vector $\mathbf{v}_{\text{lime}}$ — a large push along $+f_{\text{sour}}$, a moderate push along the green/citrus aroma axes, a faint floral top note. The lemon supplies $\mathbf{v}_{\text{lemon}}$, which is nearly parallel: the same dominant sour component, a similar citrus-oil aroma, slightly less green and slightly more round. The angle between $\mathbf{v}_{\text{lime}}$ and $\mathbf{v}_{\text{lemon}}$ is small, so the lemon step lands the dressing in essentially the same place — inside the tolerance region $R$. One taste confirms it; no correction needed.
The vinegar is the cautionary case, and the vinaigrette makes it sharp: acid is the dominant ingredient here, so the substitution is the one §8.6 will call most demanding. Its vector $\mathbf{v}_{\text{vinegar}}$ has the same — even larger — component along $+f_{\text{sour}}$, which is exactly why “acid is acid” is so seductive for half a second. But it has near-zero projection onto every aroma axis the citrus supplied, and a sharp acetic-acid note on an axis the dressing never wanted. Matching the magnitude along sour while missing the direction in the aroma subspace, it would satisfy the one coordinate Marcus could name and violate three he could not. His hand stopped because he perceived the vinegar not as a scalar of “sourness” but as a vector pointing the wrong way. The next section is about precisely this distinction.
8.5 The Recipe Graph
A linear sum (§8.1) and a sequence of operators (§8.2) are still too simple for a real recipe, because real recipes branch. A braise has a separate aromatic base, a separate sear, a separate braising liquid, each prepared along its own line and merged. A composed plate joins a protein, a sauce, a starch, and a garnish, each the endpoint of its own chain of transformations. The natural data structure is not a list but a directed acyclic graph.
[Modeling Axiom.] Represent a recipe as a DAG $G = (V, E)$. The source nodes (in-degree zero) are raw ingredients, each carrying a flavor vector $\mathbf{f}_i$. The internal nodes are operations: a single-input node applies a transformation operator $T$ from Chapter 7 (sear, reduce, toast); a multi-input node applies a combination operator (the weighted sum of §8.1, the join where vectors merge). Vectors propagate along the edges: each node computes its output vector from the vectors arriving on its inbound edges and emits it downstream. The single sink node (out-degree zero) carries $\mathbf{f}_{\text{dish}}$, the value the program returns. The graph is acyclic because cooking is irreversible (§8.2) — no operation feeds back into its own input, so time flows strictly from sources to sink.
This structure explains features that a flat instruction list obscures. Parallelism: independent branches — the sauce reducing while the meat sears — have no edge between them and execute simultaneously, exactly how a brigade divides labor, each cook owning a subgraph. Critical path: the longest dependency chain from any source to the sink sets the minimum time to plate, the quantity a chef implicitly computes when timing a multi-component dish to land together. The commutator lives on the topology: §8.2’s order-dependence is the statement that two operation nodes on the same branch cannot be swapped, while nodes on different branches commute freely because no edge connects them — non-commutativity is precisely confinement to a single path through the graph.
[Empirical.] The DAG is not an imposition on cooking; it is how recipe-management software, professional production sheets, and the mise en place of §8.3 already organize the world. A prep list is a topological sort of the recipe graph — the order in which nodes can be computed so that every node’s inputs are ready before it fires. When a recipe is written as numbered steps, those steps are a linearization of an underlying DAG, and the experienced cook silently re-parallelizes them: “step 4 and step 7 are independent, do them at once.” The instruction list is the serial shadow of a parallel graph, and reading a recipe well means reconstructing the graph from its shadow.
8.6 Recipe Similarity as Distance
We can now answer the question Marcus answered in ten seconds. When is a substitution safe? When is one recipe “close” to another? The recipe-as-construction picture answers precisely: two recipes are similar when they construct nearby points in $\mathcal{F}$, and a substitution is safe when swapping one ingredient vector for another moves the final point a short distance in the flavor metric of Chapter 3.
[Modeling Axiom.] Substituting ingredient $j'$ for ingredient $j$ replaces the term $a_j \mathbf{f}_j$ with $a_j \mathbf{f}_{j'}$. To first order — ignoring curvature corrections and downstream operator nonlinearities — the resulting displacement of the dish is $$ \Delta \mathbf{f}_{\text{dish}} \approx a_j\,(\mathbf{f}_{j'} - \mathbf{f}_j). $$ The substitution is safe when $\lVert \Delta \mathbf{f}_{\text{dish}} \rVert$ is small in the flavor metric — when the difference vector $\mathbf{f}_{j'} - \mathbf{f}_j$ is short, scaled by how much of the ingredient the recipe uses. A substitution in a trace quantity (a pinch) tolerates a large difference vector; a substitution in a dominant ingredient (the acid in an acid-forward dish) demands a small one.
This is why the lemon works and the vinegar fails, and the reason is directional, not magnitudinal. Lemon and lime differ by a short vector: very close on the sour axis, close on the citrus-aroma axes, differing only in a small floral/green nuance. The difference $\mathbf{f}_{\text{lemon}} - \mathbf{f}_{\text{lime}}$ is short in every dimension that matters, so the dish barely moves — a safe swap. Vinegar matches lime only on the sour axis and diverges sharply on every aroma axis. Because the dish is one where citrus aroma is doing real perceptual work — and where the acid is the dominant term, so the difference vector is scaled by a large $a_j$ — that long aroma-component dominates $\lVert \Delta \mathbf{f}_{\text{dish}} \rVert$, and the substitution fails.
[Empirical.] This resolves a confusion that defeats novice cooks and naive recipe software alike: the belief that ingredients are interchangeable along a single named property. “Acid is acid” treats the sour axis as the whole space and substitutes on magnitude. But $\mathcal{F}$ is many-dimensional, and a safe substitution requires proximity in the full vector, not agreement on one coordinate. The general principle: substitution safety is small distance in flavor space, and a single shared coordinate is no guarantee of small distance. The food-pairing networks of Chapter 4 — Ahn et al.’s (2011) graph of ingredients linked by shared compounds — are a coarse map of this distance structure, with neighboring ingredients (the safe substitutions) sharing many compounds and distant ones sharing few. Substitution, pairing, and similarity are one geometric relation: nearness in $\mathcal{F}$.
A caution keeps the linear picture honest. The first-order formula $\Delta \mathbf{f}_{\text{dish}} \approx a_j(\mathbf{f}_{j'} - \mathbf{f}_j)$ assumes the substituted ingredient passes through the same downstream operators as the original. Swap a fresh herb for a dried one and you change not just a source vector but how it responds to heat — dried oregano survives a long simmer that would destroy fresh basil, so the difference vector is amplified by the braising operator rather than merely added at the end. Substitution near the source of a long branch (§8.5) propagates through every transformation downstream and can grow; substitution near the sink (a finishing garnish) does not. The safest substitutions are the late ones — which is why “finish with lemon or lime, whichever you have” is sound advice and “build the whole braise on vinegar instead of wine” is not. Distance in flavor space is the answer, but the recipe graph determines how that distance compounds.
From Construction to Cuisine
We have treated the recipe as a single program constructing a single point: a basis of ingredient vectors (§8.1), composed by a non-abelian sequence of operators (§8.2), on a coordinate frame prepared in advance (§8.3), refined toward a target by iterative optimization (§8.4), organized as a directed acyclic graph (§8.5), and related to its neighbors by distance in flavor space (§8.6). Marcus’s frozen hand was a distance computation; his quick lemon a short step along a difference vector; his whole party vinaigrette a small DAG he could execute half-asleep. The geometry was always there, under the instruction list. The scalars of that list were always insufficient to show it.
But a single recipe is one point, and a cooking tradition is a whole cloud of them — thousands of dishes clustering in a region of $\mathcal{F}$, sharing signature ingredients, favoring certain operators, converging on a characteristic balance. If one recipe constructs a point, what does an entire cuisine construct? The next chapter, The Eigenvalues of a Kitchen, treats a cuisine as a probability distribution over flavor space and asks for its principal components: the few directions along which Italian, Japanese, and Mexican cooking most vary, the signature ingredients that define those directions, and the convergence — resonating with the cultural attractors of Geometric Economics (Volume 4) and the learned manifolds of Geometric Cognition (Volume 6) — by which distant cuisines, optimizing independently, keep discovering the same few axes of acid, fat, and umami. We have learned to read one recipe as geometry. We turn now to reading a culture’s worth at once.