k-labeled graphs and their gluing #
A k-labeled graph is a finite simple graph together with an ordered k-tuple of distinct
vertices. Gluing two of them identifies corresponding labeled vertices and takes the union of the
edge sets; the identified vertices keep their labels, so the result is again a k-labeled graph and
gluing iterates. This is Lovász–Szegedy's product F₁F₂ of k-labeled graphs, the algebra
underlying connection matrices and reflection positivity.
Main definitions #
TauCeti.DenseGraphLimits.LabeledGraphis thek-labeled graph;TauCeti.DenseGraphLimits.LabeledGraph.glueglues two of them along their labels;TauCeti.DenseGraphLimits.LabeledGraph.glueInlandTauCeti.DenseGraphLimits.LabeledGraph.glueInrare the two vertex maps into the gluing;TauCeti.DenseGraphLimits.LabeledGraph.forgetLabelsis the underlying unlabeled graph;TauCeti.DenseGraphLimits.LabeledGraph.fullyLabeledlabels every vertex of a graph onFin nby its own index;TauCeti.DenseGraphLimits.LabeledGraph.labelSumUnlabeledEquivandTauCeti.DenseGraphLimits.LabeledGraph.glueEquivare the coordinates splitting the vertices of a labeled graph, and of a gluing, into labels and unlabeled vertices.
Main results #
TauCeti.DenseGraphLimits.LabeledGraph.glue_graphidentifies the glued graph as the supremum of the two mapped sources, so no edge is created that neither source carries;TauCeti.DenseGraphLimits.LabeledGraph.glueInl_eq_glueInr_iffsays the two sides meet exactly at corresponding labels, andTauCeti.DenseGraphLimits.LabeledGraph.glue_surjectivethat they cover the gluing: together they present the vertex set as the pushout;TauCeti.DenseGraphLimits.LabeledGraph.glue_cardis the resulting vertex countn₁ + n₂ - k;TauCeti.DenseGraphLimits.LabeledGraph.glue_adj_inl,TauCeti.DenseGraphLimits.LabeledGraph.glue_adj_inrandTauCeti.DenseGraphLimits.LabeledGraph.glue_adj_inl_inrare the adjacency eliminators, andTauCeti.DenseGraphLimits.LabeledGraph.not_glue_adj_of_unlabeledrecords that unlabeled vertices of the two sides are never joined;TauCeti.DenseGraphLimits.LabeledGraph.forgetLabels_defis the defining law for unlabeling, by which a dependent valuef G.forgetLabels.1 G.forgetLabels.2is evaluated;TauCeti.DenseGraphLimits.LabeledGraph.glueCommIsois the commutativity of the gluing algebra, the isomorphism between the two orders of a gluing that makes connection matrices symmetric, andTauCeti.DenseGraphLimits.LabeledGraph.glueCommIso_labelsays it retains the labels, so it is an isomorphism ofk-labeled graphs and commutativity survives a further gluing;TauCeti.DenseGraphLimits.LabeledGraph.glue_adj_labelsays two labels of a gluing are joined exactly when they are joined on one side, andTauCeti.DenseGraphLimits.LabeledGraph.glueInl_labelSumUnlabeledEquivandTauCeti.DenseGraphLimits.LabeledGraph.glueInr_labelSumUnlabeledEquivexpress the two vertex maps into a gluing in coordinates;TauCeti.DenseGraphLimits.LabeledGraph.glueFullyLabeledIsosays gluing two fully labeled graphs overlays them.
Implementation #
The vertex set of a gluing is built as the concrete pushout carrier
Fin k ⊕ (G₁.Unlabeled ⊕ G₂.Unlabeled) — the shared labels, then the private vertices of each
side — and transported to a Fin-representative along Fintype.equivFin, since the structure
stores its vertex set as Fin n. Writing the carrier in this symmetric shape is what makes
commutativity a swap of the two summands rather than a bespoke bijection.
Both adjacency eliminators are stated in their honest form. Two labeled vertices of the left side
can be joined by an edge contributed by the right side, so the naive Adj (glueInl a) (glueInl b) ↔ G₁.graph.Adj a b is false; the correct statement carries the extra disjunct, which
collapses as soon as one of the two vertices is unlabeled
(glue_adj_inl_of_unlabeled).
References #
- L. Lovász, B. Szegedy, Limits of dense graph sequences, JCTB 96 (2006), 933–957, Section 2 —
k-labeled graphs, their product, and connection matrices. - L. Lovász, Large Networks and Graph Limits, AMS Colloquium Publications 60 (2012), Chapter 6.
A k-labeled graph: a finite simple graph on Fin n together with an ordered k-tuple of
distinct labeled vertices. These are the objects of the gluing algebra behind connection
matrices.
- n : ℕ
The number of vertices.
- graph : SimpleGraph (Fin self.n)
The underlying simple graph.
The labeled vertices, in order.
- label_injective : Function.Injective self.label
The labeled vertices are distinct.
Instances For
A labeled graph has at least as many vertices as labels.
The unlabeled vertices of a labeled graph inherit a finite type from Fin G.n, of which they
are a subtype.
Equations
- G.instFintypeUnlabeled = Subtype.fintype fun (a : Fin G.n) => ∀ (i : Fin k), G.label i ≠ a
The number of unlabeled vertices.
Gluing. Glue two k-labeled graphs by identifying corresponding labeled vertices and
taking the union of the two edge sets. The identified vertices keep their labels — and stay
distinct — so the result is again a k-labeled graph and gluing iterates. This is
Lovász–Szegedy's product F₁F₂.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The vertex map of the left factor into the gluing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The vertex map of the right factor into the gluing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The glued graph is exactly the supremum of the two mapped sources: gluing creates no edge that neither side carries.
No other identifications: the two sides meet exactly at corresponding labels.
The labels of the gluing are the images of the left labels.
The labels of the gluing are the images of the right labels.
Adjacency on the left side. A left edge survives the gluing, and the only edges the gluing adds between two left vertices are the ones the right side contributes between labels.
Adjacency on the right side, the mirror of glue_adj_inl.
Adjacency across the two sides. A left and a right vertex are joined only through a label: either the right vertex is a label and the left side carries the edge, or the left vertex is a label and the right side does.
At an unlabeled left vertex the gluing reflects left adjacency faithfully: the extra disjunct
of glue_adj_inl needs both endpoints to be labels.
At an unlabeled right vertex the gluing reflects right adjacency faithfully.
No cross-edges are smuggled in: gluing never joins an unlabeled vertex of one side to an unlabeled vertex of the other.
Unlabeling. The underlying finite simple graph of a k-labeled graph, labels forgotten —
the object a graph parameter evaluates in a connection-matrix entry.
Instances For
Elimination law for unlabeling: forgetting the labels of G leaves the pair of its vertex
count and its graph. Both projections are read off from this law, and it is the form a dependent
occurrence f G.forgetLabels.1 G.forgetLabels.2 is rewritten by, since the two projections can
only be replaced simultaneously: the type of the second mentions the first.
Unlabeling keeps the vertex count.
Commutativity of the gluing #
Commutativity of the gluing algebra. The two orders of a gluing are isomorphic, so a graph parameter that is isomorphism invariant takes the same value on both — this is what makes connection matrices symmetric.
Equations
- G₁.glueCommIso G₂ = { toEquiv := TauCeti.DenseGraphLimits.LabeledGraph.glueCommEquiv✝ G₁ G₂, map_rel_iff' := ⋯ }
Instances For
Commutativity retains the labels. glueCommIso carries the i-th label of one order of a
gluing to the i-th label of the other, so it is an isomorphism of k-labeled graphs and not
merely of the underlying graphs: commutativity may therefore be used inside a further gluing.
Coordinates #
The vertices of a k-labeled graph split into its labels and its unlabeled vertices, and the
vertices of a gluing split into the shared labels and the unlabeled vertices of the two sides.
These splittings are the coordinates in which a vertex assignment of a gluing is a labeled part
together with one private part for each side.
The vertices of a k-labeled graph are its k labels together with its unlabeled
vertices.
Equations
- G.labelSumUnlabeledEquiv = ((Equiv.ofInjective G.label ⋯).sumCongr (Equiv.subtypeEquivRight ⋯)).trans (Equiv.sumCompl fun (x : Fin G.n) => x ∈ Set.range G.label)
Instances For
The vertices of a gluing are the shared labels together with the unlabeled vertices of each side.
Equations
Instances For
In coordinates, the left vertex map of a gluing sends the labels to the shared labels and the unlabeled vertices to the private left summand.
In coordinates, the right vertex map of a gluing sends the labels to the shared labels and the unlabeled vertices to the private right summand.
Adjacency between labels. Two labels of a gluing are joined exactly when they are joined on one of the two sides.
Fully labeled graphs #
The fully labeled graph: a graph G on Fin n with every vertex labeled, by its own
index. Gluing two fully labeled graphs overlays them (glueFullyLabeledIso), so the connection
matrices of the fully labeled graphs on Fin n record a parameter on the suprema G ⊔ G'.
Equations
- TauCeti.DenseGraphLimits.LabeledGraph.fullyLabeled G = { n := n, graph := G, label := id, label_injective := ⋯ }
Instances For
Forgetting the labels of a fully labeled graph returns the graph.
Every vertex of a fully labeled graph is labeled by its own index.
Gluing two fully labeled graphs overlays them: the left vertex map is an isomorphism from
G ⊔ G' onto the gluing, since every vertex of the right side is labeled and so is identified with
a vertex of the left side.
Equations
- One or more equations did not get rendered due to their size.