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
proofs(coq): close admit triumvirate (#56 / #57 / #58) — Coq layer at zero Admitted (#128)
* proofs(coq): close admit triumvirate (#56 / #57 / #58)
Three closures land the Coq layer at zero `Admitted` markers:
* `mkdir_two_dirs_reversible` (filesystem_composition.v) — restated to
LIFO order so it discharges via `two_op_sequence_reversible`
+ `rmdir_precondition_after_mkdir` + `mkdir_preserves_well_formed`.
Closes#56. Only standard funext.
* `overwrite_pass_equalizes_storage` (rmo_operations.v) — closure
path (A) per issue #57: `Hgeom` strengthened with
`block_overwritten blk1 = block_overwritten blk2`. Proof case-splits
on `In bid (sfs_mapping sfs1 p)`; mapped branch uses
`In_existsb_Nat_eqb` + `f_equal` on the `mkBlock` constructor; un-
mapped branch uses `overwrite_path_blocks_non_mapped_preserved` and
the `Hother` hypothesis. `one_pass_storage_agrees` re-signed to
match. Closes#57. Zero axioms.
* `obliterate_not_injective` (rmo_operations.v) — threads the
strengthened hypothesis through `one_pass_storage_agrees` and
`multi_pass_same_start_same_result`, then reassembles the
`mkStorageFS` via `cbn [sfs_tree sfs_storage sfs_mapping]` +
`f_equal` + `functional_extensionality`. The strengthened
hypothesis is trivially satisfied for the canonical first-time
obliteration use case (block_overwritten = 0 on both sides), so
the MAA/GDPR marketing claim is unchanged. Closes#58. Only
standard funext.
PROOF-NEEDS.md reconciled:
* Idris2 hole tally corrected 22 -> 16 (equivSymProof and
appendOnlyAuditLogProof were closed silently during the morning
sweep but the inventory text was not updated).
* Assumption Registry table updated: 3 Coq admits removed, axiom
inventory now lists only is_empty_dir_dec + funext.
* "What Needs Proving" rewritten as a 7-tier prioritised attack-list
(P1 closeable now; P2 blocked on primitive-eq groundwork; P3-P7
research / frontier / marginal / tooling).
Verified locally:
* `coqc -R . ValenceShell` clean on all 11 .v files
* `Print Assumptions` for each closed theorem: only funext (or zero
for #57)
* `idris2 --build valence-shell.ipkg` exit 0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(proof-needs): reclassify 3 RMO 'Cat-D' holes as Cat-A non-theorems
Closer reading of every remaining Idris2 hole on the P1/P2 attack-list
reveals the original triage (and the P1 paragraph from earlier this
commit-series) was over-optimistic.
The 3 RMO holes I'd labelled Cat-D axiomatic placeholders are actually
provably false as stated:
* overwriteIrreversibleProof (RMO.idr:130) — conclusion
`recovery randomData = Nothing` is refuted by `recovery = Just`.
* hardwareEraseIrreversibleProof (RMO.idr:215) — type signature is
refuted by any non-empty `Unit -> Filesystem`.
* auditTrailCompletenessProof (RMO.idr:270) — conclusion is refuted
by `entries = []`.
These need theorem-shape redesign (per the #60 / #61 precedent), not
believe_me markers. Recorded as follow-up — recommend filing as #119
sub-issues with the explicit refutations.
Additionally:
* DecEq Path does NOT unblock the primitive-eq batch because it
transitively depends on DecEq String. Earlier claim that decEq gives
a free path-eq reflexivity lemma was wrong.
* Three closure paths for the primitive-eq blocker documented (axioms
via believe_me / Nat-interned paths / decEq-style reformulation),
each requiring owner sign-off.
* Frozen-hole list made explicit.
No source changes; documentation honesty only.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Idris2 | 22 `?holes` across 4 files (zero `partial` annotations) |`proofs/idris2/src/Filesystem/*.idr`| Type-stated, body un-discharged; all `partial` markers cleared 2026-06-02 (PRs #108 + #109); reverseConcat closed via PR #115|
29
+
| Coq | (closed) `mkdir_two_dirs_reversible`|`filesystem_composition.v`| Closed via LIFO restate — only standard funext (#56 closed) |
30
+
| Coq | (closed) `overwrite_pass_equalizes_storage`|`rmo_operations.v`| Closed via `Hgeom` strengthened with `block_overwritten` (#57 closed — zero axioms) |
31
+
| Coq | (closed) `obliterate_not_injective`|`rmo_operations.v`| Closed via threaded strengthened `Hgeom` through `multi_pass_same_start_same_result` (#58 closed — only standard funext) |
32
+
| Idris2 | 16 `?holes` across 4 files (zero `partial` annotations) |`proofs/idris2/src/Filesystem/*.idr`| Type-stated, body un-discharged; classification per issue #119|
31
33
32
-
Idris2 holes by file (counts as of 2026-06-02, post-#115):
-`proofs/idris2/src/Filesystem/RMO.idr`: 4 holes (overwrite, audit log; secureDelete + gdprDelete CLOSED via PRs #105+#108; parse fixes via #112 + #113)
35
-
-`proofs/idris2/src/Filesystem/Composition.idr`: 4 holes (Operations.idr drive-by holes; the prior 7 `partial` markers cleared via PR #109; reverseConcat closed via PR #115)
36
-
-`proofs/idris2/src/Filesystem/Model.idr`: 3 holes (equivSym + equivTrans + equivReflProof; the last added when DecEq Path fix landed via PR #105)
34
+
**Idris2 holes by file (verified by grep against `proofs/idris2/src/Filesystem/*.idr`, 2026-06-02 PM):**
37
35
38
-
All `partial` markers in `proofs/idris2/src/Filesystem/*.idr` were cleared 2026-06-02 (PRs #108 + #109, closing #89). The total `partial` count is now zero. Closure path for the remaining 23 holes: discharge with the precondition lemma per theorem.
|`Model.idr`| 2 (`equivReflProof`, `equivTransProof`; `equivSymProof` is closed via `andCommutative`) | 0 |
41
+
|`RMO.idr`| 3 (`overwriteIrreversibleProof`, `hardwareEraseIrreversibleProof`, `auditTrailCompletenessProof`; `appendOnlyAuditLogProof` is closed via `Refl`) | 0 |
42
+
43
+
Drift from previous PROOF-NEEDS.md tally (22 holes) to current (16 holes) is mechanical: `equivSymProof` and `appendOnlyAuditLogProof` closed silently during the 2026-06-02 morning sweep (visible by grep but the inventory text was not updated). No body changes — this paragraph reconciles the count.
44
+
45
+
All `partial` markers in `proofs/idris2/src/Filesystem/*.idr` were cleared 2026-06-02 (PRs #108 + #109, closing #89). The total `partial` count is zero.
39
46
40
47
### Foundational Closure (history)
41
48
@@ -53,29 +60,130 @@ All `partial` markers in `proofs/idris2/src/Filesystem/*.idr` were cleared 2026-
| 2026-06-02 PM | Coq admit triumvirate |`mkdir_two_dirs_reversible` restated to LIFO and closed (#56); `overwrite_pass_equalizes_storage` strengthened with `block_overwritten` constraint, closed with zero new axioms (#57); `obliterate_not_injective` threaded through the strengthened lemma + `multi_pass_same_start_same_result`, closed with only standard funext (#58). Coq layer now has **zero `Admitted` markers** (only the justified `Axiom is_empty_dir_dec` remains). |
64
+
65
+
### What Needs Proving (current, prioritised by tractability × value)
66
+
67
+
See `docs/PROOF-OPEN-FRONTIER.adoc` for the full Tier-S/A/B/C/D
68
+
catalogue. The list below is the **session-2026-06-02 PM** prioritised
69
+
attack-list, reconciled against actual file state and ranked against
0 commit comments