15-816 Linear Logic
/afs/cs/project/twelf/misc/ltwelf/bin/. They run only if you have the
bindirectoy of SML in your local path. To start linear Twelf type
/afs/cs/project/twelf/misc/ltwelf/bin/ltwelf. If you need linear Twelf to be compiled for a different architecture just let me know.
As a standard, a configuration is defined by a SML file
which should reside in the directory
where the actual code is. For the example of Mini-ML with references,
it looks like
val MLR = FrontEnd.defineConfig [ "syntax.llf", "typing.llf", "eval.llf" ];The files
eval.llfare the signatures files, as shown in class.
Loading the config file defines a configuration
which you can now easily load with
To start the interpreter type
FrontEnd.top ();and the system prompt
?-asks you for your query. If you type in
tpe (letval (ref (s (s z))) ([g] letval (ref z) ([r] (fix ([twice] case (! g) noop ([y] (g is y ; r is (s (s (! r))) ; twice)))) ; (! r)))) X.you should get the answer
Solving... X = nat. %P = tpe_letval ([x:exp] [Te1:tpe x (nat tref)] tpe_letval ([x1:exp] [Te2:tpe x1 (nat tref)] tpe_seq (tpe_deref Te2) (tpe_fix ([x2:exp] [Te3:tpe x2 cmd] tpe_case ([x3:exp] [Te4:tpe x3 nat] tpe_seq Te3 (tpe_seq (tpe_assign (tpe_s (tpe_s (tpe_deref Te2))) Te2) (tpe_assign Te4 Te1))) tpe_noop (tpe_deref Te1)))) (tpe_ref tpe_z)) (tpe_ref (tpe_s (tpe_s tpe_z))). More?where
X = natstates that the logic variable
Xhas been instantiated by
nat, and it also returns the proof term (always written as
%P = ...).