Skip to content

Commit 2ebfcbd

Browse files
committed
Made CERTBASE be called last in CERTS
1 parent 6687db8 commit 2ebfcbd

File tree

5 files changed

+19
-51
lines changed

5 files changed

+19
-51
lines changed

src/Ledger/Certs.lagda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ module _ where -- achieves uniform (but perhaps misleading) alignment of type s
321321
_⊢_⇀⦇_,CERTS⦈_ : CertEnv → CertState → List DCert → CertState → Type
322322
\end{code}
323323
\begin{code}[hide]
324-
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ' {_⊢_⇀⟦_⟧ᵇ_ = _⊢_⇀⦇_,CERTBASE⦈_} {_⊢_⇀⦇_,CERT⦈_}
324+
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ {_⊢_⇀⟦_⟧ᵇ_ = _⊢_⇀⦇_,CERTBASE⦈_} {_⊢_⇀⦇_,CERT⦈_}
325325
\end{code}
326326
\end{AgdaMultiCode}
327327
\caption{Types for the transition systems relating to certificates}

src/Ledger/Certs/Properties.agda

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,9 @@ module _ {Γ : CertEnv}
301301
getCoin (zeroMap ∪ˡ rewards) + getCoin wdrls
302302
303303

304-
sts-pov : {s₁ sₙ : CertState} ReflexiveTransitiveClosure {sts = _⊢_⇀⦇_,CERT⦈_} Γ s₁ l sₙ
305-
getCoin s₁ ≡ getCoin sₙ
306-
sts-pov (BS-base Id-nop) = refl
307-
sts-pov (BS-ind x xs) = trans (CERT-pov x) (sts-pov xs)
308-
309304
CERTS-pov : {s₁ sₙ : CertState} Γ ⊢ s₁ ⇀⦇ l ,CERTS⦈ sₙ getCoin s₁ ≡ getCoin sₙ + getCoin (CertEnv.wdrls Γ)
310-
CERTS-pov (RTC {s' = s'} {s'' = sₙ} (bsts , BS-base Id-nop)) = CERTBASE-pov bsts
311-
CERTS-pov (RTC (bsts , BS-ind x sts)) = trans (CERTBASE-pov bsts)
312-
(cong (_+ getCoin (CertEnv.wdrls Γ))
313-
(trans (CERT-pov x) (sts-pov sts)))
305+
CERTS-pov (BS-base x) = CERTBASE-pov x
306+
CERTS-pov {s₁ = s₁} {sₙ} (BS-ind x y) = trans (CERT-pov x) (CERTS-pov y)
314307

315308
-- TODO: Prove the following property.
316309
-- range vDelegs ⊆ map (credVoter DRep) (dom DReps)

src/Ledger/Conway/Conformance/Certs.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,4 @@ data _⊢_⇀⦇_,CERTBASE⦈_ : CertEnv → CertState → ⊤ → CertState →
220220
221221

222222
_⊢_⇀⦇_,CERTS⦈_ : CertEnv CertState List DCert CertState Type
223-
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ' {_⊢_⇀⟦_⟧ᵇ_ = _⊢_⇀⦇_,CERTBASE⦈_}{_⊢_⇀⦇_,CERT⦈_}
223+
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ {_⊢_⇀⟦_⟧ᵇ_ = _⊢_⇀⦇_,CERTBASE⦈_}{_⊢_⇀⦇_,CERT⦈_}

src/Ledger/Conway/Conformance/Equivalence.agda

