Determinism analysis in the Mercury compiler


Fergus Henderson
Department of Computer Science, The University of Melbourne, Parkville 3052, Australia.
fjh@cs.mu.oz.au

Zoltan Somogyi
Department of Computer Science, The University of Melbourne, Parkville 3052, Australia.
zs@cs.mu.oz.au

Thomas Conway
Department of Computer Science, The University of Melbourne, Parkville 3052, Australia.
conway@cs.mu.oz.au


Abstract

Mercury is a new purely declarative logic programming language. The Mercury determinism system allows programmers to specify which predicates never fail and which predicates succeed at most once. This information allows the compiler to check the program for errors, pinpointing predicates that do not satisfy their declarations. This makes programmers significantly more productive and enhances the reliability of their programs. The Mercury compiler also uses determinism information to generate much faster code than any other logic programming system. This paper presents the algorithms used by the Mercury compiler to infer determinism information and to detect determinism errors.


Conference Home Page