pith. machine review for the scientific record. sign in
lemma proved tactic proof high

mapDelta_step

show as:
view Lean formalization →

The lemma shows that the difference between mapDelta applied to consecutive elements of the δ-generated subgroup equals the slope of the affine map f. Researchers deriving incremental changes in time or action units within Recognition Science cite this result. The proof is a calc block that unfolds the definition via toZ_fromZ, applies ring to cancel the offset, and finishes with algebraic simplification using mul_add and commutativity lemmas.

claimLet $δ ∈ ℤ$ with $δ ≠ 0$, let $f$ be the affine map $m ↦ s·m + b$ from $ℤ$ to $ℝ$, and let $n ∈ ℤ$. Then mapDelta(δ, f, fromZ(δ, n+1)) − mapDelta(δ, f, fromZ(δ, n)) = s.

background

AffineMapZ is the structure with fields slope and offset that encodes the map m ↦ slope·m + offset. The function fromZ embeds an integer n into the subgroup generated by δ via the element n·δ. The lemma toZ_fromZ states that toZ recovers the original integer n from fromZ(δ, n).

proof idea

The proof opens a calc block. The first step applies simp with the definitions of mapDelta and toZ_fromZ to obtain the explicit difference (slope·(n+1) + offset) − (slope·n + offset). Ring cancels the offset. Simpa handles the integer-to-real cast. The final simp uses mul_add together with sub_eq_add_neg, add_comm and add_assoc to reduce the expression to the slope.

why it matters in Recognition Science

mapDelta_step is invoked directly by mapDeltaTime_step and mapDeltaAction_step, which establish that consecutive increments equal the base time unit tau0 and the action unit hbar. It supplies the discrete stepping rule inside the UnitMapping module that translates ledger subgroups into physical quantities. The result sits downstream of the arithmetic lemmas add_assoc, add_comm and mul_add.

scope and limits

Lean usage

simpa [mapDeltaAction, actionMap] using (mapDelta_step (δ:=δ) (hδ:=hδ) (f:=actionMap hbar) (n:=n))

formal statement (Lean)

  80lemma mapDelta_step (δ : ℤ) (hδ : δ ≠ 0) (f : AffineMapZ) (n : ℤ) :
  81  mapDelta δ hδ f (LedgerUnits.fromZ δ (n+1)) - mapDelta δ hδ f (LedgerUnits.fromZ δ n) = f.slope := by

proof body

Tactic-mode proof.

  82  classical
  83  calc
  84    mapDelta δ hδ f (LedgerUnits.fromZ δ (n+1))
  85      - mapDelta δ hδ f (LedgerUnits.fromZ δ n)
  86        = (f.slope * ((n+1 : ℤ) : ℝ) + f.offset)
  87            - (f.slope * (n : ℝ) + f.offset) := by
  88              simp [mapDelta, LedgerUnits.toZ_fromZ]
  89    _   = f.slope * ((n+1 : ℤ) : ℝ) - f.slope * (n : ℝ) := by
  90              ring
  91    _   = f.slope * ((n : ℝ) + 1) - f.slope * (n : ℝ) := by
  92              simpa [Int.cast_add, Int.cast_one]
  93    _   = f.slope := by
  94              simp [mul_add, sub_eq_add_neg, add_comm, add_left_comm, add_assoc]
  95

used by (2)

From the project-wide theorem graph. These declarations reference this one in their body.

depends on (12)

Lean names referenced from this declaration's body.