The source code of this package compiles a program called mini, a
type inference engine for the Mini language. 
A basic usage of mini is to provide a source file as input. Let's 
foo.ml be this file:
let id x = x
# mini foo.ml
returns
val id: forall a. a -> a
The documentation of the module MiniAst explains the concrete 
syntax of the Mini language. The "tests" directory contains examples of
valid Mini programs.
| UnionFind | 
This module implements a simple and efficient union/find algorithm.
 
 | 
| BasicSetEquations | 
This module provides a solver for equations involving set constants,
   variables, and disjoint sums (i.e.
 
 | 
| CoreAlgebra | 
This module implements a core algebra of first order terms.
 
 | 
| MultiEquation | 
This module implements a data structure for multi-equations.
 
 | 
| Constraint | 
This module manages a data structure for constraint in a multi-equation
    framework.
 
 | 
| Unifier | 
This module implements unification of (ranked) multi-equations
    over a row algebra, that is, an algebra obtained by extending a
    free algebra  
A with rows (see module CoreAlgebra).
 | 
| Solver | 
This module provides a constraint solver based on unification
    under a mixed prefix.
 
 | 
This module provides a simple pretty-printer for the terms
    maintained by a unifier.
 
 | 
| MiniSyntacticAnalysis | 
This module provides a parser for program and a parser for constraint.
 
 | 
| MiniAst | 
The abstract syntax of MiniML programs.
 
 | 
| MiniAlgebra | 
This module provides the type algebra for the Mini language.
 
 | 
| MiniTypingExceptions | 
This modules declares the exceptions raised by the type inference engine.
 
 | 
| MiniInfer | 
This module expresses the problem of type inference for MiniML 
    programs to the problem of constraint solving by a transformation
    of program into typing constraints.
 
 | 
| MiniSolver | 
This module provides a constraint solver based on unification
    under a mixed prefix.
 
 | 
| AstPositions | 
This module provides shortcuts for AST position handling.
 
 | 
| MiniPrettyPrinter | 
This modules instanciates  
PrettyPrinter for the Mini language.
 | 
| Misc | 
This module contains miscellaneous utilities.
 
 | 
| Processing | 
A simple task manager.
 
 | 
| Errors | handle f runs f and exits with exit status 0.
 | 
| Positions | 
Extension of standard library's positions.
 
 | 
| PrettyPrinter | 
This module provides a common formatting interface to 
    pretty-print in LaTeX, raw text or module Format mode.
 
 | 
| InfiniteArray | 
This module implements infinite arrays.
 
 | 
| Mark | 
This module implements a very simple notion of ``mark''.
 
 | 
| IntRank | 
This module describes an ordered type  
t equipped with a
    distinguished constant none.
 | 
Decompress the distributed package. In the newly created folder, do:
# ./configure
This should check if you have the necessary tools to compile mini.
Then, you just have to launch the compilation using:
# make
To generate this documentation, type the following command:
# make doc
Do not hesitate to contact us if the compilation process fails.
By default, mini processes the following tasks:
The following tasks are optional:
The options of mini enable the use of these optional tasks:
usage: ./mini [options] filename --start taskname Task to begin with --end taskname Task to end with --trace-all Trace --do taskname Do a task --trace-solve-constraint Trace solve-constraint --trace-print-program Trace print-program --trace-generate-constraint Trace generate-constraint --trace-print-constraint Trace print-constraint --trace-parse-program Trace parse-program --trace-print-env Trace print-env --trace-parse-constraint Trace parse-constraint -help Display this list of options --help Display this list of options