The current implementation does not yet completely implement the Mercury language. The main limitations of the current implementation are the following: * We do not allow definite aliasing in the mode system. Without this, partially instantiated modes are unusable, and so are nested unique modes :-( * The compiler does not yet use structure reuse or compile-time garbage collection to exploit unique modes :-( * Type inference and mode inference are a bit imperfect. We are working on eliminating all of these problems. In addition, design decisions in this implementation have imposed the following fixed limits: * Predicates and functions can have at most about 1000 arguments. * Higher order terms are limited to arity of about 500. These limits can be lifted (with some effort), but would possibly incur performance penalties. Contact the Mercury team (mercury@cs.mu.oz.au) if you find these limits are affecting your application.