Skip to content

Probability: kernels, pushforward and sequential composition of laws - #21

Merged
MarcIlunga merged 4 commits into
mainfrom
memoryless-probability
Oct 13, 2026
Merged

MarcIlunga merged 4 commits into
mainfrom
memoryless-probability

Conversation

@MarcIlunga

@MarcIlunga MarcIlunga commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Adds Distribution.bindK, the mixture of a kernel over a law (CR18 §3.6.1), with the lemmas #22 uses, and the probability laws ProbDist.map and ProbDist.bind built on it. Seven restriction and pushforward lemmas that the kernel lemmas need are added to Distribution.lean.

Part of #14.

MarcIlunga and others added 2 commits October 13, 2026 10:19
`Distribution.bindK μ f`, the mixture of the kernel `f` over the law `μ`
(the composition of conditional distributions, CR18 §3.6.1), with the
lemmas the probabilistic automata of the next layer use: linearity,
composition of mixtures, the point kernel, pushforwards as point kernels
and through mixtures, restriction through mixtures, weight and
nonnegativity, and independent products as mixtures (`prod_eq_bindK`,
`pi_eq_bindK_update`). Probability laws get `ProbDist.map` with
`map_map`, and `ProbDist.bind`, defined from `bindK` (the one bind).

Part of #14.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…or steps

CR18 §3.6.1 defines a conditional distribution p_{Y|X}; it does not define its
mixture over a law, so the module doc and THEORY.md now say only that. The root
doc of Probability is wrapped to 100 characters, and the steps of Kernel.lean
are lemmas (#18).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@MarcIlunga
MarcIlunga force-pushed the memoryless-probability branch from 9036503 to 8846092 Compare October 13, 2026 09:20
@MarcIlunga
MarcIlunga changed the base branch from cr18-games to main October 13, 2026 09:20
@MarcIlunga MarcIlunga closed this Oct 13, 2026
@MarcIlunga MarcIlunga reopened this Oct 13, 2026
MarcIlunga and others added 2 commits October 13, 2026 11:39
The restriction and pushforward facts that do not involve kernels
(`support_restrict_subset`, `restrict_restrict`, `restrict_congr`,
`restrict_false`, `single_restrict`, `fTransform_single`,
`restrict_fTransform`) move to Distribution.lean, next to `restrict` and
`fTransform`. Kernel.lean no longer opens `Classical`: `bindK_ite` states its
condition under `open scoped Classical in`, and the four proofs that decide
equalities or events start with `classical`. Two `show` steps become direct
terms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E7GPy1oUx164NSZsxJT3N9
Each induction on a law says what both sides are at a sum of two laws and
at a point mass; the product lemmas comment each step (the factor split off,
the terms that survive the sum, the support cases).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E7GPy1oUx164NSZsxJT3N9
@MarcIlunga
MarcIlunga merged commit 97dcbaf into main Oct 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant