Punctured affine lines #
A punctured line puncturedLine u v through the anchor u with a nonzero direction v has
Fintype.card K - 1 points and omits u. A point y lies on it exactly when v is a nonzero
multiple of y - u, so a point other than the anchor lies on the punctured lines of exactly
Fintype.card K - 1 nonzero directions. Consequently a set B meets the punctured lines through
u of at most #(B.erase u) * (Fintype.card K - 1) nonzero directions; in particular, an
occupied anchor blocks nothing. A list of g lines occupies at most g * (Fintype.card K - 1)
points. Cleanliness of a request (IsClean) is decidable.
Main results #
Cslib.LineCode.card_subtype_ne_zero: there areFintype.card K ^ ℓ - 1nonzero directions.Cslib.LineCode.card_puncturedLine: a punctured line hasFintype.card K - 1points.Cslib.LineCode.notMem_puncturedLine_self: a punctured line omits its anchor.Cslib.LineCode.mem_puncturedLine_iff_exists_eq_smul:yis on the line of directionviffvis a nonzero multiple ofy - u.Cslib.LineCode.card_filter_mem_puncturedLine: a point other than the anchor lies on the lines of exactlyFintype.card K - 1nonzero directions.Cslib.LineCode.card_filter_not_disjoint_puncturedLine_le: the blocking bound.Cslib.LineCode.disjoint_puncturedLine_iff: two punctured lines through one anchor are disjoint iff their directions are not proportional.Cslib.LineCode.card_occupiedPoints_le:glines occupy at mostg * (Fintype.card K - 1)points.
References #
- Adapted, with nonzero vectors in place of projective directions, from MassProduction/Scheduler.lean and MassProduction/Nonuniform/PhaseMenu.lean in S. Schlesinger, Boolean circuit mass production formalization.
Whether a request is clean is decidable.
There are Fintype.card K ^ ℓ - 1 nonzero directions.
A punctured line has at most Fintype.card K - 1 points, one for each nonzero scalar.
A punctured line with a nonzero direction has exactly Fintype.card K - 1 points.
A punctured line with a nonzero direction omits its anchor.
The point y lies on the punctured line through u with direction v iff v is a nonzero
multiple of y - u.
A point other than the anchor lies on the punctured lines of exactly Fintype.card K - 1
nonzero directions: the nonzero multiples of y - u.
Blocking bound. A set B meets the punctured lines through u of at most
#(B.erase u) * (Fintype.card K - 1) nonzero directions. The anchor u blocks nothing.
Two punctured lines through the same anchor are disjoint iff their directions are not
proportional: v ≠ c • w for every nonzero c.