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.
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 typeO
, 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.System#invoke