guide contents
Baixada · Study · Field guidePart I · The solve, and how to read it
Chapter ii

What “solving” a game like truco even means

A solve is a pair of strategies — one per side — where neither can do better by changing, whatever the other does. Game theory calls it a Nash equilibrium. In a game of hidden cards and bluffing that can't be a single “best move”: it's a mix, tuned so the opponent can't read you. The whole idea fits in one tiny endgame you can solve by hand —

§ 1

A bluff you can solve by hand

Final round, real stakes. Mão — the leader — has led a plain 3 — it's on the table, nothing left behind it. Pé, the dealer, arrives holding the top manilha (m♣, the 5♣ under v4) or a dead 4, equally often, and calls truco: the hand rises from 1 point to 3. Mão can fold — conceding the base point — or call and play the round out for 3. One deal, one bluff, one decision:

the leader can't tell these apart5· ½4· ½trucotruco ½play the 4 ½accept ½fold ½accept ½fold ½dealdealerdealerleader−3−1+3−1+1
leader0dealer0
dealer
5
5
truco!
leader
3
3
call!

0 hands · 0 raisesno raises yet
Plate I One toy endgame, sampled live per the solve: the tree path, the table and the tally move together. The bar tracks how much of the dealer's raising range really held the manilha — it converges to p* = 2/3.

Should mão call? That depends on one number: p, the share of manilhas behind pé's truco. Calling collects 3 when the raise was air and loses 3 when the manilha shows; folding costs 1 for sure:

EVcall  =  p(3)  +  (1p)(+3)  =  36p\mathrm{EV}_{\text{call}} \;=\; p\,(-3) \;+\; (1-p)\,(+3) \;=\; 3 - 6p36p  =  1foldp=233 - 6p \;=\; \underbrace{-1}_{\text{fold}} \quad\Longrightarrow\quad p^{\star} = \tfrac{2}{3}

Payoffs are points for mão, at the engine's real stakes: folding a truco concedes the previously accepted value (1); calling plays the raised hand (3). p is the probability the raise hides m♣.

At p* = 2/3 mão is exactly indifferent. A raising range richer than two-thirds manilha makes folding right; leaner, and calling prints. Everything the lab's charts show is this same arithmetic, repeated at scale.

§ 2

Why the solve mixes

Now hand the knob to pé. Raising the manilha is automatic — the choice is b, how often pé also raises the dead 4. Never bluff and every truco means the manilha: mão learns to fold, and pé's monster earns a single point. Always bluff and half the raises are air: mão calls every one and cashes 3 whenever the 4 turns up. Both pure habits are exploited the moment the opponent notices.

The equilibrium sits where nobody can be read. Pé bluffs just enough that the raising range lands exactly on mão's indifference point, and mão calls just enough that bluffing neither prints money nor burns it:

P(mtruco)  =  1212+12b  =  11+b  =!  23b=12P(\text{m}\clubsuit \mid \text{truco}) \;=\; \frac{\tfrac12}{\tfrac12 + \tfrac12\,b} \;=\; \frac{1}{1+b} \;\overset{!}{=}\; \tfrac{2}{3} \quad\Longrightarrow\quad b^{\star} = \tfrac{1}{2}EVbluff  =  c(3)  +  (1c)(+1)  =  14c  =!  1c=12\mathrm{EV}_{\text{bluff}} \;=\; c\,(-3) \;+\; (1-c)\,(+1) \;=\; 1 - 4c \;\overset{!}{=}\; -1 \quad\Longrightarrow\quad c^{\star} = \tfrac{1}{2}

b is pé's bluff frequency with the dead 4; c is mão's calling frequency. The 50/50 deal plus b* = ½ puts 2 manilhas behind every 3 raises — the p* above.

A solved strategy randomizes on purpose — at exactly the rate that makes reading it worthless. Every mixed cell in the lab is doing this.

§ 3

How the machine solves the real thing

The real game tree is far too large for hand arithmetic, so the solve is computed with counterfactual regret minimization: the program plays itself for billions of hands and, at every decision, leans a little more toward what it regretted not doing —

RT(a)  =  tT(ut(a)ut(σt))R^{T}(a) \;=\; \sum_{t \,\le\, T} \Bigl( u_t(a) - u_t(\sigma_t) \Bigr)σT+1(a)  =  max ⁣(RT(a),0)amax ⁣(RT(a),0)\sigma_{T+1}(a) \;=\; \frac{\max\!\bigl(R^{T}(a),\,0\bigr)}{\sum_{a'} \max\!\bigl(R^{T}(a'),\,0\bigr)}

Rᵀ(a) tallies how much better always playing a would have done than the strategy actually played; positive regrets, renormalized, set the next mix — regret matching.

Averaged over time, that self-play settles into the equilibrium, and the result is certified — checked action by action against a perfect best response — so “exact” means exact, within a stated tolerance.

Exact solving is expensive, and the lab bundles only selected chart exports. A grey Score or Turn-up choice means no chart for that exact spot is loaded here; it does not mean the spot is currently computing, or even that no solver artifact exists. The coverage ledger in the appendix — the numbers chapter — separates those cases.