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.
Since any environment can define its
own XML types, instances of
this class need to be able to work with those abstractly. For this, any
environment provides constructors and destructors. See encode
and
decode
for their respective descriptions.
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. This only has to hold for one environment,
but not necessarily across environments.
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.
Error case of XMLResult as an exception.
When decoding an XML tree sent from the prover fails, this exception is fed into the corresponding observer.
A managed set of known implementations of
Environment
.
A managed set of known implementations of
Environment
.
An empty instance can be obtained via Implementations.empty
.
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.
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.
edu.tum.cs.isabelle.setup.Setup
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.
This object was generated by sbt-buildinfo.
Combinators for codecs.
Combinators for creating operations and basic operations.
Functions to build and create systems.