The walk to an acknowledged box #
Indexes advance only by next, and each step adds one to the Idx64 (counter), so a reader
reaches an acknowledged box by advancing to its Idx64. See "Rewrite and scan" in the group chat
spec.
The indexes start, next start, ... : the first n of the stream from start.
Equations
- Cryptlib.Protocols.GroupComm.GroupChatKatzenqt1.ReaderScan.stepsFrom next start n = List.map (fun (j : ℕ) => next^[j] start) (List.range n)
Instances For
The last keep of the steps indexes from start, or all of them for keep = 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The walk #
Advance from start to the box at the furthest of targets fewer than limit boxes ahead:
that box, the last keep indexes before it (all of them for keep = 0), and how many steps
ahead it is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Step forward from start, comparing whole indexes, to the furthest of boxes met within
limit steps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Each step forward adds one to counter.
Equations
- Cryptlib.Protocols.GroupComm.GroupChatKatzenqt1.ReaderScan.Counts next counter = ∀ (i : I), counter (next i) = counter i + 1
Instances For
The box a walk finds carries one of the targets and is the start stepped forward by the reported step count, within the limit.
The indexes a walk keeps are the last keep before the box it finds, in stream order.
No target lies between the box a walk finds and its limit.
A walk that finds nothing has no target within its limit.
Naming a box by Idx64 finds the box its whole index names #
On one stream, two boxes with the same Idx64 are the same box.
When start and every target box are on one stream, walk by Idx64 returns the same
result as walkBoxes.