Commit 74fe03a
Phase 1 scaffold for Lemma B (step_output_context_eq) (#124)
## Summary
This PR introduces the Phase 1 scaffold for `step_output_context_eq`
(Lemma B), which proves that a single step preserves the output context.
The lemma body is stated with a `cfg`-remember pattern and an
atomic-axiom closure tactic, with 31 of 35 step-rule cases remaining as
`admit`.
## Key Changes
- **New lemma `subst_preserves_typing_strong`**: A strengthened variant
of `subst_preserves_typing` that exposes the specific output context
(instead of hiding it behind an existential). This is needed by the 7
β-reduction step cases (`S_Let_Val`, `S_LetLin_Val`, `S_App_Fun`,
`S_If_True/False`, `S_Case_Inl/Inr`) where the existential in the
original lemma blocks output-context equality proofs.
- **`step_output_context_eq` Phase 1 scaffold**: Introduced with the
`cfg`-remember pattern (mirroring `step_R_eq_or_touches_region` and
`preservation`) plus an atomic-axiom closure tactic. This closes 4 of 35
step rules:
- `S_StringNew`, `S_StringConcat`, `S_Drop` (atomic cases with
identity-output typing rules)
- `S_Borrow_Step` (accidental congruence closure: both `T_Borrow` and
`T_Borrow_Val` preserve the input context)
- **Documentation**: Added detailed per-case status map in
`formal/PRESERVATION-HANDOFF.md` clustering the remaining 31 cases into
three groups:
- **Cluster A** (~7): β-reduction cases needing
`subst_preserves_typing_strong`
- **Cluster B** (~18): congruence cases needing
`step_R_eq_or_touches_region` dispatch + IH + recursive Lemma B
- **Cluster C** (~6): region/compound-value cases with mixed closure
requirements
- **Effort revision**: Updated ROADMAP from "3–4 hours" to "8–15 focused
hours" based on empirical baseline from `coqc 8.18.0`.
## Notable Implementation Details
- `subst_preserves_typing_strong` leverages the explicit `remove_at k
Gout` shape already present in `subst_typing_gen`, which collapses to
`G` for `k = 0` via `remove_at 0 ((T, b) :: G) = G`.
- The atomic-axiom closure tactic uses a `repeat match` to force
re-inversion of leaf values (`ELoc`, `EI32`, `EUnit`, `EBool`) to pin
their output contexts to the input.
- Identified circularity risk: some Cluster B cases may need "step
preserves type" before applying the IH, but that lemma is part of
preservation itself.
https://claude.ai/code/session_01USr4ovnvN6SLrwi6z9MUhQ
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 8617b04 commit 74fe03a
3 files changed
Lines changed: 214 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
191 | 199 | | |
192 | 200 | | |
193 | 201 | | |
| |||
218 | 226 | | |
219 | 227 | | |
220 | 228 | | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
226 | 254 | | |
227 | 255 | | |
228 | 256 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| 142 | + | |
| 143 | + | |
| 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 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
142 | 234 | | |
143 | 235 | | |
144 | 236 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2826 | 2826 | | |
2827 | 2827 | | |
2828 | 2828 | | |
| 2829 | + | |
| 2830 | + | |
| 2831 | + | |
| 2832 | + | |
| 2833 | + | |
| 2834 | + | |
| 2835 | + | |
| 2836 | + | |
| 2837 | + | |
| 2838 | + | |
| 2839 | + | |
| 2840 | + | |
| 2841 | + | |
| 2842 | + | |
| 2843 | + | |
| 2844 | + | |
| 2845 | + | |
| 2846 | + | |
| 2847 | + | |
| 2848 | + | |
| 2849 | + | |
| 2850 | + | |
| 2851 | + | |
| 2852 | + | |
| 2853 | + | |
| 2854 | + | |
| 2855 | + | |
| 2856 | + | |
2829 | 2857 | | |
2830 | 2858 | | |
2831 | 2859 | | |
| |||
3318 | 3346 | | |
3319 | 3347 | | |
3320 | 3348 | | |
| 3349 | + | |
| 3350 | + | |
| 3351 | + | |
| 3352 | + | |
| 3353 | + | |
3321 | 3354 | | |
3322 | | - | |
3323 | | - | |
3324 | | - | |
3325 | | - | |
3326 | | - | |
3327 | | - | |
| 3355 | + | |
| 3356 | + | |
| 3357 | + | |
| 3358 | + | |
| 3359 | + | |
| 3360 | + | |
| 3361 | + | |
| 3362 | + | |
| 3363 | + | |
| 3364 | + | |
| 3365 | + | |
| 3366 | + | |
| 3367 | + | |
| 3368 | + | |
| 3369 | + | |
| 3370 | + | |
| 3371 | + | |
| 3372 | + | |
| 3373 | + | |
| 3374 | + | |
| 3375 | + | |
| 3376 | + | |
| 3377 | + | |
| 3378 | + | |
| 3379 | + | |
| 3380 | + | |
| 3381 | + | |
| 3382 | + | |
| 3383 | + | |
| 3384 | + | |
| 3385 | + | |
| 3386 | + | |
| 3387 | + | |
| 3388 | + | |
| 3389 | + | |
| 3390 | + | |
| 3391 | + | |
| 3392 | + | |
| 3393 | + | |
| 3394 | + | |
| 3395 | + | |
| 3396 | + | |
| 3397 | + | |
| 3398 | + | |
| 3399 | + | |
| 3400 | + | |
| 3401 | + | |
| 3402 | + | |
| 3403 | + | |
| 3404 | + | |
| 3405 | + | |
| 3406 | + | |
| 3407 | + | |
| 3408 | + | |
| 3409 | + | |
| 3410 | + | |
3328 | 3411 | | |
3329 | 3412 | | |
3330 | 3413 | | |
| |||
0 commit comments