|
1 | 1 | # Proof Holes Audit - Valence Shell |
2 | 2 |
|
3 | | -**Date**: 2026-03-08 (updated after P5 proof gap closure session) |
| 3 | +**Date**: 2026-04-12 (updated after P0 believe_me sweep — Coq layer) |
4 | 4 | **Auditor**: Opus (deep audit + proof closure) |
5 | | -**Total Holes**: 8 across 4 proof systems (down from 31) |
| 5 | +**Total Holes**: 6 across 4 proof systems (down from 31; -2 Coq axioms proved 2026-04-12) |
6 | 6 |
|
7 | 7 | ## Summary |
8 | 8 |
|
9 | 9 | | Category | Count | Change | Action Required | |
10 | 10 | |----------|-------|--------|-----------------| |
11 | 11 | | **Real Gaps** | 1 | -25 | Coq `obliterate_overwrites_all_blocks` only | |
12 | | -| **Axioms** | 4 | +1 | Intentional — well-known properties | |
| 12 | +| **Axioms** | 1 | -3 | `is_empty_dir_dec` only (justified, infinite-domain) | |
13 | 13 | | **Structural** | 1 | -1 | `funext` only (`_≟ₚ_` proven via `_path-≟_`) | |
14 | | -| **Total** | **6** | **-25** | | |
| 14 | +| **Total** | **3** | **-28** | Updated 2026-04-12: 2 well-formedness + 5 decidability proofs closed | |
15 | 15 |
|
16 | 16 | ### What Was Closed (2026-04-03 proof closure session) |
17 | 17 |
|
@@ -70,14 +70,16 @@ Replaced with `obliterate_not_injective` — the correct formalization of "not r |
70 | 70 |
|
71 | 71 | ~~`agda/FileContentOperations.agda` `_≟ₚ_`~~ **RESOLVED 2026-04-03** — Now delegates to proven `_path-≟_` from FilesystemModel (structural recursion on List String with Data.String._≟_). |
72 | 72 |
|
73 | | -## Well-Formedness Axioms (2) — Added 2026-03-08 |
| 73 | +## Well-Formedness Axioms — CLOSED 2026-04-12 |
74 | 74 |
|
75 | | -| File | Line | Name | Nature | |
76 | | -|------|------|------|--------| |
77 | | -| `coq/filesystem_composition.v` | 303 | `well_formed_ancestor_exists` | Well-formedness transitive closure (standard filesystem property) | |
78 | | -| `coq/filesystem_composition.v` | 377 | `mkdir_preserves_well_formed` | mkdir preserves well-formedness (standard — adding a node with existing parent) | |
| 75 | +~~Both axioms proved 2026-04-12 (commit `1ef841c`):~~ |
79 | 76 |
|
80 | | -These are provable by induction on path length but require significant infrastructure. Axiomatized with clear specifications. |
| 77 | +| File | Name | Resolution | |
| 78 | +|------|------|------------| |
| 79 | +| ~~`coq/filesystem_composition.v`~~ | ~~`well_formed_ancestor_exists`~~ | **PROVED** via strong induction on path length, 6 helper lemmas (`path_prefix_refl`, `path_prefix_length`, `path_prefix_eq_of_same_length`, `path_prefix_app_invert`, `parent_path_lt`, `path_prefix_parent`) | |
| 80 | +| ~~`coq/filesystem_composition.v`~~ | ~~`mkdir_preserves_well_formed`~~ | **PROVED** via case split on q=p / q≠p, using `mkdir_precondition` for the q=p branch | |
| 81 | + |
| 82 | +Also closed 2026-04-12: `posix_errors.v` 5/6 decidability predicates converted from Axiom to Lemma (constructive proofs). One justified Axiom remains: `is_empty_dir_dec` — `Filesystem = Path -> option FSNode` is an infinite-domain function; universal quantification over all paths cannot be discharged constructively. Migration: switch to `FMaps.t FSNode`. |
81 | 83 |
|
82 | 84 | ## Remaining Real Gaps (1) |
83 | 85 |
|
@@ -108,8 +110,8 @@ The Coq gap (`obliterate_overwrites_all_blocks`) requires similar mechanical ind |
108 | 110 |
|
109 | 111 | | File | Lines | Name | Nature | |
110 | 112 | |------|-------|------|--------| |
111 | | -| `coq/posix_errors.v` | 97-102 | Decidability axioms (6) | Standard decidable predicates | |
112 | | -| `coq/filesystem_model.v` | 265 | `functional_extensionality` | Standard (could import from Coq.Logic) | |
| 113 | +| ~~`coq/posix_errors.v`~~ | ~~Decidability axioms (6)~~ | **CLOSED 2026-04-12** — 5/6 proved constructively; 1 justified (`is_empty_dir_dec`) | |
| 114 | +| ~~`coq/filesystem_model.v`~~ | ~~`functional_extensionality`~~ | **CLOSED (prior session)** — now imports from `Coq.Logic.FunctionalExtensionality` | |
113 | 115 |
|
114 | 116 | ## Recommendations |
115 | 117 |
|
|
0 commit comments