Output Distribution of Computations #
This file defines HasEvalDist and related instances for OracleComp.
def
OracleComp.supportWhen
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
(o : QueryImpl spec Set)
(mx : OracleComp spec α)
:
Set α
The possible outputs of mx when queries can output values in the specified sets.
NOTE: currently proofs using this should reduce to simulateQ. A full API would be better
Equations
Instances For
The support instance for OracleComp, defined as
Equations
theorem
OracleComp.support_eq_simulateQ
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
(mx : OracleComp spec α)
:
@[simp]
theorem
OracleComp.support_liftM
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
(q : OracleQuery spec α)
:
theorem
OracleComp.mem_support_liftM_iff
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
(q : OracleQuery spec α)
(u : α)
:
theorem
OracleComp.mem_support_query
{ι : Type u_1}
{spec : OracleSpec ι}
(t : spec.Domain)
(u : spec.Range t)
:
Alias of OracleComp.support_query.
instance
OracleComp.instHasEvalFinset
{ι : Type u_1}
{spec : OracleSpec ι}
[spec.Fintype]
:
HasEvalFinset (OracleComp spec)
Finite version of support for when oracles have a finite set of possible outputs.
NOTE: we can't use simulateQ because Finset lacks a Monad instance.
Equations
@[simp]
theorem
OracleComp.finSupport_liftM
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
[spec.Fintype]
[DecidableEq α]
(q : OracleQuery spec α)
:
theorem
OracleComp.finSupport_query
{ι : Type u_1}
{spec : OracleSpec ι}
[spec.Fintype]
[spec.DecidableEq]
(t : spec.Domain)
:
theorem
OracleComp.mem_finSupport_liftM_iff
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
[spec.Fintype]
[DecidableEq α]
(q : OracleQuery spec α)
(x : α)
:
theorem
OracleComp.mem_finSupport_query
{ι : Type u_1}
{spec : OracleSpec ι}
[spec.Fintype]
[spec.DecidableEq]
(t : spec.Domain)
(u : spec.Range t)
:
noncomputable def
OracleComp.evalDistWhen
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
(d : QueryImpl spec SPMF)
(mx : OracleComp spec α)
:
SPMF α
The output distribution of mx when queries follow the specified distribution.
NOTE: currently proofs using this should reduce to simulateQ. A full API would be better
Equations
Instances For
noncomputable instance
OracleComp.instHasEvalPMF
{ι : Type u_1}
{spec : OracleSpec ι}
[spec.Fintype]
[spec.Inhabited]
:
HasEvalPMF (OracleComp spec)
Embed OracleComp into SPMF by mapping queries to uniform distributions over their range.
Equations
theorem
OracleComp.evalDist_eq_simulateQ
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
[spec.Fintype]
[spec.Inhabited]
(mx : OracleComp spec α)
:
@[simp]
theorem
OracleComp.evalDist_liftM
{ι : Type u_1}
{spec : OracleSpec ι}
{α : Type w}
[spec.Fintype]
[spec.Inhabited]
(q : OracleQuery spec α)
:
@[simp]
theorem
OracleComp.evalDist_query
{ι : Type u_1}
{spec : OracleSpec ι}
[spec.Fintype]
[spec.Inhabited]
(t : spec.Domain)
: