Traversing Possible Paths of a Computation #
This file defines structural predicates for checking whether all or some reachable paths of an
OracleComp satisfy predicates on query nodes and final outputs, relative to a chosen set of
possible oracle outputs.
It also connects those structural predicates to the denotational set supportWhen, so proofs can
move cleanly between the syntax-level traversal view and the reachable-output view.
Given that oracle outputs are bounded by possibleOutputs, every reachable query input in the
computation satisfies queryPred, and every reachable pure output satisfies outputPred.
Instances For
Given that oracle outputs are bounded by possibleOutputs, some reachable query input in the
computation satisfies queryPred, or some reachable pure output satisfies outputPred.
Instances For
Output-only view of [OracleComp.allPathsSatisfy]: every output reachable under
possibleOutputs satisfies outputPred.
Instances For
Output-only view of [OracleComp.somePathSatisfies]: some output reachable under
possibleOutputs satisfies outputPred.
Instances For
A bind satisfies a universal path property exactly when every path of the first computation leads to a continuation that also satisfies that path property.
A bind satisfies an existential path property exactly when either the first computation already satisfies it on some path, or one reachable continuation does.
Output-only specialization of [OracleComp.allPathsSatisfy_bind_iff].
Output-only specialization of [OracleComp.somePathSatisfies_bind_iff].
Output-only bind rule phrased directly in terms of reachable intermediate outputs.
Existential output bind rule phrased directly in terms of reachable intermediate outputs.