Skip to content

JPYC.wf_approve

名称・種別

  • 名称: JPYC.wf_approve
  • 種別: theorem
  • モジュール: JpycFormalVerification.ERC20Theorems
  • ソース: JpycFormalVerification/ERC20Theorems.lean:476-478
  • 概要: approve は健全性不変条件 WF を保つ、という定理。
  • 仕様: 対象

型シグネチャ

lean
∀ {s s' : JPYC.State} {ctx : JPYC.CallContext} {spender : JPYC.Address} {value : JPYC.U256}, JPYC.WF s → Eq (JPYC.approve s ctx spender value) (Except.ok s') → JPYC.WF s'

sWF を満たし approve が成功するなら、結果 s'WF を満たす、という定理です。

解説

何を述べているか。 承認操作は健全性不変条件 WF を壊しません。

直感。 approve が変えるのは許可額(allowed)だけ。フラグ・バージョンに触れないので WF.of_flags_eqWF が保たれます。approve_eq_ok_approve に還元してから _approve_wf を適用します。

なぜ安全性に効くか。 承認後もフラグが 0/1 を保ち、権限・ブロックリスト判定が破綻しません。状態を変える全操作が WF を保存する、という網羅性の一部です。

図解

Lean ソースコード

lean
theorem wf_approve {s s' : State} {ctx : CallContext} {spender : Address} {value : U256}
    (hwf : WF s) (h : approve s ctx spender value = .ok s') : WF s' :=
  _approve_wf hwf (approve_eq_ok h)

依存