A type class representing the ability to convert a type to and from an XML representation.
A type class representing the ability to convert a type to and from an XML representation.
For combinators to create codecs, refer to the companion object.
Contract
Instances of this class must satisfy the following contract:
Decoding any value produced via encode
must succeed,
yielding the original value. The mlType
field must contain a string
representation of the corresponding type in Isabelle/ML.
For the opposite direction, it is generally expected that a value which
cannot be produced via encode
should not decode cleanly. This is
generally achieved by adding tags to the trees. For example, if the
codec for type Foo
for a given value would produce an XML document t
before tagging, the XML document after tagging would be
<tag name="foo">t</tag>
. The tagged
method transforms a raw codec
into a tagged codec. Nested tags are allowed (for example, when chaining
multiple calls of tagged
), but produce additional overhead in the
resulting XML documents.
Error case of XMLResult as an exception.
An iteratee-like structure consuming
XML trees and eventually producing an
output of type T
, or an error.
An iteratee-like structure consuming
XML trees and eventually producing an
output of type T
, or an error.
On a high level, this can be imagined like a function taking a list of
trees as an argument. In most cases, user code does not care about the
intermediate results. For that, combinators exist in the
companion object and
Operation
.
A Platform
with known archive location.
Description of an atomic interaction with the prover.
Description of an atomic interaction with the prover.
An operation can be roughly seen as a remote procedure call: a method name,
an input argument of type I
and an output value of type O
, potentially
accompanied by a stream of auxiliary data. (For almost all use cases, the
latter is irrelevant.)
Data is transferred between JVM and the prover using XML trees. To convert between typed data and their XML representation, codecs may be used.
In the most general case, an operation listens for a stream of output from the prover using an observer, comparable to iteratees.
Operations can most easily be constructed with the
implicitly
combinator. That combinator will only
wait for final results and ignore intermediate data.
The underlying operating system platform with knowlege of a local storage path.
The underlying operating system platform with knowlege of a local storage path.
It is recommended to obtain instances via the companion object.
Result from the prover.
Result from the prover.
In the error case, a special
ProverException
will be
provided.
A running instance of a prover.
A running instance of a prover.
This class is thread-safe, that is, running multiple operations at the same time is expected and safe.
The result type for decoding values from XML trees.
The result type for decoding values from XML trees. Failure values should contain an error message and a list of erroneous trees.
Combinators for codecs.
Cases of observers and combinators.
Combinators for creating operations and basic operations.
Detection of the machine's platform.
Functions to build and create systems.
Minimal API for managing some Isabelle version.
Minimal API for managing some Isabelle version. It is centered around the notion of an environment, which captures the base functionality of an Isabelle process, e.g. starting and stopping an instance. API clients should go through the higher-level setup and system interfaces.
Collection of standard types for communication with Isabelle.
Tools for setting up an Isabelle installation and managing Isabelle sources and environments at runtime.
Tools for setting up an Isabelle installation and managing Isabelle sources and environments at runtime. Most functions in this package have some effect on the local file system and may download content from the Internet.