Tofte–Talpin inference has the form TE⊢𝑒⇝𝑒′:𝜇,𝜙,𝜙::=∅∣𝜖∣{𝗀𝖾𝗍(𝜌)}∣{𝗉𝗎𝗍(𝜌)}∣𝜙1∪𝜙2. Constants, variables, and sequencing carry effects as follows:
TE⊢𝑐⇝𝑐𝖺𝗍𝜌:(𝗂𝗇𝗍,𝜌),{𝗉𝗎𝗍(𝜌)}
RI-Const
TE(𝑥)=(𝜏,𝜌)
TE⊢𝑥⇝𝑥:(𝜏,𝜌),∅
RI-Var
TE⊢𝑒1⇝𝑒′1:(𝜏1,𝜌1),𝜙1TE,𝑥:(𝜏1,𝜌1)⊢𝑒2⇝𝑒′2:𝜇,𝜙2
TE⊢𝗅𝖾𝗍𝑥=𝑒1𝗂𝗇𝑒2𝖾𝗇𝖽⇝𝗅𝖾𝗍𝑥=𝑒′1𝗂𝗇𝑒′2𝖾𝗇𝖽:𝜇,𝜙1∪𝜙2
RI-Let
Its delimiter is TE⊢𝑒⇝𝑒′:𝜇,𝜙𝜌∉frv(TE,𝜇)TE⊢𝑒⇝𝗅𝖾𝗍𝗋𝖾𝗀𝗂𝗈𝗇𝜌𝗂𝗇𝑒′𝖾𝗇𝖽:𝜇,𝜙∖{𝗀𝖾𝗍(𝜌),𝗉𝗎𝗍(𝜌)}RI−Letregion. The body effect may contain 𝜌; the rule discharges it.
The capability core uses 𝑟::=𝜌∣𝜈,𝐶::=𝜀∣∅∣{𝑟+}∣{𝑟1}∣𝐶1⊕𝐶2∣――𝐶. Access and allocation require authority for 𝑟; deallocation requires and consumes {𝑟1}. The state judgment combines memory realization, capability satisfiability, and expression typing. Expressions sequence declarations and may halt only after consuming all linear capability:
Ψ;Δ;Γ;𝐶⊢𝑑⇒Δ′;Γ′;𝐶′Ψ;Δ′;Γ′;𝐶′⊢𝑒
Ψ;Δ;Γ;𝐶⊢𝗅𝖾𝗍𝑑𝗂𝗇𝑒
Cap-LetDec
Ψ;Δ;Γ⊢𝑣:𝗂𝗇𝗍Δ⊢𝐶=𝖢𝖺𝗉∅
Ψ;Δ;Γ;𝐶⊢𝗁𝖺𝗅𝗍𝑣
Cap-Halt
The declaration rules are
𝜌∉dom(Δ)𝑥∉dom(Γ)
Ψ;Δ;Γ;𝐶⊢𝗇𝖾𝗐𝗋𝗀𝗇𝜌,𝑥⇒Δ,𝜌:𝖱𝗀𝗇;Γ,𝑥:𝜌𝗁𝖺𝗇𝖽𝗅𝖾;𝐶⊕{𝜌1}
Cap-New
Ψ;Δ;Γ⊢𝑣:𝑟𝗁𝖺𝗇𝖽𝗅𝖾Ψ;Δ;Γ⊢ℎ𝖺𝗍𝑟:𝜏Δ⊢𝐶≤𝖢𝖺𝗉𝐶′⊕{𝑟+}
Ψ;Δ;Γ;𝐶⊢𝑥=ℎ𝖺𝗍𝑣⇒Δ;Γ,𝑥:𝜏;𝐶
Cap-Alloc
Ψ;Δ;Γ⊢𝑣:⟨𝜏0,…,𝜏𝑛−1⟩𝖺𝗍𝑟Δ⊢𝐶≤𝖢𝖺𝗉𝐶′⊕{𝑟+}0≤𝑖<𝑛
Ψ;Δ;Γ;𝐶⊢𝑥=𝜋𝑖𝑣⇒Δ;Γ,𝑥:𝜏𝑖;𝐶
Cap-Project
Ψ;Δ;Γ⊢𝑣:𝑟𝗁𝖺𝗇𝖽𝗅𝖾Δ⊢𝐶=𝖢𝖺𝗉𝐶′⊕{𝑟1}
Ψ;Δ;Γ;𝐶⊢𝖿𝗋𝖾𝖾𝗋𝗀𝗇𝑣⇒Δ;Γ;𝐶′
Cap-Free
The program boundary is ⊢𝑀:ΨΨ⊧𝐶Ψ;⋅;⋅;𝐶⊢𝑒⊢(𝑀,𝑒)Cap−Program. The separate WCM region calculus has 𝜓::=𝛼∣∅∣{𝑟}∣𝜓1∪𝜓2. Projection records the accessed region, and the region delimiter discharges it only under the displayed scope conditions:
The named translation has 𝖢𝖺𝗉𝖮𝖿(𝛼)=𝛼 and 𝖢𝖺𝗉𝖮𝖿({𝑟})={𝑟+}. Its meta-level continuation consumes fresh unique authority with 𝖿𝗋𝖾𝖾𝗋𝗀𝗇; it introduces no target lambda.
The three source-bounded comparison cards retain their distinct judgments. Cyclic regions add only the pointer covariance rule
𝛾⊢𝑟long⪰𝑟short
Δ;𝛾⊢𝗉𝗍𝗋(𝜏,𝑟long)≤𝗉𝗍𝗋(𝜏,𝑟short)
Cyc-Region-Sub
The L3 card instead types allocation, deallocation, and exchange by