Optimal Play in Caverna: A Formal Proof of Weak Dominance

3 Food Economy

Food is the primary constraint in Caverna. Every harvest, each dwarf must be fed \(2\) food (plus \(1\) per offspring). Failure to feed produces begging markers worth \(-3\) points each. This chapter formalizes the food conversion system and proves the universal food crisis that shapes all viable strategies.

3.1 Food values

Definition 3.1 Animal food values
✓

Sheep convert to \(1\) food, wild boar to \(2\), cattle to \(3\). Donkeys have a superlinear pairing bonus: \(1\) donkey gives \(1\) food, but pairs give \(3\) food (a \(+1\) bonus per pair).

Theorem 3.2 Donkey pair bonus
✓

\(\text{donkeyFoodValue}(2) = 3\) and \(\text{donkeyFoodValue}(2) {\gt} 2 \cdot \text{donkeyFoodValue}(1)\), confirming the superlinear pairing bonus.

Proof ▶

By computation: \(3 {\gt} 2 \cdot 1 = 2\).

\begin{tikzpicture} [
  res/.style={rounded corners=4pt, minimum width=1.8cm, minimum height=0.7cm,
              font=\small, text=textDark, draw=textDark, thin, align=center},
  food/.style={res, fill=pastelMint, font=\small\bfseries, minimum width=2.0cm,
               minimum height=0.9cm},
  arr/.style={-{Stealth[length=5pt]}, thick, color=textDark},
  rate/.style={font=\scriptsize, text=accentTeal, fill=white, inner sep=1.5pt},
]
% Food node (center)
\node[food] (F) at (0, 0) {Food};
% Source nodes
\node[res, fill=pastelSky]      (cattle)  at (-5.5,  2.0) {Cattle};
\node[res, fill=pastelSky]      (boar)    at (-3.0,  2.0) {Wild Boar};
\node[res, fill=pastelSky]      (sheep)   at (-0.5,  2.0) {Sheep};
\node[res, fill=pastelLavender] (donkey)  at ( 2.0,  2.0) {Donkey};
\node[res, fill=pastelLemon]    (veg)     at (-4.5, -2.0) {Vegetable};
\node[res, fill=pastelLemon]    (grain)   at (-2.0, -2.0) {Grain};
\node[res, fill=pastelPeach]    (gold)    at ( 0.5, -2.0) {Gold};
\node[res, fill=pastelCoral]    (ruby)    at ( 3.0, -2.0) {Ruby};
% Arrows with conversion rates
\draw[arr] (cattle) -- (F) node[rate, midway, above, sloped] {3};
\draw[arr] (boar)   -- (F) node[rate, midway, above, sloped] {2};
\draw[arr] (sheep)  -- (F) node[rate, midway, above, sloped] {1};
\draw[arr] (donkey) -- (F) node[rate, midway, above, sloped] {1 or 1.5/ea};
\draw[arr] (veg)    -- (F) node[rate, midway, below, sloped] {2};
\draw[arr] (grain)  -- (F) node[rate, midway, below, sloped] {1};
\draw[arr] (gold)   -- (F) node[rate, midway, below, sloped] {$n{-}1$ (lossy)};
\draw[arr] (ruby)   -- (F) node[rate, midway, below, sloped] {$\geq 2$};
% Donkey annotation
\node[font=\tiny, text=textDark, anchor=west, align=left] at (3.3, 2.5)
  {1 donkey $\to$ 1 food\\2 donkeys $\to$ 3 food\\(superlinear)};
% Gold annotation
\node[font=\tiny, text=accentAmber, anchor=north] at (0.5, -2.7)
  {1 gold wasted};
\end{tikzpicture}
Figure 3.1 Food conversion network. All resources ultimately convert to food at varying rates. Cattle is the most efficient animal source; gold conversion is lossy (1 unit overhead); rubies serve as emergency food (\(\geq 2\) each). Donkeys exhibit a superlinear pairing bonus.
Theorem 3.3 Cattle is most efficient
✓
#

Cattle gives strictly more food than wild boar and sheep per animal.

Proof ▶

\(3 {\gt} 2 {\gt} 1\).

Theorem 3.4 Vegetable over grain
✓
#

Vegetables give \(2\times \) the food of grain (2 vs. 1).

Proof ▶

By definition of food values.

3.2 Gold-to-food conversion

Definition 3.5 Gold to food
✓
#

Converting \(n\) gold to food yields \(\max (0, n-1)\) food. This is lossy: \(1\) gold is wasted as overhead.

Theorem 3.6 Gold conversion is lossy
✓

\(\text{goldToFood}(2) = 1\) and \(\text{goldToFood}(1) = 0\).

Proof ▶

Direct from the formula \(\max (0, n-1)\).

3.3 Feeding costs

Definition 3.7 Feeding cost
✓
#

\(\text{feedingCost}(d, o) = 2d + o\) where \(d\) is the number of adult dwarfs and \(o\) the number of offspring. Only dwarfs consume food; animals never do, so the breeding phase that follows feeding has no effect on the cost paid in the same round.

Remark 3.8 Feeding is a player choice
✓
#

Per the rulebook, a player may convert goods to food in the feeding phase but is never required to. Any food still missing after the chosen conversions becomes begging markers (\(-3\) points each). The convertible set covers grain, vegetables, all four farm animals (sheep, donkeys, wild boars, cattle, including the donkey pair bonus), rubies, and gold. The formal model captures this choice via a FeedingPlan (Definition 1.7) rather than fixing a deterministic conversion order.

Theorem 3.9 Two-dwarf feeding
✓
#

\(\text{feedingCost}(2, 0) = 4\).

Proof ▶

\(2 \cdot 2 + 0 = 4\).

Theorem 3.10 Five-dwarf feeding
✓

\(\text{feedingCost}(5, 0) = 10\) and \(\text{feedingCost}(5, 1) = 11\).

Proof ▶

By computation.

3.4 The universal food crisis

Theorem 3.11 Starting food is insufficient
✓

Player 1’s starting food (\(1\)) is strictly less than the first harvest feeding cost (\(4\)): \(1 {\lt} \text{feedingCost}(2, 0)\).

Proof ▶

\(1 {\lt} 4\).

Theorem 3.12 First harvest deficit
✓

\(\text{feedingCost}(2,0) - \text{startingFoodP1} = 3\). Every player faces a 3-food deficit at the first harvest.

Proof ▶

\(4 - 1 = 3\).

Theorem 3.13 Universal food crisis
✓

Both players face a food deficit at the first harvest: \(\text{feedingCost}(2,0) - \text{startingFoodP1} = 3\) and \(\text{feedingCost}(2,0) - \text{startingFoodP2} = 2\). This structural constraint forces every viable strategy to solve the food problem within its first \(3\) actions.

Proof ▶

Player 1 starts with \(1\) food and needs \(4\), a gap of \(3\). Player 2 starts with \(2\) food and needs \(4\), a gap of \(2\).

Theorem 3.14 Ruby emergency food
✓
#

Rubies can be converted to at least \(2\) food each, serving as an emergency food source.

Proof ▶

By the ruby conversion rules.