Skip to content

proof(L1): reduce step_pop's 11 eliminator admits to 1 via step_R_change_shape (§6 experiment)#330

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/l1-step-pop-reduction
Jun 27, 2026
Merged

proof(L1): reduce step_pop's 11 eliminator admits to 1 via step_R_change_shape (§6 experiment)#330
hyperpolymath merged 1 commit into
mainfrom
claude/l1-step-pop-reduction

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Runs the formal/L1-ELIMINATOR-FORK.md §6 deciding experiment in Coq, and lands its concrete by-product: step_pop_disjoint_from_type_l1 goes from 11 internal admits to 1.

Driving the proof by step_R_change_shape (Semantics.v, Qed — every step leaves R unchanged, prepends a fresh region, or removes exactly one) makes all ten eliminator/erasing congruences trivial: a region free in the result type survives unless the step exits that exact region. 255 lines + 11 admits → ~15 lines + 1 admit.

The single residual obligation

step exits r0r0 ∈ free_regions(T)cnt r0 R ≥ 2 (In r0 (remove_first r0 R))

  • Direct-exit sub-case is vacuous: a head redex ERegion r0 v is typed by T_Region_Active_L1, whose ~In r0 (free_regions T) premise contradicts r0 ∈ free_regions(T).
  • Residue = congruence-exit: the exiting ERegion r0 is under an eliminator and r0 comes from a sibling's type — a distinct occurrence.

Verdict: relocates (§6 "no"), but cleanly

Proving that distinctness is region-count coherence at a region exit — the temporal/segment structure the snapshot env + result type cannot express. Every closure route (free_regions ⊆ R_out, count_occ_le_l1_m, linking the dynamic exit to the static output) collapses to connecting the dynamic step to the static typing output, which is preservation. The §2 "same wall," mechanically reconfirmed.

Diagnosis corrected: the obstruction is not the §4.8 lambda-rigidity gap (the minimal witness EDrop (EVar j : TString rv) has no lambda) — it's region-count coherence at a region exit. The cleanest possible target for the §3/§5.1 tropically-graded choreography, which stays the recommended closure route.

What this is / isn't

  • Is: a clarity + isolation improvement (−224 net lines; one minimal, precisely-stated obligation instead of eleven scattered §4.8 admits) + the §6 verdict recorded in L1-ELIMINATOR-FORK.md §8 and PROOF-NEEDS.md.
  • Isn't: an axiom-count change. Outer Admitted count unchanged (still 3); step_pop and preservation_l1 honestly remain Admitted.

Verification

  • coqc 8.18.0 builds formal/ clean (exit 0).
  • Print Assumptions: preservation_l3 still Closed (unconditionally axiom-free); region_liveness_no_exit_l1_gen axiom-free; step_pop/preservation_l1 surface themselves (honest Admitted).

🤖 Generated with Claude Code

https://claude.ai/code/session_01AGFqWzByua4dKbA7W7oVsL


Generated by Claude Code

…nge_shape (§6 experiment)

Runs the L1-ELIMINATOR-FORK.md §6 deciding experiment in Coq. Driving
step_pop_disjoint_from_type_l1 by step_R_change_shape (Semantics.v, Qed —
every step leaves R fixed, prepends a fresh region, or removes exactly one)
makes all ten eliminator/erasing congruences trivial: a region free in the
result type survives unless the step exits THAT region. The 255-line
induction with 11 admits becomes ~15 lines with 1.

The single residual obligation is exactly:
  step exits r0  /\  r0 in free_regions(T)  ==>  cnt r0 R >= 2.
Its direct-exit sub-case is vacuous (a head ERegion r0 v is typed by
T_Region_Active_L1, whose ~In r0 (free_regions T) contradicts the premise);
the residue is the congruence-exit case (r0 from a sibling's type, a
distinct occurrence). Establishing that distinctness is the temporal/segment
coherence the snapshot env + result type cannot express; every route
collapses to connecting the dynamic exit to the static output = preservation
itself. Verdict: RELOCATES (the §2 wall), now to ONE minimal obligation.

Diagnosis corrected in-source: the obstruction is NOT §4.8 lambda-rigidity
(the witness EDrop (EVar j : TString rv) has no lambda) but region-count
coherence at a region exit.

Verified: coqc 8.18.0 builds clean; Print Assumptions unchanged
(preservation_l3 still axiom-free; step_pop + preservation_l1 surface
themselves). Outer Admitted count UNCHANGED (3); this is clarity + isolation,
not an axiom-count reduction. L1-ELIMINATOR-FORK.md §8 + PROOF-NEEDS.md §5.2
updated with the verdict.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGFqWzByua4dKbA7W7oVsL
@hyperpolymath
hyperpolymath force-pushed the claude/l1-step-pop-reduction branch from 82613b5 to de2d0b4 Compare June 27, 2026 18:40
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 27, 2026 18:43
@hyperpolymath
hyperpolymath merged commit 72a0f36 into main Jun 27, 2026
20 checks passed
@hyperpolymath
hyperpolymath deleted the claude/l1-step-pop-reduction branch June 27, 2026 18:43
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