The sum-zero triple system: a near-perfect triangle packing of a complete graph #
This file gives an explicit, constructive family of pairwise edge-disjoint triangles inside an
arbitrary finite vertex set U which leaves at most 3 uncovered edges at each vertex.
The construction is a sum-zero triple system. Label the n = |U| vertices
bijectively by the elements of the cyclic group ZMod n and take as triangles all triples of
distinct vertices whose labels sum to 0. Two such triples sharing an edge share two labels, and
the third label is then determined, so the triples are pairwise edge-disjoint. A pair of distinct
labels x ≠ y fails to be covered only when the determined third label -(x + y) equals x or
y, that is, only when y = -2x or 2y = -x; for fixed x there is at most one label y with
y = -2x, and at most two labels y with 2y = -x, because the doubling map of ZMod n has
fibres of size at most 2. Hence at most 3 edges at each vertex remain uncovered.
Main definitions #
Finset.innerEdges: the non-loop edges of the complete graph lying inside a finite set.Finset.familyEdges: the edges covered by a family of finite sets.Finset.edgeDegree: the number of edges of a given edge set incident to a vertex.SumZeroTriangles.sumZeroTriples: the triples of a labelled vertex set whose labels sum to zero.
Main results #
ZMod.card_filter_two_mul_eq_le: every fibre of the doubling mapx ↦ 2 * xofZMod nhas at most two elements.SumZeroTriangles.sumZeroTriples_disjoint: sum-zero triples with an injective labelling are pairwise edge-disjoint.SumZeroTriangles.sumZeroTriples_edgeDegree_sdiff_le: the sum-zero triple system leaves at most three uncovered edges at every vertex.SumZeroTriangles.exists_triangle_packing_clique: every finite vertex set carries a family of pairwise edge-disjoint triangles leaving at most three uncovered edges at every vertex.
Implementation notes #
Edges are modelled as elements of Sym2 V, and edge sets as Finset (Sym2 V); a triangle is a
Finset V of cardinality 3 and the triangles of a family are required to have pairwise disjoint
edge sets.
The set of edges covered by a family P of finite vertex sets.
Equations
Instances For
The number of edges of the edge set E that are incident to the vertex v.
Equations
- E.edgeDegree v = {e ∈ E | v ∈ e}.card
Instances For
The sum-zero triple system #
In a three-element set containing the distinct elements a and b there is a unique third
element.
The label of the third vertex of a sum-zero triple is determined by the other two.
The sum-zero triples of an injectively labelled vertex set are pairwise edge-disjoint.
The canonical sum-zero triple through an edge whose two labels are not exceptional: it is a
genuine triple of U and its third vertex is distinct from the two endpoints.
The edge s(a, b) belongs to the edge set of the triple {a, b, c}.
Every edge whose two labels are not in the exceptional relation is covered by the sum-zero triple system.
There are at most three exceptional partners of a vertex, that is, vertices u ∈ U whose label
satisfies psi u = -2 * psi v or 2 * psi u = -psi v.
The uncovered degree of the sum-zero triple system is at most 3 at every vertex.
The near-perfect triangle packing of a clique #
A near-perfect triangle packing of a complete graph.
For every finite set U of vertices there is a family of pairwise edge-disjoint triangles inside
U which leaves at most three uncovered edges at every vertex. (For |U| ≡ 1, 3 [MOD 6] a
Steiner triple system leaves no uncovered edge at all; the sum-zero construction used here is
uniform in |U| and gives the bound 3 in all cases.)