The corrected row fragment has the two-sorted grammar 𝜏::=𝛼∣𝖨𝗇𝗍∣𝜏→𝜏∣Π(𝑟),𝑟::=𝜌∣∅𝗋∣𝑟[𝑎←𝜏],𝜎::=∀⃗𝛼⃗𝜌.𝜏. Type and row variables, quantification, instantiation, and substitution preserve their two sorts. Rows range over the countable label universe, denote finite partial maps, and update is right biased. The primitive schemes are 𝗇𝗎𝗅𝗅:Π(∅𝗋),(−).𝑎:Π(𝑟[𝑎←𝜏])→𝜏,(−) 𝗐𝗂𝗍𝗁 𝑎=(−):Π(𝑟)→𝜏→Π(𝑟[𝑎←𝜏]). A finite complete set {𝜃𝑖} solves an equation family 𝐸 when every member solves 𝐸, and every solution factors through some 𝜃𝑖 on the variables of 𝐸. It need not be a singleton.
The invalid injective step 𝑟1[𝑎 ←𝜏1] =𝑟2[𝑎 ←𝜏2] ⇒𝑟1 =𝑟2 is replaced by 𝜏1 =𝜏2 and four row-shape branches. Each branch existentially quantifies one common row 𝑟0 without 𝑎 and whichever field witnesses 𝑢1,𝑢2 it displays: 𝑟1𝑟2𝖯𝖯𝑟0[𝑎←𝑢1]𝑟0[𝑎←𝑢2]𝖠𝖠𝑟0𝑟0𝖠𝖯𝑟0𝑟0[𝑎←𝑢2]𝖯𝖠𝑟0[𝑎←𝑢1]𝑟0. A shared-row equation 𝜌 =𝜌[𝑎1 ←𝜏1]⋯[𝑎𝑛 ←𝜏𝑛] is removed and replaced by atomic obligations 𝗁𝖺𝗌(𝜌,𝑎𝑖,𝜏𝑖), retaining the last type at a repeated label. The special step does not substitute the update chain for 𝜌.
For Wand’s separately named finite-label concatenation calculus, fix 𝐿 ={𝑎1,…,𝑎𝑛}, use the descriptor sort 𝑑 ::=𝜙 ∣𝖺𝖻𝗌𝖾𝗇𝗍 ∣𝗉𝗋𝖾𝗌𝖾𝗇𝗍(𝜏), and write Π𝐿(𝑑1,…,𝑑𝑛) for record types. The result descriptor ℎ𝑖 at label 𝑎𝑖 satisfies (𝑔𝑖=𝗉𝗋𝖾𝗌𝖾𝗇𝗍(𝜏𝑖)∧ℎ𝑖=𝑔𝑖)∨(𝑔𝑖=𝖺𝖻𝗌𝖾𝗇𝗍∧ℎ𝑖=𝑓𝑖). Disjunctive-normal expansion yields finitely many ordinary unification problems and hence a finite complete set. Rémy’s unitary sorted-row calculus is a different signature and contributes no rule to this section.