|
1 | | -(* SPDX-License-Identifier: PMPL-1.0-or-later *) |
2 | | -// Owner: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 1 | +(* SPDX-License-Identifier: MPL-2.0 *) |
3 | 2 | (* SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell *) |
4 | 3 |
|
| 4 | +(** |
| 5 | +
|
| 6 | + ********************************************************************* |
| 7 | + *** 📌 PINNED REGRESSION WITNESS *** |
| 8 | + *** *** |
| 9 | + *** 5 Qed lemmas. Authoritative source of the 2026-05-26 *** |
| 10 | + *** soundness gap. *** |
| 11 | + *** *** |
| 12 | + *** This file SHOULD NOT BE WEAKENED. Any future proof work must *** |
| 13 | + *** coexist with these lemmas. The legacy judgment's falsity is *** |
| 14 | + *** load-bearing for the regression theorem; do not "fix" the *** |
| 15 | + *** legacy judgment to make these lemmas fail. *** |
| 16 | + *** *** |
| 17 | + *** bad_input_untypable_l1 is also Qed under BOTH modalities, *** |
| 18 | + *** showing that the new L1 judgment closes the gap regardless of *** |
| 19 | + *** Linear vs Affine. *** |
| 20 | + *** *** |
| 21 | + *** See `STATUS.adoc`, `formal/PRESERVATION-DESIGN.md §1`. *** |
| 22 | + ********************************************************************* |
| 23 | +
|
| 24 | +*) |
| 25 | + |
5 | 26 | (** * Soundness gap: counterexample to preservation as currently stated |
6 | 27 |
|
7 | 28 | Exhibits a concrete configuration where the calculus's typing rules |
@@ -173,8 +194,12 @@ Section L1Fix. |
173 | 194 | inversion H; subst; split; reflexivity. |
174 | 195 | Qed. |
175 | 196 |
|
176 | | - (** The L1 regression theorem: the bad input is untypable in EVERY |
177 | | - modality (linear and affine alike). *) |
| 197 | + (** The L1 regression theorem. |
| 198 | +
|
| 199 | + Generalised to [forall m : Modality, ...] per L2: the bad |
| 200 | + input is untypable in BOTH ephapax-linear AND ephapax-affine. |
| 201 | + The inversion logic is mode-polymorphic — the region-threading |
| 202 | + contradiction surfaces identically in both modes. *) |
178 | 203 | Lemma bad_input_untypable_l1 : |
179 | 204 | forall m R_out G_out, |
180 | 205 | ~ has_type_l1 m (r0 :: r1 :: nil) nil e_bad T_bad R_out G_out. |
|
0 commit comments