{-# OPTIONS --safe #-}
open import Ledger.Conway.Abstract
open import Ledger.Conway.Transaction
module Ledger.Conway.Utxo.Properties.PoV
(txs : _) (open TransactionStructure txs)
(abs : AbstractFunctions txs)
where
open import Ledger.Conway.Certs govStructure
open import Ledger.Prelude
open import Ledger.Conway.Utxo txs abs
open import Ledger.Conway.Utxo.Properties txs abs using (χ; module DepositHelpers)
open UTxOState; open Tx; open TxBody
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'
UTXOpov h' step@(UTXO-inductive⋯ _ Γ _ _ _ _ _ _ newBal noMintAda _ _ _ _ _ _ _ _ _ (Scripts-Yes (_ , _ , valid)))
= DepositHelpers.pov-scripts step h' refl valid
UTXOpov h' step@(UTXO-inductive⋯ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (Scripts-No (_ , invalid)))
= DepositHelpers.pov-no-scripts step h' invalid