Llf is a project mainly written in ..., it's free.
Original LLF implementation (typechecher + operational semantics) from 1997
LLF Copyright (C) 1997, 1998, Iliano Cervesato, Frank Pfenning, and Carsten Schuermann
Authors: Frank Pfenning Iliano Cervesato Carsten Schuermann Jeff Polakow
LLF is an implementation of
Standard ML, Revision of 1997:
If it is not installed already, please check
SML of New Jersey [free] http://cm.bell-labs.com/cm/cs/what/smlnj/index.html (version 110 or higher)
Loading LLF:
Connect to LLF root directory Start SML/NJ 110 or MLWorks
CM.make (); ( in SML/NJ 110, sml-cm )
OR
use "load.sml"; ( in SML/NJ 110, sml or MLWorks )
To define configuration
use "examples/
To load files and start top-level for queries (note that you have to
replace -' (dash) by
_' (underscore) in the name of the
LLF.readConfig
To compile files and read queries (see below for format)
Current Examples (see examples/README for information) ccc church-rosser compile cut-elim lp lp-horn (meta-theory only) mini-ml polylam prop-calc units
Query Format for Files:
%query
where
Flags (with defaults):
Global.chatter := 3; ( chatter levels: 0 = nothing, 1 = files, 2 = number of query solutions, 3 = entries in external form, 4 = entries in internal form, 5 = debugging I, 6 = debugging II ) TpRecon.doubleCheck := false; ( re-check entries after reconstruction )
( for external format printing ) EPrint.printDepth := NONE; ( SOME(d): replace level n expressions by '%%' ) EPrint.printLength := NONE; ( SOME(l): replace lists longer than l by '...' )
( for internal format printing ) IPrint.printDepth := NONE; ( SOME(d): replace level n expressions by '%%' ) IPrint.printLength := NONE; ( SOME(l): replace lists longer than l by '...' )
Timing:
Timers.show (); ( show internal timers and reset )
Timers.reset (); ( reset internal timers ) Timers.check (); ( check internal timers, but do not reset )
Generate the file load.sml for MLWorks or SML w/o the Compilation Manager with
CM.mkusefile "load.sml"; ( for core and meta-prover ) CM.mkusefile' ("meta.cm", "load-meta.sml"); ( for core ) CM.mkusefile' ("core.cm", "load-core.sml"); ( for meta-prover )
Make sure the current working directory is the root file of the implementation.
To run MLWorks, use Andrew SparcStation (telnet sun4.andrew) and invoke
/afs/andrew/scs/cs/mlworks/ultra/bin/mlworks-basis
Create TAGS file with
In SMLofNJ:
SMLofNJ.Internals.GC.messages
Compiler.Control.Print.printDepth := 100; ( default: 5 ) Compiler.Control.Print.printLength := 80; ( default: 12 ) Compiler.Control.Print.signatures := 1; ( default: 2 ) Compiler.Control.Print.linewidth := 79; Compiler.Control.Print.stringDepth := 200; ( default: 70 )
Profiling (under MLWorks):
In each examples directory there is a file config.sml, defining a configuration with the name of the example (where hyphens are replaced by underscore). Typical session:
use "examples/church-rosser/config.sml"; LLF.readConfig church_rosser;
For "release":
( Compiler.Control.indexing := true; ) ( doesn't work right now )
bin/clean bin/clean-cm bin/tag-twelf cd .. tar -cvf llf.tar llf gzip llf.tar
Installation:
gunzip llf.tar.gz tar -xvf llf.tar cd llf sml-cm ( requires version 110! ) CM.make ();