Skip to content

refactor(proofs/coq): consolidate trusted-base dups (Follow-ups 1+2+3)#67

Merged
hyperpolymath merged 2 commits into
mainfrom
proof-debt/dedupe-physics-constants
May 27, 2026
Merged

refactor(proofs/coq): consolidate trusted-base dups (Follow-ups 1+2+3)#67
hyperpolymath merged 2 commits into
mainfrom
proof-debt/dedupe-physics-constants

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

@hyperpolymath hyperpolymath commented May 27, 2026

Summary

Mechanical follow-ups 1, 2, 3 from the Phase 1 proof-debt triage (#58). Consolidates triplicated / duplicated trusted-base axioms into shared modules and removes dead duplicate copies, reducing the estate trust base by 11 markers (129 → 118) without changing semantics.

Follow-up 1 — physics constants (PhysicsConstants.v)

  • New: proofs/coq/common/PhysicsConstants.v — single declaration of kB, kB_positive, temperature, temperature_positive.
  • Updated: QuantumCNO.v, StatMech.v, LandauerDerivation.v — drop local declarations, Require Import CNO.PhysicsConstants.

Follow-up 2 — quantum laws (dead-code removal in QuantumMechanicsExact.v)

  • Removed: Axiom unitary_preserves_entropy (line 323) and Axiom no_cloning (line 404) from QuantumMechanicsExact.v. Both were dead code (no in-file callers). The no_cloning body forall ψ, False was trivially True-equivalent, so removal also strengthens the trust base.
  • Canonical: QuantumCNO.v declarations remain (used by quantum_cno_preserves_information and friends).

Follow-up 3 — statmech basis (StatMechBasis.v)

  • New: proofs/coq/common/StatMechBasis.v — single declaration of StateDistribution, prob_nonneg, prob_normalized, state_dec (canonical name; subsumes state_eq_dec), point_dist, shannon_entropy, shannon_entropy_nonneg, shannon_entropy_point_zero.
  • Updated: StatMech.v and LandauerDerivation.v — drop local declarations, Require Import CNO.StatMechBasis.

Cleanup + machine-readable

  • .gitignore: adds Coq build artefact patterns (*.vo, *.vok, *.vos, *.glob, .*.aux, .lia.cache, .nia.cache) so future builds don't pollute status.
  • _CoqProject: registers common/PhysicsConstants.v and common/StatMechBasis.v in the build manifest.
  • .machine_readable/META.scm: ADR-011 (Phase 2a–2e Lean triage campaign) and ADR-012 (Follow-ups 1–3 consolidation) added to the architecture-decisions ledger.
  • docs/proof-debt-triage.md: Follow-ups 1, 2, 3 marked ✅ DONE 2026-05-27 with the consolidation summaries.

Verification

coqc -R common CNO common/PhysicsConstants.v   → OK
coqc -R common CNO common/Complex.v            → OK
coqc -R common CNO common/CNO.v                → OK
coqc -R common CNO common/StatMechBasis.v      → OK
coqc -R common CNO physics/StatMech.v          → OK
coqc -R common CNO physics/LandauerDerivation.v → OK
coqc -R common CNO quantum/QuantumCNO.v        → OK
coqc -R common CNO quantum/QuantumMechanicsExact.v → OK

bash ~/developer/repos/standards/scripts/check-trusted-base.sh .:

Total markers Undocumented
Before this PR (after Phase 2e #66) 129 4 (Idris2 BoJ)
After this PR 118 4 (Idris2 BoJ, unchanged)
Delta −11 0

The 4 remaining undocumented markers are in src/abi/Proofs/DivMod.idr (BoJ vendored proofs) — explicitly out of Phase 2 scope and tracked at #27.

Why this is low-risk

The consolidated axioms are opaque Parameters and Axioms (no executable definitions). Consolidating means all callers now reference the same symbol instead of nominally-distinct copies — strictly an improvement for soundness. The dead-code removal in Follow-up 2 is verified by coqc building all downstream files unchanged.

Refs

Test plan

  • All eight touched/new Coq files compile under coqc -R common CNO ... (verified locally)
  • check-trusted-base.sh — 129 → 118 markers, undocumented count unchanged at 4
  • No code semantics changed; refactor only
  • .gitignore covers Coq build artefacts
  • Machine-readable ADR ledger updated (ADR-011, ADR-012)
  • CI green on this branch

🤖 Generated with Claude Code

…stants (Follow-up 1)

Replaces three triplicated `Parameter kB / Axiom kB_positive` + `Parameter
temperature / Axiom temperature_positive` declarations across
QuantumCNO.v, StatMech.v, and LandauerDerivation.v with a single
canonical source at `proofs/coq/common/PhysicsConstants.v`. Each caller
now does `Require Import CNO.PhysicsConstants` instead of redeclaring.

Net escape-hatch count: 129 → 125 (−4: removed 6 sites, added 2
canonical sites). `check-trusted-base.sh` undocumented count unchanged
at 4 (Idris2 BoJ markers; out of Phase 2 scope).

Verification:
- `coqc -R common CNO common/PhysicsConstants.v` — OK
- `coqc -R common CNO physics/StatMech.v` — OK
- `coqc -R common CNO physics/LandauerDerivation.v` — OK
- `coqc -R common CNO quantum/QuantumCNO.v` — OK
- `check-trusted-base.sh` — 4/125 undocumented (unchanged)

Refs: docs/proof-debt-triage.md (Phase 1, #58); Follow-up 1 listed in
"Follow-ups surfaced by triage", now marked DONE in the same file.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@@ -0,0 +1,39 @@
(** * Physical Constants — Shared Across CNO Theory
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 67 issues detected

Severity Count
🔴 Critical 9
🟠 High 17
🟡 Medium 41

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Ada pragma Suppress disables runtime checks (1 occurrences, CWE-704)",
    "type": "ada_pragma_suppress",
    "file": "/home/runner/work/absolute-zero/absolute-zero/examples/ada/balanced_ops.adb",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (2 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/lambda/LambdaCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (8 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/physics/StatMech.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "Coq admit tactic leaves goal unproven (1 occurrences, CWE-704)",
    "type": "coq_admit_tactic",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/physics/LandauerDerivation.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "critical"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (12 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/physics/LandauerDerivation.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (1 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/category/CNOCategory.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (13 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/filesystem/FilesystemCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (3 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/quantum/QuantumMechanicsExact.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (27 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/quantum/QuantumCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (2 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/common/PhysicsConstants.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

… + statmech basis

Builds on Follow-up 1 (PhysicsConstants.v) with the remaining two
mechanical dedupes from docs/proof-debt-triage.md.

Follow-up 2 — dead duplicate axioms removed from QuantumMechanicsExact.v:
- `unitary_preserves_entropy` (line 323) — was dead code; canonical lives
  in QuantumCNO.v (which uses an unindexed `QuantumGate`, the only form
  with downstream callers).
- `no_cloning` (line 404) — was dead code AND its statement `forall ψ,
  False` was trivially `True`-equivalent. Canonical in QuantumCNO.v.

Follow-up 3 — statmech basis consolidated:
- New file `proofs/coq/common/StatMechBasis.v` declares once:
  `StateDistribution`, `prob_nonneg`, `prob_normalized`, `state_dec`,
  `point_dist`, `shannon_entropy` (parameter), `shannon_entropy_nonneg`,
  `shannon_entropy_point_zero`.
- `StatMech.v` and `LandauerDerivation.v` import via
  `Require Import CNO.StatMechBasis` and drop their local copies.
- `state_eq_dec` aliased into canonical `state_dec` (LandauerDerivation
  only used the local name internally; no external callers).

Cleanup + machine-readable:
- `.gitignore`: adds Coq build artefact patterns (*.vo, *.vok, *.vos,
  *.glob, .*.aux, .lia.cache, .nia.cache) so future builds don't pollute
  status output.
- `_CoqProject`: adds `common/StatMechBasis.v` to the build manifest
  (alongside PhysicsConstants.v from Follow-up 1).
- `.machine_readable/META.scm`: ADR-011 (Phase 2a–2e Lean triage) and
  ADR-012 (Follow-ups 1–3 consolidation) recorded.
- `docs/proof-debt-triage.md`: Follow-ups 2 + 3 marked DONE.

Verification:
- `coqc -R common CNO common/{PhysicsConstants,Complex,CNO,StatMechBasis}.v`
  — OK
- `coqc -R common CNO physics/{StatMech,LandauerDerivation}.v` — OK
- `coqc -R common CNO quantum/{QuantumCNO,QuantumMechanicsExact}.v` — OK
- `check-trusted-base.sh` — 4/118 undocumented (remaining 4 are Idris2
  `src/abi/Proofs/DivMod.idr`; out of Phase 2 scope). Net change since
  Phase 2e closeout (#66): 129 → 118 markers, −11.

Refs: docs/proof-debt-triage.md (Phase 1 #58); Phase 2a (#60),
Phase 2b (#61), Phase 2c (#62), Phase 2d (#63), Phase 2e (#66).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath changed the title refactor(proofs/coq): consolidate physics constants (Follow-up 1) refactor(proofs/coq): consolidate trusted-base dups (Follow-ups 1+2+3) May 27, 2026
@hyperpolymath hyperpolymath merged commit 0b9b215 into main May 27, 2026
16 of 17 checks passed
@hyperpolymath hyperpolymath deleted the proof-debt/dedupe-physics-constants branch May 27, 2026 11:31
@@ -0,0 +1,75 @@
(** * Statistical Mechanics Basis — Shared Probability + Entropy Axioms
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 68 issues detected

Severity Count
🔴 Critical 9
🟠 High 17
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Ada pragma Suppress disables runtime checks (1 occurrences, CWE-704)",
    "type": "ada_pragma_suppress",
    "file": "/home/runner/work/absolute-zero/absolute-zero/examples/ada/balanced_ops.adb",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (1 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/quantum/QuantumMechanicsExact.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (27 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/quantum/QuantumCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (2 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/lambda/LambdaCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (1 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/category/CNOCategory.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (2 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/common/PhysicsConstants.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (5 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/common/StatMechBasis.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (13 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/filesystem/FilesystemCNO.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "Coq admit tactic leaves goal unproven (1 occurrences, CWE-704)",
    "type": "coq_admit_tactic",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/physics/LandauerDerivation.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "critical"
  },
  {
    "reason": "User-defined Coq axiom -- not verified by kernel (7 occurrences, CWE-704)",
    "type": "coq_axiom",
    "file": "/home/runner/work/absolute-zero/absolute-zero/proofs/coq/physics/LandauerDerivation.v",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants