Packages

  • package root
    Definition Classes
    root
  • package de
    Definition Classes
    root
  • package unruh
    Definition Classes
    de
  • package isabelle

    This library allows to control an Isabelle process from a Scala application.

    This library allows to control an Isabelle process from a Scala application. For first steps and pointers, see the README.

    In case of missing/incorrect documentation, create an issue.

    Definition Classes
    unruh
  • package mlvalue

    This package contains classes for type safe manipulation of values stored in a running Isabelle process (managed by an instance of control.Isabelle).

    This package contains classes for type safe manipulation of values stored in a running Isabelle process (managed by an instance of control.Isabelle). See MLValue for an introduction.

    Definition Classes
    isabelle
  • abstract class AdHocConverter extends OperationCollection

    This class allows to add support for Isabelle ML types in Scala in a quick ad-hoc way.

    This class allows to add support for Isabelle ML types in Scala in a quick ad-hoc way.

    Let something be an ML type. To support values of ML type type in Scala, write

    object Something extends AdHocConverter("something")

    (Here Something is an arbitrary identifier that should preferably remind of the ML type something.) Then ML values of type something stored in the Isabelle process can be used in Scala as objects of type Something.T. That is, an Something.T is a thin wrapper around an MLValue that references values of type something. The actual ML value is never transferred from Isabelle.

    An MLValueConverter is automatically available for type Something.T, thus, e.g., MLValue.apply and MLValue.retrieveNow and related functions work properly to translate between Something.T and MLValue[Something.T].

    Note: This is only intended for local use. That is, if some Scala code needs to handle ML values for which there is no proper support, and that just need to be passed around between different ML functions, then it is possible to use this class for supporting them with minimal boilerplate. However, if the Scala types representing the ML values are supposed to be used on a larger scale or exported from a library, or are supposed to be extended, then it is recommended to use a more flexible mechanism such as MLValueWrapper for creating wrapper classes for ML values.

    Note: object ... extends AdHocConverter(...) creates a new exception type in ML when it is created. Thus this declaration should only be used in a static context (toplevel/inside an object) or in classes that are instantiated very rarely (or in OperationCollection.Ops in a static object).

    Usage example: Say we want to use the ML function Simplifier.pretty_simpset: bool -> Proof.context -> Pretty.T. This function returns a Pretty.T which is not (currently) directly supported by this library. But we simply want to pass it on to Pretty.unformatted_string_of: Pretty.T -> string. So we can declare

    object Pretty extends AdHocConverter("Pretty.T")
    val pretty_simpset = MLValue.compileFunction[Boolean, Context, Pretty.T]("Simplifier.pretty_simpset")
    val unformatted_string_of = MLValue.compileFunction[Pretty.T, String]("Pretty.unformatted_string_of")

    and then pretty print the simpset of a context ctxt by

    val string : String = unformatted_string_of(pretty_simpset(false, ctxt).retrieveNow).retrieveNow

    (Or without the first .retrieveNow.)

    Definition Classes
    mlvalue
  • Ops
  • T
  • converter

implicit object converter extends Converter[T]

MLValueConverter for T. This MLValueConverter does not need to be explicitly imported to be available for implicit instances of MLValueConverter[T] because it is in the "implicit scope" of T (cf. the Scala spec).

Source
AdHocConverter.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. converter
  2. Converter
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def exnToValue(implicit isabelle: Isabelle, ec: ExecutionContext): String

    Returns ML code for an (anonymous) function of type exn -> a that converts a value encoded as an exception back into the original value.

    Returns ML code for an (anonymous) function of type exn -> a that converts a value encoded as an exception back into the original value.

    It is recommended that this function produces informative match failures in case of invalid inputs. MLValue.matchFailExn is a helper function that facilitates this.

    This function should always return the same value, at least for the same isabelle.

    Definition Classes
    converterConverter
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def mlType(implicit isabelle: Isabelle, ec: ExecutionContext): String

    Returns the ML type corresponding to A.

    Returns the ML type corresponding to A.

    This function should always return the same value, at least for the same isabelle.

    Definition Classes
    converterConverter
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  16. def retrieve(value: MLValue[T])(implicit isabelle: Isabelle, ec: ExecutionContext): Future[T]

    Given an mlvalue.MLValue value, retrieves and returns the value referenced by value in the Isabelle object store.

    Given an mlvalue.MLValue value, retrieves and returns the value referenced by value in the Isabelle object store.

    Must not invoke value.retrieve or value.retrieveNow because those functions invoke this.retrieve. (But calling retrieve or retrieveNow on other MLValues is allowed as long as no cyclic dependencies are created.)

    Definition Classes
    converterConverter
  17. def store(value: T)(implicit isabelle: Isabelle, ec: ExecutionContext): MLValue[T]

    Given a value : A, transfers and stores value in the Isabelle object store and returns an mlvalue.MLValue referencing the value in the object store.

    Given a value : A, transfers and stores value in the Isabelle object store and returns an mlvalue.MLValue referencing the value in the object store.

    Must not invoke MLValue(value) because that functions invokes this.store. (But calling MLValue(...) on other values is allowed as long as no cyclic dependencies are created.)

    Definition Classes
    converterConverter
  18. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  19. def toString(): String
    Definition Classes
    AnyRef → Any
  20. def valueToExn(implicit isabelle: Isabelle, ec: ExecutionContext): String

    Returns ML code for an (anonymous) function of type a -> exn that converts a value into its encoding as an exception.

    Returns ML code for an (anonymous) function of type a -> exn that converts a value into its encoding as an exception.

    It is recommended that this function produces informative match failures in case of invalid inputs. MLValue.matchFailExn is a helper function that facilitates this.

    This function should always return the same value, at least for the same isabelle.

    Definition Classes
    converterConverter
  21. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  22. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  23. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from Converter[T]

Inherited from AnyRef

Inherited from Any

Ungrouped