[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"0XAifl0pUC":3},"# Lilac: Probabilistic Separation Logic\n[Lilac](https://dl.acm.org/doi/10.1145/3591226) is a probabilistic separation logic for reasoning about first order probabilistic programs supporting continuous distributions.\nThis is a mechanisation of Core [Lilac](https://dl.acm.org/doi/10.1145/3591226), i.e. we don't yet support the\nconditioning connective.\nThe mechanisation in Lean includes full soundness proofs of the system as well as an embedding into [iris-lean](https://github.com/leanprover-community/iris-lean/).\nfor tactical proof support\n\nThe following outlines the structure of the repository:\n\n- [`Bppl/Lilac/Appl.lean`](Bppl/Lilac/Appl.lean) — APPL probabilistic programming language syntax and semantics; the language Lilac reasons about.\n- [`Bppl/Lilac/MeasureOnSpace.lean`](Bppl/Lilac/MeasureOnSpace.lean) — Independent product of probability measures; common foundation shared with [Bluebell](https://github.com/Verified-zkEVM/iris-lean).\n- [`Bppl/Lilac/KRM.lean`](Bppl/Lilac/KRM.lean) — Kripke Resource Monoids, instantiated to probability spaces and to probability spaces with finite footprint (`PSp`).\n- [`Bppl/Lilac/BI.lean`](Bppl/Lilac/BI.lean) — Generating an instance of BI (logic of Bunched Implications) from a KRM, with a proof that the resulting logic is affine.\n- [`Bppl/Lilac/Assertion.lean`](Bppl/Lilac/Assertion.lean) — Probability-specific connectives of Lilac: ownership, distribution `∼`, almost-sure equality `≗`, expectation `𝔼[·]=`, and weakest precondition `wp`.\n- [`Bppl/Lilac/ProofRules/WP.lean`](Bppl/Lilac/ProofRules/WP.lean) — Main WP proof rules (consequence, frame, return, bind, unif) corresponding to Appendix B.20 of the Lilac paper.\n- [`Bppl/Lilac/ProofRules/WPMeas.lean`](Bppl/Lilac/ProofRules/WPMeas.lean) — Generalised WP rule `wp_meas` for introducing random variables that are primitive measures; specialised to `wp_unif` and `wp_flip`.\n\u003C!-- - [`Bppl/Lilac/ProofRules/WPUnifHelpers.lean`](Bppl/Lilac/ProofRules/WPUnifHelpers.lean) — Helper lemmas for `WPMeas` (pending consolidation into `WPMeas.lean`). -->\n- [`Bppl/Lilac/ProofRules/MeasureProduct.lean`](Bppl/Lilac/ProofRules/MeasureProduct.lean) — Helper lemmas for the measure product condition used in `wp_meas`.\n- [`Bppl/Lilac/Examples.lean`](Bppl/Lilac/Examples.lean) — Worked examples (`unif1`, `unif2`, `half`) using the Iris proof mode instantiated to Lilac.\n- [`Bppl/Lilac/HilbertCube.lean`](Bppl/Lilac/HilbertCube.lean) — Fundamental transformations on Hilbert cubes.\n",1780242006397]