Quantitative Hoare triples for OracleComp #
The construction is based on a Loom-style ordered monad algebra (MAlgOrdered) instantiated
for OracleComp spec with carrier ℝ≥0∞.
API contract #
- This unary quantitative interface is instantiated for
OracleComp spec. - Probability/evaluation assumptions are
[spec.Fintype]and[spec.Inhabited]. - The quantitative codomain is fixed to
ℝ≥0∞.
Expectation-style algebra for oracle computations returning ℝ≥0∞.
Equations
Instances For
Equations
Quantitative weakest precondition for OracleComp.
Equations
Instances For
Quantitative Hoare-style triple for OracleComp.
Equations
Instances For
A quantitative triple with precondition 0 is always true.
probEvent as a WP of an indicator postcondition.
probOutput as a WP of a singleton-indicator postcondition.
Quantitative WP rule for a uniform oracle query.
Indicator-event probability as an exact quantitative triple.
Singleton-output probability as an exact quantitative triple.
The support event of an OracleComp occurs almost surely.
Exact probability-1 events are exact quantitative triples.
Exact probability-1 singleton outputs are exact quantitative triples.
Pr[= x | oa] = 1 ↔ Triple 1 oa (indicator). Bridge for qvcgen probability lowering.
Support membership is a useful default cut function for support-sensitive bind proofs.
Loop stepping rules (Triple-level) #
Loop invariant rules #
Constant invariant through bounded iteration via replicate.
Indexed invariant through List.foldlM.
Constant invariant through List.mapM.
replicate invariant with consequence: bridges arbitrary pre/post to the invariant.
List.foldlM invariant with consequence.
List.mapM invariant with consequence.