object Isabelle
- Source
- Isabelle.scala
- Alphabetic
- By Inheritance
- Isabelle
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- final case class DInt(int: Long) extends Data with Product with Serializable
- final case class DList(list: Data*) extends Data with Product with Serializable
- final case class DObject(id: ID) extends Data with Product with Serializable
- final case class DString(string: String) extends Data with Product with Serializable
- sealed trait Data extends AnyRef
An algebraic datatype that allows to encode trees of data containing integers (DInt), strings (DString), and IDs of objects (DObject) in the object store of the Isabelle process.
An algebraic datatype that allows to encode trees of data containing integers (DInt), strings (DString), and IDs of objects (DObject) in the object store of the Isabelle process. A constructor DList is used to create a tree structure.
No particular semantics is given to these trees, their purpose is to be a sufficiently flexible datatype to be able to encode arbitrary data types for transfer.
A corresponding datatype is defined in the
Control_Isabelle
ML structure in the Isabelle process:datatype data = DString of string | DInt of int | DList of data list | DObject of exn
Note that while DObject on the Scala side contains an ID of an object, on the ML side we instead directly have the object that is references (of type
exn
). Serialization and deserialization creates and dereferences object IDs as needed.The data that can be stored in these trees is subject to the following additional limitations:
- Strings must be ASCII (non-ASCII characters will be replaced by default characters).
- Integers must be 64bit signed integers (this is enforced in Scala due to the size of the type Long but ML integers have no size limit (like BigInt)). Larger integers will be truncated to 64 bits.
- Strings must be at most 67.108.856 characters long (
String.maxSize
in ML). Otherwise there an exception is raised in the Isabelle process
- See also
applyFunction for details how to use this type to transfer data
- final class ID extends AnyRef
An ID referencing an object in the object store (see the description of Isabelle).
An ID referencing an object in the object store (see the description of Isabelle). If this ID is not referenced any more, the referenced object will be garbage collected in the Isabelle process, too.
- case class Setup(isabelleHome: Path, logic: String = "HOL", userDir: Option[Path] = None, workingDirectory: Path = Paths.get(""), sessionRoots: Seq[Path] = Nil, build: Boolean = true, isabelleCommandHandler: (Data) => Unit = Isabelle.defaultCommandHandler) extends SetupGeneral with Product with Serializable
Configuration for initializing an Isabelle instance.
Configuration for initializing an Isabelle instance.
(The fields of this class are documents in the source code. I am not sure why they do not occur in the generated API doc.)
- isabelleHome
Path to the Isabelle distribution
- logic
Heap image to load in Isabelle (e.g.,
HOL
,HOL-Analysis
, etc.)- userDir
User configuration directory for Isabelle. Must end in
/.isabelle
if provided. None (default) means to let Isabelle chose the default location. Here Isabelle stores user configuration and heap images (unless the location of the heap images is configured differently, see the Isabelle system manual)- workingDirectory
Working directory in which the Isabelle process should run. (Default: working directory of the Scala process.) All other paths described below are interpreted relative to
workingDirectory
(unless they are absolute).- sessionRoots
Additional session directories in which Isabelle will search for sessions (must contain
ROOT
files and optionallyROOTS
files, see the Isabelle system manual). Default: no additional session directories- build
Whether to build the Isabelle heap before running Isabelle. If false, the heap will never be built. (This means changes in the Isabelle theories will not be reflected. And if the heap was never built, the Isabelle process fails.) If true, the Isabelle build command will be invoked. That command automatically checks for changed dependencies but may add a noticable delay even if the heap was already built.
- isabelleCommandHandler
- sealed trait SetupGeneral extends AnyRef
Parent trait for different kinds of configuration for Isabelle.
- case class SetupRunning(inputPipe: Path, outputPipe: Path, isabelleCommandHandler: (Data) => Unit = Isabelle.defaultCommandHandler) extends SetupGeneral with Product with Serializable
Configuration for connecting to an already running Isabelle process.
Configuration for connecting to an already running Isabelle process. The Isabelle process must load
control_isabelle.ml
(available as a resource in this package) and invokeControl_Isabelle.handleLines ()
.Before loading
control_isabelle.ml
, the valuesCOMMUNICATION_STREAMS
andSECRETS
need to be initialized in ML.SECRETS
needs to be initialized with the secrets use in the communication with the Isabelle process. These values are currently chosen by the Isabelle class itself, making it currently impossible to use SetupRunning.- inputPipe
the path of a named pipe for the protocol messages sent to the Isabelle process (corresponding to first component of COMMUNICATION_STREAMS)
- outputPipe
the path of a named pipe for the protocol messages sent by the Isabelle process (corresponding to second component of COMMUNICATION_STREAMS)
- isabelleCommandHandler
- Annotations
- @Experimental()
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def buildSession(setup: Setup): Unit
Runs the Isabelle build process to build the session heap image
setup.logic
Runs the Isabelle build process to build the session heap image
setup.logic
This is done automatically by the constructors of Isabelle unless
build=false
.- setup
Configuration of Isabelle.
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def defaultCommandHandler(data: Data): Unit
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def jedit(setup: Setup, files: Seq[Path]): Unit
Starts Isabelle/jEdit (interactive editing of theories) with the given Isabelle configuration.
Starts Isabelle/jEdit (interactive editing of theories) with the given Isabelle configuration.
- setup
Isabelle configuration
- files
Files to open in jEdit
- Exceptions thrown
IsabelleJEditException
if jEdit fails (returns return code ≠0)
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])