Documentation

VCVio.OracleComp.ReachableWhen

Reachability with restricted oracle answers #

reachableWhen interprets an oracle program using a specified set of possible answers for each query. The public equations describe pure, query, bind, and monotone enlargement of answer sets.

def OracleComp.reachableWhen {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (mx : OracleComp spec α) :
Set α

Outputs reachable when a query may return any response selected by o.

Instances For
    @[simp]
    theorem OracleComp.reachableWhen_pure {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (x : α) :
    @[simp]
    theorem OracleComp.reachableWhen_liftM {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (q : OracleQuery spec α) :
    theorem OracleComp.reachableWhen_query {ι : Type u} {spec : OracleSpec ι} (o : QueryImpl spec Set) (t : spec.Domain) :
    @[simp]
    theorem OracleComp.reachableWhen_bind {ι : Type u} {spec : OracleSpec ι} {α β : Type v} (o : QueryImpl spec Set) (oa : OracleComp spec α) (ob : αOracleComp spec β) :
    reachableWhen o (oa >>= ob) = xreachableWhen o oa, reachableWhen o (ob x)
    theorem OracleComp.reachableWhen_query_bind {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (t : spec.Domain) (next : spec.Range tOracleComp spec α) :
    reachableWhen o (liftM (OracleSpec.query t) >>= next) = directiono t, reachableWhen o (next direction)
    theorem OracleComp.reachableWhen_mono {ι : Type u} {spec : OracleSpec ι} {α : Type v} {o₁ o₂ : QueryImpl spec Set} (h : ∀ (q : spec.Domain), o₁ qo₂ q) (oa : OracleComp spec α) :
    reachableWhen o₁ oareachableWhen o₂ oa
    theorem OracleComp.reachableWhen_univ_eq_support {ι : Type u} {spec : OracleSpec ι} {α : Type v} (oa : OracleComp spec α) :
    reachableWhen (fun (x : spec.Domain) => Set.univ) oa = support oa

    Admitting every typed response recovers the free tree's attachment support.

    @[deprecated "VCVio retiring support API: use reachableWhen" (since := "2026-09-14")]
    def OracleComp.supportWhen {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (mx : OracleComp spec α) :
    Set α

    The SetM interpretation of possible outputs under a query-response assignment.

    Instances For
      @[simp, deprecated "VCVio retiring support API: use reachableWhen_pure" (since := "2026-09-14")]
      theorem OracleComp.supportWhen_pure {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (x : α) :
      @[deprecated "VCVio retiring support API: use reachableWhen_query_bind" (since := "2026-09-14")]
      theorem OracleComp.supportWhen_query_bind {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (q : spec.Domain) (oa : spec.Range qOracleComp spec α) :
      supportWhen o (liftM (OracleSpec.query q) >>= oa) = xo q, supportWhen o (oa x)
      @[simp, deprecated "VCVio retiring support API: use reachableWhen_bind" (since := "2026-09-14")]
      theorem OracleComp.supportWhen_bind {ι : Type u} {spec : OracleSpec ι} {α β : Type v} (o : QueryImpl spec Set) (oa : OracleComp spec α) (ob : αOracleComp spec β) :
      supportWhen o (oa >>= ob) = xsupportWhen o oa, supportWhen o (ob x)

      Reachable outputs of a bind are the reachable outputs of the continuation over reachable outputs of the first computation.

      @[deprecated "VCVio retiring support API: use reachableWhen_bind" (since := "2026-09-14")]
      theorem OracleComp.mem_supportWhen_bind_iff {ι : Type u} {spec : OracleSpec ι} {α β : Type v} (o : QueryImpl spec Set) (oa : OracleComp spec α) (ob : αOracleComp spec β) (y : β) :
      y supportWhen o (oa >>= ob) xsupportWhen o oa, y supportWhen o (ob x)

      Membership form of [OracleComp.supportWhen_bind].

      @[deprecated "VCVio retiring support API: use reachableWhen_mono" (since := "2026-09-14")]
      theorem OracleComp.supportWhen_mono {ι : Type u} {spec : OracleSpec ι} {α : Type v} {o₁ o₂ : QueryImpl spec Set} (h : ∀ (q : spec.Domain), o₁ qo₂ q) (oa : OracleComp spec α) :
      supportWhen o₁ oasupportWhen o₂ oa

      Enlarging the set of possible oracle outputs only enlarges the reachable output set.

      @[deprecated "VCVio retiring support API: use reachableWhen" (since := "2026-09-15")]
      theorem OracleComp.supportWhen_eq_reachableWhen {ι : Type u} {spec : OracleSpec ι} {α : Type v} (o : QueryImpl spec Set) (oa : OracleComp spec α) :

      The SetM interpretation agrees with operation-indexed reachability.