Theory Smolka
theory Smolka
imports Main
begin
section ‹Human-authored proof formalization›
text ‹
Formalization of the correctness proof of the Smolka-Blanchette algorithm
for minimal type annotation of terms.
The algorithm takes a Church-typed term and removes type annotations while
preserving unique type-reconstruction, achieving both completeness (unique
well-typed completion) and local minimality (removing any further annotation
breaks uniqueness).
›
subsection ‹Types›
text ‹
Corresponds to Subsection 1.1 of the paper.
We fix an infinite set of type variables and define types as:
$\sigma ::= \alpha | \sigma \Rightarrow \tau | (\sigma_1, ..., \sigma_n) \kappa$
We represent this as a datatype with \<^term>‹Arrow› as a distinguished binary constructor
and \<^term>‹TyCon› for n-ary type constructors.
›