Counting tools for universal menus #
Three finite counting principles replace probability in the construction of universal menus.
- Collision cut (
exists_collisionCut). In a graph, let every vertex of a finite setbadeither satisfy a propertyPor have a neighbor. Two-coloring a spanning forest gives a subset of at least half ofbadwhose vertices satisfyPor have a neighbor outside the subset. - Conditional counting (
card_filter_forall_mem_le). If the allowed values of each selected coordinate depend only on the unselected coordinates, then at mostM ^ #Sassignments of the#Sselected coordinates are allowed for each assignment of the others. - Covering menus (
exists_coveringMenu). If for every state at most a2 ^ (-m)fraction of the candidates fail, and there are fewer than2 ^ (m * r)states, then some list ofrcandidates contains a successful candidate for every state.
Main results #
Cslib.LineCode.exists_collisionCut: the collision cut.Cslib.LineCode.card_filter_forall_mem_le: conditional counting.Cslib.LineCode.exists_coveringMenu: covering menus.
References #
- Adapted from MassProduction/Nonuniform/CollisionCut.lean, MassProduction/Nonuniform/ConditionalCounting.lean and MassProduction/Nonuniform/Menu.lean in S. Schlesinger, Boolean circuit mass production formalization.
Collision cut. If every vertex of bad satisfies P or has a neighbor, then some
S ⊆ bad with #bad ≤ 2 * #S has every vertex satisfying P or adjacent to a vertex outside
S.
Conditional counting. Suppose the allowed values A y i of each coordinate i ∈ S
depend only on the values y of the coordinates outside S, and number at most M. Then at
most Fintype.card α ^ (Fintype.card ι - #S) * M ^ #S assignments take allowed values on all of
S.
Covering menus. If for every state s at most a 2 ^ (-m) fraction of the candidates
fail good s, and there are fewer than 2 ^ (m * r) states, then some list of r candidates
contains, for every state, a candidate that is good for it.