Apr 15, 4-5 AM (1)
Apr 15, 5-6 AM (32)
Apr 15, 6-7 AM (7)
Apr 15, 7-8 AM (25)
Apr 15, 8-9 AM (49)
Apr 15, 9-10 AM (40)
Apr 15, 10-11 AM (127)
Apr 15, 11-12 PM (53)
Apr 15, 12-1 PM (60)
Apr 15, 1-2 PM (43)
Apr 15, 2-3 PM (45)
Apr 15, 3-4 PM (29)
Apr 15, 4-5 PM (46)
Apr 15, 5-6 PM (21)
Apr 15, 6-7 PM (33)
Apr 15, 7-8 PM (15)
Apr 15, 8-9 PM (17)
Apr 15, 9-10 PM (5)
Apr 15, 10-11 PM (20)
Apr 15, 11-12 AM (16)
Apr 16, 12-1 AM (12)
Apr 16, 1-2 AM (6)
Apr 16, 2-3 AM (7)
Apr 16, 3-4 AM (3)
Apr 16, 4-5 AM (4)
Apr 16, 5-6 AM (8)
Apr 16, 6-7 AM (33)
Apr 16, 7-8 AM (32)
Apr 16, 8-9 AM (31)
Apr 16, 9-10 AM (27)
Apr 16, 10-11 AM (50)
Apr 16, 11-12 PM (56)
Apr 16, 12-1 PM (58)
Apr 16, 1-2 PM (30)
Apr 16, 2-3 PM (40)
Apr 16, 3-4 PM (46)
Apr 16, 4-5 PM (47)
Apr 16, 5-6 PM (56)
Apr 16, 6-7 PM (17)
Apr 16, 7-8 PM (68)
Apr 16, 8-9 PM (38)
Apr 16, 9-10 PM (11)
Apr 16, 10-11 PM (24)
Apr 16, 11-12 AM (23)
Apr 17, 12-1 AM (12)
Apr 17, 1-2 AM (8)
Apr 17, 2-3 AM (3)
Apr 17, 3-4 AM (4)
Apr 17, 4-5 AM (3)
Apr 17, 5-6 AM (9)
Apr 17, 6-7 AM (26)
Apr 17, 7-8 AM (96)
Apr 17, 8-9 AM (70)
Apr 17, 9-10 AM (53)
Apr 17, 10-11 AM (41)
Apr 17, 11-12 PM (58)
Apr 17, 12-1 PM (64)
Apr 17, 1-2 PM (39)
Apr 17, 2-3 PM (46)
Apr 17, 3-4 PM (36)
Apr 17, 4-5 PM (13)
Apr 17, 5-6 PM (10)
Apr 17, 6-7 PM (25)
Apr 17, 7-8 PM (22)
Apr 17, 8-9 PM (3)
Apr 17, 9-10 PM (16)
Apr 17, 10-11 PM (24)
Apr 17, 11-12 AM (16)
Apr 18, 12-1 AM (2)
Apr 18, 1-2 AM (2)
Apr 18, 2-3 AM (6)
Apr 18, 3-4 AM (1)
Apr 18, 4-5 AM (2)
Apr 18, 5-6 AM (2)
Apr 18, 6-7 AM (1)
Apr 18, 7-8 AM (2)
Apr 18, 8-9 AM (4)
Apr 18, 9-10 AM (4)
Apr 18, 10-11 AM (1)
Apr 18, 11-12 PM (6)
Apr 18, 12-1 PM (7)
Apr 18, 1-2 PM (8)
Apr 18, 2-3 PM (9)
Apr 18, 3-4 PM (0)
Apr 18, 4-5 PM (2)
Apr 18, 5-6 PM (6)
Apr 18, 6-7 PM (2)
Apr 18, 7-8 PM (2)
Apr 18, 8-9 PM (4)
Apr 18, 9-10 PM (9)
Apr 18, 10-11 PM (21)
Apr 18, 11-12 AM (23)
Apr 19, 12-1 AM (1)
Apr 19, 1-2 AM (4)
Apr 19, 2-3 AM (1)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (3)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (2)
Apr 19, 8-9 AM (1)
Apr 19, 9-10 AM (1)
Apr 19, 10-11 AM (4)
Apr 19, 11-12 PM (7)
Apr 19, 12-1 PM (6)
Apr 19, 1-2 PM (8)
Apr 19, 2-3 PM (22)
Apr 19, 3-4 PM (7)
Apr 19, 4-5 PM (4)
Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (6)
Apr 20, 6-7 AM (11)
Apr 20, 7-8 AM (29)
Apr 20, 8-9 AM (42)
Apr 20, 9-10 AM (37)
Apr 20, 10-11 AM (95)
Apr 20, 11-12 PM (42)
Apr 20, 12-1 PM (39)
Apr 20, 1-2 PM (53)
Apr 20, 2-3 PM (68)
Apr 20, 3-4 PM (47)
Apr 20, 4-5 PM (40)
Apr 20, 5-6 PM (31)
Apr 20, 6-7 PM (24)
Apr 20, 7-8 PM (10)
Apr 20, 8-9 PM (7)
Apr 20, 9-10 PM (16)
Apr 20, 10-11 PM (28)
Apr 20, 11-12 AM (18)
Apr 21, 12-1 AM (24)
Apr 21, 1-2 AM (5)
Apr 21, 2-3 AM (13)
Apr 21, 3-4 AM (4)
Apr 21, 4-5 AM (3)
Apr 21, 5-6 AM (8)
Apr 21, 6-7 AM (15)
Apr 21, 7-8 AM (44)
Apr 21, 8-9 AM (119)
Apr 21, 9-10 AM (36)
Apr 21, 10-11 AM (35)
Apr 21, 11-12 PM (98)
Apr 21, 12-1 PM (57)
Apr 21, 1-2 PM (71)
Apr 21, 2-3 PM (60)
Apr 21, 3-4 PM (31)
Apr 21, 4-5 PM (29)
Apr 21, 5-6 PM (27)
Apr 21, 6-7 PM (38)
Apr 21, 7-8 PM (33)
Apr 21, 8-9 PM (37)
Apr 21, 9-10 PM (14)
Apr 21, 10-11 PM (34)
Apr 21, 11-12 AM (12)
Apr 22, 12-1 AM (2)
Apr 22, 1-2 AM (3)
Apr 22, 2-3 AM (2)
Apr 22, 3-4 AM (4)
Apr 22, 4-5 AM (0)
3,900 commits this week Apr 15, 2026 - Apr 22, 2026
feat(dijkstra): add UTXO and UTXOW preservation-of-value modules
Introduce three new modules implementing the UTXO-level building blocks
of the Dijkstra-era preservation-of-value proof (towards closing #1123 /
CIP-159-11):

