|
142 | 142 | A mistyped \texttt{rm -rf} can destroy months of work in milliseconds, and the |
143 | 143 | traditional response---backups, snapshots, ``be careful''---shifts the burden of |
144 | 144 | correctness entirely onto the human operator. We present \valence{}, an |
145 | | -interactive shell in which every filesystem operation possesses a |
146 | | -machine-checkable mathematical proof that it can be reversed. The core |
147 | | -contribution is a \emph{reversible operation algebra} formalised in six |
148 | | -independent proof assistants (\lean{}, Coq, Agda, Isabelle/HOL, Mizar, and F*), |
149 | | -yielding over 200 verified theorems with multi-prover cross-validation. We |
| 145 | +interactive shell in which every built-in filesystem operation has a |
| 146 | +machine-checkable mathematical proof of reversibility \emph{in a formal |
| 147 | +abstract model}. The core contribution is a \emph{reversible operation algebra} |
| 148 | +formalised in six independent proof assistants (\lean{}, Coq, Agda, |
| 149 | +Isabelle/HOL, Mizar, and F*), yielding over 200 verified theorems; the same |
| 150 | +theorems are independently cross-validated across all six systems, providing |
| 151 | +confidence through prover diversity (the Rust implementation is validated by |
| 152 | +property-based testing, not mechanically verified against the model). We |
150 | 153 | introduce the \emph{Mutually Assured Accountability} (\maa{}) framework, which |
151 | 154 | decomposes shell operations into two formally distinct modes: |
152 | 155 | \emph{Remove-Match-Reverse} (\rmr{}), providing proven undo/redo with |
153 | | -transaction grouping, and \emph{Remove-Match-Obliterate} (\rmo{}), providing |
154 | | -GDPR-compliant irreversible deletion with proofs of non-recoverability. We |
155 | | -describe the Rust implementation (15,720 lines, 602 passing tests), the |
| 156 | +transaction grouping, and \emph{Remove-Match-Obliterate} (\rmo{}), a |
| 157 | +formally-specified irreversible deletion mode designed for GDPR compliance |
| 158 | +(currently a stub; full proof of non-recoverability is future work). |
| 159 | +We describe the Rust implementation (15,720 lines, 602 passing tests), the |
156 | 160 | multi-prover verification strategy, and the algebraic structure---including |
157 | 161 | Certified Null Operations (\cno{}), operation commutativity, and sequence |
158 | 162 | composition---that makes reversibility a first-class mathematical property of |
159 | 163 | the shell rather than an ad-hoc afterthought. |
160 | 164 | \end{abstract} |
161 | 165 |
|
162 | 166 | \noindent\textbf{Keywords:} formal verification, reversible computing, shell |
163 | | -design, interactive systems, proof assistants, GDPR compliance, undo mechanisms |
| 167 | +design, interactive systems, proof assistants, undo mechanisms, GDPR (planned) |
164 | 168 |
|
165 | 169 | % ============================================================================= |
166 | 170 | % 1. INTRODUCTION |
@@ -1223,10 +1227,14 @@ \subsection{Known Limitations and Proof Gaps} |
1223 | 1227 | match the model. Bridging this gap (e.g., via Creusot, Prusti, or |
1224 | 1228 | Aeneas~\citep{ho2022}) is the most important future work. |
1225 | 1229 |
|
1226 | | - \item \textbf{Proof holes}: The current proof suite contains 10 proof |
1227 | | - obligations across 8 files: 4 genuine gaps requiring additional |
1228 | | - lemmas, 4 stated axioms about list operations, and 2 structural |
1229 | | - obligations that are trivially dischargeable. |
| 1230 | + \item \textbf{Proof holes}: The current proof suite contains 3 proof |
| 1231 | + obligations across 3 files: 1 genuine gap (Coq \texttt{filesystem\_composition.v} |
| 1232 | + — \texttt{OpCreateDir} permissions not preserved under round-trip in the |
| 1233 | + abstract model), 1 stated axiom (\texttt{is\_empty\_dir\_dec} |
| 1234 | + decidability in \texttt{posix\_errors.v}; justified, requires |
| 1235 | + finite-map refactor), and 1 standard axiom (functional extensionality |
| 1236 | + in Agda \texttt{FilesystemModel.agda}; consistent with cubical type |
| 1237 | + theory). |
1230 | 1238 |
|
1231 | 1239 | \item \textbf{External operations}: Operations executed via |
1232 | 1240 | \texttt{PATH} lookup (e.g., \texttt{gcc}, \texttt{curl}) are |
|
0 commit comments