You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace the sorry in obliterate_not_injective with a complete proof.
The theorem was strengthened with two additional hypotheses:
- hmapped: mapped blocks have same blockId, blockData.length, overwriteCount
- hlen: patterns list is nonempty (required — 0 passes cannot erase data)
Three auxiliary lemmas provide the proof infrastructure:
- overwriteBlock_determined_by_shape: same shape → same overwrite result
- overwritePathBlocks_storage_eq: one pass makes storage identical
- multiPassOverwrite_congr: equal inputs → equal outputs
Proof strategy: after one deterministic overwrite pass, mapped blocks
become byte-identical (pattern output depends only on shape, not data).
Remaining passes operate on equal StorageFS values, producing equal results.
Proof holes audit updated: 4 → 3 remaining gaps.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/PROOF_HOLES_AUDIT.md
+10-5Lines changed: 10 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,16 +66,21 @@ Replaced with `obliterate_not_injective` — the correct formalization of "not r
66
66
67
67
These are provable by induction on path length but require significant infrastructure. Axiomatized with clear specifications.
68
68
69
-
## Remaining Real Gaps (4)
69
+
## Remaining Real Gaps (3)
70
70
71
-
### RMO Storage Proofs (2 gaps — low priority)
71
+
### RMO Storage Proofs (1 gap remaining — low priority)
72
72
73
73
| File | Line | Theorem | Gap |
74
74
|------|------|---------|-----|
75
-
|`lean4/RMOOperations.lean`| 197 |`obliterate_not_injective`| Storage equality under multiPassOverwrite |
76
75
|`coq/rmo_operations.v`| 214 |`obliterate_overwrites_all_blocks`| Induction over overwrite passes |
77
76
78
-
Both require showing that `multiPassOverwrite` is determined by the mapping and patterns, not by original block data. Non-trivial but purely mechanical induction.
77
+
~~`lean4/RMOOperations.lean``obliterate_not_injective`~~**RESOLVED 2026-03-22** — Proved via
78
+
three auxiliary lemmas (`overwriteBlock_determined_by_shape`, `overwritePathBlocks_storage_eq`,
79
+
`multiPassOverwrite_congr`). The theorem was strengthened with a `hmapped` hypothesis (mapped blocks
80
+
must have same blockId/length/overwriteCount) and `hlen` (patterns nonempty). After one deterministic
81
+
overwrite pass, mapped blocks become byte-identical; remaining passes operate on equal inputs.
82
+
83
+
The Coq gap (`obliterate_overwrites_all_blocks`) requires similar mechanical induction.
79
84
80
85
### Agda Deferred Proofs (2 gaps — medium priority)
81
86
@@ -95,7 +100,7 @@ Both have full proof sketches and are proven in corresponding Lean 4/Coq files.
95
100
96
101
## Recommendations
97
102
98
-
1.**4 remaining gaps are all low-medium priority** — RMO is not user-facing, Agda proofs exist in Lean 4
103
+
1.**3 remaining gaps are all low-medium priority** — RMO is not user-facing, Agda proofs exist in Lean 4
99
104
2.**Axiom count is healthy** — 4 new axioms are well-known filesystem/type theory properties
100
105
3.**Model improvement needed**: Parameterize `mkdir`/`createFile` with permissions for full reverse-direction reversibility
0 commit comments