-
Notifications
You must be signed in to change notification settings - Fork 1
clf/llf
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
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
- the LLF linear logical framework, including type reconstruction
- the LLF constraint linear logic programming language
======================================================================
Files:
NOTES --- remarks and todo list, most recent notes are at the top
README --- this file, including some instructions for compilation
TAGS --- tags file, for use in Emacs
TEST/ --- test files, try use "TEST/all.sml";
sources.cm --- enables CM.make ();
load.sml --- enables use "load.sml"; (* especially for MLWorks *)
bin/ --- utility scripts
java/ --- postprocessing Java modules
======================================================================
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)
MLWorks [commercial, "personal version" free]
http://www.harlequin.com/products/ads/ml/
--------------------
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 <example>
use "examples/<example>/config.sml"; (* define configuration *)
To load files and start top-level for queries (note that you have to
replace `-' (dash) by `_' (underscore) in the name of the <example> in
order to conform to the lexical conventions of ML).
LLF.readConfig <example>
LLF.top ();
To compile files and read queries (see below for format)
LLF.compileConfig <example>
LLF.readFile "examples/<example>/examples.quy";
--------------------------------------------------
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 <expected> <try> A.
where <expected> is the expected number of answers or * (for infinity),
and <try> is the bound on the number of tries or * (for infinity),
and A is the goal type.
Formats M : A or c = M : A are currently not supported for queries.
--------------------
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 '...' *)
Formatter.Indent := 3; (* number of spaces for indentation level *)
Formatter.PageWidth := 80; (* default page width for formatting *)
(* see formatter/formatter.sig for more *)
--------------------
Timing:
Timers.show (); (* show internal timers and reset *)
Timers.reset (); (* reset internal timers *)
Timers.check (); (* check internal timers, but do not reset *)
Currently, the timing information for the solver includes the time taken
by the success continuation. This is non-trivial if the success
continuation prints the answer substitution, but negligible otherwise.
--------------------
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
possibly using -tty option.
--------------------
Create TAGS file with
bin/tag-twelf
--------------------
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 *)
OS.FileSys.chDir "directory";
OS.FileSys.getDir ();
--------------------
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 the last expression, hit the "Profile" button in the interactive
system. Also, don't forget to set Preferences>Compilers> so that
profiling is enabled BEFORE using "load.sml";
--------------------
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 ();
About
Original LLF implementation (typechecher + operational semantics) from 1997
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published