Oracle Queries #
This file defines OracleQuery, the single-query functor induced by an OracleSpec.
Functor to represent queries to oracles specified by an OracleSpec ι,
defined to be the object type of the corresponding PFunctor.
In particular an element of OracleQuery spec α consists of an input value t : spec.Domain,
and a continuation f : spec.Range t → α specifying what to do with the result.
See OracleQuery.query for the case when the continuation f just returns the query result.
Instances For
Instances For
OracleQuery spec inherets the functorial structure from PFunctor.Obj.
The oracle input used in an oracle query.
Instances For
The continutation used for the result of an oracle query.
Instances For
Two oracles queries are equal if they query for the same input and run extensionally equal continuation on the results of the query.
Version of OracleQuery.ext that avoids using HEq when the inputs are the same.
If an oracle exists and the output type is non-empty then the type of queries is non-empty.
If there are no oracles available then the type of queries is empty.
If there is a at most one oracle and output, then ther is at most one query.
Query an oracle on in input t to get a result in the corresponding range t.
Note: could consider putting this in the OracleQuery monad, type inference struggles tho.