@@ -49,6 +49,7 @@ in particular $\recdel e \ell$ deletes the field $\ell$ from $e$, $\recupd e \el

\(\erecord{...,\ell=e,...}.\ell\ \reduces\ e\).

To define record type subtyping and record expression type inference we need the following operators on record types (refer to~\citet{alainthesis} for more details):

\begin{eqnarray}

\proj\ell t & = &\left\{\begin{array}{ll}\min\{ u \alt t\leq\orecord{\ell=u}\}&\text{if } t \leq\orecord{\ell = \Any}\\\text{undefined}&\text{otherwise}\end{array}\right.\\

@@ -716,10 +716,10 @@ $\Refinef$ yields for $x_1$ a type strictly more precise than the type deduced i

previous iteration.

The solution we adopt here is to bound the number of iterations to some number $n_o$.

From a formal point of view, this means to give up the completeness of the algorithm: $\Refinef$ will be complete (i.e., it will find all solutions) for the deductions of $\Gamma\evdash e t \Gamma'$ of depth at most $n_o$. This is obtained by the following definition of $\Refinef$\vspace{-2mm}

From a formal point of view, this means to give up the completeness of the algorithm: $\Refinef$ will be complete (i.e., it will find all solutions) for the deductions of $\Gamma\evdash e t \Gamma'$ of depth at most $n_o$. This is obtained by the following definition of $\Refinef$\vspace{-1mm}