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 \(2\) food, wild boar to \(3\), cattle to \(4\). 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] {4};
\draw[arr] (boar)   -- (F) node[rate, midway, above, sloped] {3};
\draw[arr] (sheep)  -- (F) node[rate, midway, above, sloped] {2};
\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

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

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.

Theorem 3.8 Two-dwarf feeding
#

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

Proof

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

Theorem 3.9 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.10 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.11 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.12 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.13 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.