Lines changed: 11 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ WellformedLState s = certDepositsC (C.LState.certState s) ≡ᵈ certDeposits (c
190190

191191
getValidCertDepositsCERTS : {Γ s certs s'} deposits (open L.CertEnv Γ using (pp))
192192
certDepositsC s ≡ᵈ (certDDeps deposits , certGDeps deposits)
193-
ReflexiveTransitiveClosure {sts = C._⊢_⇀⦇_,CERT⦈_} Γ s certs s'
193+
Γ C.⊢ s ⇀⦇ certs ,CERTS⦈ s'
194194
L.ValidCertDeposits pp deposits certs
195-
getValidCertDepositsCERTS deposits wf (BS-base Id-nop) = L.[]
195+
getValidCertDepositsCERTS deposits wf (BS-base _) = L.[]
196196
getValidCertDepositsCERTS {Γ} {s} {cert ∷ _} deposits wf (BS-ind (C.CERT-deleg (C.DELEG-delegate (a , b))) rs) =
197197
L.delegate (getValidCertDepositsCERTS _ (lemUpdCert (L.CertEnv.pp Γ) (certDepositsC s) deposits cert wf) rs)
198198
getValidCertDepositsCERTS {Γ} {s} {cert ∷ _} deposits wf (BS-ind (C.CERT-deleg (C.DELEG-dereg (_ , h , h'))) rs) =
@@ -212,20 +212,6 @@ getValidCertDepositsCERTS {Γ} {s} {cert ∷ _} deposits wf (BS-ind (C.CERT-vdel
212212
getValidCertDepositsCERTS {Γ} {s} {cert ∷ _} deposits wf (BS-ind (C.CERT-vdel (C.GOVCERT-ccreghot x)) rs) =
213213
L.ccreghot(getValidCertDepositsCERTS _ (lemUpdCert (L.CertEnv.pp Γ) (certDepositsC s) deposits cert wf) rs)
214214

215-
getValidCertDepositsC : Γ s {s'} tx
216-
(let open C.LEnv Γ using (pparams; slot; enactState)
217-
open TxBody (tx .Tx.body) using (txcerts; txvote; txwdrls)
218-
open C.LState s
219-
open C.UTxOState utxoSt using (deposits)
220-
cc = C.allColdCreds govSt enactState
221-
)
222-
WellformedLState s
223-
isValid tx ≡ true
224-
⟦ epoch slot , pparams , txvote , txwdrls , cc ⟧ C.⊢ certState ⇀⦇ txcerts ,CERTS⦈ s'
225-
L.ValidCertDeposits pparams deposits txcerts
226-
getValidCertDepositsC Γ s tx wf refl (RTC (C.CERT-base _ , step)) =
227-
getValidCertDepositsCERTS (C.UTxOState.deposits (C.LState.utxoSt s)) wf step
228-
229215
lemUtxowDeposits : {Γ s s' tx}
230216
(let open C.UTxOEnv Γ using (pparams))
231217
isValid tx ≡ true
@@ -254,7 +240,7 @@ instance
254240
open C.UTxOState utxoSt using (deposits)
255241

256242
valid-deps : L.ValidCertDeposits pparams deposits txcerts
257-
valid-deps = getValidCertDepositsC Γ s tx wf refl certs
243+
valid-deps = getValidCertDepositsCERTS (C.UTxOState.deposits (C.LState.utxoSt s)) wf certs
258244

259245
utxow' : _ L.⊢ utxoSt ⇀⦇ tx ,UTXOW⦈ (setDeposits (utxowDeposits utxow) utxoSt')
260246
utxow' = inj₂ valid-deps ⊢conv utxow
@@ -270,9 +256,9 @@ instance
270256
open IsEquivalence ≡ᵈ-isEquivalence renaming (refl to ≡ᵈ-refl; sym to ≡ᵈ-sym; trans to ≡ᵈ-trans)
271257

272258
lemCERTS'DepositsC : {Γ s dcerts s'} (open C.CertEnv Γ using (pp))
273-
ReflexiveTransitiveClosure {sts = C._⊢_⇀⦇_,CERT⦈_} Γ s dcerts s'
259+
C._⊢_⇀⦇_,CERTS⦈_ Γ s dcerts s'
274260
certDepositsC s' ≡ ⟨ updateDDeps pp dcerts , updateGDeps pp dcerts ⟩ (certDepositsC s)
275-
lemCERTS'DepositsC (BS-base Id-nop) = refl
261+
lemCERTS'DepositsC (BS-base (C._⊢_⇀⦇_,CERTBASE⦈_.CERT-base _)) = refl
276262
lemCERTS'DepositsC (BS-ind (C.CERT-deleg (C.DELEG-delegate _)) rs) = lemCERTS'DepositsC rs
277263
lemCERTS'DepositsC (BS-ind (C.CERT-deleg (C.DELEG-dereg _)) rs) = lemCERTS'DepositsC rs
278264
lemCERTS'DepositsC (BS-ind (C.CERT-deleg (C.DELEG-reg _)) rs) = lemCERTS'DepositsC rs
@@ -282,11 +268,6 @@ lemCERTS'DepositsC (BS-ind (C.CERT-vdel (C.GOVCERT-regdrep _)) rs) = lemCERTS'
282268
lemCERTS'DepositsC (BS-ind (C.CERT-vdel (C.GOVCERT-deregdrep _)) rs) = lemCERTS'DepositsC rs
283269
lemCERTS'DepositsC (BS-ind (C.CERT-vdel (C.GOVCERT-ccreghot _)) rs) = lemCERTS'DepositsC rs
284270

285-
lemCERTSDepositsC : {Γ s txcerts s'} (open C.CertEnv Γ using (pp))
286-
Γ C.⊢ s ⇀⦇ txcerts ,CERTS⦈ s'
287-
certDepositsC s' ≡ ⟨ updateDDeps pp txcerts , updateGDeps pp txcerts ⟩ (certDepositsC s)
288-
lemCERTSDepositsC (RTC (C.CERT-base _ , step)) = lemCERTS'DepositsC step
289-
290271
lemWellformed : {Γ s tx s'} WellformedLState s Γ C.⊢ s ⇀⦇ tx ,LEDGER⦈ s' WellformedLState s'
291272
lemWellformed {Γ} {s = ls} {tx} {s' = ls'} wf (C.LEDGER-V⋯ refl utxo certs gov) = goal
292273
where
@@ -310,7 +291,7 @@ lemWellformed {Γ} {s = ls} {tx} {s' = ls'} wf (C.LEDGER-V⋯ refl utxo certs go
310291
lem rewrite lemDepositsC utxo = refl
311292

312293
lem₁ : (ddeps' , gdeps') ≡ (updateDDeps pparams txcerts ddeps , updateGDeps pparams txcerts gdeps)
313-
lem₁ = lemCERTSDepositsC certs
294+
lem₁ = lemCERTS'DepositsC certs
314295

315296
lem₂ : (updateDDeps pparams txcerts (certDDeps deposits) , updateGDeps pparams txcerts (certGDeps deposits))
316297
≡ᵈ (certDDeps deposits' , certGDeps deposits')
@@ -342,9 +323,10 @@ updateCDep pp cert (ddep , gdep) = updateDDep pp cert ddep , updateGDep pp cert
342323
opaque
343324
castCERTS' : {Γ certs} {s s' : L.CertState} deps₁ deps₂ deps₁'
344325
deps₁ ≡ᵈ deps₂
345-
Γ ⊢ deps₁ ⊢conv s ⇀⦇ certs ,CERTS'⦈ (deps₁' ⊢conv s')
346-
∃[ deps₂' ] deps₁' ≡ᵈ deps₂' × Γ ⊢ deps₂ ⊢conv s ⇀⦇ certs ,CERTS'⦈ (deps₂' ⊢conv s')
347-
castCERTS' deps₁ deps₂ deps₁' eqd (BS-base Id-nop) = deps₂ , eqd , BS-base Id-nop
326+
Γ C.⊢ deps₁ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₁' ⊢conv s')
327+
∃[ deps₂' ] deps₁' ≡ᵈ deps₂' × Γ C.⊢ deps₂ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₂' ⊢conv s')
328+
castCERTS' deps₁ deps₂ deps₁' eqd (BS-base (C._⊢_⇀⦇_,CERTBASE⦈_.CERT-base h)) =
329+
deps₂ , eqd , BS-base (C.CERT-base h)
348330
castCERTS' {Γ} deps₁ deps₂ deps₁' eqd (BS-ind (C.CERT-deleg {dCert = cert} (C.DELEG-delegate h)) rs) =
349331
let open C.CertEnv Γ using (pp)
350332
deps₂' , eqd' , rs' = castCERTS' (updateCDep pp cert deps₁) (updateCDep pp cert deps₂) deps₁'
@@ -387,14 +369,6 @@ opaque
387369
let deps₂' , eqd' , rs' = castCERTS' deps₁ deps₂ deps₁' eqd rs
388370
in deps₂' , eqd' , BS-ind (C.CERT-vdel (C.GOVCERT-ccreghot h)) rs'
389371

390-
castCERTS : {Γ certs} {s s' : L.CertState} deps₁ deps₂ deps₁'
391-
deps₁ ≡ᵈ deps₂
392-
Γ C.⊢ deps₁ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₁' ⊢conv s')
393-
∃[ deps₂' ] deps₁' ≡ᵈ deps₂' × Γ C.⊢ deps₂ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₂' ⊢conv s')
394-
castCERTS deps₁ deps₂ deps₁' eqd (RTC (C.CERT-base h , step)) =
395-
let deps₂' , eqd' , step' = castCERTS' deps₁ deps₂ deps₁' eqd step
396-
in deps₂' , eqd' , RTC (C.CERT-base h , step')
397-
398372
_⊢_⇀⦇_,GOVn⦈_ : L.GovEnv × ℕ L.GovState List (GovVote ⊎ GovProposal) L.GovState Type
399373
_⊢_⇀⦇_,GOVn⦈_ = _⊢_⇀⟦_⟧ᵢ*'_ {_⊢_⇀⟦_⟧ᵇ_ = IdSTS} {_⊢_⇀⟦_⟧_ = L._⊢_⇀⦇_,GOV⦈_}
400374

@@ -404,7 +378,7 @@ opaque
404378
Γ C.⊢ deps₁ ⊢conv s ⇀⦇ tx ,LEDGER⦈ (deps₁' ⊢conv s')
405379
∃[ deps₂' ] deps₁' ≡ᵈ deps₂' × Γ C.⊢ deps₂ ⊢conv s ⇀⦇ tx ,LEDGER⦈ (deps₂' ⊢conv s')
406380
castLEDGER {Γ} {tx} {s} {s'} deps₁ deps₂ deps₁' eqd (C.LEDGER-V⋯ refl utxo certs gov) =
407-
let deps₂' , eqd' , certs' = castCERTS deps₁ deps₂ deps₁' eqd certs
381+
let deps₂' , eqd' , certs' = castCERTS' deps₁ deps₂ deps₁' eqd certs
408382
in deps₂' , eqd' , C.LEDGER-V⋯ refl utxo certs' gov
409383
castLEDGER deps₁ deps₂ deps₁' eqd (C.LEDGER-I⋯ refl utxo) = _ , eqd , C.LEDGER-I⋯ refl utxo
410384

src/Ledger/Conway/Conformance/Equivalence/Certs.agda

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ instance
204204
⊢ Γ L.⊢ s ⇀⦇ dcerts ,CERTS⦈ s' ⭆ⁱ λ deposits _
205205
Γ C.⊢ (getCertDeps* deposits ⊢conv s) ⇀⦇ dcerts ,CERTS⦈
206206
(getCertDeps* (updateCertDeps* dcerts deposits) ⊢conv s')
207-
CERTSToConf .convⁱ deposits (RTC (base , step)) =
208-
RTC (getCertDeps* deposits ⊢conv base , deposits ⊢conv step)
207+
CERTSToConf .convⁱ ⟦ depsᵈ , depsᵍ , _ , _ ⟧* (BS-base x) = BS-base ((depsᵈ , depsᵍ) ⊢conv x)
208+
CERTSToConf .convⁱ deposits (BS-ind x y) = BS-ind (deposits ⊢conv x) (updateCertDeps deposits ⊢conv y)
209209

210210
-- Converting form Conformance is easier since the deposit tracking disappears.
211211
instance
@@ -246,4 +246,5 @@ instance
246246
CERTSFromConf : {Γ s dcerts s'}
247247
Γ C.⊢ s ⇀⦇ dcerts ,CERTS⦈ s' ⭆
248248
Γ L.⊢ conv s ⇀⦇ dcerts ,CERTS⦈ conv s'
249-
CERTSFromConf .convⁱ _ (RTC (base , step)) = RTC (conv base , conv step)
249+
CERTSFromConf .convⁱ _ (BS-base x) = BS-base (conv x)
250+
CERTSFromConf .convⁱ _ (BS-ind x x₁) = BS-ind (conv x) (conv x₁)

0 commit comments

Comments
 (0)