abstract
class
Operation[-I, +O] extends AnyRef
Instance Constructors
-
new
Operation(name: String)
Abstract Value Members
-
abstract
def
prepare(i: I): (Tree, Observer[O])
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
-
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
def
map[J, P](f: (J) ⇒ I, g: (O) ⇒ P): Operation[J, P]
-
val
name: String
-
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
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