Skip to content

Commit eac7dee

Browse files
claudewilliamdemeo
authored andcommitted
Add resume-here checklist for removing the provider PoV lemmas
Records the precise, ordered steps to make this PR faithful to the top-down plan: delete the Certs-PoV provider modules (Certs/Properties/PoV and PoVLemmas, which are #1210's work), drop their imports from Certs/Properties, and lift the facts they provide (CERTS-pov, and later CERTS-coinFromDeposits-updateCertDeposits) to module parameters in Entities.Properties.PoV and the LEDGER-PoV module. Notes that Utxo/Utxow-PoV are already absent (deferred to #1189) and already parameterized, flags the Conway-side touches to re-check, and cross-references the separate coinFromGovDeposit re-derivation. Prose only; to be executed in a session with the Agda toolchain so each step can be typechecked. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
1 parent 154601e commit eac7dee

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

  • src/Ledger/Dijkstra/Specification/Ledger/Properties

src/Ledger/Dijkstra/Specification/Ledger/Properties/PoV.lagda.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,45 @@ that is, UTxO coin, rewards balance, the `DState`/`PState`/`GState` deposit pots
5252
> `posNeg-deposits` (below) is a pure `posPart`/`negPart` cancellation, unaffected by
5353
> both fixes; it stands as proved.
5454
55+
> **🔖 Resume here — make this PR faithful to the top-down plan (remove the provider lemmas).**
56+
> Goal: this PR should prove only `LEDGER-pov`, with the Certs-PoV and Utxo/Utxow-PoV
57+
> facts left as **module parameters (stubs)**, discharged later by #1210 and #1189.
58+
> Do this in a fresh session **with the Agda toolchain available** (merge this branch's
59+
> tooling onto the working branch first so the SessionStart hook runs; then verify every
60+
> edit with `/agda-typecheck`, i.e. `nix develop --command agda <file>`).
61+
>
62+
> Dependency chain today: `Ledger.Properties.PoV``Entities.Properties.PoV`
63+
> `Certs.Properties.PoV``Certs.Properties.PoVLemmas`.
64+
>
65+
> 1. **Capture exact signatures first** (before deleting): copy the types of `CERTS-pov`
66+
> and `CERTS-coinFromDeposits-updateCertDeposits` from
67+
> `Certs/Properties/PoV.lagda.md` — they become the parameter types below.
68+
> 2. **Delete** the Certs-PoV provider modules (this is #1210's work):
69+
> `Certs/Properties/PoV.lagda.md` and `Certs/Properties/PoVLemmas.lagda.md`.
70+
> 3. **`Certs/Properties.lagda.md`**: drop the two `open import … Certs.Properties.PoVLemmas`
71+
> / `… Certs.Properties.PoV` lines.
72+
> 4. **`Entities/Properties/PoV.lagda.md`**: remove `open import … Certs.Properties.PoV gs`;
73+
> add `CERTS-pov` (the per-`CERTS`-step preservation fact, used at the `CERTS-pov certsStep`
74+
> call) as a parameter of the `ENTITIES-PoV` module. Keep the `ApplyToRewardsPoV` import
75+
> and everything else — `ENTITIES-pov` itself stays and is still consumed by `LEDGER-pov`.
76+
> 5. **`Ledger/Properties/PoV.lagda.md`** (this file): give the `LEDGER-PoV` module a
77+
> `CERTS-pov` parameter (Certs-PoV stub, discharged by #1210) and thread it into the
78+
> `open ENTITIES-PoV …` instantiation. When the `LEDGER-V` chain is finished, also add
79+
> `CERTS-coinFromDeposits-updateCertDeposits` as a parameter (the closed-form coin
80+
> equation #1210 provides).
81+
> 6. **Utxo/Utxow-PoV**: nothing to remove — those modules are not on this branch (they
82+
> live in #1189). The skeleton already parameterizes the UTxO facts (`balance-∪`,
83+
> `split-balance`, `subutxow-step-coin`, `utxo₁-tx-spend-eq`, `fresh-top-tx-id`, …) and
84+
> keeps the `Utxo/Utxow.Properties.PoV` imports commented out. Leave as is.
85+
> 7. **Conway-side touches** in this PR (`Conway/Conformance/Properties.lagda.md`, the
86+
> Conway `Certs`/`Ledger` PoV files, `Conway/…/Utxo/Properties/GenMinSpend.lagda.md`):
87+
> check whether they were only needed to support the now-removed Dijkstra Certs-PoV
88+
> modules; if so, revert them. Confirm with a typecheck.
89+
> 8. Don't forget the **separate** re-derivation work noted above (thread the
90+
> `coinFromGovDeposit` summand and the new gov-deposit parameters
91+
> `rmOrphanDRepVotes-coinFromGovDeposit` / `GOVS-coinFromGovDeposit`); the two efforts
92+
> touch the same module parameter block, so it's natural to do them together.
93+
5594
## Proof Strategy
5695

5796
The Dijkstra `LEDGER-pov`{.AgdaFunction} does not decompose into independent

0 commit comments

Comments
 (0)