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,130 @@ 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+ * `LambdaCNO.v`: `compile_lambda` and `hom_functor` (in `CNOCategory.v`) concretised;
57+ **a third latent-unsound axiom corrected** — `eta_equivalence` was *false as
58+ stated* (counterexample `f = LVar 5`, a normal form that never β-reduces to `f`;
59+ root cause: this file's `subst` does not re-index under binders). It is replaced by
60+ the honest, proved theorem `eta_equivalence` guarded by a `no_lambda body`
61+ hypothesis (a genuine statement-shape change, disclosed in-file, made to remove an
62+ inconsistency risk — not to dodge a proof).
63+ * Physics (`StatMechBasis.v`, `PhysicsConstants.v`, `StatMech.v`,
64+ `LandauerDerivation.v`): derivable lemmas discharged; the genuine *physical
65+ postulates* kept and tagged `METAL-BOUNDARY AXIOM` — Boltzmann constant `kB` and
66+ `kB > 0`, absolute `temperature > 0`, the Second Law, Landauer's 1961 bound.
67+ These are empirical physics and *must* remain axioms; `state_dec` is kept because
68+ `Memory = nat -> nat` is not decidably equal (genuinely unprovable).
69+
70+ === Honestly-remaining axioms (class A — true, provable in principle, not yet machine-proved)
71+
72+ Every remaining project axiom is either a tagged physical postulate (above) or one
73+ of these, each documented in-file with its blocker:
74+
75+ * `LambdaCNO.v` — `y_not_cno` (`~ is_lambda_CNO y_combinator`). True (Y diverges),
76+ but a rigorous proof must rule out reaching the argument under *every* β-congruence
77+ interleaving — a coinductive / step-indexed non-termination argument beyond a
78+ single-file fix.
79+ * `QuantumCNO.v` — `CNOT_gate_unitary` (needs a 4-dimensional tensor model),
80+ `unitary_inverse_property` (needs finite-dimensional linear algebra), `fidelity_bound`
81+ / `approximate_cno` (need a concrete fidelity). All out of reach of the flat
82+ `nat -> C` single-qubit model; faithful discharge is a separate formalisation.
83+
84+ These are the analogue of the OND-6 research fork: openly labelled, not silently
85+ assumed. `Print Assumptions` on every headline theorem shows only Coq stdlib axioms
86+ (`ClassicalDedekindReals.*`, `functional_extensionality*`) plus, where relevant, the
87+ explicitly-tagged postulate above — never a hidden project axiom.
88+
89+ == OND — VERIFIED (this environment), the disclosure pillar
90+
91+ `proofs/coq/ond/OND.v` discharges roadmap obligations *OND-1..OND-5* with **zero
92+ axioms** — every theorem is `Closed under the global context`:
93+
94+ * OND-1 `is_OND O o` — nullity parameterised by an observation model `O` over an
95+ observable execution (declared output channel + timing);
96+ * OND-2 — `skip` is OND under *any* `O` (satisfiability);
97+ * OND-3 — `is_CNO ⊥ is_OND` independence, additionally anchored to the *real* core
98+ `is_CNO` (`writer_program_not_core_CNO`, `skip_program_is_core_CNO`);
99+ * OND-4 — a constant-time select operation is OND under a declared `O` (+ residue);
100+ * OND-5 — a non-composition counterexample (two ONDs whose composite leaks by
101+ state-chaining).
102+
103+ Mirrored in *Lean 4* (`proofs/lean4/OND.lean`), *Agda* (`proofs/agda/OND.agda`),
104+ and *Z3* (`proofs/z3/ond/OND_checks.smt2`, the bounded/finite instances). OND-7's
105+ residue register carries its first real instance
106+ (`proofs/residue/ct_select.residue`). *OND-6* (conditional composition, research
107+ capstone) remains open by design — see `docs/OND-ROADMAP.adoc`.
34108
35109== Agda — VERIFIED (this environment)
36110
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.)
111+ * `agda` 2.6.3, `--safe --without-K`: `CNO.agda`, `OND.agda`, `EchoBridgeCNO.agda`
112+ type-check. The EchoBridge modules take **funext as an explicit hypothesis**
113+ (not a global `postulate`); `OND.agda` uses zero postulates.
114+
115+ == Lean 4 — VERIFIED (this environment)
116+
117+ * Toolchain `leanprover/lean4:v4.16.0` with Mathlib `@ v4.16.0`; `lake exe cache get`
118+ + `lake build` → **build completed successfully**. Covers the CNO libraries and the
119+ new `OND` library (`proofs/lean4/OND.lean`, core-Lean only, zero `sorry`).
120+
121+ == Z3 — VERIFIED (this environment)
122+
123+ * `z3` 4.16.0 on `proofs/z3/ond/OND_checks.smt2`: the OND-3 timing-leak witness is
124+ `sat`, `writer`-is-OND is `unsat` (no secret distinguishes it), and the OND-5
125+ composite leak is `sat` with a concrete model — the "decidable for bounded
126+ programs" demonstration.
127+
128+ == Isabelle/HOL — VERIFIED (this environment)
129+
130+ * `Isabelle2025-2`, session `AbsoluteZero-CNO` (`proofs/isabelle/ROOT`): `CNO.thy`
131+ (repaired — the reserved-keyword `value` type was renamed and the failing `nop`/`step`
132+ lemmas fixed) and `OND.thy` (new, OND-1..5) build with no `sorry`/`oops`.
42133
43- == Idris — NOT verified here (packaging is template-derived / inconsistent )
134+ == Mizar — VERIFIED (this environment )
44135
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.)*
136+ * Mizar `8.1.15`; `accom CNO && verifier CNO` on `proofs/mizar/CNO.miz` completes
137+ with an **empty `CNO.err`** (zero errors). `MIZFILES` points at the bundled MML.
138+ The original article was machine-generated and unverifiable (277 errors); it was
139+ *rewritten* into a genuine article (StateSpace = pair of `Funcs(NAT,NAT)`;
140+ state-preserving / pure / reversible / terminating / thermo-reversible attributes;
141+ 12 proved theorems incl. composition with a real inverse construction). Requires the
142+ committed private vocabulary `proofs/mizar/dict/cno.voc` (lowercase filename, needed
143+ on Linux). Verifier build artifacts are git-ignored.
54144
55- == Lean — NOT verified here (requires Mathlib)
145+ == Idris 2 — VERIFIED (this environment), the ABI boundary
56146
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.
147+ * `idris2` 0.8.0; `idris2 --build absolute-zero-abi.ipkg` → clean, no warnings. The
148+ packaging bug (module paths vs. `sourcedir`) is fixed, files relocated to match
149+ module names, and six latent type errors repaired (null-pointer `So` witnesses via
150+ `choose`, `Decidable.Equality`/`Data.Bits` imports, `%runElab` stub, erased
151+ `HasSize` index, qualified `maxProgramLength`). Two unused, non-compiling `DecEq`
152+ instances were removed with a documented recovery path.
61153
62154== Honest scope
63155
64- * The CNO development is genuinely multi -prover; this document does not claim
65- cross-prover *equivalence* — each prover checks its own formalisation .
156+ * Multi-prover, not cross -prover *equivalence* — each prover checks its own
157+ formalisation of the two pillars .
66158* "Verified here" = a reproduced compiler/checker run in this environment, not a
67- reading of in-file comments.
159+ reading of in-file comments. Reproduce everything with
160+ `proofs/verify-all-provers.sh`.
161+ * Remaining axioms are exactly: (a) tagged physical postulates (the honest metal
162+ boundary), and (b) the class-A items listed above (true, provable in principle,
163+ openly labelled). No headline theorem depends on a hidden project axiom.
0 commit comments