def
definition
ledger_cost
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Foundation.LedgerForcing on GitHub at line 89.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
86 double_entry : balanced_list events
87
88/-- The total cost of a ledger. -/
89noncomputable def ledger_cost (L : Ledger) : ℝ :=
90 L.events.foldl (fun acc e => acc + event_cost e) 0
91
92/-- A ledger is balanced if its event list is balanced. -/
93def balanced (L : Ledger) : Prop := balanced_list L.events
94
95/-- Every Ledger is balanced by construction. -/
96theorem ledger_balanced (L : Ledger) : balanced L := L.double_entry
97
98/-- The net flow at an agent. -/
99noncomputable def net_flow (L : Ledger) (agent : ℕ) : ℝ :=
100 L.events.foldl (fun acc e =>
101 if e.source = agent then acc + Real.log e.ratio
102 else if e.target = agent then acc + Real.log e.ratio
103 else acc) 0
104
105/-! ## The Empty Ledger -/
106
107/-- The empty ledger: no events. -/
108def empty_ledger : Ledger := {
109 events := []
110 double_entry := fun _ => by simp [List.count_nil]
111}
112
113/-- The empty ledger is balanced. -/
114theorem empty_ledger_balanced : balanced empty_ledger := empty_ledger.double_entry
115
116/-- The empty ledger has zero cost. -/
117theorem empty_ledger_cost : ledger_cost empty_ledger = 0 := by simp [ledger_cost, empty_ledger]
118
119/-- The empty ledger has zero net flow. -/