Arrow terms are 𝑀,𝑁::=𝛼∣𝑀→𝑁. A finite family {𝑀𝑖⪯𝗌𝗎𝑁𝑖}𝑛𝑖=1 is solved by one outer substitution 𝑆 and one matcher 𝑅𝑖 for each inequality: 𝑅𝑖(𝑆(𝑀𝑖))=𝑆(𝑁𝑖)(1≤𝑖≤𝑛). Equations may be retained as 𝑆(𝑃)=𝑆(𝑄), or encoded as (𝑃,𝑃)⪯𝗌𝗎(𝑃,𝑄) using one fixed binary constructor.
The Milner–Mycroft calculus adds the following rule to the HM rules above:
Γ,𝑥:𝜎⊢𝖬𝖬𝑒:𝜎
Γ⊢𝖬𝖬𝖿𝗂𝗑𝑥.𝑒:𝜎
MM-Fix
Its first-order presentation protects in ¯𝜌 one variable monotype for every ambient nongeneric variable, together with the monotypes of enclosing lambda-bound variables:
The generator 𝖲𝖤𝖨 assigns a fresh root 𝑎𝑝 to every syntax occurrence and a disjoint binder monotype 𝑏𝑝 to every lambda or fix at 𝑝. If immediate subterms have roots 𝑞,𝑟, its five local constraints are 𝑥𝑝(𝐴(𝑥),¯𝜌)⪯𝗌𝗎(𝑎𝑝,¯𝜌)(𝜆𝑥.𝑒𝑞)𝑝𝑎𝑝≐𝑏𝑝→𝑎𝑞(𝑒𝑞1𝑒𝑟2)𝑝𝑎𝑞≐𝑎𝑟→𝑎𝑝(𝗅𝖾𝗍𝑥=𝑒𝑞1𝗂𝗇𝑒𝑟2)𝑝𝑎𝑝≐𝑎𝑟(𝖿𝗂𝗑𝑥.𝑒𝑞)𝑝(𝑏𝑝,¯𝜌)⪯𝗌𝗎(𝑎𝑞,¯𝜌),(𝑎𝑞,¯𝜌)⪯𝗌𝗎(𝑏𝑝,¯𝜌),(𝑎𝑞,¯𝜌)⪯𝗌𝗎(𝑎𝑝,¯𝜌). Subproblems use the environment and protected-tuple extensions stated in definition 5.11; occurrence variables in distinct subproblems are fresh.