Snowlake Documentation

Snowlake is both a declarative language of regular rules of inference and propositional logic for defining static type inference rules of programming languages, as well as a compiler-compiler that can synthesize such inference rule definitions into code used for static type checking, typically used for semantic analysis in language compilers.

The goals of Snowlake are to:

  • Provide a flexible declarative language that is able to define the static type inference rules of most programming languages.
  • Facilitate language developers in defining, documenting and sharing the set of type inference rules of any particular language.
  • Alleviate the burden on language developers from implementing type checking logic that are usually extremely complex, tedious and error-prone.

Indices and tables