Prob program-range wp-layer #
The Footprint analogue of the wp-layer in ProgramRange (countability-free): pushing a
deterministic outside-update across wp (wp_shift_input_prob), and the lens-preservation
bounds (wp_le_of_factors_footprint and its 2- and 3-lens forms, wp_strengthen_lens_preserved_footprint).
Foundation for migrating the RO crypto stack off DetermFootprint/inRange.
wp_shift_input over Footprint — countability-free. The probabilistic analogue of
ProgramDenotation.wp_shift_input: a program in range R lets a deterministic outside-update
f (a Dirac
kernel in Rᶜ) be pushed from the input to the output of wp. Same proof, via
inFootprint_subprob.
Preservation under in-range, over Footprint — countability-free analogue of
ProgramDenotation.wp_le_of_factors: if prog's probabilistic footprint avoids L
(inFootprint (L.footprint)ᶜ) and P factors through L.get, then prog.wp (P ∘ snd) σ ≤ P σ.
Lens-preservation strengthening over Footprint — countability-free analogue of
ProgramDenotation.wp_strengthen_lens_preserved.
Two-lens preservation over Footprint — countability-free analogue of
ProgramDenotation.wp_le_of_factors_two.
Three-lens preservation over Footprint — countability-free analogue of
ProgramDenotation.wp_le_of_factors_three.
wp vanishes on a preserved-lens zero region — the inFootprint analogue of
ProgramDenotation.wp_zero_of_lens_preserves: if p avoids L, F vanishes whenever
L.get = v, and we start at L.get σ = v, then p.wp F σ = 0.
Dead write across a disjoint footprint — the inFootprint analogue of
ProgramDenotation.wp_set_disjoint_no_op. If rest lives in (L.footprint)ᶜ and the post F
ignores L, then a preceding ProgramDenotation.set L v is a no-op for the wp.
Conditional dead write across a disjoint footprint — the inFootprint analogue of
ProgramDenotation.wp_conditional_set_disjoint_no_op.
Get-then-conditional-set is a no-op across a disjoint footprint — the inFootprint
analogue of ProgramDenotation.wp_get_then_conditional_set_disjoint_no_op.
A state-independent sampled value has trivial probabilistic footprint — the Footprint
analogue of ProgramDenotation.inRange_toProgramDenotation (at ⊥; lift to any R with
inFootprint_mono … bot_le). Same swap argument as inFootprint_uniform.
ProgramDenotation.uniformOfFinset has trivial probabilistic footprint — the Footprint
analogue of ProgramDenotation.inRange_uniformOfFinset.
loop_n n body stays in the same footprint as body — the Footprint analogue of
loop_n_inRange.
L-ignoring is preserved when post-composing with an L-disjoint program — the Footprint
analogue of IgnoresLens.comp_inRange.
Factorization: a program confined to L's probabilistic range comes from running some
inner program on the L-content. The inFootprint analogue of Lens.factor_of_inRange.