Hopfield: basic lemmas #
An asynchronous update changes one Boolean coordinate. The lemmas here describe that change and its effect on the active-unit count, used to break energy ties in the convergence argument.
One asynchronous update is a Function.update at the chosen unit, with the threshold test as
the new value. Stating it this way lets the Mathlib Function.update lemmas do the bookkeeping.
At the updated unit, the new state is the threshold test.
Every other unit is untouched, which is what makes the update asynchronous.
When an update changes the state, the old value of the updated unit is the negation of the
threshold test: every other unit is untouched, so the change must happen at u itself.
Flipping a unit from false to true raises the count of active units by one.
The active count is the tie-breaking measure in the convergence proof: when the energy stays flat, a real state change still has to move this counter, and it cannot rise forever.
Flipping a unit from true to false lowers the active count by one.