rowMoves
The rowMoves definition extracts the ordered list of nonzero micro-moves for one pair from a NormalForm coefficient table by filtering the fixed primitive list. Workers on ethical normal forms and DREAM scaffolding cite it when converting tables to move sequences for aggregation. The definition is a direct filterMap that builds MicroMove records only for nonzero coefficients and drops the rest.
claimFor a normal form $nf$ and integer pair $n$, rowMoves$(nf,n)$ returns the list of triples $(n,p,c)$ where $p$ runs over the canonical primitive order and $c=coeff(nf,n,p)$ is nonzero.
background
NormalForm is the structure holding a finite set of supported pairs together with a coefficient function from pairs and primitives to reals, required to vanish outside the support and to be nontrivial on each supported pair. MicroMove packages one triple (pair, primitive, coefficient). The module works inside the micro-move normal-form machinery that supports DREAM scaffolding for ethical coefficient tables. primitiveOrderList supplies the fixed ascending list of fourteen primitives used for canonical ordering.
proof idea
The definition is a one-line filterMap over primitiveOrderList. For each primitive it checks whether the stored coefficient is zero and emits a MicroMove record containing the pair, primitive, and coefficient only when the coefficient is nonzero.
why it matters in Recognition Science
rowMoves supplies the row decomposition used by aggCoeff_rowMoves to recover stored coefficients and by ofMicroMoves to reconstruct normal forms from move lists. It implements the micro-move extraction step inside the NormalForm machinery for ethical virtues, directly supporting the DREAM scaffolding described in the module doc. The definition closes the loop between table representation and list representation in the ethics layer.
scope and limits
- Does not alter any coefficient values.
- Does not include zero-coefficient entries.
- Does not reorder primitives outside the fixed canonical list.
- Does not handle pairs outside the normal-form support.
formal statement (Lean)
70noncomputable def rowMoves (nf : NormalForm) (pair : ℕ) : List MicroMove :=
proof body
Definition body.
71 primitiveOrderList.filterMap (fun prim =>
72 if nf.coeff pair prim = 0 then none
73 else some ⟨pair, prim, nf.coeff pair prim⟩)
74
75/-- Canonical ordered list of micro-moves. -/