Universal recovery menus #
Let K be a field with q = 2 ^ b elements and let L = ℓ * b, so that a point of K ^ ℓ
takes L bits. A state of the scheduler consists of at most g occupied lines, each given by an
anchor and a direction, and a tuple of k ≤ g targets; there are at most 2 ^ (g * (1 + 3 * L))
states. Under the budget 512 * g * q ≤ q ^ (ℓ - 1), a uniformly random tuple of nonzero
directions leaves fewer than half of the requests clean with probability at most 2 ^ (-k) in
every state (card_filter_two_mul_card_isClean_lt_mul_two_pow_le). A list of
menuLength g k L independent tuples therefore fails some state with probability less than
one (exists_coveringMenu), so a universal menu of that length exists.
For k > 0, menuLength g k L = ⌊g * (1 + 3 * L) / k⌋ + 1; evaluating every entry of such a menu
examines k * menuLength g k L ≤ g * (1 + 3 * L) + k candidate lines.
Main definitions #
Cslib.LineCode.menuLength: the length of the universal menus.
Main results #
Cslib.LineCode.lt_mul_menuLength,Cslib.LineCode.mul_menuLength_le: bounds on the numberk * menuLength g k Lof candidate lines.Cslib.LineCode.exists_isUniversalMenu: universal menus exist under the budget.
References #
- Adapted, with nonzero vectors in place of projective directions, from MassProduction/Nonuniform/PhaseMenu.lean, MassProduction/Nonuniform/BinaryPhaseMenu.lean and MassProduction/Nonuniform/Menu.lean in S. Schlesinger, Boolean circuit mass production formalization.
Universal menus. Let K have q = 2 ^ b elements, let 0 < k ≤ g, and suppose
512 * g * q ≤ q ^ (ℓ - 1). Then some menu of menuLength g k (ℓ * b) tuples of nonzero
directions for k requests is universal for g occupied lines: for every list of at most g
occupied lines and every tuple of k targets, possibly repeated or occupied, some entry leaves at
least half of the requests clean.