NEWS: Isabelle_System.ML_process vs. "isabelle ML_process"

Makarius makarius at sketis.net
Wed Nov 19 21:59:39 CET 2025


*** ML ***

* Isabelle_System.ML_process and ML_Process.args allow to run an
external ML process directly via the current Isabelle/Scala context,
without running another bulky Java process of "isabelle ML_process" on
the command-line.


*** System ***

* The former command-line tool "isabelle process" has been renamed to
"isabelle ML_process", with new options -C DIR and -r (redirect). The
old option option -T to load individual theories via the Isabelle/ML
"use_thy" function has been removed. It is still possible to use
"Thy_Info.use_thy_legacy" together with "isabelle ML_process -e ...",
but that low-level entry to the theory loader will be removed at a later
stage. The proper way to process individual theories under program
control is via "isabelle process_theories". INCOMPATIBILITY.


This refers to Isabelle/baf75b1bf14a.

It is a clarification of ancient terminology and concepts. Many decades ago, 
an "Isabelle process" was indeed the Poly/ML runtime system with our modest 
Pure/ROOT.ML or HOL/ROOT.ML pre-loaded. In the past 10 years, the "Isabelle 
system process" has become a Java Virtual Machine running the bulky 
isabelle.jar (11 MiB of JVM byte code). That Isabelle system process can start 
any number of Isabelle/ML processes, using operations from the Scala modules 
isabelle.ML_Process and isabelle.Bash. Isabelle/ML programs can now directly 
invoke that as well, e.g. to run a generated SML program via Isabelle/HOL codegen.

So ML-to-ML_process now goes via the already running Scala process, and not 
ML-to-Bash.Server-to-java_process-to-ML_process.

To see the wiring, it might help to use the Prover IDE:

    isabelle jedit -l Pure ~/Scratch.thy src/Pure/ROOT.ML

and then explore this source snippet via C-hover-click:

theory Scratch
   imports Pure
begin

ML ‹
   Isabelle_System.ML_process;
   \<^scala_function>‹ML_process›;
›

end


We don't have a proper Isabelle/Scala IDE yet: One happy day it will be part 
of the regular Isabelle/PIDE setup -- not the somewhat lacking IntelliJ IDEA 
Scala plugin.


	Makarius



More information about the isabelle-dev mailing list