Complete query blocks in finite decision trees #
This module exposes a reusable complete query block: every listed coordinate is queried before control reaches a continuation indexed by the collected finite restriction.
Reapplying values read from an input leaves that input unchanged.
Reading a query block back from any total extension of the induced restriction recovers the same restriction.
Every coordinate recorded by a duplicate-free path receives a value.
The path record selected through a complete block induces exactly the selected deep-branch restriction.
The canonical deepest path through a complete block consists of the block prefix followed by the deepest path of the selected continuation.
The block portion of the canonical deepest path queries exactly the listed coordinates, in order.
The selected deep branch leaves every coordinate outside the block free.
Every coordinate in a duplicate-free block is fixed by the selected deep branch.
The selected restriction records every query/value pair in the canonical deep block path.
Canonicalizing a duplicate-free selected deep branch by reading it back from any total extension changes nothing.
Query-block evaluation passes the restriction read from the input to the continuation.
A query block adds at most its list length to a uniform continuation-depth bound.
Query-block support consists only of the listed queries and continuation support.
Distinct block queries followed by read-once continuations on disjoint support form a path-read-once decision tree.