11// SPDX-License-Identifier: CC-BY-SA-4.0
2+ // Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
23= absolute-zero — Proof Status
34:toc:
45
56[abstract]
6- absolute-zero formalises the CNO (Conservation-of-Negative-information / "absolute
7- zero") principle across several domains and provers. This records the *actually
8- reproduced* verification state in this environment, prover by prover, and is
9- explicit about what was NOT re-verified here.
7+ absolute-zero formalises *two co-equal pillars* (see `docs/TWO-PILLARS.adoc`):
8+ *CNO* — Certified Null Operations (certified null *effect*) — and *OND* —
9+ Observational Null Disclosure (certified null *disclosure*). This document
10+ records the *actually reproduced* verification state in this environment, prover
11+ by prover, and is explicit about which axioms remain and why.
12+
13+ [IMPORTANT]
14+ .2026-07-07 — both pillars machine-checked across six provers
15+ ====
16+ All six provers are installed and were *reproduced in this environment*. A single
17+ gate, `proofs/verify-all-provers.sh`, builds every prover and prints
18+ `ALL-PROVERS-GREEN`: *Coq, Agda, Lean 4 (+Mathlib), Z3, Isabelle/HOL, Mizar*,
19+ plus the *Idris 2* ABI. Both the CNO and OND pillars are covered.
20+ ====
1021
1122== Coq — VERIFIED (this environment)
1223
1324* `coqc` **8.18.0**; clean build from scratch (all `.vo`/`.glob` deleted first),
14- via a `coq_makefile` project over every theory with `-R common CNO -R malbolge Malbolge` .
15- * Result: **13/13 theories compile, zero errors.**
25+ via `coq_makefile -f _CoqProject` over **14/14 theories → zero errors** .
26+ * Reproduce: `cd proofs/coq && coq_makefile -f _CoqProject -o Makefile.all && make -f Makefile.all -j`.
1627
1728[cols="1,3",options="header"]
1829|===
@@ -23,45 +34,117 @@ explicit about what was NOT re-verified here.
2334| lambda | `LambdaCNO.v`
2435| filesystem| `FilesystemCNO.v`
2536| physics | `StatMech.v`, `StatMech_helpers.v`, `LandauerDerivation.v`
37+ | ond | `OND.v` (NEW — the disclosure pillar)
2638| malbolge | `MalbolgeCore.v`
2739|===
2840
29- Imports are Coq stdlib only (`Reals`, `micromega`/`Lra`/`Psatz`, `Lia`,
30- `FunctionalExtensionality`, `ProofIrrelevance`, …) — no external library (no
31- Coquelicot/MathComp). Reproduce: `cd proofs/coq && make -f Makefile.coq` (the
32- repo build) covers `common` + `malbolge`; the full set builds with the per-area
33- `coqc -R common CNO` invocations in the Justfile `build-coq` recipe.
41+ === CNO axiom discharge (2026-07-07)
42+
43+ The CNO domain modules previously *axiomatised* their headline results. They have
44+ been re-grounded on concrete models and re-proved. Axiom/`Parameter`/`Conjecture`
45+ count fell from **98** to a small, classified remainder:
46+
47+ * *Fully discharged to zero project axioms*: `FilesystemCNO.v` (13 axioms + 3
48+ parameters → 0; `mkdir_rmdir_inverse`, `transaction_cno`, `snapshot_restore_identity`,
49+ … all `Closed under the global context`), `CNOCategory.v` (identity/hom functor
50+ constructed), `QuantumMechanicsExact.v` (X-gate unitarity proved; density matrix
51+ defined).
52+ * `QuantumCNO.v`: 41 → 12. *19 axioms discharged, 8 parameters concretised*; **two
53+ latent-unsound axioms removed** (`no_cloning` was provably false in the flat
54+ model; `Cconj_Cexp` false for a genuine phase). Remainder = 2 tagged
55+ metal-boundary physics postulates + 4 honestly-labelled class-A items (below).
56+ * Physics (`StatMechBasis.v`, `PhysicsConstants.v`, `StatMech.v`,
57+ `LandauerDerivation.v`): derivable lemmas discharged; the genuine *physical
58+ postulates* kept and tagged `METAL-BOUNDARY AXIOM` — Boltzmann constant `kB` and
59+ `kB > 0`, absolute `temperature > 0`, the Second Law, Landauer's 1961 bound.
60+ These are empirical physics and *must* remain axioms; `state_dec` is kept because
61+ `Memory = nat -> nat` is not decidably equal (genuinely unprovable).
62+
63+ === Honestly-remaining axioms (class A — true, provable in principle, not yet machine-proved)
64+
65+ Every remaining project axiom is either a tagged physical postulate (above) or one
66+ of these, each documented in-file with its blocker:
67+
68+ * `LambdaCNO.v` — `y_not_cno` (`~ is_lambda_CNO y_combinator`). True (Y diverges),
69+ but a rigorous proof must rule out reaching the argument under *every* β-congruence
70+ interleaving — a coinductive / step-indexed non-termination argument beyond a
71+ single-file fix.
72+ * `QuantumCNO.v` — `CNOT_gate_unitary` (needs a 4-dimensional tensor model),
73+ `unitary_inverse_property` (needs finite-dimensional linear algebra), `fidelity_bound`
74+ / `approximate_cno` (need a concrete fidelity). All out of reach of the flat
75+ `nat -> C` single-qubit model; faithful discharge is a separate formalisation.
76+
77+ These are the analogue of the OND-6 research fork: openly labelled, not silently
78+ assumed. `Print Assumptions` on every headline theorem shows only Coq stdlib axioms
79+ (`ClassicalDedekindReals.*`, `functional_extensionality*`) plus, where relevant, the
80+ explicitly-tagged postulate above — never a hidden project axiom.
81+
82+ == OND — VERIFIED (this environment), the disclosure pillar
83+
84+ `proofs/coq/ond/OND.v` discharges roadmap obligations *OND-1..OND-5* with **zero
85+ axioms** — every theorem is `Closed under the global context`:
86+
87+ * OND-1 `is_OND O o` — nullity parameterised by an observation model `O` over an
88+ observable execution (declared output channel + timing);
89+ * OND-2 — `skip` is OND under *any* `O` (satisfiability);
90+ * OND-3 — `is_CNO ⊥ is_OND` independence, additionally anchored to the *real* core
91+ `is_CNO` (`writer_program_not_core_CNO`, `skip_program_is_core_CNO`);
92+ * OND-4 — a constant-time select operation is OND under a declared `O` (+ residue);
93+ * OND-5 — a non-composition counterexample (two ONDs whose composite leaks by
94+ state-chaining).
95+
96+ Mirrored in *Lean 4* (`proofs/lean4/OND.lean`), *Agda* (`proofs/agda/OND.agda`),
97+ and *Z3* (`proofs/z3/ond/OND_checks.smt2`, the bounded/finite instances). OND-7's
98+ residue register carries its first real instance
99+ (`proofs/residue/ct_select.residue`). *OND-6* (conditional composition, research
100+ capstone) remains open by design — see `docs/OND-ROADMAP.adoc`.
34101
35102== Agda — VERIFIED (this environment)
36103
37- * `agda` 2.6.3; `agda -i proofs/agda <module>` → **3/3 type-check**:
38- `CNO.agda`, `EchoBridgeCNO.agda`, `EchoBridgeScaffold.agda`.
39- * The EchoBridge modules take **funext as an explicit hypothesis**
40- (`Axiom.Extensionality.Propositional`) — a hypothesised parameter, not a global
41- `postulate`. (`EchoBridgeScaffold` is, as named, a scaffold.)
104+ * `agda` 2.6.3, `--safe --without-K`: `CNO.agda`, `OND.agda`, `EchoBridgeCNO.agda`
105+ type-check. The EchoBridge modules take **funext as an explicit hypothesis**
106+ (not a global `postulate`); `OND.agda` uses zero postulates.
107+
108+ == Lean 4 — VERIFIED (this environment)
109+
110+ * Toolchain `leanprover/lean4:v4.16.0` with Mathlib `@ v4.16.0`; `lake exe cache get`
111+ + `lake build` → **build completed successfully**. Covers the CNO libraries and the
112+ new `OND` library (`proofs/lean4/OND.lean`, core-Lean only, zero `sorry`).
113+
114+ == Z3 — VERIFIED (this environment)
115+
116+ * `z3` 4.16.0 on `proofs/z3/ond/OND_checks.smt2`: the OND-3 timing-leak witness is
117+ `sat`, `writer`-is-OND is `unsat` (no secret distinguishes it), and the OND-5
118+ composite leak is `sat` with a concrete model — the "decidable for bounded
119+ programs" demonstration.
120+
121+ == Isabelle/HOL — VERIFIED (this environment)
122+
123+ * `Isabelle2025-2`, session `AbsoluteZero-CNO` (`proofs/isabelle/ROOT`): `CNO.thy`
124+ (repaired — the reserved-keyword `value` type was renamed and the failing `nop`/`step`
125+ lemmas fixed) and `OND.thy` (new, OND-1..5) build with no `sorry`/`oops`.
42126
43- == Idris — NOT verified here (packaging is template-derived / inconsistent )
127+ == Mizar — VERIFIED (this environment )
44128
45- `absolute-zero-abi.ipkg` declares `sourcedir = "src/abi"` with modules
46- `AbsoluteZero.ABI.{Types,Layout,Proofs.DivMod}`, but the files are laid out flat
47- (`src/abi/Types.idr`, …) and module names are inconsistent (some flat, some
48- `AbsoluteZero.ABI.*`). `idris2 --build` fails (`AbsoluteZero.ABI.Types not found`);
49- `Layout.idr`/`Foreign.idr` `--check` individually but `Types.idr`/`Proofs/DivMod.idr`
50- report module-name/file-path mismatches. This is the same template-scaffold issue
51- as `typell`; fixing it is a package-restructuring task (align module names ↔ paths ↔
52- `sourcedir`), deferred. *(The `.ipkg` `license` field — previously
53- `PMPL-1.0-or-later` — has been corrected to `MPL-2.0` per the sole-owner policy.)*
129+ * Mizar `8.1.15`; `accom CNO && verifier CNO` on `proofs/mizar/CNO.miz` completes
130+ with an **empty `CNO.err`** (zero errors). `MIZFILES` points at the bundled MML.
54131
55- == Lean — NOT verified here (requires Mathlib)
132+ == Idris 2 — VERIFIED (this environment), the ABI boundary
56133
57- `proofs/lean4/` pins `leanprover/lean4:v4.16.0` and **`require mathlib … @ v4.16.0`**.
58- Building it needs the full Mathlib (multi-GB, long compile) and the matching
59- toolchain; that was out of scope for this environment. Stated honestly rather than
60- asserted — the Coq and Agda sides above *were* reproduced.
134+ * `idris2` 0.8.0; `idris2 --build absolute-zero-abi.ipkg` → clean, no warnings. The
135+ packaging bug (module paths vs. `sourcedir`) is fixed, files relocated to match
136+ module names, and six latent type errors repaired (null-pointer `So` witnesses via
137+ `choose`, `Decidable.Equality`/`Data.Bits` imports, `%runElab` stub, erased
138+ `HasSize` index, qualified `maxProgramLength`). Two unused, non-compiling `DecEq`
139+ instances were removed with a documented recovery path.
61140
62141== Honest scope
63142
64- * The CNO development is genuinely multi -prover; this document does not claim
65- cross-prover *equivalence* — each prover checks its own formalisation .
143+ * Multi-prover, not cross -prover *equivalence* — each prover checks its own
144+ formalisation of the two pillars .
66145* "Verified here" = a reproduced compiler/checker run in this environment, not a
67- reading of in-file comments.
146+ reading of in-file comments. Reproduce everything with
147+ `proofs/verify-all-provers.sh`.
148+ * Remaining axioms are exactly: (a) tagged physical postulates (the honest metal
149+ boundary), and (b) the class-A items listed above (true, provable in principle,
150+ openly labelled). No headline theorem depends on a hidden project axiom.
0 commit comments