Skip to content

[4/7] Refinement and Framed machinery; Split and NSplit rules - #5

Open
zilberstein wants to merge 4 commits into
claude/happy-noether-41vna7-part3from
claude/happy-noether-41vna7-part4
Open

zilberstein wants to merge 4 commits into
claude/happy-noether-41vna7-part3from
claude/happy-noether-41vna7-part4

Conversation

@zilberstein

Copy link
Copy Markdown
Owner

Part 4 of the stack splitting #1 (based on part 3).

Contents

  • Refines.lean: refinement via discrete spaces, padding a refined space; refinements of sums split and glue.
  • Framed: shrinking the invariant space, padding, splitting and gluing.
  • Split and NSplit rules.

🤖 Generated with Claude Code

https://claude.ai/code/session_019Gipsr3EwstFw5DuwGNoug


Generated by Claude Code

@zilberstein
zilberstein added this pull request to stack #8 October 1, 2026 12:22
claude added 4 commits October 8, 2026 12:56
A distribution refines a space exactly when the space is below the
discrete space ProbSpace.ofPMF of a representation of the distribution.
With this, the laws of the order give Refines.pad: a refined space can
be extended, without adding probabilistic information, by variables that
the distribution allocates.  Also move Distr.Owns next to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Gipsr3EwstFw5DuwGNoug
Refines.split: a distribution that refines a sum is the average of its
conditionings, which refine the summands.  Refines.sum: conversely,
refinements of the summands glue into a refinement of the sum.  These
are the semantic content of the Split rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Gipsr3EwstFw5DuwGNoug
Framed-level versions of the refinement lemmas, as needed by the Split
rule: a distribution framed with a sum is an average of distributions
framed with the summands (split), and conversely (glue, which relabels
the summands to disjoint outcomes and rebuilds a common invariant
space).  pad extends a framed space by allocated variables, and
shrink_inv takes the invariant space to own only the invariant's
variables.  Also sure_forget and disjoint_support_product'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Gipsr3EwstFw5DuwGNoug
wp_split splits the initial distribution along the outcome conjunction
of the precondition (Framed.split), runs each conditioning separately,
pads each postcondition space back to the variables of the precondition
(Framed.pad, using that programs do not deallocate variables), and glues
the results (Framed.glue).  wp_nsplit follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Gipsr3EwstFw5DuwGNoug
@zilberstein
zilberstein force-pushed the claude/happy-noether-41vna7-part4 branch from ba32300 to a1655c9 Compare October 8, 2026 16:56
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.

2 participants