Generator

The rows beginning with "abra": 2 of 12

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
The rows beginning with "abra": 2 of 12Every rotation of the text, sorted. The rows beginning with the pattern are contiguous, which is the only property of the sorted order the search uses, so a search is the narrowing of an interval and a count is its width. The shaded band is rows 2 to 3, found in 8 rank queries and 0 character comparisons. The last column is the transform; the first is the same text sorted.0$abracadabra1a$abracadabr2abra$abracad3abracadabra$4acadabra$abr5adabra$abrac6bra$abracada7bracadabra$a8cadabra$abra9dabra$abraca10ra$abracadab11racadabra$aball 12 rotations of "abracadabra$", sorted0 character comparisons

The rows beginning with "abra": 2 of 12

Every rotation of the text, sorted. The rows beginning with the pattern are contiguous, which is the only property of the sorted order the search uses, so a search is the narrowing of an interval and a count is its width. The shaded band is rows 2 to 3, found in 8 rank queries and 0 character comparisons. The last column is the transform; the first is the same text sorted.

Drawn at 700 × 328, wide on the page. Everything above is what backward-search returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

5 essays call backward-search. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

The library, page 1 of 5 — where backward-search sits