theorem
proved
narrativeCost_symm
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Foundation.UniversalForcing.NarrativeRealization on GitHub at line 27.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
24@[simp] theorem narrativeCost_self (a : NarrativeBeat) : narrativeCost a a = 0 := by
25 simp [narrativeCost]
26
27theorem narrativeCost_symm (a b : NarrativeBeat) : narrativeCost a b = narrativeCost b a := by
28 by_cases h : a = b
29 · subst h; simp [narrativeCost]
30 · have h' : b ≠ a := by intro hb; exact h hb.symm
31 simp [narrativeCost, h, h']
32
33def narrativeInterpret (n : LogicNat) : NarrativeBeat :=
34 LogicNat.toNat n
35
36/-- Narrative realization as beat-count comparison. -/
37def narrativeRealization : LogicRealization where
38 Carrier := NarrativeBeat
39 Cost := Nat
40 zeroCost := inferInstance
41 compare := narrativeCost
42 zero := 0
43 step := Nat.succ
44 Orbit := LogicNat
45 orbitZero := LogicNat.zero
46 orbitStep := LogicNat.succ
47 interpret := narrativeInterpret
48 interpret_zero := by rfl
49 interpret_step := by
50 intro n
51 show LogicNat.toNat (LogicNat.succ n) = Nat.succ (LogicNat.toNat n)
52 rfl
53 orbit_no_confusion := by intro n h; exact LogicNat.zero_ne_succ n h
54 orbit_step_injective := LogicNat.succ_injective
55 orbit_induction := by
56 intro P h0 hs n
57 exact LogicNat.induction (motive := P) h0 hs n