Icebergs for everyone

Synopsis

Titan is a development for optimisable incremental search and enumeration. In Titan, programs produce enumerations of solutions to queries by matching over enumerations of solutions to other queries. For this, Titan defines:

  1. A reference language in which to express these rules;
  2. A standard library by which to facilitate development; and
  3. Implementation constraints to provide performance guarantees.

Reference Language

Titan's reference language is extremely simple: it is just a preorder traversal of trees representing terms. The caveat is that Titan also allows partial application (per the requirement of incremental search), so parentheses are required if a function must be partially applied.

Standard Library

Titan's standard library is divided into three major parts: Environment, Language, and Algorithms. All definitions in the standard library are abstract data types. Only the Language part is mandatory, and the two other parts can be defined in terms of it.

Environment

The Environment part contains data types for interfacing with other systems.

Language

The Language part contains the abstract data types of the core constructs of the language.

Algorithms

The Algorithms part contains the abstract data types for complex operations on the core constructs of the language.