PoV
- *Informally*. Let and be `UTxOState`{.AgdaRecord}s, let :
`Tx`{.AgdaRecord} be a fresh transaction with withdrawals , and
suppose `⇀⦇`{.AgdaDatatype} `,UTXO⦈`{.AgdaDatatype} . If is valid,
then the coin value of is equal to the sum of the coin values of and .
If is not valid, then the coin values of and are equal. We can express
this concisely as follows:
where
$χ : \texttt{@@AgdaTerm@@basename=Bool@@class=AgdaDatatype@@} → {0, 1}$
is the *characteristic function*, which returns 0 for false and 1 for
true.
- *Formally*.
UTXOpov : {Γ : UTxOEnv} {tx : Tx} {s s' : UTxOState} → txidOf tx ∉ mapˢ proj₁ (dom (UTxOOf s)) → Γ ⊢ s ⇀⦇ tx ,UTXO⦈ s' → getCoin s + getCoin (wdrlsOf tx) * χ (tx .isValid) ≡ getCoin s'- *Proof*. See the module in the [formal ledger repository](\repourl).