Traversing Possible Paths of a Computation. #
This file defines functions alwaysWhen
and someWhen
that allow for traversing a computation's
structure to check some given predicates on each node, using a set of possible outputs for that
traversal. These definitions are Prop
not Bool
and should usually only be used in proofs,
not in defining an actual computaion.
The file also contains many special cases of these functions like neverFailsWhen
.
All the given predicates hold on a computation when queries respond with
elements of possible_outputs q
for every query q
Equations
- One or more equations did not get rendered due to their size.
Instances For
One of the given predicates hold on a computation when queries respond with
elements of possible_outputs q
for every query q
Equations
- One or more equations did not get rendered due to their size.
Instances For
oa
never fails if when responses to queries q
are in possible_outputs q
.
Equations
- oa.neverFailsWhen possible_outputs = OracleComp.allWhen (fun {α : Type ?u.52} (x : spec.OracleQuery α) => True) False (fun {α : Type ?u.52} => possible_outputs) oa
Instances For
oa
never fails even when queries can output any possible value.
Equations
- oa.neverFails = oa.neverFailsWhen fun {α : Type ?u.31} (x : spec.OracleQuery α) => Set.univ
Instances For
oa
might fail when responses to queries q
are in possible_outputs q
Equations
- One or more equations did not get rendered due to their size.
Instances For
oa
might fail if queries can output any possible value.
Equations
- oa.mayFail = oa.mayFailWhen fun {α : Type ?u.31} (x : spec.OracleQuery α) => Set.univ