+  `Utxo/Properties/Base.lagda.md`
   Era-independent helper lemmas: `∙-homo-Coin`, `newTxid⇒disj`,
   `outs-disjoint`.  Intentionally minimal for now — the Conway Base
   proofs of `balance-cong`, `balance-∪`, and `split-balance` do not
   port verbatim because Dijkstra defines `balance` as `∑ˢ` over a set
   of Values rather than as `indexedSumᵐ` over a map of hashed TxOuts.
   Tracking issue filed for the proper port.

+  `Utxo/Properties/PoV.lagda.md`
   The Dijkstra UTXO preservation-of-value proof is split into two
   orthogonal pieces:

   -  Mechanical state change (`UTXO-I-getCoin`, `UTXO-V-mechanical`):
      relates `getCoin s₀` to `getCoin s₁` from the UTxOState transition
      alone, using `split-balance` and `balance-∪`.  Proved.

   -  Batch coin balance (`batch-balance-coin`): the coin projection of
      the `consumedBatch ≡ producedBatch` premise (premise p₇ of the
      UTXO rule).  Proved from the two module parameters
      `coin-of-consumedBatch` and `coin-of-producedBatch`, which are
      themselves left as assumptions for now (see PoV follow-up work).

   The combined `UTXO-pov` theorem is stated but left as a placeholder
   (`?`); its exact form depends on how `LEDGER-pov`'s
   `BatchUtxoAccounting` consumer threads sub-transaction state.

+  `Utxow/Properties/PoV.lagda.md`
   UTXOW-level wrappers that extract the UTXO derivation from either
   `UTXOW-normal` or `UTXOW-legacy` (via a shared `UTXOW⇒UTXO`
   extractor) and delegate to the UTXO-level lemmas.  Provides
   `utxow-pov-invalid` in the exact shape required as a module
   parameter by `Ledger/Properties/PoV.lagda.md`.

Proof-internal notes:

+  `balance-∪` and `split-balance` are currently module parameters
   to `Utxo/Properties/PoV` pending the port of Conway Base's balance
   arithmetic to Dijkstra (see tracking issue).

+  The 7-term +-commutative-monoid shuffle in `UTXO-V-mechanical` is
   proved by hand using a `swap-right` helper; this could later be
   replaced by a call to a commutative-monoid solver.

+  All three modules typecheck under `--safe`.