  Garcia and Cimini study a type inference problem for the ITGL, an implicitly
and gradually typed language with let-polymorphism, and develop a sound and
complete inference algorithm for it. Soundness and completeness mean that, if
the algorithm succeeds, the input term can be translated to a well-typed term
of an explicitly typed blame calculus by cast insertion and vice versa.
However, in general, there are many possible translations depending on how type
variables that were left undecided by static type inference are instantiated
with concrete static types. Worse, the translated terms may behave
differently---some evaluate to values but others raise blame.
  In this paper, we propose and formalize a new blame calculus
$\lambda^{\textsf{DTI}}_{\textsf{B}}$ that avoids such divergence as an
intermediate language for the ITGL. A main idea is to allow a term to contain
type variables (that have not been instantiated during static type inference)
and defer instantiation of these type variables to run time. We introduce
dynamic type inference (DTI) into the semantics of
$\lambda^{\textsf{DTI}}_{\textsf{B}}$ so that type variables are instantiated
along reduction. The DTI-based semantics not only avoids the divergence
described above but also is sound and complete with respect to the semantics of
fully instantiated terms in the following sense: if the evaluation of a term
succeeds (i.e., terminates with a value) in the DTI-based semantics, then there
is a fully instantiated version of the term that also succeeds in the
explicitly typed blame calculus and vice versa.
  Finally, we prove the gradual guarantee, which is an important correctness
criterion of a gradually typed language, for the ITGL.

Programming Languages;Logic in Computer Science