Commit f310290
Pre-implementation review of Phase 3b's option (a) precondition
(forall r, In r (regions_introduced_by e) -> In r R_in_v)
found it INSUFFICIENT to discharge T_Lam_L1_*_Eff body cases of the
planned subst_typing_gen_l1_m_tfuneff lemma.
Why: the substitution lemma recurses into inner lambda bodies (Phase
2 does so via the IH at formal/Semantics_L1.v:1929-1942). Inner
T_Lam_L1_*_Eff bodies type at the lambda's declared R_in_inner. R_in
is type-level — it lives in the TFunEff slot of the function's TYPE,
not in syntax. `regions_introduced_by(e)` only collects ERegion
subterms' first arguments; R_in_inner is invisible to it.
`tfuneff_lambda_retype_l1_m` (PR #224) requires R' ⊆ R_in_v to
discharge T_Lam_L1_*_Eff's side condition. We have no way to bound
inner R_in by R_in_v.
Phase 2's `subst_typing_gen_l1_m_ground_nonlinear` dodges this via
`ground_nonlinear_retype_l1_m`, which is fully (m, R, G)-polymorphic.
Phase 3b's TFunEff retype has no analogous escape.
Three resolution options documented:
1. Syntactic helper `declared_lambda_r_ins` — requires ELam
annotation extension (parameter type only in current syntax).
2. Semantic precondition over the derivation — clean meaning,
awkward in Coq.
3. Leaf-only Phase 3b via `tfuneff_lambda_free e` predicate —
tactical landing; Phase 5 compound-value redesign subsumes
(1)/(2) at leisure.
Recommended: option (3). Owner decision required before Phase 3b
implementation can start.
This PR contains documentation only:
- formal/SUBST-LEMMA-GENERALIZATION-DESIGN.md gains a Phase 3b
addendum documenting the gap and three resolution options.
- .machine_readable/6a2/STATE.a2ml flips phase to
`blocked-on-owner-decision` with next_action pointing at #235.
No formal/*.v changes.
Predecessor PRs unaffected:
- Phase 4a (#228) MERGED.
- Phase 4b (parallel session, #233) MERGED.
- Phase 4c counterexample (#234) auto-merge pending.
Phase 4c's `Counterexample_L2.v` independently justifies the
conditional preservation_l2 statement regardless of which Phase 3b
resolution lands.
Per CLAUDE.md owner directive §DO #4 (escalate before patching):
this PR IS the escalation.
Owner-directive compliance:
- No Semantics.v / Typing.v / Counterexample.v touch
- No new Axiom / Admitted markers
- No closure of residual Semantics_L1.v admits
- No sibling-region-disjointness side conditions
- No proposal to close `Theorem preservation` to Qed.
Refs: #225 (Phase 3b parking lot), #230 (regions_introduced_by
helper), #233 (Phase 4b), #234 (Phase 4c counterexample),
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 372b352 commit f310290
2 files changed
Lines changed: 31 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
10 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
145 | 173 | | |
146 | 174 | | |
147 | 175 | | |
| |||
0 commit comments