Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions verification/proofs/AGDA-RECONCILIATION.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// SPDX-License-Identifier: CC-BY-SA-4.0
= VCL-UT proof reconciliation (initial inventory)
:revdate: 2026-11-01

Status: *OPEN* — these are porting and correspondence obligations, not
a claim that VCL-UT has an Agda proof corpus.

== The existing gate remains authoritative for engineering claims

`idris2 --build verification/proofs/vclut-core.ipkg` is still the
13-module, source-grounded Idris2 proof check. The separate
`SafetyL4Model.idr` check and `scripts/honesty-guard.sh` remain in
`.github/workflows/proof-corpus.yml`. Do not retire them or replace
them with a disconnected Agda model. See
`verification/proofs/VERIFICATION-STANCE.adoc` for exact existing
theorem scope and unproved runtime/FFI assumptions.

== Theory candidate ledger (no reconciliation certified yet)

[cols="1,3,2,3",options="header"]
|===
|ID |Source and intended theory statement |Agda |Lean/Coq + bridge

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Track Lean and Coq reconciliation independently

When an obligation has been reconciled in only Lean or only Coq/Rocq, this combined status cell cannot represent which prover remains open or attach the per-prover version and correspondence receipt required below. Because line 37 explicitly requires the two inspections separately, split this into independent Lean and Coq/Rocq columns or records so completing one cannot be mistaken for completing both.

Useful? React with 👍 / 👎.

|VCL-L4 |The proof of `NoRawUserInput` preservation under the specified statement join in `src/core/Composition.idr`; inspect actual definition of `joinWhere` and literal recognition rather than replacing it with a toy Boolean |OPEN |OPEN — exact proposition and source/target correspondence not yet compared
|VCL-L6–L10 |Composition closure for the actual indexed level predicates in `Composition.idr` |OPEN |OPEN — do not presume universal level monotonicity

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge State the L10 side condition in the ledger

When this ledger guides the Agda port, describing all of L6–L10 as composition closure asks for a false unconditional L10 theorem: src/core/Composition.idr:820-839 explicitly shows that two individually acyclic L10 requirement sets can become cyclic when joined, so l10Compose requires epiNoCycle (composeJoin q1 q2) = True. Split L6–L9 from L10 or record this JoinSideCondition, otherwise the instruction below to reprove the “exact theorem” misstates the actual obligation.

Useful? React with 👍 / 👎.

|VCL-EP |The specified epistemic evidence and transition properties in `Epistemic.idr` and `Transition.idr` |OPEN |OPEN — external truth, authority and liveness are separate premises
|VCL-WIRE |The interface/ABI and wire decoder conformance in `WireDecode.idr` / `WireConformance.idr` |NOT A THEORY PORT BY DEFAULT |Existing Idris2 engineering gate must remain
|===

When a statement genuinely has implementation-independent content,
port or reprove its exact theorem first in Agda:

[source,shell]
----
agda --safe --without-K --cubical-compatible <module.agda>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Replace the shell-redirection placeholder

When a reader copies this [source,shell] recipe, <module.agda> is parsed by Bash and other POSIX shells as input/output redirection, and the trailing > has no target, so the shell exits with a syntax error before Agda runs. Use an ordinary example path such as path/to/Module.agda or a quoted variable instead.

Useful? React with 👍 / 👎.

----

Then separately inspect the equivalent claim in Coq/Rocq and Lean.
A compiler success, matching theorem name, or translated type without
a statement correspondence proof is not a reconciled witness. Record
prover/library versions, source revisions, stated assumptions and
the correspondence receipt in the owning proof status.

The canonical cross-estate policy lives in
`metadatastician/standards/3-practice/PROOF-POLICY.adoc`.
Mathesis is an index, and ECHIDNA is a future automation route,
not dependencies of VCL-UT's own soundness.
Loading