Initial and completed scheduler states #
The initial buffer has no occupied lines and keeps requests in their original order. A completed buffer determines a permutation of all request identities and, after undoing that permutation, a disjoint recovery line for every original target.
Empty occupied state, with every request pending in its original order.
Equations
- Algebraic.MassProduction.Nonuniform.BufferModel.State.initial total dimension width = { order := Equiv.emptySum (Fin 0) (Fin total), directions := Fin.elim0 }
Instances For
The empty occupied state satisfies the disjointness invariant.
The initial encoded input is just the original pending records, with an empty completed prefix. It contains no chosen directions.
Once all requests are completed, the stored order is a permutation.
Equations
- state.finishedOrder = (Equiv.sumEmpty (Fin total) (Fin 0)).symm.trans state.order
Instances For
Completed positions map to their original request identities.
Read the selected direction by original request identity.
Equations
- state.scheduledDirections request = state.directions ((Equiv.symm state.finishedOrder) request)
Instances For
Completed-buffer disjointness gives disjoint recovery lines in the original request order, including when several targets are equal.